Pull request for i.a. sensor buffer template

Dependencies:   BLE_API MPU6050 mbed nRF51822

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?

UserRevisionLine numberNew 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 */