Keisuke Sehara
/
STM32_Whisking
fast-feedback virtual target task code on STM Nucleo
utils.h@8:973dcd190672, 2018-05-31 (annotated)
- Committer:
- gwappa
- Date:
- Thu May 31 15:25:37 2018 +0000
- Revision:
- 8:973dcd190672
- Parent:
- 1:871d3066c2ab
- Child:
- 23:61af0317e404
current working
Who changed what in which revision?
User | Revision | Line number | New 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 | 8:973dcd190672 | 14 | inline us_timestamp_t ms_to_us(const uint16_t& ms) |
gwappa | 8:973dcd190672 | 15 | { |
gwappa | 8:973dcd190672 | 16 | return ((us_timestamp_t)ms)*1000; |
gwappa | 8:973dcd190672 | 17 | } |
gwappa | 8:973dcd190672 | 18 | |
gwappa | 1:871d3066c2ab | 19 | template <typename V> |
gwappa | 1:871d3066c2ab | 20 | V parseUnsignedFromSerial(const V& defaultvalue) |
gwappa | 1:871d3066c2ab | 21 | { |
gwappa | 1:871d3066c2ab | 22 | V value = 0; |
gwappa | 1:871d3066c2ab | 23 | while(true) { |
gwappa | 1:871d3066c2ab | 24 | |
gwappa | 1:871d3066c2ab | 25 | int readChar = IO::getc(); |
gwappa | 1:871d3066c2ab | 26 | |
gwappa | 1:871d3066c2ab | 27 | // only accepts digits |
gwappa | 1:871d3066c2ab | 28 | if ((readChar >= 48) && (readChar <= 57)) { |
gwappa | 1:871d3066c2ab | 29 | value = value * 10 + (readChar - 48); |
gwappa | 1:871d3066c2ab | 30 | // continues parsing |
gwappa | 1:871d3066c2ab | 31 | |
gwappa | 1:871d3066c2ab | 32 | } else if ( isWhitespace((char)readChar) || (readChar == 59) ) { |
gwappa | 1:871d3066c2ab | 33 | // space or ';' |
gwappa | 1:871d3066c2ab | 34 | // ends parsing |
gwappa | 1:871d3066c2ab | 35 | break; |
gwappa | 1:871d3066c2ab | 36 | |
gwappa | 1:871d3066c2ab | 37 | } else { |
gwappa | 1:871d3066c2ab | 38 | IO::error("%c",(char)readChar); |
gwappa | 1:871d3066c2ab | 39 | // set value back to original |
gwappa | 1:871d3066c2ab | 40 | value = defaultvalue; |
gwappa | 1:871d3066c2ab | 41 | break; |
gwappa | 1:871d3066c2ab | 42 | |
gwappa | 1:871d3066c2ab | 43 | } |
gwappa | 1:871d3066c2ab | 44 | } |
gwappa | 1:871d3066c2ab | 45 | |
gwappa | 1:871d3066c2ab | 46 | return value; |
gwappa | 1:871d3066c2ab | 47 | } |
gwappa | 1:871d3066c2ab | 48 | #endif |