Pull request for i.a. sensor buffer template
Dependencies: BLE_API MPU6050 mbed nRF51822
Util.h@11:8c38e284e9f7, 2018-11-15 (annotated)
- Committer:
- JustinAtAlten
- Date:
- Thu Nov 15 15:20:46 2018 +0000
- Revision:
- 11:8c38e284e9f7
- Parent:
- 10:eed92ffd0bba
Added readme.txt
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JustinAtAlten | 10:eed92ffd0bba | 1 | #ifndef UTIL_H |
JustinAtAlten | 10:eed92ffd0bba | 2 | #define UTIL_H |
JustinAtAlten | 10:eed92ffd0bba | 3 | |
JustinAtAlten | 10:eed92ffd0bba | 4 | #include <string> |
JustinAtAlten | 10:eed92ffd0bba | 5 | // #include <vector> |
JustinAtAlten | 10:eed92ffd0bba | 6 | |
JustinAtAlten | 10:eed92ffd0bba | 7 | template<typename T_FromType, typename T_ToType> |
JustinAtAlten | 10:eed92ffd0bba | 8 | inline void castArray(T_FromType * fromArray, T_ToType * toArray, const unsigned int & length){ |
JustinAtAlten | 10:eed92ffd0bba | 9 | for(unsigned int i=0; i < length; i++){ |
JustinAtAlten | 10:eed92ffd0bba | 10 | toArray[i] = fromArray[i]; |
JustinAtAlten | 10:eed92ffd0bba | 11 | } |
JustinAtAlten | 10:eed92ffd0bba | 12 | } |
JustinAtAlten | 10:eed92ffd0bba | 13 | |
JustinAtAlten | 10:eed92ffd0bba | 14 | // inline std::vector<std::string> split(std::string receivedMessage, const char & delimiter = ' '){ |
JustinAtAlten | 10:eed92ffd0bba | 15 | // std::vector<std::string> ret; |
JustinAtAlten | 10:eed92ffd0bba | 16 | // size_t wordEnd = receivedMessage.find_first_of(delimiter); |
JustinAtAlten | 10:eed92ffd0bba | 17 | // while(wordEnd != std::string::npos){ |
JustinAtAlten | 10:eed92ffd0bba | 18 | // std::string word = receivedMessage.substr(0, wordEnd); |
JustinAtAlten | 10:eed92ffd0bba | 19 | // if(!word.empty()){ |
JustinAtAlten | 10:eed92ffd0bba | 20 | // ret.push_back(word); |
JustinAtAlten | 10:eed92ffd0bba | 21 | // } |
JustinAtAlten | 10:eed92ffd0bba | 22 | // receivedMessage = receivedMessage.substr(wordEnd+1); |
JustinAtAlten | 10:eed92ffd0bba | 23 | // wordEnd = receivedMessage.find_first_of(delimiter); |
JustinAtAlten | 10:eed92ffd0bba | 24 | // } |
JustinAtAlten | 10:eed92ffd0bba | 25 | // if(!receivedMessage.empty()){ |
JustinAtAlten | 10:eed92ffd0bba | 26 | // ret.push_back(receivedMessage); |
JustinAtAlten | 10:eed92ffd0bba | 27 | // } |
JustinAtAlten | 10:eed92ffd0bba | 28 | |
JustinAtAlten | 10:eed92ffd0bba | 29 | // return ret; |
JustinAtAlten | 10:eed92ffd0bba | 30 | // } |
JustinAtAlten | 10:eed92ffd0bba | 31 | |
JustinAtAlten | 10:eed92ffd0bba | 32 | |
JustinAtAlten | 10:eed92ffd0bba | 33 | inline char digitToChar(uint8_t digit){ |
JustinAtAlten | 10:eed92ffd0bba | 34 | return ('0' + digit); //ascii value + digit value = ascii value |
JustinAtAlten | 10:eed92ffd0bba | 35 | } |
JustinAtAlten | 10:eed92ffd0bba | 36 | |
JustinAtAlten | 10:eed92ffd0bba | 37 | inline std::string floatToString(float value, int maximumNumberOfDecimals = 5){ //Temporary solution to solve logging of float values |
JustinAtAlten | 10:eed92ffd0bba | 38 | //First make sure buffer is big enough |
JustinAtAlten | 10:eed92ffd0bba | 39 | std::string ret; |
JustinAtAlten | 10:eed92ffd0bba | 40 | int integersLength = 0; |
JustinAtAlten | 10:eed92ffd0bba | 41 | int valueInt = static_cast<int>(value); |
JustinAtAlten | 10:eed92ffd0bba | 42 | |
JustinAtAlten | 10:eed92ffd0bba | 43 | //integer part |
JustinAtAlten | 10:eed92ffd0bba | 44 | if(valueInt){ |
JustinAtAlten | 10:eed92ffd0bba | 45 | integersLength = 1; |
JustinAtAlten | 10:eed92ffd0bba | 46 | } |
JustinAtAlten | 10:eed92ffd0bba | 47 | while(valueInt /= 10){ //assuming decimal system |
JustinAtAlten | 10:eed92ffd0bba | 48 | integersLength++; |
JustinAtAlten | 10:eed92ffd0bba | 49 | value /= 10.0f; |
JustinAtAlten | 10:eed92ffd0bba | 50 | } |
JustinAtAlten | 10:eed92ffd0bba | 51 | |
JustinAtAlten | 10:eed92ffd0bba | 52 | for(int i=0; i < integersLength; i++){ |
JustinAtAlten | 10:eed92ffd0bba | 53 | uint8_t digit = (uint8_t) value; |
JustinAtAlten | 10:eed92ffd0bba | 54 | ret += digitToChar(digit); |
JustinAtAlten | 10:eed92ffd0bba | 55 | value -= digit; |
JustinAtAlten | 10:eed92ffd0bba | 56 | value *= 10.0f; |
JustinAtAlten | 10:eed92ffd0bba | 57 | } |
JustinAtAlten | 10:eed92ffd0bba | 58 | |
JustinAtAlten | 10:eed92ffd0bba | 59 | //decimal point |
JustinAtAlten | 10:eed92ffd0bba | 60 | ret += "."; |
JustinAtAlten | 10:eed92ffd0bba | 61 | |
JustinAtAlten | 10:eed92ffd0bba | 62 | //decimal part |
JustinAtAlten | 10:eed92ffd0bba | 63 | int decimalLength = 0; |
JustinAtAlten | 10:eed92ffd0bba | 64 | while((value != 0.0f) && (decimalLength < maximumNumberOfDecimals)){ |
JustinAtAlten | 10:eed92ffd0bba | 65 | uint8_t digit = (uint8_t) value; |
JustinAtAlten | 10:eed92ffd0bba | 66 | ret += digitToChar(digit); |
JustinAtAlten | 10:eed92ffd0bba | 67 | decimalLength++; |
JustinAtAlten | 10:eed92ffd0bba | 68 | value -= digit; |
JustinAtAlten | 10:eed92ffd0bba | 69 | value *= 10.0f; |
JustinAtAlten | 10:eed92ffd0bba | 70 | } |
JustinAtAlten | 10:eed92ffd0bba | 71 | |
JustinAtAlten | 10:eed92ffd0bba | 72 | if((decimalLength == 0) && (decimalLength < maximumNumberOfDecimals)){ |
JustinAtAlten | 10:eed92ffd0bba | 73 | ret += "0"; |
JustinAtAlten | 10:eed92ffd0bba | 74 | } |
JustinAtAlten | 10:eed92ffd0bba | 75 | ret += "f"; |
JustinAtAlten | 10:eed92ffd0bba | 76 | |
JustinAtAlten | 10:eed92ffd0bba | 77 | return ret; |
JustinAtAlten | 10:eed92ffd0bba | 78 | } |
JustinAtAlten | 10:eed92ffd0bba | 79 | |
JustinAtAlten | 10:eed92ffd0bba | 80 | #define floatToCharArray(...) floatToString(__VA_ARGS__).c_str() |
JustinAtAlten | 10:eed92ffd0bba | 81 | |
JustinAtAlten | 10:eed92ffd0bba | 82 | #endif /* UTIL_H */ |