esp32/machine_pin: Fix size of machine_pin_irq_handler array.
Set the size of machine_pin_irq_handler array to GPIO_NUM_MAX: - Min GPIO_NUM_MAX is 22 for IDF_TARGET_ESP32C3. - Max GPIO_NUM_MAX is 49 for IDF_TARGET_ESP32S3. The MP_REGISTER_ROOT_POINTER entry must be hard-coded, because the location that it's evaluated by the compiler does not include the relevant IDF header to get a definition of GPIO_NUM_MAX.
This commit is contained in:
parent
12f9948151
commit
5b2929a0e6
|
@ -64,7 +64,7 @@ typedef struct _machine_pin_irq_obj_t {
|
||||||
gpio_num_t id;
|
gpio_num_t id;
|
||||||
} machine_pin_irq_obj_t;
|
} machine_pin_irq_obj_t;
|
||||||
|
|
||||||
STATIC const machine_pin_obj_t machine_pin_obj[] = {
|
STATIC const machine_pin_obj_t machine_pin_obj[GPIO_NUM_MAX] = {
|
||||||
#if CONFIG_IDF_TARGET_ESP32
|
#if CONFIG_IDF_TARGET_ESP32
|
||||||
|
|
||||||
{{&machine_pin_type}, GPIO_NUM_0},
|
{{&machine_pin_type}, GPIO_NUM_0},
|
||||||
|
@ -225,7 +225,7 @@ STATIC const machine_pin_obj_t machine_pin_obj[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// forward declaration
|
// forward declaration
|
||||||
STATIC const machine_pin_irq_obj_t machine_pin_irq_object[];
|
STATIC const machine_pin_irq_obj_t machine_pin_irq_object[GPIO_NUM_MAX];
|
||||||
|
|
||||||
void machine_pins_init(void) {
|
void machine_pins_init(void) {
|
||||||
static bool did_install = false;
|
static bool did_install = false;
|
||||||
|
@ -545,7 +545,7 @@ MP_DEFINE_CONST_OBJ_TYPE(
|
||||||
|
|
||||||
STATIC const mp_obj_type_t machine_pin_irq_type;
|
STATIC const mp_obj_type_t machine_pin_irq_type;
|
||||||
|
|
||||||
STATIC const machine_pin_irq_obj_t machine_pin_irq_object[] = {
|
STATIC const machine_pin_irq_obj_t machine_pin_irq_object[GPIO_NUM_MAX] = {
|
||||||
#if CONFIG_IDF_TARGET_ESP32
|
#if CONFIG_IDF_TARGET_ESP32
|
||||||
|
|
||||||
{{&machine_pin_irq_type}, GPIO_NUM_0},
|
{{&machine_pin_irq_type}, GPIO_NUM_0},
|
||||||
|
@ -732,4 +732,4 @@ STATIC MP_DEFINE_CONST_OBJ_TYPE(
|
||||||
locals_dict, &machine_pin_irq_locals_dict
|
locals_dict, &machine_pin_irq_locals_dict
|
||||||
);
|
);
|
||||||
|
|
||||||
MP_REGISTER_ROOT_POINTER(mp_obj_t machine_pin_irq_handler[40]);
|
MP_REGISTER_ROOT_POINTER(mp_obj_t machine_pin_irq_handler[49]); // 49 is the biggest of GPIO_NUM_MAX's
|
||||||
|
|
Loading…
Reference in New Issue