diff --git a/micropython/modules/breakout_as7262/breakout_as7262.c b/micropython/modules/breakout_as7262/breakout_as7262.c index e2d9ee1d..f402dcbc 100644 --- a/micropython/modules/breakout_as7262/breakout_as7262.c +++ b/micropython/modules/breakout_as7262/breakout_as7262.c @@ -11,12 +11,12 @@ MP_DEFINE_CONST_FUN_OBJ_1(BreakoutAS7262_hardware_version_obj, BreakoutAS7262_ha MP_DEFINE_CONST_FUN_OBJ_1(BreakoutAS7262_firmware_version_obj, BreakoutAS7262_firmware_version); MP_DEFINE_CONST_FUN_OBJ_1(BreakoutAS7262_read_obj, BreakoutAS7262_read); MP_DEFINE_CONST_FUN_OBJ_1(BreakoutAS7262_temperature_obj, BreakoutAS7262_temperature); -MP_DEFINE_CONST_FUN_OBJ_KW(BreakoutAS7262_set_gain_obj, 1, BreakoutAS7262_set_gain); -MP_DEFINE_CONST_FUN_OBJ_KW(BreakoutAS7262_set_measurement_mode_obj, 1, BreakoutAS7262_set_measurement_mode); -MP_DEFINE_CONST_FUN_OBJ_KW(BreakoutAS7262_set_indicator_current_obj, 1, BreakoutAS7262_set_indicator_current); -MP_DEFINE_CONST_FUN_OBJ_KW(BreakoutAS7262_set_illumination_current_obj, 1, BreakoutAS7262_set_illumination_current); -MP_DEFINE_CONST_FUN_OBJ_KW(BreakoutAS7262_set_integration_time_obj, 1, BreakoutAS7262_set_integration_time); -MP_DEFINE_CONST_FUN_OBJ_KW(BreakoutAS7262_set_leds_obj, 1, BreakoutAS7262_set_leds); +MP_DEFINE_CONST_FUN_OBJ_2(BreakoutAS7262_set_gain_obj, BreakoutAS7262_set_gain); +MP_DEFINE_CONST_FUN_OBJ_2(BreakoutAS7262_set_measurement_mode_obj, BreakoutAS7262_set_measurement_mode); +MP_DEFINE_CONST_FUN_OBJ_2(BreakoutAS7262_set_indicator_current_obj, BreakoutAS7262_set_indicator_current); +MP_DEFINE_CONST_FUN_OBJ_2(BreakoutAS7262_set_illumination_current_obj, BreakoutAS7262_set_illumination_current); +MP_DEFINE_CONST_FUN_OBJ_2(BreakoutAS7262_set_integration_time_obj, BreakoutAS7262_set_integration_time); +MP_DEFINE_CONST_FUN_OBJ_3(BreakoutAS7262_set_leds_obj, BreakoutAS7262_set_leds); /***** Binding of Methods *****/ STATIC const mp_rom_map_elem_t BreakoutAS7262_locals_dict_table[] = { @@ -26,24 +26,29 @@ STATIC const mp_rom_map_elem_t BreakoutAS7262_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_firmware_version), MP_ROM_PTR(&BreakoutAS7262_firmware_version_obj) }, { MP_ROM_QSTR(MP_QSTR_read), MP_ROM_PTR(&BreakoutAS7262_read_obj) }, { MP_ROM_QSTR(MP_QSTR_temperature), MP_ROM_PTR(&BreakoutAS7262_temperature_obj) }, + { MP_ROM_QSTR(MP_QSTR_set_gain), MP_ROM_PTR(&BreakoutAS7262_set_gain_obj) }, { MP_ROM_QSTR(MP_QSTR_set_measurement_mode), MP_ROM_PTR(&BreakoutAS7262_set_measurement_mode_obj) }, { MP_ROM_QSTR(MP_QSTR_set_indicator_current), MP_ROM_PTR(&BreakoutAS7262_set_indicator_current_obj) }, { MP_ROM_QSTR(MP_QSTR_set_illumination_current), MP_ROM_PTR(&BreakoutAS7262_set_illumination_current_obj) }, { MP_ROM_QSTR(MP_QSTR_set_integration_time), MP_ROM_PTR(&BreakoutAS7262_set_integration_time_obj) }, { MP_ROM_QSTR(MP_QSTR_set_leds), MP_ROM_PTR(&BreakoutAS7262_set_leds_obj) }, + { MP_ROM_QSTR(MP_QSTR_X1), MP_ROM_INT(MP_X1) }, { MP_ROM_QSTR(MP_QSTR_X3_7), MP_ROM_INT(MP_X3_7) }, { MP_ROM_QSTR(MP_QSTR_X16), MP_ROM_INT(MP_X16) }, { MP_ROM_QSTR(MP_QSTR_X64), MP_ROM_INT(MP_X64) }, + { MP_ROM_QSTR(MP_QSTR_MA12), MP_ROM_INT(MP_MA12) }, { MP_ROM_QSTR(MP_QSTR_MA25), MP_ROM_INT(MP_MA25) }, { MP_ROM_QSTR(MP_QSTR_MA50), MP_ROM_INT(MP_MA50) }, { MP_ROM_QSTR(MP_QSTR_MA100), MP_ROM_INT(MP_MA100) }, + { MP_ROM_QSTR(MP_QSTR_MA1), MP_ROM_INT(MP_MA1) }, { MP_ROM_QSTR(MP_QSTR_MA2), MP_ROM_INT(MP_MA2) }, { MP_ROM_QSTR(MP_QSTR_MA4), MP_ROM_INT(MP_MA4) }, { MP_ROM_QSTR(MP_QSTR_MA8), MP_ROM_INT(MP_MA8) }, + { MP_ROM_QSTR(MP_QSTR_CONT_YGNV), MP_ROM_INT(MP_CONT_YGNV) }, { MP_ROM_QSTR(MP_QSTR_CONT_ROYG), MP_ROM_INT(MP_CONT_ROYG) }, { MP_ROM_QSTR(MP_QSTR_CONT_ROYGBR), MP_ROM_INT(MP_CONT_ROYGBR) }, diff --git a/micropython/modules/breakout_as7262/breakout_as7262.cpp b/micropython/modules/breakout_as7262/breakout_as7262.cpp index 1309190f..e1190230 100644 --- a/micropython/modules/breakout_as7262/breakout_as7262.cpp +++ b/micropython/modules/breakout_as7262/breakout_as7262.cpp @@ -96,125 +96,61 @@ mp_obj_t BreakoutAS7262_temperature(mp_obj_t self_in) { return mp_obj_new_int(self->breakout->temperature()); } -mp_obj_t BreakoutAS7262_set_gain(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { - enum { ARG_self, ARG_gain }; - static const mp_arg_t allowed_args[] = { - { MP_QSTR_, MP_ARG_REQUIRED | MP_ARG_OBJ }, - { MP_QSTR_gain, MP_ARG_REQUIRED | MP_ARG_INT }, - }; +mp_obj_t BreakoutAS7262_set_gain(mp_obj_t self_in, mp_obj_t value_in) { + breakout_as7262_BreakoutAS7262_obj_t *self = MP_OBJ_TO_PTR2(self_in, breakout_as7262_BreakoutAS7262_obj_t); - mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; - mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); - - int gain = args[ARG_gain].u_int; - if(gain < 0 || gain > 3) { - mp_raise_ValueError("mode not a valid value. Expected 0 to 3 (X1, X3_7, X16, X64)"); - } - else { - breakout_as7262_BreakoutAS7262_obj_t *self = MP_OBJ_TO_PTR2(args[ARG_self].u_obj, breakout_as7262_BreakoutAS7262_obj_t); - self->breakout->set_gain((BreakoutAS7262::gain)gain); - } - - return mp_const_none; -} - -mp_obj_t BreakoutAS7262_set_measurement_mode(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { - enum { ARG_self, ARG_mode }; - static const mp_arg_t allowed_args[] = { - { MP_QSTR_, MP_ARG_REQUIRED | MP_ARG_OBJ }, - { MP_QSTR_mode, MP_ARG_REQUIRED | MP_ARG_INT }, - }; - - mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; - mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); - - int mode = args[ARG_mode].u_int; - if(mode < 0 || mode > 3) { - mp_raise_ValueError("mode not a valid value. Expected 0 to 3 (CONT_YGNV, CONT_ROYG, CONT_ROYGBR, ONESHOT)"); - } - else { - breakout_as7262_BreakoutAS7262_obj_t *self = MP_OBJ_TO_PTR2(args[ARG_self].u_obj, breakout_as7262_BreakoutAS7262_obj_t); - self->breakout->set_measurement_mode((BreakoutAS7262::measurement_mode)mode); - } - - return mp_const_none; -} - -mp_obj_t BreakoutAS7262_set_indicator_current(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { - enum { ARG_self, ARG_current }; - static const mp_arg_t allowed_args[] = { - { MP_QSTR_, MP_ARG_REQUIRED | MP_ARG_OBJ }, - { MP_QSTR_current, MP_ARG_REQUIRED | MP_ARG_INT }, - }; - - mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; - mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); + int value = mp_obj_get_int(value_in) & 3; - int current = args[ARG_current].u_int; - if(current < 0 || current > 3) { - mp_raise_ValueError("current not a valid value. Expected 0 to 3 (MA1, MA2, MA4, MA8)"); - } - else { - breakout_as7262_BreakoutAS7262_obj_t *self = MP_OBJ_TO_PTR2(args[ARG_self].u_obj, breakout_as7262_BreakoutAS7262_obj_t); - self->breakout->set_indicator_current((BreakoutAS7262::indicator_current)current); - } + self->breakout->set_gain((BreakoutAS7262::gain)value); return mp_const_none; } -mp_obj_t BreakoutAS7262_set_illumination_current(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { - enum { ARG_self, ARG_current }; - static const mp_arg_t allowed_args[] = { - { MP_QSTR_, MP_ARG_REQUIRED | MP_ARG_OBJ }, - { MP_QSTR_current, MP_ARG_REQUIRED | MP_ARG_INT }, - }; +mp_obj_t BreakoutAS7262_set_measurement_mode(mp_obj_t self_in, mp_obj_t value_in) { + breakout_as7262_BreakoutAS7262_obj_t *self = MP_OBJ_TO_PTR2(self_in, breakout_as7262_BreakoutAS7262_obj_t); - mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; - mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); + int value = mp_obj_get_int(value_in) & 3; - int current = args[ARG_current].u_int; - if(current < 0 || current > 3) { - mp_raise_ValueError("current not a valid value. Expected 0 to 3 (MA12, MA25, MA50, MA100)"); - } - else { - breakout_as7262_BreakoutAS7262_obj_t *self = MP_OBJ_TO_PTR2(args[ARG_self].u_obj, breakout_as7262_BreakoutAS7262_obj_t); - self->breakout->set_illumination_current((BreakoutAS7262::illumination_current)current); - } + self->breakout->set_measurement_mode((BreakoutAS7262::measurement_mode)value); return mp_const_none; } -mp_obj_t BreakoutAS7262_set_integration_time(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { - enum { ARG_self, ARG_integration_time }; - static const mp_arg_t allowed_args[] = { - { MP_QSTR_, MP_ARG_REQUIRED | MP_ARG_OBJ }, - { MP_QSTR_integration_time, MP_ARG_REQUIRED | MP_ARG_OBJ }, - }; +mp_obj_t BreakoutAS7262_set_indicator_current(mp_obj_t self_in, mp_obj_t value_in) { + breakout_as7262_BreakoutAS7262_obj_t *self = MP_OBJ_TO_PTR2(self_in, breakout_as7262_BreakoutAS7262_obj_t); - mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; - mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); + int value = mp_obj_get_int(value_in) & 3; - float integration_time = mp_obj_get_float(args[ARG_integration_time].u_obj); - - breakout_as7262_BreakoutAS7262_obj_t *self = MP_OBJ_TO_PTR2(args[ARG_self].u_obj, breakout_as7262_BreakoutAS7262_obj_t); - self->breakout->set_integration_time(integration_time); + self->breakout->set_indicator_current((BreakoutAS7262::indicator_current)value); return mp_const_none; } -mp_obj_t BreakoutAS7262_set_leds(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { - enum { ARG_self, ARG_illumination, ARG_indicator }; - static const mp_arg_t allowed_args[] = { - { MP_QSTR_, MP_ARG_REQUIRED | MP_ARG_OBJ }, - { MP_QSTR_illumination, MP_ARG_REQUIRED | MP_ARG_BOOL }, - { MP_QSTR_indicator, MP_ARG_REQUIRED | MP_ARG_BOOL }, - }; +mp_obj_t BreakoutAS7262_set_illumination_current(mp_obj_t self_in, mp_obj_t value_in) { + breakout_as7262_BreakoutAS7262_obj_t *self = MP_OBJ_TO_PTR2(self_in, breakout_as7262_BreakoutAS7262_obj_t); - mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; - mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); + int value = mp_obj_get_int(value_in) & 3; - breakout_as7262_BreakoutAS7262_obj_t *self = MP_OBJ_TO_PTR2(args[ARG_self].u_obj, breakout_as7262_BreakoutAS7262_obj_t); - self->breakout->set_leds(args[ARG_illumination].u_bool, args[ARG_indicator].u_bool); + self->breakout->set_illumination_current((BreakoutAS7262::illumination_current)value); + + return mp_const_none; +} + +mp_obj_t BreakoutAS7262_set_integration_time(mp_obj_t self_in, mp_obj_t value_in) { + breakout_as7262_BreakoutAS7262_obj_t *self = MP_OBJ_TO_PTR2(self_in, breakout_as7262_BreakoutAS7262_obj_t); + + self->breakout->set_integration_time(mp_obj_get_float(value_in)); + + return mp_const_none; +} + +mp_obj_t BreakoutAS7262_set_leds(mp_obj_t self_in, mp_obj_t illumination, mp_obj_t indicator) { + breakout_as7262_BreakoutAS7262_obj_t *self = MP_OBJ_TO_PTR2(self_in, breakout_as7262_BreakoutAS7262_obj_t); + + self->breakout->set_leds( + illumination == mp_const_true, + indicator == mp_const_true + ); return mp_const_none; } diff --git a/micropython/modules/breakout_as7262/breakout_as7262.h b/micropython/modules/breakout_as7262/breakout_as7262.h index 1c3454d3..95b8076a 100644 --- a/micropython/modules/breakout_as7262/breakout_as7262.h +++ b/micropython/modules/breakout_as7262/breakout_as7262.h @@ -41,9 +41,9 @@ extern mp_obj_t BreakoutAS7262_hardware_version(mp_obj_t self_in); extern mp_obj_t BreakoutAS7262_firmware_version(mp_obj_t self_in); extern mp_obj_t BreakoutAS7262_read(mp_obj_t self_in); extern mp_obj_t BreakoutAS7262_temperature(mp_obj_t self_in); -extern mp_obj_t BreakoutAS7262_set_gain(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args); -extern mp_obj_t BreakoutAS7262_set_measurement_mode(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args); -extern mp_obj_t BreakoutAS7262_set_indicator_current(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args); -extern mp_obj_t BreakoutAS7262_set_illumination_current(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args); -extern mp_obj_t BreakoutAS7262_set_integration_time(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args); -extern mp_obj_t BreakoutAS7262_set_leds(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args); \ No newline at end of file +extern mp_obj_t BreakoutAS7262_set_gain(mp_obj_t self_in, mp_obj_t value_in); +extern mp_obj_t BreakoutAS7262_set_measurement_mode(mp_obj_t self_in, mp_obj_t value_in); +extern mp_obj_t BreakoutAS7262_set_indicator_current(mp_obj_t self_in, mp_obj_t value_in); +extern mp_obj_t BreakoutAS7262_set_illumination_current(mp_obj_t self_in, mp_obj_t value_in); +extern mp_obj_t BreakoutAS7262_set_integration_time(mp_obj_t self_in, mp_obj_t value_in); +extern mp_obj_t BreakoutAS7262_set_leds(mp_obj_t self_in, mp_obj_t illumination, mp_obj_t indicator); \ No newline at end of file