diff --git a/pycardium/modules/buttons.c b/pycardium/modules/buttons.c index ab8dabd7d28692f7e586dc64d717c4c3cfb6aa31..ace61e722efdb977d12951a4eb96031dbb9dd005 100644 --- a/pycardium/modules/buttons.c +++ b/pycardium/modules/buttons.c @@ -5,13 +5,24 @@ #include "epicardium.h" -static mp_obj_t mp_buttons_read(mp_obj_t mask_in) +static mp_obj_t mp_buttons_read(size_t n_args, const mp_obj_t *args) { - uint8_t mask = mp_obj_get_int(mask_in); + uint8_t mask; + if (n_args == 1) { + mp_int_t mask_int = mp_obj_get_int(args[0]); + if (mask_int > 255) { + mp_raise_ValueError("mask must be less than 256"); + } + mask = (uint8_t)mask_int; + } else { + mask = 0xff; + } uint8_t button_states = epic_buttons_read(mask); return MP_OBJ_NEW_SMALL_INT(button_states); } -static MP_DEFINE_CONST_FUN_OBJ_1(buttons_read_obj, mp_buttons_read); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN( + buttons_read_obj, 0, 1, mp_buttons_read +); static const mp_rom_map_elem_t buttons_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_buttons) },