|
| 1 | +/* |
| 2 | + https://github.com/jaakka/DelayFunctionsArduino |
| 3 | + Library created by Jaakko Talvitie 18.11.2024 |
| 4 | +*/ |
| 5 | + |
1 | 6 | #include "Arduino.h" |
2 | 7 | #include "DelayFunctions.h" |
3 | 8 |
|
4 | | -// Konstruktori, joka alustaa ajastimien määrän ja varaa muistia |
5 | 9 | DelayFunctions::DelayFunctions(int argTimersCount) |
6 | 10 | { |
7 | | - _maxTimersCount = argTimersCount; // Asetetaan enimmäismäärä |
8 | | - timeFunctions = new DelayFunction[_maxTimersCount]; // Dynaaminen muistivaraus ajastimille |
9 | | - _timersCount = 0; // Alustetaan ajastimien määrä nollaksi |
| 11 | + _maxTimersCount = argTimersCount; |
| 12 | + timeFunctions = new DelayFunction[_maxTimersCount]; |
| 13 | + _timersCount = 0; |
10 | 14 | } |
11 | 15 |
|
12 | | -// Destruktori, joka vapauttaa dynaamisesti varatun muistin |
13 | 16 | DelayFunctions::~DelayFunctions() |
14 | 17 | { |
15 | | - delete[] timeFunctions; // Vapautetaan muistivaraus |
| 18 | + delete[] timeFunctions; |
16 | 19 | } |
17 | 20 |
|
18 | | -// Päivittää ajastimen aikarajan |
19 | 21 | void DelayFunctions::updateTime(void (*cb)(), unsigned long interval) |
20 | 22 | { |
21 | 23 | for (int i = 0; i < _timersCount; i++) |
22 | 24 | { |
23 | | - if (timeFunctions[i].callback == cb) // Jos callback-muuttuja vastaa |
| 25 | + if (timeFunctions[i].callback == cb) |
24 | 26 | { |
25 | | - timeFunctions[i].interval = interval; // Päivitetään ajastimen interval |
| 27 | + timeFunctions[i].interval = interval; |
26 | 28 | } |
27 | 29 | } |
28 | 30 | } |
29 | 31 |
|
30 | | -// Hankkii ajastimen aikarajan |
31 | 32 | unsigned long DelayFunctions::getTime(void (*cb)()) |
32 | 33 | { |
33 | 34 | for (int i = 0; i < _timersCount; i++) |
34 | 35 | { |
35 | | - if (timeFunctions[i].callback == cb) // Jos callback-muuttuja vastaa |
| 36 | + if (timeFunctions[i].callback == cb) |
36 | 37 | { |
37 | | - return timeFunctions[i].interval; // Palautetaan ajastimen interval |
| 38 | + return timeFunctions[i].interval; |
38 | 39 | } |
39 | 40 | } |
40 | 41 | return -1; |
41 | 42 | } |
42 | 43 |
|
43 | | -// Lisää uuden ajastimen ajastinluetteloon |
44 | 44 | void DelayFunctions::NewDelayFunction(unsigned long interval, void (*cb)()) |
45 | 45 | { |
46 | 46 | if (_timersCount < _maxTimersCount) |
47 | 47 | { |
48 | 48 | timeFunctions[_timersCount] = DelayFunction(cb, interval); |
49 | | - timeFunctions[_timersCount].lastRun = millis(); // Alustetaan viimeinen suoritushetki |
| 49 | + timeFunctions[_timersCount].lastRun = millis(); |
50 | 50 | _timersCount++; |
51 | 51 | } |
52 | | - else |
53 | | - { |
54 | | - Serial.println("Max timers reached! Cannot add more timers."); |
55 | | - } |
56 | 52 | } |
57 | 53 |
|
58 | | -// Kutsutaan pääloopissa ja tarkistaa ajastimet |
59 | 54 | void DelayFunctions::loop() |
60 | 55 | { |
61 | | - unsigned long currentMillis = millis(); // Haetaan nykyinen aika |
| 56 | + unsigned long currentMillis = millis(); |
62 | 57 | for (int i = 0; i < _timersCount; i++) |
63 | 58 | { |
64 | | - // Tarkistetaan, onko ajastin ehtinyt aikarajan |
65 | 59 | if (currentMillis - timeFunctions[i].lastRun >= timeFunctions[i].interval) |
66 | 60 | { |
67 | 61 | if (timeFunctions[i].callback != nullptr) |
68 | 62 | { |
69 | | - timeFunctions[i].callback(); // Kutsutaan ajastimen callback |
70 | | - timeFunctions[i].lastRun = currentMillis; // Päivitetään viimeinen suoritushetki |
| 63 | + timeFunctions[i].callback(); |
| 64 | + timeFunctions[i].lastRun = currentMillis; |
71 | 65 | } |
72 | 66 | } |
73 | 67 | } |
74 | 68 | } |
75 | 69 |
|
76 | | -// DelayFunction-konstruktori, joka alustaa ajastimen |
77 | 70 | DelayFunction::DelayFunction() |
78 | 71 | { |
79 | 72 | interval = 0; |
80 | 73 | callback = nullptr; |
81 | 74 | } |
82 | 75 |
|
83 | | -// Parametrillinen konstruktori, joka asettaa callbackin ja intervalin |
84 | 76 | DelayFunction::DelayFunction(void (*_callback)(), unsigned long _interval) |
85 | 77 | { |
86 | 78 | callback = _callback; |
|
0 commit comments