![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Bmag incl gps rettelse
Dependencies: mbed WDT MODSERIAL BME280
BMAG/BMAG.cpp@55:06c5f76e1a8c, 2019-02-15 (annotated)
- Committer:
- MAA
- Date:
- Fri Feb 15 12:53:30 2019 +0000
- Branch:
- MbedBMAGThrRev
- Revision:
- 55:06c5f76e1a8c
- Parent:
- 28:ed0d29f63b55
almost at FW version 1.0.0.6
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MAA | 8:d6287c33b54a | 1 | #include "BMAG.h" |
MAA | 8:d6287c33b54a | 2 | |
MAA | 14:400ecb93c6a2 | 3 | //! The default constructor. No arguments are needed for this class ever. |
MAA | 14:400ecb93c6a2 | 4 | /*! |
MAA | 14:400ecb93c6a2 | 5 | Initializes private members needed when the object is operational. |
MAA | 14:400ecb93c6a2 | 6 | */ |
MAA | 8:d6287c33b54a | 7 | BMAG::BMAG(){ |
MAA | 8:d6287c33b54a | 8 | lastMagTime.resize(25); |
MAA | 8:d6287c33b54a | 9 | lastMagNT.resize(25); |
MAA | 8:d6287c33b54a | 10 | lastMagSq.resize(25); |
MAA | 8:d6287c33b54a | 11 | |
MAA | 8:d6287c33b54a | 12 | }; |
MAA | 8:d6287c33b54a | 13 | |
MAA | 14:400ecb93c6a2 | 14 | //! Parser method. Parsing the GSM-19T RS232 strings. |
MAA | 14:400ecb93c6a2 | 15 | /*! |
MAA | 14:400ecb93c6a2 | 16 | Parses the RS232 string received from the GSM-19T and ensures splitting, |
MAA | 14:400ecb93c6a2 | 17 | and storage of the different data elements of the string. |
MAA | 14:400ecb93c6a2 | 18 | |
MAA | 14:400ecb93c6a2 | 19 | \param str The complete rs232 string from GSM-19T. |
MAA | 14:400ecb93c6a2 | 20 | |
MAA | 14:400ecb93c6a2 | 21 | */ |
MAA | 55:06c5f76e1a8c | 22 | int BMAG::parseBMAGString(string str){ |
MAA | 8:d6287c33b54a | 23 | string tmpmagStr = ""; |
MAA | 8:d6287c33b54a | 24 | |
MAA | 8:d6287c33b54a | 25 | //get first mag string column |
MAA | 8:d6287c33b54a | 26 | tmpmagStr.assign(getColumn(str, 0)); |
MAA | 8:d6287c33b54a | 27 | |
MAA | 8:d6287c33b54a | 28 | |
MAA | 8:d6287c33b54a | 29 | setMagTimeStr(tmpmagStr); |
MAA | 8:d6287c33b54a | 30 | tmpmagStr = ""; |
MAA | 8:d6287c33b54a | 31 | |
MAA | 8:d6287c33b54a | 32 | //get second mag string column |
MAA | 8:d6287c33b54a | 33 | tmpmagStr.assign(getColumn(str, 1)); |
MAA | 28:ed0d29f63b55 | 34 | setMagNTStr(tmpmagStr.substr(1)); |
MAA | 8:d6287c33b54a | 35 | |
MAA | 8:d6287c33b54a | 36 | tmpmagStr = ""; |
MAA | 8:d6287c33b54a | 37 | |
MAA | 8:d6287c33b54a | 38 | //get third mag string column |
MAA | 8:d6287c33b54a | 39 | tmpmagStr.assign(getColumn(str, 2)); |
MAA | 8:d6287c33b54a | 40 | |
MAA | 8:d6287c33b54a | 41 | setMagSqStr(tmpmagStr); |
MAA | 8:d6287c33b54a | 42 | |
MAA | 8:d6287c33b54a | 43 | |
MAA | 55:06c5f76e1a8c | 44 | if(strlen(lastMagTime.c_str()) != 8){ |
MAA | 55:06c5f76e1a8c | 45 | lastMagTime.assign("NaN"); |
MAA | 55:06c5f76e1a8c | 46 | lastMagNT.assign("NaN"); |
MAA | 55:06c5f76e1a8c | 47 | lastMagSq.assign("NaN"); |
MAA | 55:06c5f76e1a8c | 48 | return -1; |
MAA | 55:06c5f76e1a8c | 49 | } |
MAA | 55:06c5f76e1a8c | 50 | |
MAA | 55:06c5f76e1a8c | 51 | if(strlen(lastMagNT.c_str()) != 8){ |
MAA | 55:06c5f76e1a8c | 52 | lastMagTime.assign("NaN"); |
MAA | 55:06c5f76e1a8c | 53 | lastMagNT.assign("NaN"); |
MAA | 55:06c5f76e1a8c | 54 | lastMagSq.assign("NaN"); |
MAA | 55:06c5f76e1a8c | 55 | return -1; |
MAA | 55:06c5f76e1a8c | 56 | } |
MAA | 55:06c5f76e1a8c | 57 | |
MAA | 55:06c5f76e1a8c | 58 | if(strlen(lastMagSq.c_str()) != 2){ |
MAA | 55:06c5f76e1a8c | 59 | lastMagTime.assign("NaN"); |
MAA | 55:06c5f76e1a8c | 60 | lastMagNT.assign("NaN"); |
MAA | 55:06c5f76e1a8c | 61 | lastMagSq.assign("NaN"); |
MAA | 55:06c5f76e1a8c | 62 | return -1; |
MAA | 55:06c5f76e1a8c | 63 | } |
MAA | 55:06c5f76e1a8c | 64 | |
MAA | 55:06c5f76e1a8c | 65 | return 0; |
MAA | 8:d6287c33b54a | 66 | }; |
MAA | 8:d6287c33b54a | 67 | |
MAA | 14:400ecb93c6a2 | 68 | |
MAA | 14:400ecb93c6a2 | 69 | //! magTimeString string setting method. |
MAA | 14:400ecb93c6a2 | 70 | /*! |
MAA | 14:400ecb93c6a2 | 71 | sets the lastMagTime string to the received magT argument string value |
MAA | 14:400ecb93c6a2 | 72 | |
MAA | 14:400ecb93c6a2 | 73 | \param magT Mag time data field as a string |
MAA | 14:400ecb93c6a2 | 74 | */ |
MAA | 8:d6287c33b54a | 75 | void BMAG::setMagTimeStr(string magT){ |
MAA | 8:d6287c33b54a | 76 | lastMagTime.assign(magT); |
MAA | 8:d6287c33b54a | 77 | }; |
MAA | 8:d6287c33b54a | 78 | |
MAA | 8:d6287c33b54a | 79 | |
MAA | 14:400ecb93c6a2 | 80 | //! magMeasurement string setting method. |
MAA | 14:400ecb93c6a2 | 81 | /*! |
MAA | 14:400ecb93c6a2 | 82 | sets the lastMagNt string to the received magNT argument string value |
MAA | 14:400ecb93c6a2 | 83 | |
MAA | 14:400ecb93c6a2 | 84 | \param magNT Mag nanoTesla data field as a string |
MAA | 14:400ecb93c6a2 | 85 | */ |
MAA | 8:d6287c33b54a | 86 | void BMAG::setMagNTStr(string magNT){ |
MAA | 8:d6287c33b54a | 87 | lastMagNT.assign(magNT); |
MAA | 8:d6287c33b54a | 88 | }; |
MAA | 8:d6287c33b54a | 89 | |
MAA | 14:400ecb93c6a2 | 90 | //! magMeasurementQuality string setting method. |
MAA | 14:400ecb93c6a2 | 91 | /*! |
MAA | 14:400ecb93c6a2 | 92 | sets the lastMagSq string to the received magSq argument string value |
MAA | 14:400ecb93c6a2 | 93 | |
MAA | 14:400ecb93c6a2 | 94 | \param magSq Mag measurement quality data field as a string |
MAA | 14:400ecb93c6a2 | 95 | */ |
MAA | 8:d6287c33b54a | 96 | void BMAG::setMagSqStr(string magSq){ |
MAA | 8:d6287c33b54a | 97 | lastMagSq.assign(magSq); |
MAA | 8:d6287c33b54a | 98 | }; |
MAA | 8:d6287c33b54a | 99 | |
MAA | 14:400ecb93c6a2 | 100 | |
MAA | 14:400ecb93c6a2 | 101 | //! Mag time data field string getter method. |
MAA | 14:400ecb93c6a2 | 102 | /*! |
MAA | 14:400ecb93c6a2 | 103 | Returns the lastMagTime string |
MAA | 14:400ecb93c6a2 | 104 | |
MAA | 14:400ecb93c6a2 | 105 | \return A string with the mag time data field |
MAA | 14:400ecb93c6a2 | 106 | */ |
MAA | 8:d6287c33b54a | 107 | string BMAG::getMagTimeStr(void){ |
MAA | 8:d6287c33b54a | 108 | return lastMagTime; |
MAA | 8:d6287c33b54a | 109 | }; |
MAA | 8:d6287c33b54a | 110 | |
MAA | 14:400ecb93c6a2 | 111 | //! Mag nanoTesla measurement data field string getter method. |
MAA | 14:400ecb93c6a2 | 112 | /*! |
MAA | 14:400ecb93c6a2 | 113 | Returns Mag nanoTesla measurement |
MAA | 14:400ecb93c6a2 | 114 | |
MAA | 14:400ecb93c6a2 | 115 | \return A string with the Mag nanoTesla measurement |
MAA | 14:400ecb93c6a2 | 116 | */ |
MAA | 8:d6287c33b54a | 117 | string BMAG::getMagNTStr(void){ |
MAA | 8:d6287c33b54a | 118 | return lastMagNT; |
MAA | 8:d6287c33b54a | 119 | }; |
MAA | 8:d6287c33b54a | 120 | |
MAA | 14:400ecb93c6a2 | 121 | |
MAA | 14:400ecb93c6a2 | 122 | //! Mag measurement quality data field string getter method. |
MAA | 14:400ecb93c6a2 | 123 | /*! |
MAA | 14:400ecb93c6a2 | 124 | Returns Mag measurement quality |
MAA | 14:400ecb93c6a2 | 125 | |
MAA | 14:400ecb93c6a2 | 126 | \return Mag measurement quality data field string |
MAA | 14:400ecb93c6a2 | 127 | */ |
MAA | 8:d6287c33b54a | 128 | string BMAG::getMagSq(void){ |
MAA | 8:d6287c33b54a | 129 | return lastMagSq; |
MAA | 8:d6287c33b54a | 130 | }; |
MAA | 8:d6287c33b54a | 131 | |
MAA | 14:400ecb93c6a2 | 132 | //! mag string column search method. |
MAA | 14:400ecb93c6a2 | 133 | /*! |
MAA | 14:400ecb93c6a2 | 134 | Returns the desired data column of the original GSM-19T measurement string. |
MAA | 14:400ecb93c6a2 | 135 | |
MAA | 14:400ecb93c6a2 | 136 | \param str Iriginal GSM-19T measurement string |
MAA | 14:400ecb93c6a2 | 137 | \param n Desired data column, 0 indexed. Eg. First column(Time): n = 0. Second column(mag measurement in nT): n = 1. Third column(Measurement Quality): n = 2. |
MAA | 14:400ecb93c6a2 | 138 | \return desired data column as string. |
MAA | 14:400ecb93c6a2 | 139 | */ |
MAA | 8:d6287c33b54a | 140 | string BMAG::getColumn(string str, char n){ |
MAA | 8:d6287c33b54a | 141 | |
MAA | 8:d6287c33b54a | 142 | char count = 0; |
MAA | 8:d6287c33b54a | 143 | string tmpStr = ""; |
MAA | 21:325cb82f1838 | 144 | string result = ""; |
MAA | 21:325cb82f1838 | 145 | |
MAA | 8:d6287c33b54a | 146 | tmpStr.resize(40); |
MAA | 8:d6287c33b54a | 147 | char indexcnt = 0; |
MAA | 8:d6287c33b54a | 148 | |
MAA | 8:d6287c33b54a | 149 | |
MAA | 8:d6287c33b54a | 150 | for(int i = 0; i < str.size(); i++){ |
MAA | 8:d6287c33b54a | 151 | if(count == n && (str[i] != '\r') || count == n && (str[i] != '\n')){ |
MAA | 8:d6287c33b54a | 152 | tmpStr[indexcnt] = str[i]; |
MAA | 8:d6287c33b54a | 153 | indexcnt += 1; |
MAA | 8:d6287c33b54a | 154 | } |
MAA | 8:d6287c33b54a | 155 | |
MAA | 8:d6287c33b54a | 156 | if(str[i] == '\r' || str[i] == ' '){ |
MAA | 8:d6287c33b54a | 157 | count += 1; |
MAA | 8:d6287c33b54a | 158 | } |
MAA | 8:d6287c33b54a | 159 | |
MAA | 8:d6287c33b54a | 160 | if(count > n){ |
MAA | 8:d6287c33b54a | 161 | break; |
MAA | 8:d6287c33b54a | 162 | } |
MAA | 8:d6287c33b54a | 163 | } |
MAA | 8:d6287c33b54a | 164 | |
MAA | 21:325cb82f1838 | 165 | for(int i = 0; i < tmpStr.size(); i++){ |
MAA | 21:325cb82f1838 | 166 | if(tmpStr[i] != ' ' && tmpStr[i] != '\n' && tmpStr[i] != '\r'){ |
MAA | 21:325cb82f1838 | 167 | result += tmpStr[i]; |
MAA | 21:325cb82f1838 | 168 | } |
MAA | 21:325cb82f1838 | 169 | } |
MAA | 21:325cb82f1838 | 170 | |
MAA | 21:325cb82f1838 | 171 | return result; |
MAA | 8:d6287c33b54a | 172 | |
MAA | 8:d6287c33b54a | 173 | }; |
MAA | 8:d6287c33b54a | 174 | |
MAA | 8:d6287c33b54a | 175 | |
MAA | 8:d6287c33b54a | 176 |