aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Sokolovsky2017-02-08 11:14:23 +0300
committerPaul Sokolovsky2017-02-08 11:14:23 +0300
commit181f7d145002731e5baec0f2c43ac57818447f8b (patch)
tree85ac35d44c58eb18b0b394755c31a97d8707b974
parent7ae9bee7905601a827f3d216300f917afbacf07e (diff)
extmod/machine_signal: Implement Signal .on() and .off() methods.
Each method asserts and deasserts signal respectively. They are equivalent to .value(1) and .value(0) but conceptually simpler (and may help to avoid confusion with inverted signals, where "asserted" state means logical 0 output).
-rw-r--r--extmod/machine_signal.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/extmod/machine_signal.c b/extmod/machine_signal.c
index fb179c438..de6c3ff32 100644
--- a/extmod/machine_signal.c
+++ b/extmod/machine_signal.c
@@ -92,8 +92,22 @@ STATIC mp_obj_t signal_value(size_t n_args, const mp_obj_t *args) {
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(signal_value_obj, 1, 2, signal_value);
+STATIC mp_obj_t signal_on(mp_obj_t self_in) {
+ mp_virtual_pin_write(self_in, 1);
+ return mp_const_none;
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_1(signal_on_obj, signal_on);
+
+STATIC mp_obj_t signal_off(mp_obj_t self_in) {
+ mp_virtual_pin_write(self_in, 0);
+ return mp_const_none;
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_1(signal_off_obj, signal_off);
+
STATIC const mp_rom_map_elem_t signal_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_value), MP_ROM_PTR(&signal_value_obj) },
+ { MP_ROM_QSTR(MP_QSTR_on), MP_ROM_PTR(&signal_on_obj) },
+ { MP_ROM_QSTR(MP_QSTR_off), MP_ROM_PTR(&signal_off_obj) },
};
STATIC MP_DEFINE_CONST_DICT(signal_locals_dict, signal_locals_dict_table);