Skip to content

Commit 8b8c1d3

Browse files
committed
codal_port/microbit_soundevent: Add SoundEvent.CLAP object.
The CODAL will emit a clap event if a "clap" is detected, and this new SoundEvent.CLAP object can be used to detect that. Signed-off-by: Damien George <[email protected]>
1 parent 41245c8 commit 8b8c1d3

File tree

4 files changed

+12
-0
lines changed

4 files changed

+12
-0
lines changed

src/codal_app/microbithal.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ extern "C" {
9090
// Microphone events, passed to microbit_hal_level_detector_callback().
9191
#define MICROBIT_HAL_MICROPHONE_EVT_THRESHOLD_LOW (1)
9292
#define MICROBIT_HAL_MICROPHONE_EVT_THRESHOLD_HIGH (2)
93+
#define MICROBIT_HAL_MICROPHONE_EVT_CLAP (8)
9394

9495
// Threshold kind, passed to microbit_hal_microphone_set_threshold().
9596
#define MICROBIT_HAL_MICROPHONE_SET_THRESHOLD_LOW (0)

src/codal_port/microbit_microphone.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
#define SOUND_EVENT_QUIET (0)
3434
#define SOUND_EVENT_LOUD (1)
35+
#define SOUND_EVENT_CLAP (2)
3536

3637
typedef struct _microbit_microphone_obj_t {
3738
mp_obj_base_t base;
@@ -40,6 +41,7 @@ typedef struct _microbit_microphone_obj_t {
4041
static const mp_const_obj_t sound_event_obj_map[] = {
4142
[SOUND_EVENT_QUIET] = MP_ROM_PTR(&microbit_soundevent_quiet_obj),
4243
[SOUND_EVENT_LOUD] = MP_ROM_PTR(&microbit_soundevent_loud_obj),
44+
[SOUND_EVENT_CLAP] = MP_ROM_PTR(&microbit_soundevent_clap_obj),
4345
};
4446

4547
static uint8_t sound_event_current = SOUND_EVENT_QUIET;
@@ -54,6 +56,8 @@ void microbit_hal_level_detector_callback(int value) {
5456
ev = SOUND_EVENT_QUIET;
5557
} else if (value == MICROBIT_HAL_MICROPHONE_EVT_THRESHOLD_HIGH) {
5658
ev = SOUND_EVENT_LOUD;
59+
} else if (value == MICROBIT_HAL_MICROPHONE_EVT_CLAP) {
60+
ev = SOUND_EVENT_CLAP;
5761
} else {
5862
// Ignore unknown events.
5963
return;

src/codal_port/microbit_soundevent.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ const microbit_soundevent_obj_t microbit_soundevent_quiet_obj = {
4242
MP_QSTR_quiet,
4343
};
4444

45+
const microbit_soundevent_obj_t microbit_soundevent_clap_obj = {
46+
{ &microbit_soundevent_type },
47+
MP_QSTR_clap,
48+
};
49+
4550
STATIC void microbit_soundevent_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
4651
microbit_soundevent_obj_t *self = (microbit_soundevent_obj_t *)self_in;
4752
mp_printf(print, "SoundEvent('%q')", self->name);
@@ -50,6 +55,7 @@ STATIC void microbit_soundevent_print(const mp_print_t *print, mp_obj_t self_in,
5055
STATIC const mp_rom_map_elem_t microbit_soundevent_locals_dict_table[] = {
5156
{ MP_ROM_QSTR(MP_QSTR_LOUD), MP_ROM_PTR(&microbit_soundevent_loud_obj) },
5257
{ MP_ROM_QSTR(MP_QSTR_QUIET), MP_ROM_PTR(&microbit_soundevent_quiet_obj) },
58+
{ MP_ROM_QSTR(MP_QSTR_CLAP), MP_ROM_PTR(&microbit_soundevent_clap_obj) },
5359
};
5460
STATIC MP_DEFINE_CONST_DICT(microbit_soundevent_locals_dict, microbit_soundevent_locals_dict_table);
5561

src/codal_port/modmicrobit.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ extern const struct _monochrome_5by5_t microbit_const_image_scissors_obj;
184184

185185
extern const microbit_soundevent_obj_t microbit_soundevent_loud_obj;
186186
extern const microbit_soundevent_obj_t microbit_soundevent_quiet_obj;
187+
extern const microbit_soundevent_obj_t microbit_soundevent_clap_obj;
187188

188189
extern struct _microbit_display_obj_t microbit_display_obj;
189190
extern const struct _microbit_accelerometer_obj_t microbit_accelerometer_obj;

0 commit comments

Comments
 (0)