summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrobert-hh <robert@hammelrath.com>2025-01-19 11:06:26 +0100
committerDamien George <damien@micropython.org>2025-02-28 16:50:45 +1100
commit22310ae27aea56377b31bdcc2d7c2ba712316c4f (patch)
tree3705d7ccb8ad715e400293b01a553edcc1413247
parente009ab06c581cf2e8b6dbf8d2002105c97131a1f (diff)
cc3200/mods/pybpin: Implement Pin.toggle() method.
Tested with a WiPy 1 board. Signed-off-by: robert-hh <robert@hammelrath.com>
-rw-r--r--ports/cc3200/mods/pybpin.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/ports/cc3200/mods/pybpin.c b/ports/cc3200/mods/pybpin.c
index 037c78a32..ea40aa9df 100644
--- a/ports/cc3200/mods/pybpin.c
+++ b/ports/cc3200/mods/pybpin.c
@@ -680,6 +680,20 @@ static mp_obj_t pin_value(size_t n_args, const mp_obj_t *args) {
}
static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pin_value_obj, 1, 2, pin_value);
+// pin.toggle()
+static mp_obj_t pin_toggle(mp_obj_t self_in) {
+ pin_obj_t *self = self_in;
+ if (self->value) {
+ self->value = 0;
+ MAP_GPIOPinWrite(self->port, self->bit, 0);
+ } else {
+ self->value = 1;
+ MAP_GPIOPinWrite(self->port, self->bit, self->bit);
+ }
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(pin_toggle_obj, pin_toggle);
+
static mp_obj_t pin_id(mp_obj_t self_in) {
pin_obj_t *self = self_in;
return MP_OBJ_NEW_QSTR(self->name);
@@ -902,6 +916,7 @@ static const mp_rom_map_elem_t pin_locals_dict_table[] = {
// instance methods
{ MP_ROM_QSTR(MP_QSTR_init), MP_ROM_PTR(&pin_init_obj) },
{ MP_ROM_QSTR(MP_QSTR_value), MP_ROM_PTR(&pin_value_obj) },
+ { MP_ROM_QSTR(MP_QSTR_toggle), MP_ROM_PTR(&pin_toggle_obj) },
{ MP_ROM_QSTR(MP_QSTR_id), MP_ROM_PTR(&pin_id_obj) },
{ MP_ROM_QSTR(MP_QSTR_mode), MP_ROM_PTR(&pin_mode_obj) },
{ MP_ROM_QSTR(MP_QSTR_pull), MP_ROM_PTR(&pin_pull_obj) },