8000 esp32/machine_pin: Add mode and pull in machine_pin_print(). · micropython/micropython@aeb7ca4 · GitHub
[go: up one dir, main page]

Skip to content

Commit aeb7ca4

Browse files
committed
esp32/machine_pin: Add mode and pull in machine_pin_print().
Signed-off-by: IhorNehrutsa <Ihor.Nehrutsa@gmail.com>
1 parent 7d8b2d8 commit aeb7ca4

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

ports/esp32/machine_pin.c

100644100755
Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@
6363
// Return the machine_pin_obj_t pointer corresponding to a machine_pin_irq_obj_t pointer.
6464
#define PIN_OBJ_PTR_FROM_IRQ_OBJ_PTR(self) ((machine_pin_obj_t *)((uintptr_t)(self) - offsetof(machine_pin_obj_t, irq)))
6565

66+
typedef struct _machine_pin_obj_cfg_t {
67+
int8_t mode;
68+
int8_t pull;
69+
} machine_pin_obj_cfg_t;
70+
71+
static machine_pin_obj_cfg_t machine_pin_obj_cfg_table[GPIO_NUM_MAX];
72+
static bool inited_cfg_table = false;
73+
6674
static const machine_pin_obj_t *machine_pin_find_named(const mp_obj_dict_t *named_pins, mp_obj_t name) {
6775
const mp_map_t *named_map = &named_pins->map;
6876
mp_map_elem_t *named_elem = mp_map_lookup((mp_map_t *)named_map, name, MP_MAP_LOOKUP);
@@ -130,7 +138,15 @@ gpio_num_t machine_pin_get_id(mp_obj_t pin_in) {
130138

131139
static void machine_pin_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
132140
machine_pin_obj_t *self = self_in;
133-
mp_printf(print, "Pin(%u)", PIN_OBJ_PTR_INDEX(self));
141+
gpio_num_t index = PIN_OBJ_PTR_INDEX(self);
142+
mp_printf(print, "Pin(%u", index);
143+
if (machine_pin_obj_cfg_table[index].mode != -1) {
144+
mp_printf(print, ", mode=%d", machine_pin_obj_cfg_table[index].mode);
145+
}
146+
if (machine_pin_obj_cfg_table[index].pull != -1) {
147+
mp_printf(print, ", pull=%d", machine_pin_obj_cfg_table[index].pull);
148+
}
149+
mp_printf(print, ")");
134150
}
135151

136152
// pin.init(mode=None, pull=-1, *, value, drive, hold)
@@ -190,6 +206,7 @@ static mp_obj_t machine_pin_obj_init_helper(const machine_pin_obj_t *self, size_
190206
}
191207
#endif
192208
gpio_set_direction(index, pin_io_mode);
209+
machine_pin_obj_cfg_table[index].mode = pin_io_mode;
193210
}
194211

195212
// configure pull
@@ -208,6 +225,7 @@ static mp_obj_t machine_pin_obj_init_helper(const machine_pin_obj_t *self, size_
208225
} else {
209226
gpio_pullup_dis(index);
210227
}
228+
machine_pin_obj_cfg_table[index].pull = mode;
211229
}
212230

213231
// configure pad hold
@@ -227,6 +245,13 @@ static mp_obj_t machine_pin_obj_init_helper(const machine_pin_obj_t *self, size_
227245
mp_obj_t mp_pin_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
228246
mp_arg_check_num(n_args, n_kw, 1, MP_OBJ_FUN_ARGS_MAX, true);
229247

248+
if (!inited_cfg_table) {
249+
inited_cfg_table = true;
250+
for (int i = 0; i < GPIO_NUM_MAX; ++i) {
251+
machine_pin_obj_cfg_table[i].mode = -1;
252+
machine_pin_obj_cfg_table[i].pull = -1;
253+
}
254+
}
230255
// get the wanted pin object
231256
const machine_pin_obj_t *self = machine_pin_find(args[0]);
232257

0 commit comments

Comments
 (0)
0