Bmag incl gps rettelse

Dependencies:   mbed WDT MODSERIAL BME280

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?

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