Skip to content

Commit 2cd377f

Browse files
committed
audiobusio: Make PDMIn optional
1 parent 537a4da commit 2cd377f

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

py/circuitpy_mpconfig.mk

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ CFLAGS += -DCIRCUITPY_AUDIOBUSIO=$(CIRCUITPY_AUDIOBUSIO)
5555
CIRCUITPY_AUDIOBUSIO_I2SOUT ?= $(CIRCUITPY_AUDIOBUSIO)
5656
CFLAGS += -DCIRCUITPY_AUDIOBUSIO_I2SOUT=$(CIRCUITPY_AUDIOBUSIO_I2SOUT)
5757

58+
# Likewise, some boards have I2SOut but do not implement PDMIn.
59+
CIRCUITPY_AUDIOBUSIO_PDMIN ?= $(CIRCUITPY_AUDIOBUSIO)
60+
CFLAGS += -DCIRCUITPY_AUDIOBUSIO_PDMIN=$(CIRCUITPY_AUDIOBUSIO_PDMIN)
61+
5862
CIRCUITPY_AUDIOIO ?= $(CIRCUITPY_FULL_BUILD)
5963
CFLAGS += -DCIRCUITPY_AUDIOIO=$(CIRCUITPY_AUDIOIO)
6064

shared-bindings/audiobusio/PDMIn.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@
8484
//| ...
8585
//|
8686
STATIC mp_obj_t audiobusio_pdmin_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
87+
#if !CIRCUITPY_AUDIOBUSIO_PDMIN
88+
mp_raise_NotImplementedError(translate("PDMIn not available"));
89+
#else
8790
enum { ARG_clock_pin, ARG_data_pin, ARG_sample_rate, ARG_bit_depth, ARG_mono, ARG_oversample, ARG_startup_delay };
8891
static const mp_arg_t allowed_args[] = {
8992
{ MP_QSTR_clock_pin, MP_ARG_REQUIRED | MP_ARG_OBJ },
@@ -132,8 +135,10 @@ STATIC mp_obj_t audiobusio_pdmin_make_new(const mp_obj_type_t *type, size_t n_ar
132135
mp_hal_delay_ms(startup_delay * 1000);
133136

134137
return MP_OBJ_FROM_PTR(self);
138+
#endif
135139
}
136140

141+
#if CIRCUITPY_AUDIOBUSIO_PDMIN
137142
//| def deinit(self) -> None:
138143
//| """Deinitialises the PDMIn and releases any hardware resources for reuse."""
139144
//| ...
@@ -237,10 +242,13 @@ STATIC const mp_rom_map_elem_t audiobusio_pdmin_locals_dict_table[] = {
237242
{ MP_ROM_QSTR(MP_QSTR_sample_rate), MP_ROM_PTR(&audiobusio_pdmin_sample_rate_obj) }
238243
};
239244
STATIC MP_DEFINE_CONST_DICT(audiobusio_pdmin_locals_dict, audiobusio_pdmin_locals_dict_table);
245+
#endif
240246

241247
const mp_obj_type_t audiobusio_pdmin_type = {
242248
{ &mp_type_type },
243249
.name = MP_QSTR_PDMIn,
244250
.make_new = audiobusio_pdmin_make_new,
251+
#if CIRCUITPY_AUDIOBUSIO_PDMIN
245252
.locals_dict = (mp_obj_dict_t*)&audiobusio_pdmin_locals_dict,
253+
#endif
246254
};

shared-bindings/audiobusio/PDMIn.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333

3434
extern const mp_obj_type_t audiobusio_pdmin_type;
3535

36+
#if CIRCUITPY_AUDIOBUSIO_PDMIN
3637
void common_hal_audiobusio_pdmin_construct(audiobusio_pdmin_obj_t* self,
3738
const mcu_pin_obj_t* clock_pin, const mcu_pin_obj_t* data_pin,
3839
uint32_t sample_rate, uint8_t bit_depth, bool mono, uint8_t oversample);
@@ -43,5 +44,6 @@ uint32_t common_hal_audiobusio_pdmin_record_to_buffer(audiobusio_pdmin_obj_t* se
4344
uint8_t common_hal_audiobusio_pdmin_get_bit_depth(audiobusio_pdmin_obj_t* self);
4445
uint32_t common_hal_audiobusio_pdmin_get_sample_rate(audiobusio_pdmin_obj_t* self);
4546
// TODO(tannewt): Add record to file
47+
#endif
4648

4749
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO_AUDIOOUT_H

0 commit comments

Comments
 (0)