Display zeigt merkwürdige Zeichen

Dependencies:   mbed PinDetect TextLCD

Fork of FWFSU_Start_28102013 by KX-ONE

Committer:
manuelfederanko
Date:
Thu Aug 04 10:56:41 2016 +0000
Revision:
19:a06d764e4f64
Parent:
17:ce5a80e8fc8e
Child:
20:e809ca4de724
Restructured program to use events

Who changed what in which revision?

UserRevisionLine numberNew contents of line
manuelfederanko 16:78da467a0609 1 #include "main.h"
joca89 0:097b334e1077 2
manuelfederanko 19:a06d764e4f64 3 using namespace evtbus;
manuelfederanko 19:a06d764e4f64 4 using namespace evt;
joca89 0:097b334e1077 5
manuelfederanko 17:ce5a80e8fc8e 6 struct linked_list *times;
manuelfederanko 19:a06d764e4f64 7 EventBus ebus;
fox46 7:016281ea7be6 8
manuelfederanko 13:a45461fbb77f 9 /**
manuelfederanko 15:16d4e268cb84 10 * Synchronize with the slave
manuelfederanko 15:16d4e268cb84 11 */
manuelfederanko 15:16d4e268cb84 12 void resync( void ) {
manuelfederanko 15:16d4e268cb84 13 ser.sendCode(MSG_CODE_TOTAL_RESET, NULL);
manuelfederanko 15:16d4e268cb84 14 ser.flush();
manuelfederanko 15:16d4e268cb84 15 btn_cnt = 0;
manuelfederanko 15:16d4e268cb84 16 comm_flags = 0;
manuelfederanko 15:16d4e268cb84 17 buzzer_state = 0;
manuelfederanko 15:16d4e268cb84 18 button_state = 0;
manuelfederanko 17:ce5a80e8fc8e 19 D = MIN_ROUND_CNT;
manuelfederanko 17:ce5a80e8fc8e 20
manuelfederanko 17:ce5a80e8fc8e 21 if (times != NULL) {
manuelfederanko 17:ce5a80e8fc8e 22 deleteList(times);
manuelfederanko 19:a06d764e4f64 23 times = initNode();
manuelfederanko 17:ce5a80e8fc8e 24 }
manuelfederanko 17:ce5a80e8fc8e 25 }
manuelfederanko 17:ce5a80e8fc8e 26
manuelfederanko 17:ce5a80e8fc8e 27 void reinit_list( void ) {
manuelfederanko 17:ce5a80e8fc8e 28 struct run_time *rt = (struct run_time *)malloc(sizeof(struct run_time));
manuelfederanko 17:ce5a80e8fc8e 29 times = getLast(times);
manuelfederanko 17:ce5a80e8fc8e 30 rt->start = start_tm;
manuelfederanko 17:ce5a80e8fc8e 31 rt->snap0 = snapshot0;
manuelfederanko 17:ce5a80e8fc8e 32 rt->snap1 = snapshot1;
manuelfederanko 17:ce5a80e8fc8e 33 rt->end = end_tm;
manuelfederanko 17:ce5a80e8fc8e 34 times->data = (void *) rt;
manuelfederanko 17:ce5a80e8fc8e 35 appendNode(times, initNode());
manuelfederanko 15:16d4e268cb84 36 }
manuelfederanko 15:16d4e268cb84 37
manuelfederanko 19:a06d764e4f64 38 /********************************************************************************************
manuelfederanko 19:a06d764e4f64 39 INTERRUPT SERVICE ROUTINES (those raise all events!)
manuelfederanko 19:a06d764e4f64 40 ********************************************************************************************/
joca89 0:097b334e1077 41
manuelfederanko 13:a45461fbb77f 42 void bzr_pressed( void ) {
manuelfederanko 19:a06d764e4f64 43 time_100us ts = systime;
manuelfederanko 19:a06d764e4f64 44 ebus.raiseEvent(1, 0, ts, NULL);
manuelfederanko 13:a45461fbb77f 45 }
fox46 6:79bc3888c88c 46
manuelfederanko 13:a45461fbb77f 47 void bzr_held_pressed( void ) {
manuelfederanko 19:a06d764e4f64 48 time_100us ts = systime;
manuelfederanko 19:a06d764e4f64 49 ebus.raiseEvent(2, 0, ts, NULL);
manuelfederanko 13:a45461fbb77f 50 }
manuelfederanko 13:a45461fbb77f 51
manuelfederanko 13:a45461fbb77f 52 void btn_pressed( void ) {
manuelfederanko 19:a06d764e4f64 53 time_100us ts = systime;
manuelfederanko 19:a06d764e4f64 54 ebus.raiseEvent(3, 0, ts, NULL);
manuelfederanko 13:a45461fbb77f 55 }
manuelfederanko 13:a45461fbb77f 56
manuelfederanko 13:a45461fbb77f 57 void btn_held_released( void ) {
manuelfederanko 19:a06d764e4f64 58 time_100us ts = systime;
manuelfederanko 19:a06d764e4f64 59 ebus.raiseEvent(4, 0, ts, NULL);
manuelfederanko 19:a06d764e4f64 60 }
manuelfederanko 19:a06d764e4f64 61
manuelfederanko 19:a06d764e4f64 62 void beam_pressed(void) {
manuelfederanko 19:a06d764e4f64 63 time_100us ts = systime;
manuelfederanko 19:a06d764e4f64 64 ebus.raiseEvent(5, 0, ts, NULL);
manuelfederanko 19:a06d764e4f64 65 }
manuelfederanko 19:a06d764e4f64 66
manuelfederanko 19:a06d764e4f64 67 void hdl_rec( void ) {
manuelfederanko 19:a06d764e4f64 68 time_100us ts = systime;
manuelfederanko 19:a06d764e4f64 69 ebus.raiseEvent(6, 0, ts, NULL);
manuelfederanko 19:a06d764e4f64 70 }
manuelfederanko 19:a06d764e4f64 71
manuelfederanko 19:a06d764e4f64 72
manuelfederanko 19:a06d764e4f64 73 /********************************************************************************************
manuelfederanko 19:a06d764e4f64 74 EVENT BUS FUNCTIONS
manuelfederanko 19:a06d764e4f64 75 ********************************************************************************************/
manuelfederanko 19:a06d764e4f64 76
manuelfederanko 19:a06d764e4f64 77 char handleEvent_01_BuzzerPressed(Event *e) {
manuelfederanko 19:a06d764e4f64 78 if ((comm_flags & FLAG_START) == 0)
manuelfederanko 19:a06d764e4f64 79 ebus.raiseEvent(7, 0, e->timestamp, NULL);
manuelfederanko 19:a06d764e4f64 80 else if ((comm_flags & FLAG_SNAP_0) == 0)
manuelfederanko 19:a06d764e4f64 81 ebus.raiseEvent(8, 0, e->timestamp, NULL);
manuelfederanko 19:a06d764e4f64 82 else if ((comm_flags & FLAG_SNAP_1) == 0)
manuelfederanko 19:a06d764e4f64 83 ebus.raiseEvent(9, 0, e->timestamp, NULL);
manuelfederanko 19:a06d764e4f64 84 else if ((comm_flags & FLAG_STOP) == 0)
manuelfederanko 19:a06d764e4f64 85 ebus.raiseEvent(10, 0, e->timestamp, NULL);
manuelfederanko 19:a06d764e4f64 86
manuelfederanko 19:a06d764e4f64 87 delete e;
manuelfederanko 19:a06d764e4f64 88 return 0;
manuelfederanko 19:a06d764e4f64 89 }
manuelfederanko 19:a06d764e4f64 90
manuelfederanko 19:a06d764e4f64 91 char handleEvent_02_StartNextRun(Event *e) {
manuelfederanko 19:a06d764e4f64 92 reinit_list();
manuelfederanko 19:a06d764e4f64 93 reset();
manuelfederanko 19:a06d764e4f64 94 ebus.raiseEvent(11, 0, e->timestamp, NULL);
manuelfederanko 19:a06d764e4f64 95
manuelfederanko 19:a06d764e4f64 96 delete e;
manuelfederanko 19:a06d764e4f64 97 return 0;
manuelfederanko 19:a06d764e4f64 98 }
manuelfederanko 19:a06d764e4f64 99
manuelfederanko 19:a06d764e4f64 100 char handleEvent_03_Resync(Event *e) {
manuelfederanko 19:a06d764e4f64 101 resync();
manuelfederanko 19:a06d764e4f64 102
manuelfederanko 19:a06d764e4f64 103 delete e;
manuelfederanko 19:a06d764e4f64 104 return 0;
manuelfederanko 19:a06d764e4f64 105 }
manuelfederanko 19:a06d764e4f64 106
manuelfederanko 19:a06d764e4f64 107 char handleEvent_04_Shutdown(Event *e) {
manuelfederanko 17:ce5a80e8fc8e 108 deleteList(times);
manuelfederanko 13:a45461fbb77f 109 shutdown_seq();
manuelfederanko 19:a06d764e4f64 110
manuelfederanko 19:a06d764e4f64 111 delete e;
manuelfederanko 19:a06d764e4f64 112 return 0;
manuelfederanko 19:a06d764e4f64 113 }
manuelfederanko 19:a06d764e4f64 114
manuelfederanko 19:a06d764e4f64 115 char handleEvent_05_BeamPressed(Event *e) {
manuelfederanko 19:a06d764e4f64 116 ebus.raiseEvent(7, 0, e->timestamp, NULL);
manuelfederanko 19:a06d764e4f64 117
manuelfederanko 19:a06d764e4f64 118 delete e;
manuelfederanko 19:a06d764e4f64 119 return 0;
manuelfederanko 19:a06d764e4f64 120 }
manuelfederanko 19:a06d764e4f64 121
manuelfederanko 19:a06d764e4f64 122 char handleEvent_06_Receive(Event *e) {
manuelfederanko 19:a06d764e4f64 123 tcode c;
manuelfederanko 19:a06d764e4f64 124 char e_b[EVENT_DATA_LENGTH] = { 0 };
manuelfederanko 19:a06d764e4f64 125 char rec_buff[MSG_BUFFSIZE];
manuelfederanko 19:a06d764e4f64 126
manuelfederanko 19:a06d764e4f64 127 if (!ser.codeAvailable()) {
manuelfederanko 19:a06d764e4f64 128 delete e;
manuelfederanko 19:a06d764e4f64 129 return 1;
manuelfederanko 19:a06d764e4f64 130 }
manuelfederanko 19:a06d764e4f64 131
manuelfederanko 19:a06d764e4f64 132 ser.skipToCode();
manuelfederanko 19:a06d764e4f64 133 ser.readCode(&c, rec_buff);
manuelfederanko 19:a06d764e4f64 134 int_to_str(c, e_b);
manuelfederanko 19:a06d764e4f64 135 strcat(e_b, rec_buff);
manuelfederanko 19:a06d764e4f64 136 ebus.raiseEvent(12, 0, e->timestamp, e_b);
manuelfederanko 19:a06d764e4f64 137
manuelfederanko 19:a06d764e4f64 138 delete e;
manuelfederanko 19:a06d764e4f64 139 return 0;
manuelfederanko 19:a06d764e4f64 140 }
manuelfederanko 19:a06d764e4f64 141
manuelfederanko 19:a06d764e4f64 142 char handleEvent_07_Start(Event *e) {
manuelfederanko 19:a06d764e4f64 143 char b[9];
manuelfederanko 19:a06d764e4f64 144
manuelfederanko 19:a06d764e4f64 145 if ((comm_flags & FLAG_START) == 0) {
manuelfederanko 19:a06d764e4f64 146 start_tm = e->timestamp;
manuelfederanko 19:a06d764e4f64 147 comm_flags |= FLAG_START;
manuelfederanko 19:a06d764e4f64 148
manuelfederanko 19:a06d764e4f64 149 int_to_str(start_tm, b);
manuelfederanko 19:a06d764e4f64 150 ser.sendCode(MSG_CODE_TMS, b);
manuelfederanko 19:a06d764e4f64 151 ser.flush();
manuelfederanko 19:a06d764e4f64 152 }
manuelfederanko 19:a06d764e4f64 153
manuelfederanko 19:a06d764e4f64 154 delete e;
manuelfederanko 19:a06d764e4f64 155 return 0;
manuelfederanko 19:a06d764e4f64 156 }
manuelfederanko 19:a06d764e4f64 157
manuelfederanko 19:a06d764e4f64 158 char handleEvent_08_Snap0(Event *e) {
manuelfederanko 19:a06d764e4f64 159 char b[9];
manuelfederanko 19:a06d764e4f64 160
manuelfederanko 19:a06d764e4f64 161 if ((comm_flags & FLAG_SNAP_0) == 0) {
manuelfederanko 19:a06d764e4f64 162 snapshot0 = e->timestamp;
manuelfederanko 19:a06d764e4f64 163 comm_flags |= FLAG_SNAP_0;
manuelfederanko 19:a06d764e4f64 164
manuelfederanko 19:a06d764e4f64 165 int_to_str(snapshot0, b);
manuelfederanko 19:a06d764e4f64 166 ser.sendCode(MSG_CODE_TML0, b);
manuelfederanko 19:a06d764e4f64 167 ser.flush();
manuelfederanko 19:a06d764e4f64 168 }
manuelfederanko 19:a06d764e4f64 169
manuelfederanko 19:a06d764e4f64 170 delete e;
manuelfederanko 19:a06d764e4f64 171 return 0;
manuelfederanko 19:a06d764e4f64 172 }
manuelfederanko 19:a06d764e4f64 173
manuelfederanko 19:a06d764e4f64 174 char handleEvent_09_Snap1(Event *e) {
manuelfederanko 19:a06d764e4f64 175 char b[9];
manuelfederanko 19:a06d764e4f64 176
manuelfederanko 19:a06d764e4f64 177 if ((comm_flags & FLAG_SNAP_1) == 0) {
manuelfederanko 19:a06d764e4f64 178 snapshot1 = e->timestamp;
manuelfederanko 19:a06d764e4f64 179 comm_flags |= FLAG_SNAP_1;
manuelfederanko 19:a06d764e4f64 180
manuelfederanko 19:a06d764e4f64 181 int_to_str(snapshot1, b);
manuelfederanko 19:a06d764e4f64 182 ser.sendCode(MSG_CODE_TML1, b);
manuelfederanko 19:a06d764e4f64 183 ser.flush();
manuelfederanko 19:a06d764e4f64 184 }
manuelfederanko 19:a06d764e4f64 185
manuelfederanko 19:a06d764e4f64 186 delete e;
manuelfederanko 19:a06d764e4f64 187 return 0;
manuelfederanko 19:a06d764e4f64 188 }
manuelfederanko 19:a06d764e4f64 189
manuelfederanko 19:a06d764e4f64 190 char handleEvent_10_Stop(Event *e) {
manuelfederanko 19:a06d764e4f64 191 char b[9];
manuelfederanko 19:a06d764e4f64 192
manuelfederanko 19:a06d764e4f64 193 if ((comm_flags & FLAG_STOP) == 0) {
manuelfederanko 19:a06d764e4f64 194 end_tm = e->timestamp;
manuelfederanko 19:a06d764e4f64 195 comm_flags |= FLAG_STOP;
manuelfederanko 19:a06d764e4f64 196
manuelfederanko 19:a06d764e4f64 197 int_to_str(end_tm, b);
manuelfederanko 19:a06d764e4f64 198 ser.sendCode(MSG_CODE_TMP, b);
manuelfederanko 19:a06d764e4f64 199 ser.flush();
manuelfederanko 19:a06d764e4f64 200 }
manuelfederanko 19:a06d764e4f64 201
manuelfederanko 19:a06d764e4f64 202 delete e;
manuelfederanko 19:a06d764e4f64 203 return 0;
manuelfederanko 19:a06d764e4f64 204 }
manuelfederanko 19:a06d764e4f64 205
manuelfederanko 19:a06d764e4f64 206 char handleEvent_11_SendReset(Event *e) {
manuelfederanko 19:a06d764e4f64 207 char b[9];
manuelfederanko 19:a06d764e4f64 208 int_to_str(D, b);
manuelfederanko 19:a06d764e4f64 209 ser.sendCode(MSG_CODE_RESET, b);
manuelfederanko 19:a06d764e4f64 210 ser.flush();
manuelfederanko 19:a06d764e4f64 211
manuelfederanko 19:a06d764e4f64 212 delete e;
manuelfederanko 19:a06d764e4f64 213 return 0;
manuelfederanko 19:a06d764e4f64 214 }
manuelfederanko 19:a06d764e4f64 215
manuelfederanko 19:a06d764e4f64 216 char handleEvent_12_MessageReceived(Event *e) {
manuelfederanko 19:a06d764e4f64 217 tcode c = str_to_int(e->data);
manuelfederanko 19:a06d764e4f64 218 char *msg = &e->data[8];
manuelfederanko 19:a06d764e4f64 219
manuelfederanko 19:a06d764e4f64 220 switch(c) {
manuelfederanko 19:a06d764e4f64 221 case MSG_CODE_KILL:
manuelfederanko 19:a06d764e4f64 222 ebus.raiseEvent(4, 0, e->timestamp, NULL);
manuelfederanko 19:a06d764e4f64 223 break;
manuelfederanko 19:a06d764e4f64 224 case MSG_CODE_RESET:
manuelfederanko 19:a06d764e4f64 225 ebus.raiseEvent(2, 0, e->timestamp, NULL);
manuelfederanko 19:a06d764e4f64 226 break;
manuelfederanko 19:a06d764e4f64 227 case MSG_CODE_STOP:
manuelfederanko 19:a06d764e4f64 228 ebus.raiseEvent(10, 0, e->timestamp, NULL);
manuelfederanko 19:a06d764e4f64 229 break;
manuelfederanko 19:a06d764e4f64 230 case MSG_CODE_REQ_RES:
manuelfederanko 19:a06d764e4f64 231 //ebus.raiseEvent(3, 0, e->timestamp, NULL);
manuelfederanko 19:a06d764e4f64 232 ebus.raiseEvent(2, 0, e->timestamp, NULL);
manuelfederanko 19:a06d764e4f64 233 break;
manuelfederanko 19:a06d764e4f64 234 }
manuelfederanko 19:a06d764e4f64 235
manuelfederanko 19:a06d764e4f64 236 delete e;
manuelfederanko 19:a06d764e4f64 237 return 0;
manuelfederanko 13:a45461fbb77f 238 }
manuelfederanko 13:a45461fbb77f 239
manuelfederanko 13:a45461fbb77f 240 int main() {
manuelfederanko 13:a45461fbb77f 241 //| Element 0 | Element 1 | Element 2 | Element 3 |
manuelfederanko 13:a45461fbb77f 242 //|-----------|-----------|-----------|-----------|
manuelfederanko 13:a45461fbb77f 243 //| Akkucheck | LED blink | Disp-Rate | Btn. Rate |
manuelfederanko 13:a45461fbb77f 244 time_100us prev[5];
fox46 12:3f53322a5270 245
manuelfederanko 13:a45461fbb77f 246 //init
manuelfederanko 13:a45461fbb77f 247 init_io();
manuelfederanko 13:a45461fbb77f 248 init_values();
manuelfederanko 17:ce5a80e8fc8e 249 times = NULL;
manuelfederanko 17:ce5a80e8fc8e 250 tick.attach_us(&handle_systime, 100); //every 100 us
manuelfederanko 17:ce5a80e8fc8e 251 pb1.attach_asserted(&bzr_pressed);
manuelfederanko 17:ce5a80e8fc8e 252 pb1.attach_asserted_held(&bzr_held_pressed);
manuelfederanko 19:a06d764e4f64 253 pb1.setSamplesTillHeld(1000); //1000 samples ---> 1ms ---> 1 second
manuelfederanko 17:ce5a80e8fc8e 254 pb1.setSampleFrequency(1000); //1ms
manuelfederanko 17:ce5a80e8fc8e 255
manuelfederanko 17:ce5a80e8fc8e 256 pb2.attach_asserted(&btn_pressed);
manuelfederanko 17:ce5a80e8fc8e 257 pb2.attach_deasserted_held(&btn_held_released);
manuelfederanko 17:ce5a80e8fc8e 258 pb2.setSamplesTillHeld(200);
manuelfederanko 17:ce5a80e8fc8e 259 pb2.setSampleFrequency();
manuelfederanko 17:ce5a80e8fc8e 260
manuelfederanko 19:a06d764e4f64 261 beam.attach_asserted(&beam_pressed);
manuelfederanko 19:a06d764e4f64 262 beam.setSampleFrequency(1000);
manuelfederanko 19:a06d764e4f64 263
manuelfederanko 19:a06d764e4f64 264 //register event handlers
manuelfederanko 19:a06d764e4f64 265 ebus.registerEvent(1, &handleEvent_01_BuzzerPressed);
manuelfederanko 19:a06d764e4f64 266 ebus.registerEvent(2, &handleEvent_02_StartNextRun);
manuelfederanko 19:a06d764e4f64 267 ebus.registerEvent(3, &handleEvent_03_Resync);
manuelfederanko 19:a06d764e4f64 268 ebus.registerEvent(4, &handleEvent_04_Shutdown);
manuelfederanko 19:a06d764e4f64 269 ebus.registerEvent(5, &handleEvent_05_BeamPressed);
manuelfederanko 19:a06d764e4f64 270 ebus.registerEvent(6, &handleEvent_06_Receive);
manuelfederanko 19:a06d764e4f64 271 ebus.registerEvent(7, &handleEvent_07_Start);
manuelfederanko 19:a06d764e4f64 272 ebus.registerEvent(8, &handleEvent_08_Snap0);
manuelfederanko 19:a06d764e4f64 273 ebus.registerEvent(9, &handleEvent_09_Snap1);
manuelfederanko 19:a06d764e4f64 274 ebus.registerEvent(10, &handleEvent_10_Stop);
manuelfederanko 19:a06d764e4f64 275 ebus.registerEvent(11, &handleEvent_11_SendReset);
manuelfederanko 19:a06d764e4f64 276 ebus.registerEvent(12, &handleEvent_12_MessageReceived);
manuelfederanko 19:a06d764e4f64 277
manuelfederanko 17:ce5a80e8fc8e 278 //info
manuelfederanko 17:ce5a80e8fc8e 279 cprintf(RUNMODE_SERVER);
manuelfederanko 17:ce5a80e8fc8e 280 display();
manuelfederanko 17:ce5a80e8fc8e 281 wait(WAIT_INFO_TM);
manuelfederanko 17:ce5a80e8fc8e 282
manuelfederanko 17:ce5a80e8fc8e 283 //config
manuelfederanko 17:ce5a80e8fc8e 284 config_buttons();
manuelfederanko 17:ce5a80e8fc8e 285 config_rf_mod();
manuelfederanko 17:ce5a80e8fc8e 286
manuelfederanko 17:ce5a80e8fc8e 287 //start
manuelfederanko 17:ce5a80e8fc8e 288 lowbatt();
manuelfederanko 17:ce5a80e8fc8e 289 ser.registerRecFc(&hdl_rec);
manuelfederanko 17:ce5a80e8fc8e 290
manuelfederanko 17:ce5a80e8fc8e 291 prev[0] = prev[1] = prev[2] = prev[3] = prev[4] = systime;
manuelfederanko 17:ce5a80e8fc8e 292
manuelfederanko 17:ce5a80e8fc8e 293 times = initNode();
manuelfederanko 17:ce5a80e8fc8e 294
manuelfederanko 19:a06d764e4f64 295 memset(bl0, 0, LCD_BUFFERLEN);
manuelfederanko 19:a06d764e4f64 296 memset(bl1, 0, LCD_BUFFERLEN);
manuelfederanko 19:a06d764e4f64 297 memset(bl0_, 0, LCD_BUFFERLEN);
manuelfederanko 19:a06d764e4f64 298 memset(bl1_, 0, LCD_BUFFERLEN);
manuelfederanko 19:a06d764e4f64 299
manuelfederanko 19:a06d764e4f64 300 ebus.raiseEvent(3, 0, systime, NULL);
manuelfederanko 19:a06d764e4f64 301
manuelfederanko 17:ce5a80e8fc8e 302 while(1) {
manuelfederanko 17:ce5a80e8fc8e 303 if (systime - prev[2] >= RATE_DISPLAY) {
manuelfederanko 17:ce5a80e8fc8e 304 prev[2] = systime;
manuelfederanko 17:ce5a80e8fc8e 305 render_time();
manuelfederanko 17:ce5a80e8fc8e 306 display();
manuelfederanko 17:ce5a80e8fc8e 307 }
manuelfederanko 17:ce5a80e8fc8e 308 if (systime - prev[1] >= ((akku_state >= AKKU_1)? RATE_LED_NOK : RATE_LED_OK)) {
manuelfederanko 17:ce5a80e8fc8e 309 prev[1] = systime;
manuelfederanko 17:ce5a80e8fc8e 310 stoppled.write(!stoppled.read());
manuelfederanko 17:ce5a80e8fc8e 311 }
manuelfederanko 17:ce5a80e8fc8e 312 if (comm_flags & FLAG_INFO_LOCK && systime - info_tm >= RATE_SHOW_INFO) {
manuelfederanko 17:ce5a80e8fc8e 313 //if the flag is set it means, that we wanna show something and the time has been set --> if the difference bigger than the rate, then clear the flag
manuelfederanko 17:ce5a80e8fc8e 314 //the flag gets checked in the render_time function, to prevent that from overwriting the info text
manuelfederanko 17:ce5a80e8fc8e 315 comm_flags &= ~FLAG_INFO_LOCK;
manuelfederanko 17:ce5a80e8fc8e 316 }
manuelfederanko 17:ce5a80e8fc8e 317 if (systime - prev[0] >= RATE_CHECK_AKKU) {
manuelfederanko 17:ce5a80e8fc8e 318 prev[0] = systime;
manuelfederanko 17:ce5a80e8fc8e 319 akkucheck();
manuelfederanko 17:ce5a80e8fc8e 320
manuelfederanko 17:ce5a80e8fc8e 321 if (akku_state == AKKU_CRITICAL) {
manuelfederanko 17:ce5a80e8fc8e 322 shutdown_seq();
manuelfederanko 17:ce5a80e8fc8e 323 }
manuelfederanko 17:ce5a80e8fc8e 324 }
manuelfederanko 19:a06d764e4f64 325
manuelfederanko 19:a06d764e4f64 326 if (!ser.codeAvailable() && ser.getStatus() & MSG_ERR_ROVFL) {
manuelfederanko 19:a06d764e4f64 327 ser.flush(MSG_FLUSH_IN);
manuelfederanko 19:a06d764e4f64 328 }
manuelfederanko 19:a06d764e4f64 329
manuelfederanko 19:a06d764e4f64 330 ebus.run();
manuelfederanko 17:ce5a80e8fc8e 331 }
manuelfederanko 19:a06d764e4f64 332 }