Skip to content

Commit b968905

Browse files
committed
Remove special support for FunctionalInterrupt from core interrupt handling:
- VIP treatment in general attach/detach/handling looks untidy: extern symbols without matching header include but copy&paste special under-the-hood c++ delete support, where everyone else has to do their own resource tracking as usual. - FunctionalInterrupt is not used by anything inside core ESP32 Arduino for 8 months now, it can be a library, which reduces precious core size for everyone else. This reverts commit ea61563.
1 parent 5972c52 commit b968905

File tree

5 files changed

+7
-27
lines changed

5 files changed

+7
-27
lines changed

CMakeLists.txt

-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ set(CORE_SRCS
1919
cores/esp32/esp32-hal-uart.c
2020
cores/esp32/esp32-hal-rmt.c
2121
cores/esp32/Esp.cpp
22-
cores/esp32/FunctionalInterrupt.cpp
2322
cores/esp32/HardwareSerial.cpp
2423
cores/esp32/IPAddress.cpp
2524
cores/esp32/IPv6Address.cpp

cores/esp32/esp32-hal-gpio.c

+2-21
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ typedef void (*voidFuncPtrArg)(void*);
7474
typedef struct {
7575
voidFuncPtr fn;
7676
void* arg;
77-
bool functional;
7877
} InterruptHandle_t;
7978
static InterruptHandle_t __pinInterruptHandlers[GPIO_PIN_COUNT] = {0,};
8079

@@ -239,9 +238,7 @@ static void IRAM_ATTR __onPinInterrupt()
239238
}
240239
}
241240

242-
extern void cleanupFunctional(void* arg);
243-
244-
extern void __attachInterruptFunctionalArg(uint8_t pin, voidFuncPtrArg userFunc, void * arg, int intr_type, bool functional)
241+
extern void __attachInterruptArg(uint8_t pin, voidFuncPtrArg userFunc, void* arg, int intr_type)
245242
{
246243
static bool interrupt_initialized = false;
247244

@@ -250,14 +247,8 @@ extern void __attachInterruptFunctionalArg(uint8_t pin, voidFuncPtrArg userFunc,
250247
esp_intr_alloc(ETS_GPIO_INTR_SOURCE, (int)ESP_INTR_FLAG_IRAM, __onPinInterrupt, NULL, &gpio_intr_handle);
251248
}
252249

253-
// if new attach without detach remove old info
254-
if (__pinInterruptHandlers[pin].functional && __pinInterruptHandlers[pin].arg)
255-
{
256-
cleanupFunctional(__pinInterruptHandlers[pin].arg);
257-
}
258250
__pinInterruptHandlers[pin].fn = (voidFuncPtr)userFunc;
259251
__pinInterruptHandlers[pin].arg = arg;
260-
__pinInterruptHandlers[pin].functional = functional;
261252

262253
esp_intr_disable(gpio_intr_handle);
263254
if(esp_intr_get_cpu(gpio_intr_handle)) { //APP_CPU
@@ -269,25 +260,15 @@ extern void __attachInterruptFunctionalArg(uint8_t pin, voidFuncPtrArg userFunc,
269260
esp_intr_enable(gpio_intr_handle);
270261
}
271262

272-
extern void __attachInterruptArg(uint8_t pin, voidFuncPtrArg userFunc, void * arg, int intr_type)
273-
{
274-
__attachInterruptFunctionalArg(pin, userFunc, arg, intr_type, false);
275-
}
276-
277263
extern void __attachInterrupt(uint8_t pin, voidFuncPtr userFunc, int intr_type) {
278-
__attachInterruptFunctionalArg(pin, (voidFuncPtrArg)userFunc, NULL, intr_type, false);
264+
__attachInterruptArg(pin, (voidFuncPtrArg)userFunc, NULL, intr_type);
279265
}
280266

281267
extern void __detachInterrupt(uint8_t pin)
282268
{
283269
esp_intr_disable(gpio_intr_handle);
284-
if (__pinInterruptHandlers[pin].functional && __pinInterruptHandlers[pin].arg)
285-
{
286-
cleanupFunctional(__pinInterruptHandlers[pin].arg);
287-
}
288270
__pinInterruptHandlers[pin].fn = NULL;
289271
__pinInterruptHandlers[pin].arg = NULL;
290-
__pinInterruptHandlers[pin].functional = false;
291272

292273
GPIO.pin[pin].int_ena = 0;
293274
GPIO.pin[pin].int_type = 0;

cores/esp32/FunctionalInterrupt.cpp renamed to libraries/ESP32/examples/GPIO/FunctionalInterrupt/FunctionalInterrupt.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77

88
#include "FunctionalInterrupt.h"
9-
#include "Arduino.h"
9+
#include <Arduino.h>
1010

1111
typedef void (*voidFuncPtr)(void);
1212
typedef void (*voidFuncPtrArg)(void*);

libraries/ESP32/examples/GPIO/FunctionalInterrupt/FunctionalInterrupt.ino

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <Arduino.h>
2-
#include <FunctionalInterrupt.h>
2+
#include "FunctionalInterrupt.h"
33

44
#define BUTTON1 16
55
#define BUTTON2 17
@@ -29,16 +29,16 @@ public:
2929

3030
private:
3131
const uint8_t PIN;
32-
volatile uint32_t numberKeyPresses;
33-
volatile bool pressed;
32+
volatile uint32_t numberKeyPresses;
33+
volatile bool pressed;
3434
};
3535

3636
Button button1(BUTTON1);
3737
Button button2(BUTTON2);
3838

3939

4040
void setup() {
41-
Serial.begin(115200);
41+
Serial.begin(115200);
4242
}
4343

4444
void loop() {

0 commit comments

Comments
 (0)