Skip to content

Commit 6314073

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 6314073

File tree

3 files changed

+28
-3
lines changed

3 files changed

+28
-3
lines changed

lib/berkeley-db-1.xx

Submodule berkeley-db-1.xx updated 212 files

lib/micropython-lib

Submodule micropython-lib updated 171 files

ports/esp32/machine_pin.c

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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy