Blynk example

Dependents:   Blynk_Example_WIZwiki-W7500

Fork of Blynk by Volodymyr Shymanskyy

Committer:
jcm931213
Date:
Mon Aug 14 04:44:54 2017 +0000
Revision:
17:ba922c4e9aee
Parent:
15:544afbc8228f
W7500 Blynk Example; I arbitrarily modified TCPSocket Client.; You need to add a function to get and set socket number in TCPSocket Client.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Volodymyr Shymanskyy 13:ed6276c0afb7 1 /*
Volodymyr Shymanskyy 13:ed6276c0afb7 2 * SimpleTimer.cpp
Volodymyr Shymanskyy 13:ed6276c0afb7 3 *
Volodymyr Shymanskyy 13:ed6276c0afb7 4 * SimpleTimer - A timer library for Arduino.
Volodymyr Shymanskyy 13:ed6276c0afb7 5 * Author: mromani@ottotecnica.com
Volodymyr Shymanskyy 13:ed6276c0afb7 6 * Copyright (c) 2010 OTTOTECNICA Italy
Volodymyr Shymanskyy 13:ed6276c0afb7 7 *
Volodymyr Shymanskyy 14:76d8fd871a4d 8 * Callback function parameters added & compiler warnings
Volodymyr Shymanskyy 14:76d8fd871a4d 9 * removed by Bill Knight <billk@rosw.com> 20March2017
Volodymyr Shymanskyy 14:76d8fd871a4d 10 *
Volodymyr Shymanskyy 13:ed6276c0afb7 11 * This library is free software; you can redistribute it
Volodymyr Shymanskyy 13:ed6276c0afb7 12 * and/or modify it under the terms of the GNU Lesser
Volodymyr Shymanskyy 13:ed6276c0afb7 13 * General Public License as published by the Free Software
Volodymyr Shymanskyy 13:ed6276c0afb7 14 * Foundation; either version 2.1 of the License, or (at
Volodymyr Shymanskyy 13:ed6276c0afb7 15 * your option) any later version.
Volodymyr Shymanskyy 13:ed6276c0afb7 16 *
Volodymyr Shymanskyy 13:ed6276c0afb7 17 * This library is distributed in the hope that it will
Volodymyr Shymanskyy 13:ed6276c0afb7 18 * be useful, but WITHOUT ANY WARRANTY; without even the
Volodymyr Shymanskyy 13:ed6276c0afb7 19 * implied warranty of MERCHANTABILITY or FITNESS FOR A
Volodymyr Shymanskyy 13:ed6276c0afb7 20 * PARTICULAR PURPOSE. See the GNU Lesser General Public
Volodymyr Shymanskyy 13:ed6276c0afb7 21 * License for more details.
Volodymyr Shymanskyy 13:ed6276c0afb7 22 *
Volodymyr Shymanskyy 13:ed6276c0afb7 23 * You should have received a copy of the GNU Lesser
Volodymyr Shymanskyy 13:ed6276c0afb7 24 * General Public License along with this library; if not,
Volodymyr Shymanskyy 13:ed6276c0afb7 25 * write to the Free Software Foundation, Inc.,
Volodymyr Shymanskyy 13:ed6276c0afb7 26 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Volodymyr Shymanskyy 13:ed6276c0afb7 27 */
Volodymyr Shymanskyy 13:ed6276c0afb7 28
Volodymyr Shymanskyy 13:ed6276c0afb7 29
Volodymyr Shymanskyy 13:ed6276c0afb7 30 #include "Blynk/BlynkTimer.h"
Volodymyr Shymanskyy 14:76d8fd871a4d 31 #include <string.h>
jcm931213 15:544afbc8228f 32 #include "BlynkApiMbed.h"
Volodymyr Shymanskyy 13:ed6276c0afb7 33
Volodymyr Shymanskyy 13:ed6276c0afb7 34 // Select time function:
Volodymyr Shymanskyy 13:ed6276c0afb7 35 //static inline unsigned long elapsed() { return micros(); }
Volodymyr Shymanskyy 13:ed6276c0afb7 36 static inline unsigned long elapsed() { return millis(); }
Volodymyr Shymanskyy 13:ed6276c0afb7 37
Volodymyr Shymanskyy 13:ed6276c0afb7 38
Volodymyr Shymanskyy 13:ed6276c0afb7 39 SimpleTimer::SimpleTimer()
Volodymyr Shymanskyy 13:ed6276c0afb7 40 : numTimers (-1)
Volodymyr Shymanskyy 13:ed6276c0afb7 41 {
Volodymyr Shymanskyy 13:ed6276c0afb7 42 }
Volodymyr Shymanskyy 13:ed6276c0afb7 43
Volodymyr Shymanskyy 13:ed6276c0afb7 44 void SimpleTimer::init() {
Volodymyr Shymanskyy 13:ed6276c0afb7 45 unsigned long current_millis = elapsed();
Volodymyr Shymanskyy 13:ed6276c0afb7 46
Volodymyr Shymanskyy 13:ed6276c0afb7 47 for (int i = 0; i < MAX_TIMERS; i++) {
Volodymyr Shymanskyy 14:76d8fd871a4d 48 memset(&timer[i], 0, sizeof (timer_t));
Volodymyr Shymanskyy 14:76d8fd871a4d 49 timer[i].prev_millis = current_millis;
Volodymyr Shymanskyy 13:ed6276c0afb7 50 }
Volodymyr Shymanskyy 13:ed6276c0afb7 51
Volodymyr Shymanskyy 13:ed6276c0afb7 52 numTimers = 0;
Volodymyr Shymanskyy 13:ed6276c0afb7 53 }
Volodymyr Shymanskyy 13:ed6276c0afb7 54
Volodymyr Shymanskyy 13:ed6276c0afb7 55
Volodymyr Shymanskyy 13:ed6276c0afb7 56 void SimpleTimer::run() {
Volodymyr Shymanskyy 13:ed6276c0afb7 57 int i;
Volodymyr Shymanskyy 13:ed6276c0afb7 58 unsigned long current_millis;
Volodymyr Shymanskyy 13:ed6276c0afb7 59
Volodymyr Shymanskyy 13:ed6276c0afb7 60 // get current time
Volodymyr Shymanskyy 13:ed6276c0afb7 61 current_millis = elapsed();
Volodymyr Shymanskyy 13:ed6276c0afb7 62
Volodymyr Shymanskyy 13:ed6276c0afb7 63 for (i = 0; i < MAX_TIMERS; i++) {
Volodymyr Shymanskyy 13:ed6276c0afb7 64
Volodymyr Shymanskyy 14:76d8fd871a4d 65 timer[i].toBeCalled = DEFCALL_DONTRUN;
Volodymyr Shymanskyy 13:ed6276c0afb7 66
Volodymyr Shymanskyy 13:ed6276c0afb7 67 // no callback == no timer, i.e. jump over empty slots
Volodymyr Shymanskyy 14:76d8fd871a4d 68 if (timer[i].callback != NULL) {
Volodymyr Shymanskyy 13:ed6276c0afb7 69
Volodymyr Shymanskyy 13:ed6276c0afb7 70 // is it time to process this timer ?
Volodymyr Shymanskyy 13:ed6276c0afb7 71 // see http://arduino.cc/forum/index.php/topic,124048.msg932592.html#msg932592
Volodymyr Shymanskyy 13:ed6276c0afb7 72
Volodymyr Shymanskyy 14:76d8fd871a4d 73 if ((current_millis - timer[i].prev_millis) >= timer[i].delay) {
Volodymyr Shymanskyy 13:ed6276c0afb7 74
Volodymyr Shymanskyy 13:ed6276c0afb7 75 // update time
Volodymyr Shymanskyy 14:76d8fd871a4d 76 timer[i].prev_millis += timer[i].delay;
Volodymyr Shymanskyy 13:ed6276c0afb7 77
Volodymyr Shymanskyy 13:ed6276c0afb7 78 // check if the timer callback has to be executed
Volodymyr Shymanskyy 14:76d8fd871a4d 79 if (timer[i].enabled) {
Volodymyr Shymanskyy 13:ed6276c0afb7 80
Volodymyr Shymanskyy 13:ed6276c0afb7 81 // "run forever" timers must always be executed
Volodymyr Shymanskyy 14:76d8fd871a4d 82 if (timer[i].maxNumRuns == RUN_FOREVER) {
Volodymyr Shymanskyy 14:76d8fd871a4d 83 timer[i].toBeCalled = DEFCALL_RUNONLY;
Volodymyr Shymanskyy 13:ed6276c0afb7 84 }
Volodymyr Shymanskyy 13:ed6276c0afb7 85 // other timers get executed the specified number of times
Volodymyr Shymanskyy 14:76d8fd871a4d 86 else if (timer[i].numRuns < timer[i].maxNumRuns) {
Volodymyr Shymanskyy 14:76d8fd871a4d 87 timer[i].toBeCalled = DEFCALL_RUNONLY;
Volodymyr Shymanskyy 14:76d8fd871a4d 88 timer[i].numRuns++;
Volodymyr Shymanskyy 13:ed6276c0afb7 89
Volodymyr Shymanskyy 13:ed6276c0afb7 90 // after the last run, delete the timer
Volodymyr Shymanskyy 14:76d8fd871a4d 91 if (timer[i].numRuns >= timer[i].maxNumRuns) {
Volodymyr Shymanskyy 14:76d8fd871a4d 92 timer[i].toBeCalled = DEFCALL_RUNANDDEL;
Volodymyr Shymanskyy 13:ed6276c0afb7 93 }
Volodymyr Shymanskyy 13:ed6276c0afb7 94 }
Volodymyr Shymanskyy 13:ed6276c0afb7 95 }
Volodymyr Shymanskyy 13:ed6276c0afb7 96 }
Volodymyr Shymanskyy 13:ed6276c0afb7 97 }
Volodymyr Shymanskyy 13:ed6276c0afb7 98 }
Volodymyr Shymanskyy 13:ed6276c0afb7 99
Volodymyr Shymanskyy 13:ed6276c0afb7 100 for (i = 0; i < MAX_TIMERS; i++) {
Volodymyr Shymanskyy 14:76d8fd871a4d 101 if (timer[i].toBeCalled == DEFCALL_DONTRUN)
Volodymyr Shymanskyy 14:76d8fd871a4d 102 continue;
Volodymyr Shymanskyy 13:ed6276c0afb7 103
Volodymyr Shymanskyy 14:76d8fd871a4d 104 if (timer[i].hasParam)
Volodymyr Shymanskyy 14:76d8fd871a4d 105 (*(timer_callback_p)timer[i].callback)(timer[i].param);
Volodymyr Shymanskyy 14:76d8fd871a4d 106 else
Volodymyr Shymanskyy 14:76d8fd871a4d 107 (*(timer_callback)timer[i].callback)();
Volodymyr Shymanskyy 13:ed6276c0afb7 108
Volodymyr Shymanskyy 14:76d8fd871a4d 109 if (timer[i].toBeCalled == DEFCALL_RUNANDDEL)
Volodymyr Shymanskyy 14:76d8fd871a4d 110 deleteTimer(i);
Volodymyr Shymanskyy 13:ed6276c0afb7 111 }
Volodymyr Shymanskyy 13:ed6276c0afb7 112 }
Volodymyr Shymanskyy 13:ed6276c0afb7 113
Volodymyr Shymanskyy 13:ed6276c0afb7 114
Volodymyr Shymanskyy 13:ed6276c0afb7 115 // find the first available slot
Volodymyr Shymanskyy 13:ed6276c0afb7 116 // return -1 if none found
Volodymyr Shymanskyy 13:ed6276c0afb7 117 int SimpleTimer::findFirstFreeSlot() {
Volodymyr Shymanskyy 13:ed6276c0afb7 118 // all slots are used
Volodymyr Shymanskyy 13:ed6276c0afb7 119 if (numTimers >= MAX_TIMERS) {
Volodymyr Shymanskyy 13:ed6276c0afb7 120 return -1;
Volodymyr Shymanskyy 13:ed6276c0afb7 121 }
Volodymyr Shymanskyy 13:ed6276c0afb7 122
Volodymyr Shymanskyy 13:ed6276c0afb7 123 // return the first slot with no callback (i.e. free)
Volodymyr Shymanskyy 14:76d8fd871a4d 124 for (int i = 0; i < MAX_TIMERS; i++) {
Volodymyr Shymanskyy 14:76d8fd871a4d 125 if (timer[i].callback == NULL) {
Volodymyr Shymanskyy 13:ed6276c0afb7 126 return i;
Volodymyr Shymanskyy 13:ed6276c0afb7 127 }
Volodymyr Shymanskyy 13:ed6276c0afb7 128 }
Volodymyr Shymanskyy 13:ed6276c0afb7 129
Volodymyr Shymanskyy 13:ed6276c0afb7 130 // no free slots found
Volodymyr Shymanskyy 13:ed6276c0afb7 131 return -1;
Volodymyr Shymanskyy 13:ed6276c0afb7 132 }
Volodymyr Shymanskyy 13:ed6276c0afb7 133
Volodymyr Shymanskyy 13:ed6276c0afb7 134
Volodymyr Shymanskyy 14:76d8fd871a4d 135 int SimpleTimer::setupTimer(unsigned long d, void* f, void* p, bool h, unsigned n) {
Volodymyr Shymanskyy 13:ed6276c0afb7 136 int freeTimer;
Volodymyr Shymanskyy 13:ed6276c0afb7 137
Volodymyr Shymanskyy 13:ed6276c0afb7 138 if (numTimers < 0) {
Volodymyr Shymanskyy 13:ed6276c0afb7 139 init();
Volodymyr Shymanskyy 13:ed6276c0afb7 140 }
Volodymyr Shymanskyy 13:ed6276c0afb7 141
Volodymyr Shymanskyy 13:ed6276c0afb7 142 freeTimer = findFirstFreeSlot();
Volodymyr Shymanskyy 13:ed6276c0afb7 143 if (freeTimer < 0) {
Volodymyr Shymanskyy 13:ed6276c0afb7 144 return -1;
Volodymyr Shymanskyy 13:ed6276c0afb7 145 }
Volodymyr Shymanskyy 13:ed6276c0afb7 146
Volodymyr Shymanskyy 13:ed6276c0afb7 147 if (f == NULL) {
Volodymyr Shymanskyy 13:ed6276c0afb7 148 return -1;
Volodymyr Shymanskyy 13:ed6276c0afb7 149 }
Volodymyr Shymanskyy 13:ed6276c0afb7 150
Volodymyr Shymanskyy 14:76d8fd871a4d 151 timer[freeTimer].delay = d;
Volodymyr Shymanskyy 14:76d8fd871a4d 152 timer[freeTimer].callback = f;
Volodymyr Shymanskyy 14:76d8fd871a4d 153 timer[freeTimer].param = p;
Volodymyr Shymanskyy 14:76d8fd871a4d 154 timer[freeTimer].hasParam = h;
Volodymyr Shymanskyy 14:76d8fd871a4d 155 timer[freeTimer].maxNumRuns = n;
Volodymyr Shymanskyy 14:76d8fd871a4d 156 timer[freeTimer].enabled = true;
Volodymyr Shymanskyy 14:76d8fd871a4d 157 timer[freeTimer].prev_millis = elapsed();
Volodymyr Shymanskyy 13:ed6276c0afb7 158
Volodymyr Shymanskyy 13:ed6276c0afb7 159 numTimers++;
Volodymyr Shymanskyy 13:ed6276c0afb7 160
Volodymyr Shymanskyy 13:ed6276c0afb7 161 return freeTimer;
Volodymyr Shymanskyy 13:ed6276c0afb7 162 }
Volodymyr Shymanskyy 13:ed6276c0afb7 163
Volodymyr Shymanskyy 13:ed6276c0afb7 164
Volodymyr Shymanskyy 14:76d8fd871a4d 165 int SimpleTimer::setTimer(unsigned long d, timer_callback f, unsigned n) {
Volodymyr Shymanskyy 14:76d8fd871a4d 166 return setupTimer(d, (void *)f, NULL, false, n);
Volodymyr Shymanskyy 14:76d8fd871a4d 167 }
Volodymyr Shymanskyy 14:76d8fd871a4d 168
Volodymyr Shymanskyy 14:76d8fd871a4d 169 int SimpleTimer::setTimer(unsigned long d, timer_callback_p f, void* p, unsigned n) {
Volodymyr Shymanskyy 14:76d8fd871a4d 170 return setupTimer(d, (void *)f, p, true, n);
Volodymyr Shymanskyy 14:76d8fd871a4d 171 }
Volodymyr Shymanskyy 14:76d8fd871a4d 172
Volodymyr Shymanskyy 14:76d8fd871a4d 173 int SimpleTimer::setInterval(unsigned long d, timer_callback f) {
Volodymyr Shymanskyy 14:76d8fd871a4d 174 return setupTimer(d, (void *)f, NULL, false, RUN_FOREVER);
Volodymyr Shymanskyy 14:76d8fd871a4d 175 }
Volodymyr Shymanskyy 14:76d8fd871a4d 176
Volodymyr Shymanskyy 14:76d8fd871a4d 177 int SimpleTimer::setInterval(unsigned long d, timer_callback_p f, void* p) {
Volodymyr Shymanskyy 14:76d8fd871a4d 178 return setupTimer(d, (void *)f, p, true, RUN_FOREVER);
Volodymyr Shymanskyy 14:76d8fd871a4d 179 }
Volodymyr Shymanskyy 14:76d8fd871a4d 180
Volodymyr Shymanskyy 14:76d8fd871a4d 181 int SimpleTimer::setTimeout(unsigned long d, timer_callback f) {
Volodymyr Shymanskyy 14:76d8fd871a4d 182 return setupTimer(d, (void *)f, NULL, false, RUN_ONCE);
Volodymyr Shymanskyy 13:ed6276c0afb7 183 }
Volodymyr Shymanskyy 13:ed6276c0afb7 184
Volodymyr Shymanskyy 14:76d8fd871a4d 185 int SimpleTimer::setTimeout(unsigned long d, timer_callback_p f, void* p) {
Volodymyr Shymanskyy 14:76d8fd871a4d 186 return setupTimer(d, (void *)f, p, true, RUN_ONCE);
Volodymyr Shymanskyy 13:ed6276c0afb7 187 }
Volodymyr Shymanskyy 13:ed6276c0afb7 188
Volodymyr Shymanskyy 14:76d8fd871a4d 189 bool SimpleTimer::changeInterval(unsigned numTimer, unsigned long d) {
Volodymyr Shymanskyy 14:76d8fd871a4d 190 if (numTimer >= MAX_TIMERS) {
Volodymyr Shymanskyy 14:76d8fd871a4d 191 return false;
Volodymyr Shymanskyy 14:76d8fd871a4d 192 }
Volodymyr Shymanskyy 13:ed6276c0afb7 193
Volodymyr Shymanskyy 14:76d8fd871a4d 194 // Updates interval of existing specified timer
Volodymyr Shymanskyy 14:76d8fd871a4d 195 if (timer[numTimer].callback != NULL) {
Volodymyr Shymanskyy 14:76d8fd871a4d 196 timer[numTimer].delay = d;
Volodymyr Shymanskyy 14:76d8fd871a4d 197 timer[numTimer].prev_millis = elapsed();
Volodymyr Shymanskyy 14:76d8fd871a4d 198 return true;
Volodymyr Shymanskyy 14:76d8fd871a4d 199 }
Volodymyr Shymanskyy 14:76d8fd871a4d 200 // false return for non-used numTimer, no callback
Volodymyr Shymanskyy 14:76d8fd871a4d 201 return false;
Volodymyr Shymanskyy 14:76d8fd871a4d 202 }
Volodymyr Shymanskyy 14:76d8fd871a4d 203
Volodymyr Shymanskyy 14:76d8fd871a4d 204 void SimpleTimer::deleteTimer(unsigned timerId) {
Volodymyr Shymanskyy 13:ed6276c0afb7 205 if (timerId >= MAX_TIMERS) {
Volodymyr Shymanskyy 13:ed6276c0afb7 206 return;
Volodymyr Shymanskyy 13:ed6276c0afb7 207 }
Volodymyr Shymanskyy 13:ed6276c0afb7 208
Volodymyr Shymanskyy 13:ed6276c0afb7 209 // nothing to delete if no timers are in use
Volodymyr Shymanskyy 13:ed6276c0afb7 210 if (numTimers == 0) {
Volodymyr Shymanskyy 13:ed6276c0afb7 211 return;
Volodymyr Shymanskyy 13:ed6276c0afb7 212 }
Volodymyr Shymanskyy 13:ed6276c0afb7 213
Volodymyr Shymanskyy 13:ed6276c0afb7 214 // don't decrease the number of timers if the
Volodymyr Shymanskyy 13:ed6276c0afb7 215 // specified slot is already empty
Volodymyr Shymanskyy 14:76d8fd871a4d 216 if (timer[timerId].callback != NULL) {
Volodymyr Shymanskyy 14:76d8fd871a4d 217 memset(&timer[timerId], 0, sizeof (timer_t));
Volodymyr Shymanskyy 14:76d8fd871a4d 218 timer[timerId].prev_millis = elapsed();
Volodymyr Shymanskyy 13:ed6276c0afb7 219
Volodymyr Shymanskyy 13:ed6276c0afb7 220 // update number of timers
Volodymyr Shymanskyy 13:ed6276c0afb7 221 numTimers--;
Volodymyr Shymanskyy 13:ed6276c0afb7 222 }
Volodymyr Shymanskyy 13:ed6276c0afb7 223 }
Volodymyr Shymanskyy 13:ed6276c0afb7 224
Volodymyr Shymanskyy 13:ed6276c0afb7 225
Volodymyr Shymanskyy 13:ed6276c0afb7 226 // function contributed by code@rowansimms.com
Volodymyr Shymanskyy 14:76d8fd871a4d 227 void SimpleTimer::restartTimer(unsigned numTimer) {
Volodymyr Shymanskyy 13:ed6276c0afb7 228 if (numTimer >= MAX_TIMERS) {
Volodymyr Shymanskyy 13:ed6276c0afb7 229 return;
Volodymyr Shymanskyy 13:ed6276c0afb7 230 }
Volodymyr Shymanskyy 13:ed6276c0afb7 231
Volodymyr Shymanskyy 14:76d8fd871a4d 232 timer[numTimer].prev_millis = elapsed();
Volodymyr Shymanskyy 13:ed6276c0afb7 233 }
Volodymyr Shymanskyy 13:ed6276c0afb7 234
Volodymyr Shymanskyy 13:ed6276c0afb7 235
Volodymyr Shymanskyy 14:76d8fd871a4d 236 bool SimpleTimer::isEnabled(unsigned numTimer) {
Volodymyr Shymanskyy 13:ed6276c0afb7 237 if (numTimer >= MAX_TIMERS) {
Volodymyr Shymanskyy 13:ed6276c0afb7 238 return false;
Volodymyr Shymanskyy 13:ed6276c0afb7 239 }
Volodymyr Shymanskyy 13:ed6276c0afb7 240
Volodymyr Shymanskyy 14:76d8fd871a4d 241 return timer[numTimer].enabled;
Volodymyr Shymanskyy 13:ed6276c0afb7 242 }
Volodymyr Shymanskyy 13:ed6276c0afb7 243
Volodymyr Shymanskyy 13:ed6276c0afb7 244
Volodymyr Shymanskyy 14:76d8fd871a4d 245 void SimpleTimer::enable(unsigned numTimer) {
Volodymyr Shymanskyy 14:76d8fd871a4d 246 if (numTimer >= MAX_TIMERS) {
Volodymyr Shymanskyy 14:76d8fd871a4d 247 return;
Volodymyr Shymanskyy 14:76d8fd871a4d 248 }
Volodymyr Shymanskyy 14:76d8fd871a4d 249
Volodymyr Shymanskyy 14:76d8fd871a4d 250 timer[numTimer].enabled = true;
Volodymyr Shymanskyy 14:76d8fd871a4d 251 }
Volodymyr Shymanskyy 14:76d8fd871a4d 252
Volodymyr Shymanskyy 14:76d8fd871a4d 253
Volodymyr Shymanskyy 14:76d8fd871a4d 254 void SimpleTimer::disable(unsigned numTimer) {
Volodymyr Shymanskyy 13:ed6276c0afb7 255 if (numTimer >= MAX_TIMERS) {
Volodymyr Shymanskyy 13:ed6276c0afb7 256 return;
Volodymyr Shymanskyy 13:ed6276c0afb7 257 }
Volodymyr Shymanskyy 13:ed6276c0afb7 258
Volodymyr Shymanskyy 14:76d8fd871a4d 259 timer[numTimer].enabled = false;
Volodymyr Shymanskyy 13:ed6276c0afb7 260 }
Volodymyr Shymanskyy 13:ed6276c0afb7 261
Volodymyr Shymanskyy 14:76d8fd871a4d 262 void SimpleTimer::enableAll() {
Volodymyr Shymanskyy 14:76d8fd871a4d 263 // Enable all timers with a callback assigned (used)
Volodymyr Shymanskyy 14:76d8fd871a4d 264 for (int i = 0; i < MAX_TIMERS; i++) {
Volodymyr Shymanskyy 14:76d8fd871a4d 265 if (timer[i].callback != NULL && timer[i].numRuns == RUN_FOREVER) {
Volodymyr Shymanskyy 14:76d8fd871a4d 266 timer[i].enabled = true;
Volodymyr Shymanskyy 14:76d8fd871a4d 267 }
Volodymyr Shymanskyy 14:76d8fd871a4d 268 }
Volodymyr Shymanskyy 14:76d8fd871a4d 269 }
Volodymyr Shymanskyy 13:ed6276c0afb7 270
Volodymyr Shymanskyy 14:76d8fd871a4d 271 void SimpleTimer::disableAll() {
Volodymyr Shymanskyy 14:76d8fd871a4d 272 // Disable all timers with a callback assigned (used)
Volodymyr Shymanskyy 14:76d8fd871a4d 273 for (int i = 0; i < MAX_TIMERS; i++) {
Volodymyr Shymanskyy 14:76d8fd871a4d 274 if (timer[i].callback != NULL && timer[i].numRuns == RUN_FOREVER) {
Volodymyr Shymanskyy 14:76d8fd871a4d 275 timer[i].enabled = false;
Volodymyr Shymanskyy 14:76d8fd871a4d 276 }
Volodymyr Shymanskyy 14:76d8fd871a4d 277 }
Volodymyr Shymanskyy 14:76d8fd871a4d 278 }
Volodymyr Shymanskyy 14:76d8fd871a4d 279
Volodymyr Shymanskyy 14:76d8fd871a4d 280 void SimpleTimer::toggle(unsigned numTimer) {
Volodymyr Shymanskyy 13:ed6276c0afb7 281 if (numTimer >= MAX_TIMERS) {
Volodymyr Shymanskyy 13:ed6276c0afb7 282 return;
Volodymyr Shymanskyy 13:ed6276c0afb7 283 }
Volodymyr Shymanskyy 13:ed6276c0afb7 284
Volodymyr Shymanskyy 14:76d8fd871a4d 285 timer[numTimer].enabled = !timer[numTimer].enabled;
Volodymyr Shymanskyy 13:ed6276c0afb7 286 }
Volodymyr Shymanskyy 13:ed6276c0afb7 287
Volodymyr Shymanskyy 13:ed6276c0afb7 288
Volodymyr Shymanskyy 14:76d8fd871a4d 289 unsigned SimpleTimer::getNumTimers() {
Volodymyr Shymanskyy 13:ed6276c0afb7 290 return numTimers;
Volodymyr Shymanskyy 13:ed6276c0afb7 291 }