summaryrefslogtreecommitdiff
path: root/shared-bindings/digitalio/DigitalInOut.c
diff options
context:
space:
mode:
Diffstat (limited to 'shared-bindings/digitalio/DigitalInOut.c')
-rw-r--r--shared-bindings/digitalio/DigitalInOut.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/shared-bindings/digitalio/DigitalInOut.c b/shared-bindings/digitalio/DigitalInOut.c
index 0cea74da0..eaf2c1810 100644
--- a/shared-bindings/digitalio/DigitalInOut.c
+++ b/shared-bindings/digitalio/DigitalInOut.c
@@ -131,7 +131,10 @@ STATIC mp_obj_t digitalio_digitalinout_switch_to_output(size_t n_args, const mp_
drive_mode = DRIVE_MODE_OPEN_DRAIN;
}
// do the transfer
- common_hal_digitalio_digitalinout_switch_to_output(self, args[ARG_value].u_bool, drive_mode);
+ digitalinout_result_t result = common_hal_digitalio_digitalinout_switch_to_output(self, args[ARG_value].u_bool, drive_mode);
+ if (result == DIGITALINOUT_INPUT_ONLY) {
+ mp_raise_NotImplementedError(translate("Pin is input only"));
+ }
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_KW(digitalio_digitalinout_switch_to_output_obj, 1, digitalio_digitalinout_switch_to_output);
@@ -207,7 +210,10 @@ STATIC mp_obj_t digitalio_digitalinout_obj_set_direction(mp_obj_t self_in, mp_ob
if (value == &digitalio_direction_input_obj) {
common_hal_digitalio_digitalinout_switch_to_input(self, PULL_NONE);
} else if (value == &digitalio_direction_output_obj) {
- common_hal_digitalio_digitalinout_switch_to_output(self, false, DRIVE_MODE_PUSH_PULL);
+ digitalinout_result_t result = common_hal_digitalio_digitalinout_switch_to_output(self, false, DRIVE_MODE_PUSH_PULL);
+ if (result == DIGITALINOUT_INPUT_ONLY) {
+ mp_raise_NotImplementedError(translate("Pin is input only"));
+ }
} else {
mp_raise_ValueError(translate("Invalid direction."));
}