fast-feedback virtual target task code on STM Nucleo

Dependencies:   mbed

Committer:
gwappa
Date:
Mon May 14 17:37:26 2018 +0000
Revision:
1:871d3066c2ab
Child:
8:973dcd190672
separated task-related parameters

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gwappa 1:871d3066c2ab 1 #ifndef UTILS_H_
gwappa 1:871d3066c2ab 2 #define UTILS_H_
gwappa 1:871d3066c2ab 3 #include "IO.h"
gwappa 1:871d3066c2ab 4
gwappa 1:871d3066c2ab 5 inline bool isWhitespace(const char& ch) {
gwappa 1:871d3066c2ab 6 return (ch == ' ') ||
gwappa 1:871d3066c2ab 7 (ch == '\t') ||
gwappa 1:871d3066c2ab 8 (ch == '\r') ||
gwappa 1:871d3066c2ab 9 (ch == '\n') ||
gwappa 1:871d3066c2ab 10 (ch == '\v') ||
gwappa 1:871d3066c2ab 11 (ch == '\f');
gwappa 1:871d3066c2ab 12 }
gwappa 1:871d3066c2ab 13
gwappa 1:871d3066c2ab 14 template <typename V>
gwappa 1:871d3066c2ab 15 V parseUnsignedFromSerial(const V& defaultvalue)
gwappa 1:871d3066c2ab 16 {
gwappa 1:871d3066c2ab 17 V value = 0;
gwappa 1:871d3066c2ab 18 while(true) {
gwappa 1:871d3066c2ab 19
gwappa 1:871d3066c2ab 20 int readChar = IO::getc();
gwappa 1:871d3066c2ab 21
gwappa 1:871d3066c2ab 22 // only accepts digits
gwappa 1:871d3066c2ab 23 if ((readChar >= 48) && (readChar <= 57)) {
gwappa 1:871d3066c2ab 24 value = value * 10 + (readChar - 48);
gwappa 1:871d3066c2ab 25 // continues parsing
gwappa 1:871d3066c2ab 26
gwappa 1:871d3066c2ab 27 } else if ( isWhitespace((char)readChar) || (readChar == 59) ) {
gwappa 1:871d3066c2ab 28 // space or ';'
gwappa 1:871d3066c2ab 29 // ends parsing
gwappa 1:871d3066c2ab 30 break;
gwappa 1:871d3066c2ab 31
gwappa 1:871d3066c2ab 32 } else {
gwappa 1:871d3066c2ab 33 IO::error("%c",(char)readChar);
gwappa 1:871d3066c2ab 34 // set value back to original
gwappa 1:871d3066c2ab 35 value = defaultvalue;
gwappa 1:871d3066c2ab 36 break;
gwappa 1:871d3066c2ab 37
gwappa 1:871d3066c2ab 38 }
gwappa 1:871d3066c2ab 39 }
gwappa 1:871d3066c2ab 40
gwappa 1:871d3066c2ab 41 return value;
gwappa 1:871d3066c2ab 42 }
gwappa 1:871d3066c2ab 43 #endif