Skip to content

Commit 9f6590e

Browse files
committed
Hotfix: add missing install step of ISRs + fix ISR indexing
1 parent 03e3e70 commit 9f6590e

1 file changed

Lines changed: 37 additions & 32 deletions

File tree

src/Primitives/arduino.cpp

Lines changed: 37 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ int isr_index = 0;
7070
dbg_info("installing isr number: %d of %d with name: %s\n", \
7171
isr_index + 1, ALL_ISRS, isr_##number); \
7272
if (isr_index < ALL_ISRS) { \
73-
ISREntry *p = &ISRs[isr_index]; \
73+
ISREntry *p = &ISRs[isr_index++]; \
7474
p->pin = number; \
7575
p->ISR_callback = &(isr_##number); \
7676
} else { \
@@ -79,8 +79,10 @@ int isr_index = 0;
7979
}
8080

8181
/* Private macro to create an ISR for a specific pin*/
82+
#define topic(pin) "interrupt_" #pin
83+
8284
#define def_isr(pin) \
83-
void isr_##pin() { CallbackHandler::push_event("interrupt_##pin", "", 0); }
85+
void isr_##pin() { CallbackHandler::push_event(#pin, "", 0); }
8486

8587
/* Common GPIO pins on ESP32 devices:*/
8688
def_isr(1);
@@ -110,10 +112,11 @@ def_isr(36);
110112
def_isr(39);
111113

112114
int resolve_isr(int pin) {
113-
debug("Resolve ISR (%d) for %s \n", ALL_ISRS, pin);
115+
debug("Resolve ISR (%d) for %i \n", ALL_ISRS, pin);
114116

115117
for (int i = 0; i < ALL_ISRS; i++) {
116118
auto &isr = ISRs[i];
119+
debug("Checking entry %i of %i: pin = %i \n", i, ALL_ISRS, isr.pin);
117120
if (pin == isr.pin) {
118121
debug("FOUND ISR\n");
119122
return i;
@@ -887,11 +890,38 @@ int32_t http_post_request(Module *m, const String url, const String body,
887890
}
888891

889892
//------------------------------------------------------
890-
// Installing all the primitives
893+
// Installing all the primitives & ISRs
891894
//------------------------------------------------------
895+
void install_isrs() {
896+
install_isr(1);
897+
install_isr(2);
898+
install_isr(3);
899+
install_isr(4);
900+
install_isr(5);
901+
install_isr(12);
902+
install_isr(13);
903+
install_isr(14);
904+
install_isr(15);
905+
install_isr(16);
906+
install_isr(17);
907+
install_isr(18);
908+
install_isr(19);
909+
install_isr(21);
910+
install_isr(22);
911+
install_isr(23);
912+
install_isr(25);
913+
install_isr(26);
914+
install_isr(27);
915+
install_isr(32);
916+
install_isr(33);
917+
install_isr(34);
918+
install_isr(35);
919+
install_isr(36);
920+
install_isr(39);
921+
}
922+
892923
void install_primitives() {
893924
dbg_info("INSTALLING PRIMITIVES\n");
894-
dbg_info("INSTALLING ARDUINO\n");
895925
install_primitive(abort);
896926
install_primitive(millis);
897927
install_primitive(micros);
@@ -939,34 +969,9 @@ void install_primitives() {
939969
install_primitive(chip_analog_write);
940970
install_primitive(chip_ledc_setup);
941971
install_primitive(chip_ledc_attach_pin);
942-
}
943972

944-
void install_isrs() {
945-
install_isr(1);
946-
install_isr(2);
947-
install_isr(3);
948-
install_isr(4);
949-
install_isr(5);
950-
install_isr(12);
951-
install_isr(13);
952-
install_isr(14);
953-
install_isr(15);
954-
install_isr(16);
955-
install_isr(17);
956-
install_isr(18);
957-
install_isr(19);
958-
install_isr(21);
959-
install_isr(22);
960-
install_isr(23);
961-
install_isr(25);
962-
install_isr(26);
963-
install_isr(27);
964-
install_isr(32);
965-
install_isr(33);
966-
install_isr(34);
967-
install_isr(35);
968-
install_isr(36);
969-
install_isr(39);
973+
dbg_info("INSTALLING ISRs\n");
974+
install_isrs();
970975
}
971976

972977
//------------------------------------------------------

0 commit comments

Comments
 (0)