Skip to content

Commit 5de726f

Browse files
authored
Merge pull request #13 from natnqweb/V1.1.2
V1.1.2
2 parents 1b386df + 20e34e8 commit 5de726f

File tree

4 files changed

+66
-58
lines changed

4 files changed

+66
-58
lines changed

README.md

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
# **EventOS Library** Version - 1.1.1
2+
# **EventOS Library** Version - 1.1.2
33

44
## Fully Tested On
55

@@ -221,26 +221,28 @@ You can modify supported pins array whatever you like (add, remove) - basicaly a
221221
// you can custom map any board as long as it is supported by arduino framework
222222
// esp32 , esp8266 .. all arduino.. raspberrypi .. stm ... etc...
223223
static const ArrSizeType numberOfPins{ 2 };
224+
#define PIN_A 4
225+
#define PIN_B 5
224226
PinType customPinMap[numberOfPins]
225227
{
226228
//* REAL ACTUAL BOARD PIN - pin that you pass for example to digitalRead(REAL ACTUAL BOARD PIN)
227-
ADD_PIN(5)
228-
ADD_PIN(4)
229+
ADD_PIN(PIN_A)
230+
ADD_PIN(PIN_B)
229231
};
230232

231233
// define PinEvent array it hold your events
232234
PinEvent customEvents[numberOfPins]{};
233235

234-
void Pin5FallingEvent()
236+
void PinAFallingEvent()
235237
{
236-
LOG("pin 1 state changed from 1 to ");
237-
LOGLN(GetPinState(5));
238+
LOG("PinA state changed from 1 to ");
239+
LOGLN(GetPinState(PIN_A));
238240
}
239241

240-
void Pin4FallingEvent()
242+
void PinBFallingEvent()
241243
{
242-
LOG("pin 2 state changed from 1 to ");
243-
LOGLN(GetPinState(4));
244+
LOG("PinB state changed from 1 to ");
245+
LOGLN(GetPinState(PIN_B));
244246
}
245247
// OVERRIDE DEFAULT PROGRAM_SETUP
246248
__OVERRIDE void PROGRAM_SETUP(115200)
@@ -250,18 +252,15 @@ You can modify supported pins array whatever you like (add, remove) - basicaly a
250252

251253
//USER CODE
252254
//HERE ...
253-
AddEventListener(5, ON_FALLING_EDGE_EVENT, Pin5FallingEvent);
254-
AddEventListener(4, ON_FALLING_EDGE_EVENT, Pin4FallingEvent);
255+
AddEventListener(PIN_A, ON_FALLING_EDGE_EVENT, PinAFallingEvent);
256+
AddEventListener(PIN_B, ON_FALLING_EDGE_EVENT, PinBFallingEvent);
255257
LOGLN("program started");
256258
}
257259

258260
void PROGRAM_LOOP()
259261
{
260262

261263
}
262-
263-
264-
265264
```
266265

267266
# **How To Add Event Listener**

examples/FullyCustom/FullyCustom.ino

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,28 @@
44
// you can custom map any board as long as it is supported by arduino framework
55
// esp32 , esp8266 .. all arduino.. raspberrypi .. stm ... etc...
66
static const ArrSizeType numberOfPins{ 2 };
7+
#define PIN_A 4
8+
#define PIN_B 5
79
PinType customPinMap[numberOfPins]
810
{
911
//* REAL ACTUAL BOARD PIN - pin that you pass for example to digitalRead(REAL ACTUAL BOARD PIN)
10-
ADD_PIN(5)
11-
ADD_PIN(4)
12+
ADD_PIN(PIN_A)
13+
ADD_PIN(PIN_B)
1214
};
1315

1416
// define PinEvent array it hold your events
1517
PinEvent customEvents[numberOfPins]{};
1618

17-
void Pin5FallingEvent()
19+
void PinAFallingEvent()
1820
{
19-
LOG("pin 1 state changed from 1 to ");
20-
LOGLN(GetPinState(5));
21+
LOG("PinA state changed from 1 to ");
22+
LOGLN(GetPinState(PIN_A));
2123
}
2224

23-
void Pin4FallingEvent()
25+
void PinBFallingEvent()
2426
{
25-
LOG("pin 2 state changed from 1 to ");
26-
LOGLN(GetPinState(4));
27+
LOG("PinB state changed from 1 to ");
28+
LOGLN(GetPinState(PIN_B));
2729
}
2830
// OVERRIDE DEFAULT PROGRAM_SETUP
2931
__OVERRIDE void PROGRAM_SETUP(115200)
@@ -33,8 +35,8 @@ __OVERRIDE void PROGRAM_SETUP(115200)
3335

3436
//USER CODE
3537
//HERE ...
36-
AddEventListener(5, ON_FALLING_EDGE_EVENT, Pin5FallingEvent);
37-
AddEventListener(4, ON_FALLING_EDGE_EVENT, Pin4FallingEvent);
38+
AddEventListener(PIN_A, ON_FALLING_EDGE_EVENT, PinAFallingEvent);
39+
AddEventListener(PIN_B, ON_FALLING_EDGE_EVENT, PinBFallingEvent);
3840
LOGLN("program started");
3941
}
4042

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=EventOS
2-
version=1.1.1
2+
version=1.1.2
33
author=Natan Lisowski <pythonboardsbeta@gmail.com>
44
maintainer=Natan Lisowski <pythonboardsbeta@gmail.com>
55
sentence=Library for event-driven embedded devices programming (hardware interruputs for all pins).

src/EventOS.cpp

Lines changed: 40 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,33 @@ const bool& __GetInitOverride()
3737
return s_bInitOverride;
3838
}
3939

40-
bool GetPinState(PinType pin)
40+
static inline bool FindPinEvent(PinType inPin, PinEvent** outPinEvent)
4141
{
42-
bool bPinState = false;
42+
bool bResult = false;
4343
for (ArrSizeType i = 0; i < s_numberOfPins; i++)
4444
{
4545
PinEvent& event = s_pEvents[i];
46-
if (event.pin == pin)
46+
if (event.pin == inPin)
4747
{
48-
bPinState = event.bLastPinState;
48+
bResult = true;
49+
if (outPinEvent)
50+
*outPinEvent = &event;
4951
break;
5052
}
5153
}
54+
55+
return bResult;
56+
}
57+
58+
bool GetPinState(PinType pin)
59+
{
60+
bool bPinState = false;
61+
PinEvent* event{};
62+
if (FindPinEvent(pin, &event))
63+
{
64+
bPinState = event->bLastPinState;
65+
}
66+
5267
return bPinState;
5368
}
5469

@@ -124,43 +139,35 @@ void RunEventsOnPins(bool run)
124139

125140
void TurnOffEventsOnPin(PinType pin, bool reset)
126141
{
127-
for (ArrSizeType i = 0; i < s_numberOfPins; i++)
142+
PinEvent* event{};
143+
if (FindPinEvent(pin, &event))
128144
{
129-
auto& event = s_pEvents[i];
130-
if (event.pin == pin)
131-
{
132-
event.settings.bStopAll = !reset;
133-
break;
134-
}
145+
event->settings.bStopAll = !reset;
135146
}
136147
}
137148

138149
void AddEventListener(PinType pin, int eventType, Event function)
139150
{
140-
for (ArrSizeType i = 0; i < s_numberOfPins; i++)
151+
PinEvent* refEvent{};
152+
if (FindPinEvent(pin, &refEvent))
141153
{
142-
auto& refEvent = s_pEvents[i];
143-
if (refEvent.pin == pin)
154+
switch (eventType)
144155
{
145-
switch (eventType)
146-
{
147-
case ON_CHANGE_EVENT:
148-
refEvent.OnPinStateChange = function;
149-
refEvent.settings.bEventOnPinStateChange = true;
150-
break;
151-
case ON_RISING_EDGE_EVENT:
152-
refEvent.OnPinStateHigh = function;
153-
refEvent.settings.bEventOnPinSetHigh = true;
154-
break;
155-
case ON_FALLING_EDGE_EVENT:
156-
refEvent.OnPinStateLow = function;
157-
refEvent.settings.bEventOnPinSetLow = true;
158-
default:
159-
break;
160-
}
161-
162-
refEvent.settings.bStopAll = false;
163-
break;
156+
case ON_CHANGE_EVENT:
157+
refEvent->OnPinStateChange = function;
158+
refEvent->settings.bEventOnPinStateChange = true;
159+
break;
160+
case ON_RISING_EDGE_EVENT:
161+
refEvent->OnPinStateHigh = function;
162+
refEvent->settings.bEventOnPinSetHigh = true;
163+
break;
164+
case ON_FALLING_EDGE_EVENT:
165+
refEvent->OnPinStateLow = function;
166+
refEvent->settings.bEventOnPinSetLow = true;
167+
default:
168+
break;
164169
}
170+
171+
refEvent->settings.bStopAll = false;
165172
}
166173
}

0 commit comments

Comments
 (0)