|
|
|
@ -105,6 +105,12 @@ STATIC mp_obj_t digitalio_digitalinout_obj___exit__(size_t n_args, const mp_obj_
|
|
|
|
|
}
|
|
|
|
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(digitalio_digitalinout_obj___exit___obj, 4, 4, digitalio_digitalinout_obj___exit__);
|
|
|
|
|
|
|
|
|
|
STATIC void check_for_deinit(digitalio_digitalinout_obj_t *self) {
|
|
|
|
|
if (common_hal_digitalio_digitalinout_deinited(self)) {
|
|
|
|
|
raise_deinited_error();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//|
|
|
|
|
|
//| .. method:: switch_to_output(value=False, drive_mode=digitalio.DriveMode.PUSH_PULL)
|
|
|
|
|
//|
|
|
|
|
@ -121,7 +127,7 @@ STATIC mp_obj_t digitalio_digitalinout_switch_to_output(size_t n_args, const mp_
|
|
|
|
|
{ MP_QSTR_drive_mode, MP_ARG_OBJ, {.u_rom_obj = &digitalio_drive_mode_push_pull_obj} },
|
|
|
|
|
};
|
|
|
|
|
digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
|
|
|
|
|
raise_error_if_deinited(common_hal_digitalio_digitalinout_deinited(self));
|
|
|
|
|
check_for_deinit(self);
|
|
|
|
|
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
|
|
|
|
mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
|
|
|
|
|
|
|
|
@ -158,7 +164,7 @@ STATIC mp_obj_t digitalio_digitalinout_switch_to_input(size_t n_args, const mp_o
|
|
|
|
|
{ MP_QSTR_pull, MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
|
|
|
|
|
};
|
|
|
|
|
digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
|
|
|
|
|
raise_error_if_deinited(common_hal_digitalio_digitalinout_deinited(self));
|
|
|
|
|
check_for_deinit(self);
|
|
|
|
|
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
|
|
|
|
mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
|
|
|
|
|
|
|
|
@ -191,7 +197,7 @@ extern const digitalio_digitalio_direction_obj_t digitalio_digitalio_direction_o
|
|
|
|
|
|
|
|
|
|
STATIC mp_obj_t digitalio_digitalinout_obj_get_direction(mp_obj_t self_in) {
|
|
|
|
|
digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
|
|
|
|
raise_error_if_deinited(common_hal_digitalio_digitalinout_deinited(self));
|
|
|
|
|
check_for_deinit(self);
|
|
|
|
|
digitalio_direction_t direction = common_hal_digitalio_digitalinout_get_direction(self);
|
|
|
|
|
if (direction == DIRECTION_INPUT) {
|
|
|
|
|
return (mp_obj_t)&digitalio_direction_input_obj;
|
|
|
|
@ -202,7 +208,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(digitalio_digitalinout_get_direction_obj, digitalio_di
|
|
|
|
|
|
|
|
|
|
STATIC mp_obj_t digitalio_digitalinout_obj_set_direction(mp_obj_t self_in, mp_obj_t value) {
|
|
|
|
|
digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
|
|
|
|
raise_error_if_deinited(common_hal_digitalio_digitalinout_deinited(self));
|
|
|
|
|
check_for_deinit(self);
|
|
|
|
|
if (value == &digitalio_direction_input_obj) {
|
|
|
|
|
common_hal_digitalio_digitalinout_switch_to_input(self, PULL_NONE);
|
|
|
|
|
} else if (value == &digitalio_direction_output_obj) {
|
|
|
|
@ -227,7 +233,7 @@ const mp_obj_property_t digitalio_digitalio_direction_obj = {
|
|
|
|
|
//|
|
|
|
|
|
STATIC mp_obj_t digitalio_digitalinout_obj_get_value(mp_obj_t self_in) {
|
|
|
|
|
digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
|
|
|
|
raise_error_if_deinited(common_hal_digitalio_digitalinout_deinited(self));
|
|
|
|
|
check_for_deinit(self);
|
|
|
|
|
bool value = common_hal_digitalio_digitalinout_get_value(self);
|
|
|
|
|
return mp_obj_new_bool(value);
|
|
|
|
|
}
|
|
|
|
@ -235,7 +241,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(digitalio_digitalinout_get_value_obj, digitalio_digita
|
|
|
|
|
|
|
|
|
|
STATIC mp_obj_t digitalio_digitalinout_obj_set_value(mp_obj_t self_in, mp_obj_t value) {
|
|
|
|
|
digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
|
|
|
|
raise_error_if_deinited(common_hal_digitalio_digitalinout_deinited(self));
|
|
|
|
|
check_for_deinit(self);
|
|
|
|
|
if (common_hal_digitalio_digitalinout_get_direction(self) == DIRECTION_INPUT) {
|
|
|
|
|
mp_raise_AttributeError(translate("Cannot set value when direction is input."));
|
|
|
|
|
return mp_const_none;
|
|
|
|
@ -261,7 +267,7 @@ const mp_obj_property_t digitalio_digitalinout_value_obj = {
|
|
|
|
|
//|
|
|
|
|
|
STATIC mp_obj_t digitalio_digitalinout_obj_get_drive_mode(mp_obj_t self_in) {
|
|
|
|
|
digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
|
|
|
|
raise_error_if_deinited(common_hal_digitalio_digitalinout_deinited(self));
|
|
|
|
|
check_for_deinit(self);
|
|
|
|
|
if (common_hal_digitalio_digitalinout_get_direction(self) == DIRECTION_INPUT) {
|
|
|
|
|
mp_raise_AttributeError(translate("Drive mode not used when direction is input."));
|
|
|
|
|
return mp_const_none;
|
|
|
|
@ -276,7 +282,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(digitalio_digitalinout_get_drive_mode_obj, digitalio_d
|
|
|
|
|
|
|
|
|
|
STATIC mp_obj_t digitalio_digitalinout_obj_set_drive_mode(mp_obj_t self_in, mp_obj_t drive_mode) {
|
|
|
|
|
digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
|
|
|
|
raise_error_if_deinited(common_hal_digitalio_digitalinout_deinited(self));
|
|
|
|
|
check_for_deinit(self);
|
|
|
|
|
if (common_hal_digitalio_digitalinout_get_direction(self) == DIRECTION_INPUT) {
|
|
|
|
|
mp_raise_AttributeError(translate("Drive mode not used when direction is input."));
|
|
|
|
|
return mp_const_none;
|
|
|
|
@ -309,7 +315,7 @@ const mp_obj_property_t digitalio_digitalio_drive_mode_obj = {
|
|
|
|
|
//|
|
|
|
|
|
STATIC mp_obj_t digitalio_digitalinout_obj_get_pull(mp_obj_t self_in) {
|
|
|
|
|
digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
|
|
|
|
raise_error_if_deinited(common_hal_digitalio_digitalinout_deinited(self));
|
|
|
|
|
check_for_deinit(self);
|
|
|
|
|
if (common_hal_digitalio_digitalinout_get_direction(self) == DIRECTION_OUTPUT) {
|
|
|
|
|
mp_raise_AttributeError(translate("Pull not used when direction is output."));
|
|
|
|
|
return mp_const_none;
|
|
|
|
@ -326,7 +332,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(digitalio_digitalinout_get_pull_obj, digitalio_digital
|
|
|
|
|
|
|
|
|
|
STATIC mp_obj_t digitalio_digitalinout_obj_set_pull(mp_obj_t self_in, mp_obj_t pull_obj) {
|
|
|
|
|
digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
|
|
|
|
raise_error_if_deinited(common_hal_digitalio_digitalinout_deinited(self));
|
|
|
|
|
check_for_deinit(self);
|
|
|
|
|
if (common_hal_digitalio_digitalinout_get_direction(self) == DIRECTION_OUTPUT) {
|
|
|
|
|
mp_raise_AttributeError(translate("Pull not used when direction is output."));
|
|
|
|
|
return mp_const_none;
|
|
|
|
@ -381,7 +387,6 @@ digitalio_digitalinout_obj_t *assert_digitalinout(mp_obj_t obj) {
|
|
|
|
|
mp_raise_TypeError(translate("argument num/types mismatch"));
|
|
|
|
|
}
|
|
|
|
|
digitalio_digitalinout_obj_t *pin = MP_OBJ_TO_PTR(obj);
|
|
|
|
|
raise_error_if_deinited(
|
|
|
|
|
common_hal_digitalio_digitalinout_deinited(pin));
|
|
|
|
|
check_for_deinit(pin);
|
|
|
|
|
return pin;
|
|
|
|
|
}
|
|
|
|
|