Zi Qi Yap / Mbed OS SPS30_TEST

Dependencies:   SPS30-sensor

Committer:
ziqiyap
Date:
Wed Mar 27 06:08:17 2019 +0000
Revision:
4:91fa1c5ebbe1
working copy with sps30 lib integrated with sensordriver;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ziqiyap 4:91fa1c5ebbe1 1 /**
ziqiyap 4:91fa1c5ebbe1 2 * @defgroup conversions Data Structure Conversions
ziqiyap 4:91fa1c5ebbe1 3 * @{
ziqiyap 4:91fa1c5ebbe1 4 */
ziqiyap 4:91fa1c5ebbe1 5
ziqiyap 4:91fa1c5ebbe1 6 #include <sstream>
ziqiyap 4:91fa1c5ebbe1 7 #include <iomanip>
ziqiyap 4:91fa1c5ebbe1 8 #include <vector>
ziqiyap 4:91fa1c5ebbe1 9 #include "conversions.h"
ziqiyap 4:91fa1c5ebbe1 10
ziqiyap 4:91fa1c5ebbe1 11 /**
ziqiyap 4:91fa1c5ebbe1 12 * @brief Converts a C++ string to C-string; Use free() to release mem after copying the content.
ziqiyap 4:91fa1c5ebbe1 13 * @author Lau Lee Hong
ziqiyap 4:91fa1c5ebbe1 14 * @param str C++ string
ziqiyap 4:91fa1c5ebbe1 15 * @return Pointer to a null-terminated array of character
ziqiyap 4:91fa1c5ebbe1 16 */
ziqiyap 4:91fa1c5ebbe1 17 char* StringToChar(const std::string& str)
ziqiyap 4:91fa1c5ebbe1 18 {
ziqiyap 4:91fa1c5ebbe1 19 char* buffer = (char*)std::malloc(std::strlen(str.c_str()) + 1);
ziqiyap 4:91fa1c5ebbe1 20 if(buffer != NULL)
ziqiyap 4:91fa1c5ebbe1 21 {
ziqiyap 4:91fa1c5ebbe1 22 std::strcpy(buffer, str.c_str());
ziqiyap 4:91fa1c5ebbe1 23 }
ziqiyap 4:91fa1c5ebbe1 24
ziqiyap 4:91fa1c5ebbe1 25 return buffer;
ziqiyap 4:91fa1c5ebbe1 26 }
ziqiyap 4:91fa1c5ebbe1 27
ziqiyap 4:91fa1c5ebbe1 28 /**
ziqiyap 4:91fa1c5ebbe1 29 * @brief Converts an int-type to string-type hex.
ziqiyap 4:91fa1c5ebbe1 30 * @author Lau Lee Hong
ziqiyap 4:91fa1c5ebbe1 31 * @param i Integer to be converted to hex string
ziqiyap 4:91fa1c5ebbe1 32 * @return Hexadecimal of string format
ziqiyap 4:91fa1c5ebbe1 33 */
ziqiyap 4:91fa1c5ebbe1 34 std::string IntToHex(uint32_t i)
ziqiyap 4:91fa1c5ebbe1 35 {
ziqiyap 4:91fa1c5ebbe1 36 std::stringstream stream;
ziqiyap 4:91fa1c5ebbe1 37 stream << std::hex << i;
ziqiyap 4:91fa1c5ebbe1 38 return stream.str();
ziqiyap 4:91fa1c5ebbe1 39 }
ziqiyap 4:91fa1c5ebbe1 40
ziqiyap 4:91fa1c5ebbe1 41 /**
ziqiyap 4:91fa1c5ebbe1 42 * @brief Converts an int-type to string.
ziqiyap 4:91fa1c5ebbe1 43 * @author Lau Lee Hong
ziqiyap 4:91fa1c5ebbe1 44 * @param i (int)integer to be converted (std::string)integer
ziqiyap 4:91fa1c5ebbe1 45 * @return Integer of string format
ziqiyap 4:91fa1c5ebbe1 46 */
ziqiyap 4:91fa1c5ebbe1 47 std::string IntToString(int v)
ziqiyap 4:91fa1c5ebbe1 48 {
ziqiyap 4:91fa1c5ebbe1 49 std::ostringstream oss;
ziqiyap 4:91fa1c5ebbe1 50 oss << v;
ziqiyap 4:91fa1c5ebbe1 51 return oss.str();
ziqiyap 4:91fa1c5ebbe1 52 }
ziqiyap 4:91fa1c5ebbe1 53
ziqiyap 4:91fa1c5ebbe1 54 /**
ziqiyap 4:91fa1c5ebbe1 55 * @brief Converts an double-type to a C-string with variable number of decimal places.
ziqiyap 4:91fa1c5ebbe1 56 * @author Lau Lee Hong
ziqiyap 4:91fa1c5ebbe1 57 * @param str buffer to store result
ziqiyap 4:91fa1c5ebbe1 58 * @param v value
ziqiyap 4:91fa1c5ebbe1 59 * @param decimal_digits number of decimal places
ziqiyap 4:91fa1c5ebbe1 60 * @return Null-terminated charcter array of double value with user-defined number of decimal places
ziqiyap 4:91fa1c5ebbe1 61 */
ziqiyap 4:91fa1c5ebbe1 62 char* DoubleToChar(char* str, double v, int decimal_digits)
ziqiyap 4:91fa1c5ebbe1 63 {
ziqiyap 4:91fa1c5ebbe1 64 int i = 1;
ziqiyap 4:91fa1c5ebbe1 65 int int_part, fract_part;
ziqiyap 4:91fa1c5ebbe1 66 int len;
ziqiyap 4:91fa1c5ebbe1 67 char *ptr;
ziqiyap 4:91fa1c5ebbe1 68
ziqiyap 4:91fa1c5ebbe1 69 /* Prepare decimal digits multiplicator */
ziqiyap 4:91fa1c5ebbe1 70 for (; decimal_digits != 0; i *= 10, decimal_digits--);
ziqiyap 4:91fa1c5ebbe1 71
ziqiyap 4:91fa1c5ebbe1 72 /* Calculate integer & fractional parts */
ziqiyap 4:91fa1c5ebbe1 73 int_part = (int)v;
ziqiyap 4:91fa1c5ebbe1 74 fract_part = (int)((v - (double)(int)v) * i);
ziqiyap 4:91fa1c5ebbe1 75
ziqiyap 4:91fa1c5ebbe1 76 /* Fill in integer part */
ziqiyap 4:91fa1c5ebbe1 77 std::sprintf(str, "%i.", int_part);
ziqiyap 4:91fa1c5ebbe1 78
ziqiyap 4:91fa1c5ebbe1 79 /* Prepare fill in of fractional part */
ziqiyap 4:91fa1c5ebbe1 80 len = std::strlen(str);
ziqiyap 4:91fa1c5ebbe1 81 ptr = &str[len];
ziqiyap 4:91fa1c5ebbe1 82
ziqiyap 4:91fa1c5ebbe1 83 /* Fill in leading fractional zeros */
ziqiyap 4:91fa1c5ebbe1 84 for (i /= 10; i > 1; i /= 10, ptr++)
ziqiyap 4:91fa1c5ebbe1 85 {
ziqiyap 4:91fa1c5ebbe1 86 if (fract_part >= i)
ziqiyap 4:91fa1c5ebbe1 87 {
ziqiyap 4:91fa1c5ebbe1 88 break;
ziqiyap 4:91fa1c5ebbe1 89 }
ziqiyap 4:91fa1c5ebbe1 90 *ptr = '0';
ziqiyap 4:91fa1c5ebbe1 91 }
ziqiyap 4:91fa1c5ebbe1 92
ziqiyap 4:91fa1c5ebbe1 93 /* Fill in (rest of) fractional part */
ziqiyap 4:91fa1c5ebbe1 94 std::sprintf(ptr, "%i", fract_part);
ziqiyap 4:91fa1c5ebbe1 95
ziqiyap 4:91fa1c5ebbe1 96 return str;
ziqiyap 4:91fa1c5ebbe1 97 }
ziqiyap 4:91fa1c5ebbe1 98
ziqiyap 4:91fa1c5ebbe1 99 /**
ziqiyap 4:91fa1c5ebbe1 100 * @brief Converts a C++ string to an integer
ziqiyap 4:91fa1c5ebbe1 101 * @author Lee Tze Han
ziqiyap 4:91fa1c5ebbe1 102 * @param str C++ string
ziqiyap 4:91fa1c5ebbe1 103 * @return Integer from string representation
ziqiyap 4:91fa1c5ebbe1 104 */
ziqiyap 4:91fa1c5ebbe1 105 int StringToInt(const std::string& str)
ziqiyap 4:91fa1c5ebbe1 106 {
ziqiyap 4:91fa1c5ebbe1 107 std::istringstream iss(str);
ziqiyap 4:91fa1c5ebbe1 108 int v;
ziqiyap 4:91fa1c5ebbe1 109 iss >> v;
ziqiyap 4:91fa1c5ebbe1 110 return v;
ziqiyap 4:91fa1c5ebbe1 111 }
ziqiyap 4:91fa1c5ebbe1 112
ziqiyap 4:91fa1c5ebbe1 113 /**
ziqiyap 4:91fa1c5ebbe1 114 * @brief Converts a time_t object (from NTPClient) to a C++ string
ziqiyap 4:91fa1c5ebbe1 115 * @author Lee Tze Han
ziqiyap 4:91fa1c5ebbe1 116 * @param time time_t representing current time
ziqiyap 4:91fa1c5ebbe1 117 * @return String representation of the underlying typedef'd uint32_t
ziqiyap 4:91fa1c5ebbe1 118 */
ziqiyap 4:91fa1c5ebbe1 119 //std::string TimeToString(const std::time_t time)
ziqiyap 4:91fa1c5ebbe1 120 //{
ziqiyap 4:91fa1c5ebbe1 121 // std::ostringstream oss;
ziqiyap 4:91fa1c5ebbe1 122 // oss << time;
ziqiyap 4:91fa1c5ebbe1 123 // return oss.str();
ziqiyap 4:91fa1c5ebbe1 124 //}
ziqiyap 4:91fa1c5ebbe1 125 //
ziqiyap 4:91fa1c5ebbe1 126 ///**
ziqiyap 4:91fa1c5ebbe1 127 // * @brief Converts a C++ string to time_t object
ziqiyap 4:91fa1c5ebbe1 128 // * @author Lee Tze Han
ziqiyap 4:91fa1c5ebbe1 129 // * @param str C++ string
ziqiyap 4:91fa1c5ebbe1 130 // * @return time_t from string representation
ziqiyap 4:91fa1c5ebbe1 131 // */
ziqiyap 4:91fa1c5ebbe1 132 //std::time_t StringToTime(const std::string& str)
ziqiyap 4:91fa1c5ebbe1 133 //{
ziqiyap 4:91fa1c5ebbe1 134 // std::istringstream iss(str);
ziqiyap 4:91fa1c5ebbe1 135 // std::time_t time;
ziqiyap 4:91fa1c5ebbe1 136 // iss >> time;
ziqiyap 4:91fa1c5ebbe1 137 // return time;
ziqiyap 4:91fa1c5ebbe1 138 //}
ziqiyap 4:91fa1c5ebbe1 139
ziqiyap 4:91fa1c5ebbe1 140 /** @}*/