diff --git a/extmod/machine_signal.c b/extmod/machine_signal.c index 7922ed70771e9..caf74cbc1d47c 100644 --- a/extmod/machine_signal.c +++ b/extmod/machine_signal.c @@ -114,6 +114,21 @@ STATIC mp_obj_t signal_make_new(const mp_obj_type_t *type, size_t n_args, size_t return MP_OBJ_FROM_PTR(o); } +STATIC void signal_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { + machine_signal_t *self = (machine_signal_t *)self_in; + const mp_print_fun_t pin_print_function = (mp_print_fun_t)MP_OBJ_TYPE_GET_SLOT_OR_NULL(mp_obj_get_type(self->pin), print); + mp_printf(print, "Signal("); + if (pin_print_function) { + pin_print_function(print, self->pin, kind); + } else { + mp_printf(print, "Pin()"); // correct the port + } + if (self->invert) { + mp_printf(print, ", invert=True"); + } + mp_printf(print, ")"); +} + STATIC mp_uint_t signal_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t arg, int *errcode) { (void)errcode; machine_signal_t *self = MP_OBJ_TO_PTR(self_in); @@ -177,6 +192,7 @@ MP_DEFINE_CONST_OBJ_TYPE( MP_QSTR_Signal, MP_TYPE_FLAG_NONE, make_new, signal_make_new, + print, signal_print, call, signal_call, protocol, &signal_pin_p, locals_dict, &signal_locals_dict