fast-feedback virtual target task code on STM Nucleo

Dependencies:   mbed

Committer:
gwappa
Date:
Thu Dec 13 07:18:43 2018 +0000
Revision:
32:1416e015016c
Parent:
26:b4421d1ee57a
change to use the Staged state

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 23:61af0317e404 3 #include <string>
gwappa 1:871d3066c2ab 4 #include "IO.h"
gwappa 1:871d3066c2ab 5
gwappa 1:871d3066c2ab 6 inline bool isWhitespace(const char& ch) {
gwappa 1:871d3066c2ab 7 return (ch == ' ') ||
gwappa 1:871d3066c2ab 8 (ch == '\t') ||
gwappa 1:871d3066c2ab 9 (ch == '\r') ||
gwappa 1:871d3066c2ab 10 (ch == '\n') ||
gwappa 1:871d3066c2ab 11 (ch == '\v') ||
gwappa 1:871d3066c2ab 12 (ch == '\f');
gwappa 1:871d3066c2ab 13 }
gwappa 1:871d3066c2ab 14
gwappa 8:973dcd190672 15 inline us_timestamp_t ms_to_us(const uint16_t& ms)
gwappa 8:973dcd190672 16 {
gwappa 8:973dcd190672 17 return ((us_timestamp_t)ms)*1000;
gwappa 8:973dcd190672 18 }
gwappa 8:973dcd190672 19
gwappa 23:61af0317e404 20 inline std::string uint64_to_str(uint64_t value, const uint16_t& base=10)
gwappa 23:61af0317e404 21 {
gwappa 23:61af0317e404 22 std::string result;
gwappa 23:61af0317e404 23
gwappa 23:61af0317e404 24 do {
gwappa 23:61af0317e404 25 char c = value % base;
gwappa 23:61af0317e404 26 value /= base;
gwappa 23:61af0317e404 27
gwappa 23:61af0317e404 28 if (c < 10)
gwappa 23:61af0317e404 29 c +='0';
gwappa 23:61af0317e404 30 else
gwappa 23:61af0317e404 31 c += 'A' - 10;
gwappa 23:61af0317e404 32 result = c + result;
gwappa 23:61af0317e404 33 } while (value);
gwappa 23:61af0317e404 34 return result;
gwappa 23:61af0317e404 35 }
gwappa 23:61af0317e404 36
gwappa 1:871d3066c2ab 37 template <typename V>
gwappa 1:871d3066c2ab 38 V parseUnsignedFromSerial(const V& defaultvalue)
gwappa 1:871d3066c2ab 39 {
gwappa 1:871d3066c2ab 40 V value = 0;
gwappa 1:871d3066c2ab 41 while(true) {
gwappa 1:871d3066c2ab 42
gwappa 1:871d3066c2ab 43 int readChar = IO::getc();
gwappa 1:871d3066c2ab 44
gwappa 1:871d3066c2ab 45 // only accepts digits
gwappa 1:871d3066c2ab 46 if ((readChar >= 48) && (readChar <= 57)) {
gwappa 1:871d3066c2ab 47 value = value * 10 + (readChar - 48);
gwappa 1:871d3066c2ab 48 // continues parsing
gwappa 1:871d3066c2ab 49
gwappa 1:871d3066c2ab 50 } else if ( isWhitespace((char)readChar) || (readChar == 59) ) {
gwappa 1:871d3066c2ab 51 // space or ';'
gwappa 1:871d3066c2ab 52 // ends parsing
gwappa 1:871d3066c2ab 53 break;
gwappa 1:871d3066c2ab 54
gwappa 1:871d3066c2ab 55 } else {
gwappa 1:871d3066c2ab 56 IO::error("%c",(char)readChar);
gwappa 1:871d3066c2ab 57 // set value back to original
gwappa 1:871d3066c2ab 58 value = defaultvalue;
gwappa 1:871d3066c2ab 59 break;
gwappa 1:871d3066c2ab 60
gwappa 1:871d3066c2ab 61 }
gwappa 1:871d3066c2ab 62 }
gwappa 1:871d3066c2ab 63
gwappa 1:871d3066c2ab 64 return value;
gwappa 1:871d3066c2ab 65 }
gwappa 1:871d3066c2ab 66 #endif