Skip to content

Commit 47d6dd8

Browse files
committed
audioio: By default, be compatible with 4.x
Testing performed: That the shipped .mpy files on a PyPortal (CP 4.x) still work (play audio) with this branch, instead of erroring because `WaveFile` can't be found in `audioio`. Flash usage grew by 28 bytes. (I expected 24, there must be some other effect on size/alignment that I didn't predict)
1 parent 85d7398 commit 47d6dd8

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

py/circuitpy_mpconfig.mk

+6
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,12 @@ CIRCUITPY_AUDIOIO = $(CIRCUITPY_FULL_BUILD)
7474
endif
7575
CFLAGS += -DCIRCUITPY_AUDIOIO=$(CIRCUITPY_AUDIOIO)
7676

77+
ifndef CIRCUITPY_AUDIOIO_COMPAT
78+
CIRCUITPY_AUDIOIO_COMPAT = $(CIRCUITPY_AUDIOIO)
79+
endif
80+
CFLAGS += -DCIRCUITPY_AUDIOIO_COMPAT=$(CIRCUITPY_AUDIOIO_COMPAT)
81+
82+
7783
ifndef CIRCUITPY_AUDIOPWMIO
7884
CIRCUITPY_AUDIOPWMIO = 0
7985
endif

shared-bindings/audioio/__init__.c

+15
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@
3333
#include "shared-bindings/audioio/__init__.h"
3434
#include "shared-bindings/audioio/AudioOut.h"
3535

36+
#ifdef CIRCUITPY_AUDIOIO_COMPAT
37+
#include "shared-bindings/audiocore/Mixer.h"
38+
#include "shared-bindings/audiocore/RawSample.h"
39+
#include "shared-bindings/audiocore/WaveFile.h"
40+
#endif
41+
3642
//| :mod:`audioio` --- Support for audio input and output
3743
//| ======================================================
3844
//|
@@ -57,10 +63,19 @@
5763
//| Since CircuitPython 5, `Mixer`, `RawSample` and `WaveFile` are moved
5864
//| to :mod:`audiocore`.
5965
//|
66+
//| For compatibility with CircuitPython 4.x, some builds allow the items in
67+
//| `audiocore` to be imported from `audioio`. This will be removed for all
68+
//| boards in a future build of CicuitPython.
69+
//|
6070

6171
STATIC const mp_rom_map_elem_t audioio_module_globals_table[] = {
6272
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_audioio) },
6373
{ MP_ROM_QSTR(MP_QSTR_AudioOut), MP_ROM_PTR(&audioio_audioout_type) },
74+
#ifdef CIRCUITPY_AUDIOIO_COMPAT
75+
{ MP_ROM_QSTR(MP_QSTR_Mixer), MP_ROM_PTR(&audioio_mixer_type) },
76+
{ MP_ROM_QSTR(MP_QSTR_RawSample), MP_ROM_PTR(&audioio_rawsample_type) },
77+
{ MP_ROM_QSTR(MP_QSTR_WaveFile), MP_ROM_PTR(&audioio_wavefile_type) },
78+
#endif
6479
};
6580

6681
STATIC MP_DEFINE_CONST_DICT(audioio_module_globals, audioio_module_globals_table);

0 commit comments

Comments
 (0)