mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-21 10:26:06 +03:00
* Scheduled Interrupt * use capital letter for Schedule.h * Prevent memory leak when attach is called multiple times without detach * Add improved schedule_function * WIP : Integrate FunctionalInterrupt & ScheduledInterrupt * Fix travis error
38 lines
851 B
C++
38 lines
851 B
C++
#ifndef FUNCTIONALINTERRUPT_H
|
|
#define FUNCTIONALINTERRUPT_H
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <functional>
|
|
#include <ScheduledFunctions.h>
|
|
|
|
extern "C" {
|
|
#include "c_types.h"
|
|
#include "ets_sys.h"
|
|
}
|
|
|
|
// Structures for communication
|
|
|
|
struct InterruptInfo {
|
|
uint8_t pin = 0;
|
|
uint8_t value = 0;
|
|
uint32_t micro = 0;
|
|
};
|
|
|
|
struct FunctionInfo {
|
|
std::function<void(void)> reqFunction = nullptr;
|
|
std::function<void(InterruptInfo)> reqScheduledFunction = nullptr;
|
|
};
|
|
|
|
struct ArgStructure {
|
|
InterruptInfo* interruptInfo = nullptr;
|
|
FunctionInfo* functionInfo = nullptr;
|
|
};
|
|
|
|
static ScheduledFunctions* scheduledInterrupts;
|
|
void attachInterrupt(uint8_t pin, std::function<void(void)> intRoutine, int mode);
|
|
void attachScheduledInterrupt(uint8_t pin, std::function<void(InterruptInfo)> scheduledIntRoutine, int mode);
|
|
|
|
|
|
#endif //INTERRUPTS_H
|