Skip to content

Commit

Permalink
extmod/machine_signal: Add signal_print() as repr() function.
Browse files Browse the repository at this point in the history
Test code is:
```
from machine import Pin, Signal
signal22= Signal(Pin(22, mode=Pin.OUT))
signal22
signal21= Signal(Pin(21, mode=Pin.IN), invert=True)
signal21
```
Ounput is:
```
Signal(Pin(22))
Signal(Pin(21), invert=True)
```
instead of
```
<Signal>
<Signal>
```
  • Loading branch information
IhorNehrutsa committed Aug 23, 2023
1 parent 2919a9f commit 6abd27c
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions extmod/machine_signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 6abd27c

Please sign in to comment.