diff --git a/components/badge23/include/badge23/spio.h b/components/badge23/include/badge23/spio.h index 7dfe394423ea7899e6f4562f298dc04234c8e862..ee8f5f3cabf9cbec64648f9881f3c8b73d3553ee 100644 --- a/components/badge23/include/badge23/spio.h +++ b/components/badge23/include/badge23/spio.h @@ -1,6 +1,18 @@ #pragma once #include <stdint.h> +#define BUTTON_PRESSED_DOWN 2 +#define BUTTON_PRESSED_LEFT -1 +#define BUTTON_PRESSED_RIGHT 1 +#define BUTTON_NOT_PRESSED 0 + int8_t get_button_state(bool leftbutton); void update_button_state(); void init_buttons(); + +int8_t spio_menu_button_get(); +int8_t spio_application_button_get(); +int8_t spio_left_button_get(); +int8_t spio_right_button_get(); +int8_t spio_menu_button_get_left(); +void spio_menu_button_set_left(bool left); diff --git a/components/badge23/spio.c b/components/badge23/spio.c index e42842f9b61ab1544ba52884c2c32430ff5b7e86..c93ca9d2ebbfac9d0e9c2058c8350c354db85911 100644 --- a/components/badge23/spio.c +++ b/components/badge23/spio.c @@ -2,6 +2,7 @@ #include "driver/gpio.h" #include "badge23_hwconfig.h" #include "stdint.h" +#include "badge23/spio.h" static int8_t leftbutton = 0; static int8_t rightbutton = 0; @@ -39,23 +40,23 @@ static void _init_buttons(){ void update_button_state(){ if(!gpio_get_level(RIGHT_BUTTON_LEFT)){ - rightbutton = -1; + rightbutton = BUTTON_PRESSED_LEFT; } else if(!gpio_get_level(RIGHT_BUTTON_MID)){ - rightbutton = 2; + rightbutton = BUTTON_PRESSED_DOWN; } else if(!gpio_get_level(RIGHT_BUTTON_RIGHT)){ - rightbutton = 1; + rightbutton = BUTTON_PRESSED_RIGHT; } else { - rightbutton = 0; + rightbutton = BUTTON_NOT_PRESSED; } if(!gpio_get_level(LEFT_BUTTON_LEFT)){ - leftbutton = -1; + leftbutton = BUTTON_PRESSED_LEFT; } else if(!gpio_get_level(LEFT_BUTTON_MID)){ - leftbutton = 2; + leftbutton = BUTTON_PRESSED_DOWN; } else if(!gpio_get_level(LEFT_BUTTON_RIGHT)){ - leftbutton = 1; + leftbutton = BUTTON_PRESSED_RIGHT; } else { - leftbutton = 0; + leftbutton = BUTTON_NOT_PRESSED; } } @@ -102,23 +103,23 @@ void update_button_state(){ uint8_t lm = gpio_get_level(LEFT_BUTTON_MID); if(!rl){ - rightbutton = -1; + rightbutton = BUTTON_PRESSED_LEFT; } else if(!rm){ - rightbutton = 2; + rightbutton = BUTTON_PRESSED_DOWN; } else if(!rr){ - rightbutton = 1; + rightbutton = BUTTON_PRESSED_RIGHT; } else { - rightbutton = 0; + rightbutton = BUTTON_NOT_PRESSED; } if(!ll){ - leftbutton = -1; + leftbutton = BUTTON_PRESSED_LEFT; } else if(!lm){ - leftbutton = 2; + leftbutton = BUTTON_PRESSED_DOWN; } else if(!lr){ - leftbutton = 1; + leftbutton = BUTTON_PRESSED_RIGHT; } else { - leftbutton = 0; + leftbutton = BUTTON_NOT_PRESSED; } } @@ -138,3 +139,29 @@ int8_t get_button_state(bool left){ if(left) return leftbutton; return rightbutton; } + +static bool menu_button_left = 0; + +void spio_menu_button_set_left(bool left){ + menu_button_left = 1; +} + +int8_t spio_menu_button_get(){ + return get_button_state(menu_button_left); +} + +int8_t spio_application_button_get(){ + return get_button_state(!menu_button_left); +} + +int8_t spio_left_button_get(){ + return get_button_state(1); +} + +int8_t spio_right_button_get(){ + return get_button_state(0); +} + +int8_t spio_menu_button_get_left(){ + return menu_button_left; +} diff --git a/python_payload/event.py b/python_payload/event.py index 599c8c80d849f862a924e3c2049185b77449ca33..d8eeffc5b44f73885463a425926015b2795c76f0 100644 --- a/python_payload/event.py +++ b/python_payload/event.py @@ -74,12 +74,17 @@ class Engine(): input_state = [] #buttons - for i in [0,1]: - input_state.append({ - "type" : "button", - "index" : i, - "value" : hardware.get_button(i) - }) + input_state.append({ + "type" : "button", + "index" : 0, + "value" : hardware.menu_button_get() + }) + + input_state.append({ + "type" : "button", + "index" : 1, + "value" : hardware.application_button_get() + }) #captouch for i in range(0,10): @@ -243,4 +248,4 @@ class Sequence(): global the_engine -the_engine = Engine() \ No newline at end of file +the_engine = Engine() diff --git a/usermodule/mp_hardware.c b/usermodule/mp_hardware.c index 81fcb9069708897ee7a1d21e45290a394efd644b..f0fc7fe79b7a57f6a178a2ee98968ab761fbf5bd 100644 --- a/usermodule/mp_hardware.c +++ b/usermodule/mp_hardware.c @@ -101,12 +101,39 @@ STATIC mp_obj_t mp_captouch_set_calibration_afe_target(mp_obj_t target_in) { } STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_captouch_set_calibration_afe_target_obj, mp_captouch_set_calibration_afe_target); -STATIC mp_obj_t mp_get_button(size_t n_args, const mp_obj_t *args) { - uint8_t leftbutton = mp_obj_get_int(args[0]); - int8_t ret = get_button_state(leftbutton); - return mp_obj_new_int(ret); + +STATIC mp_obj_t mp_menu_button_set_left(mp_obj_t left) { + spio_menu_button_set_left(mp_obj_get_int(left)); + return mp_const_none; +} +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_menu_button_set_left_obj, mp_menu_button_set_left); + +STATIC mp_obj_t mp_menu_button_get_left() { + return mp_obj_new_int(spio_menu_button_get_left()); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_get_button_obj, 1, 2, mp_get_button); +STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_menu_button_get_left_obj, mp_menu_button_get_left); + +STATIC mp_obj_t mp_menu_button_get() { + return mp_obj_new_int(spio_menu_button_get()); +} +STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_menu_button_get_obj, mp_menu_button_get); + +STATIC mp_obj_t mp_application_button_get() { + return mp_obj_new_int(spio_application_button_get()); +} +STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_application_button_get_obj, mp_application_button_get); + +STATIC mp_obj_t mp_left_button_get() { + return mp_obj_new_int(spio_left_button_get()); +} +STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_left_button_get_obj, mp_left_button_get); + +STATIC mp_obj_t mp_right_button_get() { + return mp_obj_new_int(spio_right_button_get()); +} +STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_right_button_get_obj, mp_right_button_get); + + STATIC mp_obj_t mp_set_global_volume_dB(size_t n_args, const mp_obj_t *args) { mp_float_t x = mp_obj_get_float(args[0]); @@ -179,6 +206,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_get_ctx_obj, 0, 0, mp_get_ctx); STATIC const mp_rom_map_elem_t mp_module_hardware_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_badge_audio) }, { MP_ROM_QSTR(MP_QSTR_init_done), MP_ROM_PTR(&mp_init_done_obj) }, + { MP_ROM_QSTR(MP_QSTR_captouch_calibration_active), MP_ROM_PTR(&mp_captouch_calibration_active_obj) }, { MP_ROM_QSTR(MP_QSTR_get_captouch), MP_ROM_PTR(&mp_get_captouch_obj) }, { MP_ROM_QSTR(MP_QSTR_captouch_get_petal_pad_raw), MP_ROM_PTR(&mp_captouch_get_petal_pad_raw_obj) }, @@ -188,7 +216,14 @@ STATIC const mp_rom_map_elem_t mp_module_hardware_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_captouch_set_petal_pad_threshold), MP_ROM_PTR(&mp_captouch_set_petal_pad_threshold_obj) }, { MP_ROM_QSTR(MP_QSTR_captouch_autocalib), MP_ROM_PTR(&mp_captouch_autocalib_obj) }, { MP_ROM_QSTR(MP_QSTR_captouch_set_calibration_afe_target), MP_ROM_PTR(&mp_captouch_set_calibration_afe_target_obj) }, - { MP_ROM_QSTR(MP_QSTR_get_button), MP_ROM_PTR(&mp_get_button_obj) }, + + { MP_ROM_QSTR(MP_QSTR_menu_button_get), MP_ROM_PTR(&mp_menu_button_get_obj) }, + { MP_ROM_QSTR(MP_QSTR_application_button_get), MP_ROM_PTR(&mp_application_button_get_obj) }, + { MP_ROM_QSTR(MP_QSTR_left_button_get), MP_ROM_PTR(&mp_left_button_get_obj) }, + { MP_ROM_QSTR(MP_QSTR_right_button_get), MP_ROM_PTR(&mp_right_button_get_obj) }, + { MP_ROM_QSTR(MP_QSTR_menu_button_set_left), MP_ROM_PTR(&mp_menu_button_set_left_obj) }, + { MP_ROM_QSTR(MP_QSTR_menu_button_get_left), MP_ROM_PTR(&mp_menu_button_get_left_obj) }, + { MP_ROM_QSTR(MP_QSTR_set_global_volume_dB), MP_ROM_PTR(&mp_set_global_volume_dB_obj) }, { MP_ROM_QSTR(MP_QSTR_count_sources), MP_ROM_PTR(&mp_count_sources_obj) }, { MP_ROM_QSTR(MP_QSTR_dump_all_sources), MP_ROM_PTR(&mp_dump_all_sources_obj) }, @@ -198,6 +233,11 @@ STATIC const mp_rom_map_elem_t mp_module_hardware_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_display_update), MP_ROM_PTR(&mp_display_update_obj) }, { MP_ROM_QSTR(MP_QSTR_version), MP_ROM_PTR(&mp_version_obj) }, { MP_ROM_QSTR(MP_QSTR_get_ctx), MP_ROM_PTR(&mp_get_ctx_obj) }, + + { MP_ROM_QSTR(MP_QSTR_BUTTON_PRESSED_LEFT), MP_ROM_INT(BUTTON_PRESSED_LEFT) }, + { MP_ROM_QSTR(MP_QSTR_BUTTON_PRESSED_RIGHT), MP_ROM_INT(BUTTON_PRESSED_RIGHT) }, + { MP_ROM_QSTR(MP_QSTR_BUTTON_PRESSED_DOWN), MP_ROM_INT(BUTTON_PRESSED_DOWN) }, + { MP_ROM_QSTR(MP_QSTR_BUTTON_NOT_PRESSED), MP_ROM_INT(BUTTON_NOT_PRESSED) }, }; STATIC MP_DEFINE_CONST_DICT(mp_module_hardware_globals, mp_module_hardware_globals_table);