Bmag incl gps rettelse

Dependencies:   mbed WDT MODSERIAL BME280

Committer:
MAA
Date:
Tue Aug 15 13:41:07 2017 +0000
Revision:
26:68277a308839
Parent:
25:57f9e3273979
Child:
28:ed0d29f63b55
Documentation updated

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MAA 0:b3313c5ffca3 1 #include "SPS.h"
MAA 0:b3313c5ffca3 2
MAA 19:5d25cffef662 3 //! SPS, class default constructor
MAA 19:5d25cffef662 4 /*!
MAA 19:5d25cffef662 5 Initializing different class member values, creating a header string.
MAA 19:5d25cffef662 6 */
MAA 0:b3313c5ffca3 7 SPS::SPS(){
MAA 2:39c4a85dc2a4 8
MAA 6:6d1683c8b26b 9 fileNameString = "";
MAA 2:39c4a85dc2a4 10 currentString = "";
MAA 2:39c4a85dc2a4 11 currentErrString = "";
MAA 6:6d1683c8b26b 12 lastString = "";
MAA 24:099df3fa2b13 13 headerString = "";
MAA 5:11782a2008c2 14 crc_tab16_init = 0;
MAA 5:11782a2008c2 15 errStatus = true;
MAA 2:39c4a85dc2a4 16
MAA 2:39c4a85dc2a4 17 };
MAA 2:39c4a85dc2a4 18
MAA 19:5d25cffef662 19
MAA 19:5d25cffef662 20 //! UpdateCurrentString, sps string creation method, taking data and info as parameters.
MAA 19:5d25cffef662 21 /*!
MAA 19:5d25cffef662 22
MAA 19:5d25cffef662 23 Generates an sps string containing everything needed in a BMAG sps string including crc, brackets etc.
MAA 19:5d25cffef662 24
MAA 19:5d25cffef662 25 \param tag: string containing the tag for the sps logging unit eg. "BMAG"
MAA 19:5d25cffef662 26 \param identifier_id: string containing the identifier id of the unit.
MAA 19:5d25cffef662 27 \param group_id: string containing the group id of the unit.
MAA 19:5d25cffef662 28 \param date: string containing the date in the format "YYYY/MM/DD"
MAA 19:5d25cffef662 29 \param time: string containing the current time in format "HH:MM:SS.FFF"
MAA 19:5d25cffef662 30 \param ZZZ: string containing "ZZZ" :)
MAA 23:2e914b705b99 31 \param encoding: string containing encoding as described in the *.sps documentation
MAA 19:5d25cffef662 32 \param source_id: string containing the source id of the unit eg. "0000"
MAA 19:5d25cffef662 33 \param interpreter_id: string containing the interpreter id of the unit eg. "00"
MAA 19:5d25cffef662 34 \param data_line_version: string containing data line version as described in the *.sps documentation, eg. "01"
MAA 19:5d25cffef662 35 \param source_firmware_version: string containing the firmware version of the unit eg. "1.2"
MAA 19:5d25cffef662 36 \param barcode: string containing the barcode of the unit, eg. "12345"
MAA 19:5d25cffef662 37 \param latitude: string containing the latitude of the unit in decimal degrees. For further info read the *.sps documentation.
MAA 19:5d25cffef662 38 \param longitude: string containing the longitude of the unit in decimal degrees. For further info read the *.sps documentation.
MAA 19:5d25cffef662 39 \param gpsFixFlag: bool containing the gps fix status, 1 if gps fix is present, else 0.
MAA 19:5d25cffef662 40 \param batteryvoltage: string containing the battery voltage of the units battery pack, eg. "14.2"
MAA 19:5d25cffef662 41 \param mag_time: string containing the last timestamp received from GSM-19 device eg. "000048.0"
MAA 19:5d25cffef662 42 \param mag_nt: string containing the last mag measurement in nT eg. "036418.77"
MAA 19:5d25cffef662 43 \param mag_sq: string containing info about the measurement quality of the last mag measurement eg. "99"
MAA 19:5d25cffef662 44
MAA 19:5d25cffef662 45 */
MAA 23:2e914b705b99 46 void SPS::UpdateCurrentString(string tag, string identifier_id, string group_id, string date, string time, string ZZZ,string encoding, string source_id, string interpreter_id, string data_line_version, string source_firmware_version, string interpreter_firmware_version, string barcode, string latitude, string longitude, bool gpsFixFlag, string batteryvoltage, string mag_time, string mag_nt, string mag_sq, Serial * dbg){
MAA 2:39c4a85dc2a4 47
MAA 21:325cb82f1838 48 this->currentString = "";
MAA 21:325cb82f1838 49 this->currentString.resize(256);
MAA 21:325cb82f1838 50
MAA 21:325cb82f1838 51 int strLength = 0;
MAA 5:11782a2008c2 52 char checkSum[5];
MAA 5:11782a2008c2 53 memset(checkSum,'\0',5);
MAA 5:11782a2008c2 54 unsigned short chkSum = 0;
MAA 0:b3313c5ffca3 55
MAA 5:11782a2008c2 56 addToCurrentString(LINESTART);
MAA 5:11782a2008c2 57 addToCurrentString(tag);
MAA 5:11782a2008c2 58 addToCurrentString(SPACE);
MAA 5:11782a2008c2 59 addToCurrentString(identifier_id);
MAA 5:11782a2008c2 60 addToCurrentString(SPACE);
MAA 5:11782a2008c2 61 addToCurrentString(group_id);
MAA 5:11782a2008c2 62 addToCurrentString(SPACE);
MAA 5:11782a2008c2 63 addToCurrentString(date);
MAA 5:11782a2008c2 64 addToCurrentString(SPACE);
MAA 5:11782a2008c2 65 addToCurrentString(time);
MAA 25:57f9e3273979 66 addToCurrentString(SPACE);
MAA 25:57f9e3273979 67 if(!gpsFixFlag){
MAA 25:57f9e3273979 68 addToCurrentString("NOC");
MAA 25:57f9e3273979 69 }
MAA 25:57f9e3273979 70 if(gpsFixFlag){
MAA 25:57f9e3273979 71 addToCurrentString("ZZZ");
MAA 25:57f9e3273979 72 }
MAA 5:11782a2008c2 73 addToCurrentString(SPACE);
MAA 5:11782a2008c2 74 addToCurrentString(HEADEREND);
MAA 5:11782a2008c2 75 addToCurrentString(SPACE);
MAA 5:11782a2008c2 76 addToCurrentString(source_id);
MAA 5:11782a2008c2 77 addToCurrentString(SPACE);
MAA 5:11782a2008c2 78 addToCurrentString(interpreter_id);
MAA 5:11782a2008c2 79 addToCurrentString(SPACE);
MAA 5:11782a2008c2 80 addToCurrentString(data_line_version);
MAA 5:11782a2008c2 81 addToCurrentString(SPACE);
MAA 23:2e914b705b99 82 addToCurrentString(encoding);
MAA 23:2e914b705b99 83 addToCurrentString(SPACE);
MAA 5:11782a2008c2 84 addToCurrentString(source_firmware_version);
MAA 5:11782a2008c2 85 addToCurrentString(SPACE);
MAA 5:11782a2008c2 86 addToCurrentString(interpreter_firmware_version);
MAA 5:11782a2008c2 87 addToCurrentString(SPACE);
MAA 5:11782a2008c2 88 addToCurrentString(HEADEREND);
MAA 5:11782a2008c2 89 addToCurrentString(SPACE);
MAA 8:d6287c33b54a 90 addToCurrentString(barcode);
MAA 8:d6287c33b54a 91 addToCurrentString(SPACE);
MAA 24:099df3fa2b13 92 if(gpsFixFlag){
MAA 24:099df3fa2b13 93 addToCurrentString(latitude);
MAA 24:099df3fa2b13 94 }
MAA 24:099df3fa2b13 95 if(!gpsFixFlag){
MAA 24:099df3fa2b13 96 addToCurrentString("NaN");
MAA 24:099df3fa2b13 97 }
MAA 5:11782a2008c2 98 addToCurrentString(SPACE);
MAA 25:57f9e3273979 99 if(gpsFixFlag && (strlen(longitude.c_str()) > 5)){
MAA 24:099df3fa2b13 100 addToCurrentString(longitude);
MAA 24:099df3fa2b13 101 }
MAA 25:57f9e3273979 102 if(!gpsFixFlag || (strlen(longitude.c_str()) < 5)){
MAA 24:099df3fa2b13 103 addToCurrentString("NaN");
MAA 24:099df3fa2b13 104 }
MAA 24:099df3fa2b13 105 addToCurrentString(SPACE);
MAA 5:11782a2008c2 106 if(gpsFixFlag){
MAA 5:11782a2008c2 107 addToCurrentString('1');
MAA 5:11782a2008c2 108 }
MAA 5:11782a2008c2 109 if(!gpsFixFlag){
MAA 5:11782a2008c2 110 addToCurrentString('0');
MAA 5:11782a2008c2 111 }
MAA 5:11782a2008c2 112 addToCurrentString(SPACE);
MAA 8:d6287c33b54a 113 addToCurrentString(batteryvoltage);
MAA 8:d6287c33b54a 114 addToCurrentString(SPACE);
MAA 5:11782a2008c2 115 addToCurrentString(mag_time);
MAA 5:11782a2008c2 116 addToCurrentString(SPACE);
MAA 5:11782a2008c2 117 addToCurrentString(mag_nt);
MAA 5:11782a2008c2 118 addToCurrentString(SPACE);
MAA 5:11782a2008c2 119 addToCurrentString(mag_sq);
MAA 5:11782a2008c2 120
MAA 21:325cb82f1838 121
MAA 21:325cb82f1838 122 strLength = strlen(this->currentString.c_str());
MAA 21:325cb82f1838 123
MAA 2:39c4a85dc2a4 124 //calculate checksum
MAA 21:325cb82f1838 125 for(int i = 0; i < strLength; i++){
MAA 21:325cb82f1838 126 if(this->currentString[i] != '>'){
MAA 5:11782a2008c2 127
MAA 21:325cb82f1838 128 chkSum = update_crc_16(chkSum, this->currentString[i]);
MAA 5:11782a2008c2 129
MAA 5:11782a2008c2 130 }
MAA 5:11782a2008c2 131 }
MAA 5:11782a2008c2 132
MAA 6:6d1683c8b26b 133 sprintf(checkSum, "%04X", chkSum);
MAA 21:325cb82f1838 134
MAA 2:39c4a85dc2a4 135 //append rest of string
MAA 5:11782a2008c2 136 addToCurrentString(SPACE);
MAA 5:11782a2008c2 137 addToCurrentString(checkSum);
MAA 8:d6287c33b54a 138 addToCurrentString(LINESTOP);
MAA 2:39c4a85dc2a4 139 };
MAA 2:39c4a85dc2a4 140
MAA 26:68277a308839 141 //! UpdateHeaderString, header / RMRK update method
MAA 26:68277a308839 142 /*!
MAA 26:68277a308839 143
MAA 26:68277a308839 144 Updates header / RMRK string
MAA 26:68277a308839 145
MAA 26:68277a308839 146 \param identifier_id: string containing the identifier id of the unit.
MAA 26:68277a308839 147 \param group_id: string containing the group id of the unit.
MAA 26:68277a308839 148 \param ZZZ: string containing "ZZZ" :)
MAA 26:68277a308839 149 \param encoding: string containing encoding as described in the *.sps documentation
MAA 26:68277a308839 150 \param source_id: string containing the source id of the unit eg. "0000"
MAA 26:68277a308839 151 \param interpreter_id: string containing the interpreter id of the unit eg. "00"
MAA 26:68277a308839 152 \param data_line_version: string containing data line version as described in the *.sps documentation, eg. "01"
MAA 26:68277a308839 153 \param source_firmware_version: string containing the firmware version of the unit eg. "1.2"
MAA 26:68277a308839 154 \param barcode: string containing the barcode of the unit, eg. "12345"
MAA 26:68277a308839 155 \param interpreter_firmware_version: string containing interpreter firmware version
MAA 26:68277a308839 156
MAA 26:68277a308839 157 */
MAA 24:099df3fa2b13 158 void SPS::UpdateHeaderString(string barcode, string identifier_id, string group_id, string ZZZ, string encoding,string source_id, string interpreter_id, string data_line_version, string source_firmware_version, string interpreter_firmware_version){
MAA 19:5d25cffef662 159
MAA 24:099df3fa2b13 160 this->headerString = "";
MAA 24:099df3fa2b13 161 this->headerString.resize(256);
MAA 24:099df3fa2b13 162
MAA 24:099df3fa2b13 163 int strLength = 0;
MAA 24:099df3fa2b13 164 char checkSum[5];
MAA 24:099df3fa2b13 165 memset(checkSum,'\0',5);
MAA 24:099df3fa2b13 166 unsigned short chkSum = 0;
MAA 24:099df3fa2b13 167
MAA 24:099df3fa2b13 168 addToCurrentHeaderString(LINESTART);
MAA 24:099df3fa2b13 169 addToCurrentHeaderString("RMRK");
MAA 24:099df3fa2b13 170 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 171 addToCurrentHeaderString(identifier_id);
MAA 24:099df3fa2b13 172 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 173 addToCurrentHeaderString(group_id);
MAA 24:099df3fa2b13 174 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 175 addToCurrentHeaderString("0000/00/00");
MAA 24:099df3fa2b13 176 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 177 addToCurrentHeaderString("00:00:00.000");
MAA 24:099df3fa2b13 178 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 179 addToCurrentHeaderString("ZZZ");
MAA 24:099df3fa2b13 180 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 181 addToCurrentHeaderString(HEADEREND);
MAA 24:099df3fa2b13 182 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 183 addToCurrentHeaderString(source_id);
MAA 24:099df3fa2b13 184 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 185 addToCurrentHeaderString(interpreter_id);
MAA 24:099df3fa2b13 186 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 187 addToCurrentHeaderString("01");
MAA 24:099df3fa2b13 188 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 189 addToCurrentHeaderString(encoding);
MAA 24:099df3fa2b13 190 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 191 addToCurrentHeaderString(source_firmware_version);
MAA 24:099df3fa2b13 192 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 193 addToCurrentHeaderString(interpreter_firmware_version);
MAA 24:099df3fa2b13 194 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 195 addToCurrentHeaderString(HEADEREND);
MAA 24:099df3fa2b13 196 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 197 addToCurrentHeaderString("Barcode");
MAA 24:099df3fa2b13 198 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 199 addToCurrentHeaderString("Latitude");
MAA 24:099df3fa2b13 200 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 201 addToCurrentHeaderString("Longitude");
MAA 24:099df3fa2b13 202 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 203 addToCurrentHeaderString("gpsFixFlag");
MAA 24:099df3fa2b13 204 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 205 addToCurrentHeaderString("batteryVoltage");
MAA 24:099df3fa2b13 206 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 207 addToCurrentHeaderString("mag_time");
MAA 24:099df3fa2b13 208 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 209 addToCurrentHeaderString("mag_value");
MAA 24:099df3fa2b13 210 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 211 addToCurrentHeaderString("mag_quality");
MAA 24:099df3fa2b13 212
MAA 24:099df3fa2b13 213
MAA 24:099df3fa2b13 214 strLength = strlen(this->headerString.c_str());
MAA 24:099df3fa2b13 215
MAA 24:099df3fa2b13 216 //calculate checksum
MAA 24:099df3fa2b13 217 for(int i = 0; i < strLength; i++){
MAA 24:099df3fa2b13 218 if(this->headerString[i] != '>'){
MAA 24:099df3fa2b13 219
MAA 24:099df3fa2b13 220 chkSum = update_crc_16(chkSum, this->headerString[i]);
MAA 24:099df3fa2b13 221
MAA 24:099df3fa2b13 222 }
MAA 24:099df3fa2b13 223 }
MAA 24:099df3fa2b13 224
MAA 24:099df3fa2b13 225 sprintf(checkSum, "%04X", chkSum);
MAA 24:099df3fa2b13 226
MAA 24:099df3fa2b13 227 //append rest of string
MAA 24:099df3fa2b13 228 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 229 addToCurrentHeaderString(checkSum);
MAA 24:099df3fa2b13 230 addToCurrentHeaderString(LINESTOP);
MAA 24:099df3fa2b13 231 }
MAA 19:5d25cffef662 232
MAA 19:5d25cffef662 233 //! UpdateCurrentErrString, sps ERR string creation method, taking data and info as parameters.
MAA 19:5d25cffef662 234 /*!
MAA 19:5d25cffef662 235
MAA 19:5d25cffef662 236 Generates the current sps ERR string containing everything needed in a BMAG sps string including crc, brackets etc.
MAA 19:5d25cffef662 237
MAA 19:5d25cffef662 238 \param tag: string containing the tag for the sps logging unit eg. "BMAG"
MAA 19:5d25cffef662 239 \param identifier_id: string containing the identifier id of the unit.
MAA 19:5d25cffef662 240 \param group_id: string containing the group id of the unit.
MAA 19:5d25cffef662 241 \param date: string containing the date in the format "YYYY/MM/DD"
MAA 19:5d25cffef662 242 \param time: string containing the current time in format "HH:MM:SS.FFF"
MAA 19:5d25cffef662 243 \param ZZZ: string containing "ZZZ" :)
MAA 23:2e914b705b99 244 \param encoding: string containing encoding as described in the *.sps documentation
MAA 19:5d25cffef662 245 \param source_id: string containing the source id of the unit eg. "0000"
MAA 19:5d25cffef662 246 \param interpreter_id: string containing the interpreter id of the unit eg. "00"
MAA 19:5d25cffef662 247 \param data_line_version: string containing data line version as described in the *.sps documentation, eg. "01"
MAA 19:5d25cffef662 248 \param source_firmware_version: string containing the firmware version of the unit eg. "1.2"
MAA 19:5d25cffef662 249 \param barcode: string containing the barcode of the unit, eg. "12345"
MAA 19:5d25cffef662 250 \param latitude: string containing the latitude of the unit in decimal degrees. For further info read the *.sps documentation.
MAA 19:5d25cffef662 251 \param longitude: string containing the longitude of the unit in decimal degrees. For further info read the *.sps documentation.
MAA 19:5d25cffef662 252 \param gpsFixFlag: bool containing the gps fix status, 1 if gps fix is present, else 0.
MAA 19:5d25cffef662 253 \param mag_time: string containing the last timestamp received from GSM-19 device eg. "000048.0"
MAA 19:5d25cffef662 254 \param mag_nt: string containing the last mag measurement in nT eg. "036418.77"
MAA 19:5d25cffef662 255 \param mag_sq: string containing info about the measurement quality of the last mag measurement eg. "99"
MAA 19:5d25cffef662 256
MAA 19:5d25cffef662 257 */
MAA 23:2e914b705b99 258 void SPS::UpdateCurrentErrString(string tag, string identifier_id, string group_id, string date, string time, string ZZZ,string encoding, string source_id, string interpreter_id, string data_line_version, string source_firmware_version, string interpreter_firmware_version, string latitude, string longitude, bool gpsFixFlag, string mag_time, string mag_nt, string mag_sq, Serial * dbg){
MAA 7:872984a67d5b 259
MAA 21:325cb82f1838 260 this->currentErrString = "";
MAA 21:325cb82f1838 261 this->currentErrString.resize(256);
MAA 7:872984a67d5b 262 char checkSum[5];
MAA 7:872984a67d5b 263 memset(checkSum,'\0',5);
MAA 7:872984a67d5b 264 unsigned short chkSum = 0;
MAA 24:099df3fa2b13 265 int strLength = 0;
MAA 7:872984a67d5b 266
MAA 7:872984a67d5b 267 addToCurrentErrString(LINESTART);
MAA 7:872984a67d5b 268 addToCurrentErrString(tag);
MAA 7:872984a67d5b 269 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 270 addToCurrentErrString(identifier_id);
MAA 7:872984a67d5b 271 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 272 addToCurrentErrString(group_id);
MAA 7:872984a67d5b 273 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 274 addToCurrentErrString(date);
MAA 7:872984a67d5b 275 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 276 addToCurrentErrString(time);
MAA 25:57f9e3273979 277 addToCurrentErrString(SPACE);
MAA 25:57f9e3273979 278 addToCurrentErrString("ZZZ");
MAA 24:099df3fa2b13 279 addToCurrentErrString(SPACE);
MAA 24:099df3fa2b13 280 addToCurrentErrString(HEADEREND);
MAA 25:57f9e3273979 281 addToCurrentErrString(SPACE);
MAA 24:099df3fa2b13 282 addToCurrentErrString(source_id);
MAA 24:099df3fa2b13 283 addToCurrentErrString(SPACE);
MAA 24:099df3fa2b13 284 addToCurrentErrString(interpreter_id);
MAA 24:099df3fa2b13 285 addToCurrentErrString(SPACE);
MAA 25:57f9e3273979 286 addToCurrentErrString("02");
MAA 24:099df3fa2b13 287 addToCurrentErrString(SPACE);
MAA 24:099df3fa2b13 288 addToCurrentErrString(encoding);
MAA 24:099df3fa2b13 289 addToCurrentErrString(SPACE);
MAA 24:099df3fa2b13 290 addToCurrentErrString(source_firmware_version);
MAA 24:099df3fa2b13 291 addToCurrentErrString(SPACE);
MAA 24:099df3fa2b13 292 addToCurrentErrString(interpreter_firmware_version);
MAA 24:099df3fa2b13 293 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 294 addToCurrentErrString(HEADEREND);
MAA 7:872984a67d5b 295 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 296 addToCurrentErrString("BMAG");
MAA 25:57f9e3273979 297 if(!gpsFixFlag){
MAA 25:57f9e3273979 298 addToCurrentErrString(SPACE);
MAA 25:57f9e3273979 299 addToCurrentErrString("RTC");
MAA 25:57f9e3273979 300 }
MAA 7:872984a67d5b 301 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 302 addToCurrentErrString("C02");
MAA 7:872984a67d5b 303 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 304 addToCurrentErrString("C03");
MAA 7:872984a67d5b 305
MAA 24:099df3fa2b13 306 strLength = strlen(this->currentErrString.c_str());
MAA 24:099df3fa2b13 307
MAA 7:872984a67d5b 308 //calculate checksum
MAA 24:099df3fa2b13 309 for(int i = 0; i < strLength; i++){
MAA 24:099df3fa2b13 310 if(this->currentErrString[i] != '>'){
MAA 7:872984a67d5b 311
MAA 21:325cb82f1838 312 chkSum = update_crc_16(chkSum, this->currentErrString[i]);
MAA 7:872984a67d5b 313
MAA 7:872984a67d5b 314 }
MAA 7:872984a67d5b 315 }
MAA 21:325cb82f1838 316
MAA 7:872984a67d5b 317 sprintf(checkSum, "%04X", chkSum);
MAA 7:872984a67d5b 318
MAA 7:872984a67d5b 319 //append rest of string
MAA 7:872984a67d5b 320 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 321 addToCurrentErrString(checkSum);
MAA 8:d6287c33b54a 322 addToCurrentErrString(LINESTOP);
MAA 7:872984a67d5b 323 };
MAA 7:872984a67d5b 324
MAA 19:5d25cffef662 325 //! init_crc16_tab, creates a crc tab.
MAA 19:5d25cffef662 326 /*!
MAA 19:5d25cffef662 327 Populates a crc array for later use
MAA 19:5d25cffef662 328 */
MAA 4:c70ef089a3fd 329 void SPS::init_crc16_tab()
MAA 4:c70ef089a3fd 330 {
MAA 4:c70ef089a3fd 331 int i, j;
MAA 4:c70ef089a3fd 332 unsigned short crc, c;
MAA 4:c70ef089a3fd 333
MAA 4:c70ef089a3fd 334 for (i = 0; i < 256; i++)
MAA 4:c70ef089a3fd 335 {
MAA 4:c70ef089a3fd 336 crc = 0;
MAA 4:c70ef089a3fd 337 c = (unsigned short) i;
MAA 4:c70ef089a3fd 338
MAA 4:c70ef089a3fd 339 for (j = 0; j < 8; j++)
MAA 4:c70ef089a3fd 340 {
MAA 4:c70ef089a3fd 341 if ((crc ^ c) & 0x0001)
MAA 4:c70ef089a3fd 342 crc = (crc >> 1) ^ P_16;
MAA 4:c70ef089a3fd 343 else
MAA 4:c70ef089a3fd 344 crc = crc >> 1;
MAA 4:c70ef089a3fd 345
MAA 4:c70ef089a3fd 346 c = c >> 1;
MAA 4:c70ef089a3fd 347 }
MAA 4:c70ef089a3fd 348 crc_tab16[i] = crc;
MAA 4:c70ef089a3fd 349 }
MAA 4:c70ef089a3fd 350 crc_tab16_init = 1;
MAA 4:c70ef089a3fd 351 };
MAA 4:c70ef089a3fd 352
MAA 4:c70ef089a3fd 353
MAA 19:5d25cffef662 354
MAA 19:5d25cffef662 355 //! update_crc_16, updates crc tab.
MAA 19:5d25cffef662 356 /*!
MAA 20:73fa202c73db 357 \param crc: the crc currently getting calculated
MAA 20:73fa202c73db 358 \param c: next character to be part of crc
MAA 19:5d25cffef662 359 \return returns crc value
MAA 19:5d25cffef662 360 */
MAA 4:c70ef089a3fd 361 unsigned short SPS::update_crc_16(unsigned short crc, char c)
MAA 4:c70ef089a3fd 362 {
MAA 4:c70ef089a3fd 363 unsigned short tmp, short_c;
MAA 4:c70ef089a3fd 364
MAA 4:c70ef089a3fd 365 short_c = 0x00ff & (unsigned short) c;
MAA 4:c70ef089a3fd 366
MAA 4:c70ef089a3fd 367 if (!crc_tab16_init)
MAA 4:c70ef089a3fd 368 init_crc16_tab();
MAA 21:325cb82f1838 369
MAA 4:c70ef089a3fd 370
MAA 4:c70ef089a3fd 371 tmp = crc ^ short_c;
MAA 4:c70ef089a3fd 372 crc = (crc >> 8) ^ crc_tab16[tmp & 0xff];
MAA 4:c70ef089a3fd 373
MAA 4:c70ef089a3fd 374 return crc;
MAA 4:c70ef089a3fd 375 };
MAA 5:11782a2008c2 376
MAA 5:11782a2008c2 377
MAA 20:73fa202c73db 378
MAA 20:73fa202c73db 379 //! getCurrentString, returns the current sps data string
MAA 20:73fa202c73db 380 /*!
MAA 20:73fa202c73db 381 \return returns current sps data string
MAA 20:73fa202c73db 382 */
MAA 5:11782a2008c2 383 string SPS::getCurrentString(void){
MAA 5:11782a2008c2 384 return this->currentString;
MAA 5:11782a2008c2 385 };
MAA 5:11782a2008c2 386
MAA 5:11782a2008c2 387
MAA 20:73fa202c73db 388 //! getErrStatus, returns the current error status flag
MAA 20:73fa202c73db 389 /*!
MAA 20:73fa202c73db 390 \return returns the current error status flag (bool)
MAA 20:73fa202c73db 391 */
MAA 5:11782a2008c2 392 bool SPS::getErrStatus(void){
MAA 5:11782a2008c2 393 return this->errStatus;
MAA 5:11782a2008c2 394 };
MAA 5:11782a2008c2 395
MAA 20:73fa202c73db 396 //! setErrStatus, sets error status flag
MAA 20:73fa202c73db 397 /*!
MAA 20:73fa202c73db 398 \param status: boolean value assigned to errorStatus
MAA 20:73fa202c73db 399 */
MAA 5:11782a2008c2 400 void SPS::setErrStatus(bool status){
MAA 5:11782a2008c2 401 this->errStatus = status;
MAA 5:11782a2008c2 402 };
MAA 5:11782a2008c2 403
MAA 20:73fa202c73db 404 //! getHeaderString, getter method, returning header string for *.sps file
MAA 20:73fa202c73db 405 /*!
MAA 20:73fa202c73db 406 \return returns the header string for the *.sps file
MAA 20:73fa202c73db 407 */
MAA 5:11782a2008c2 408 string SPS::getHeaderString(void){
MAA 5:11782a2008c2 409 return this->headerString;
MAA 5:11782a2008c2 410 };
MAA 5:11782a2008c2 411
MAA 5:11782a2008c2 412 //add data to current string
MAA 20:73fa202c73db 413 //! addToCurrentString, appends string of data to the sps string currently being manipulated.
MAA 20:73fa202c73db 414 /*!
MAA 20:73fa202c73db 415 \param data: string containing data
MAA 20:73fa202c73db 416 */
MAA 5:11782a2008c2 417 void SPS::addToCurrentString(string data){
MAA 21:325cb82f1838 418 int currentStartIndex = strlen(this->currentString.c_str());
MAA 5:11782a2008c2 419 char dataStrLen = 0;
MAA 8:d6287c33b54a 420 int index = 0;
MAA 8:d6287c33b54a 421
MAA 5:11782a2008c2 422 dataStrLen = strlen(data.c_str());
MAA 5:11782a2008c2 423
MAA 5:11782a2008c2 424 for(int i = 0; i < dataStrLen; i++){
MAA 8:d6287c33b54a 425
MAA 21:325cb82f1838 426 if((this->currentString[currentStartIndex+i] != '\r') || (this->currentString[currentStartIndex+i] != '\n')){
MAA 8:d6287c33b54a 427
MAA 21:325cb82f1838 428 this->currentString[currentStartIndex+i] = data[index];
MAA 8:d6287c33b54a 429 index += 1;
MAA 8:d6287c33b54a 430
MAA 8:d6287c33b54a 431 }
MAA 8:d6287c33b54a 432
MAA 5:11782a2008c2 433 }
MAA 5:11782a2008c2 434 }
MAA 5:11782a2008c2 435
MAA 20:73fa202c73db 436 //! addToCurrentString, appends char to the sps string currently being manipulated.
MAA 20:73fa202c73db 437 /*!
MAA 20:73fa202c73db 438 \param data: data character
MAA 20:73fa202c73db 439 */
MAA 5:11782a2008c2 440 void SPS::addToCurrentString(char data){
MAA 21:325cb82f1838 441 int currentStartIndex = strlen(this->currentString.c_str());
MAA 21:325cb82f1838 442 this->currentString[currentStartIndex] = data;
MAA 6:6d1683c8b26b 443 };
MAA 6:6d1683c8b26b 444
MAA 24:099df3fa2b13 445
MAA 26:68277a308839 446
MAA 26:68277a308839 447 //! addToCurrentHeaderString, appends string to the current header string
MAA 26:68277a308839 448 /*!
MAA 26:68277a308839 449 \param data: data string
MAA 26:68277a308839 450 */
MAA 24:099df3fa2b13 451 void SPS::addToCurrentHeaderString(string data){
MAA 24:099df3fa2b13 452 int currentStartIndex = strlen(this->headerString.c_str());
MAA 24:099df3fa2b13 453 char dataStrLen = 0;
MAA 24:099df3fa2b13 454 int index = 0;
MAA 24:099df3fa2b13 455
MAA 24:099df3fa2b13 456 dataStrLen = strlen(data.c_str());
MAA 24:099df3fa2b13 457
MAA 24:099df3fa2b13 458 for(int i = 0; i < dataStrLen; i++){
MAA 24:099df3fa2b13 459
MAA 24:099df3fa2b13 460 if((this->headerString[currentStartIndex+i] != '\r') || (this->headerString[currentStartIndex+i] != '\n')){
MAA 24:099df3fa2b13 461
MAA 24:099df3fa2b13 462 this->headerString[currentStartIndex+i] = data[index];
MAA 24:099df3fa2b13 463 index += 1;
MAA 24:099df3fa2b13 464
MAA 24:099df3fa2b13 465 }
MAA 24:099df3fa2b13 466
MAA 24:099df3fa2b13 467 }
MAA 24:099df3fa2b13 468 };
MAA 24:099df3fa2b13 469
MAA 24:099df3fa2b13 470
MAA 26:68277a308839 471 //! addToCurrentHeaderString, appends char to the current header string
MAA 26:68277a308839 472 /*!
MAA 26:68277a308839 473 \param data: data char
MAA 26:68277a308839 474 */
MAA 24:099df3fa2b13 475 void SPS::addToCurrentHeaderString(char data){
MAA 24:099df3fa2b13 476 int currentStartIndex = strlen(this->headerString.c_str());
MAA 24:099df3fa2b13 477 this->headerString[currentStartIndex] = data;
MAA 24:099df3fa2b13 478 };
MAA 24:099df3fa2b13 479
MAA 20:73fa202c73db 480 //! addToCurrentErrString, appends string to the sps err_string currently being manipulated.
MAA 20:73fa202c73db 481 /*!
MAA 20:73fa202c73db 482 \param data: data string
MAA 20:73fa202c73db 483 */
MAA 7:872984a67d5b 484 void SPS::addToCurrentErrString(string data){
MAA 21:325cb82f1838 485 int currentStartIndex = strlen(this->currentErrString.c_str());
MAA 7:872984a67d5b 486 char dataStrLen = 0;
MAA 7:872984a67d5b 487 dataStrLen = strlen(data.c_str());
MAA 7:872984a67d5b 488
MAA 7:872984a67d5b 489 for(int i = 0; i < dataStrLen; i++){
MAA 21:325cb82f1838 490 this->currentErrString[currentStartIndex+i] = data[i];
MAA 7:872984a67d5b 491 }
MAA 7:872984a67d5b 492
MAA 7:872984a67d5b 493 };
MAA 20:73fa202c73db 494
MAA 20:73fa202c73db 495 //! addToCurrentErrString, appends a character to the sps err_string currently being manipulated.
MAA 20:73fa202c73db 496 /*!
MAA 20:73fa202c73db 497 \param data: data char
MAA 20:73fa202c73db 498 */
MAA 7:872984a67d5b 499 void SPS::addToCurrentErrString(char data){
MAA 7:872984a67d5b 500 int currentStartIndex = strlen(currentErrString.c_str());
MAA 7:872984a67d5b 501 currentErrString[currentStartIndex] = data;
MAA 7:872984a67d5b 502
MAA 7:872984a67d5b 503 };
MAA 7:872984a67d5b 504
MAA 20:73fa202c73db 505 //! generateSpsFilename, generates a sps file name, including file postfix, using the current date as input.
MAA 20:73fa202c73db 506 /*!
MAA 20:73fa202c73db 507 \param formattedDate: Date string using a formatted date witht he format: "YYYY/MM/DD"
MAA 20:73fa202c73db 508 */
MAA 6:6d1683c8b26b 509 void SPS::generateSpsFilename(string formattedDate){
MAA 6:6d1683c8b26b 510
MAA 7:872984a67d5b 511 fileNameString.resize(25);
MAA 6:6d1683c8b26b 512
MAA 7:872984a67d5b 513 fileNameString.replace(0, 10, "/usb/BMAG_");
MAA 6:6d1683c8b26b 514
MAA 7:872984a67d5b 515 fileNameString[10] = formattedDate[0];
MAA 7:872984a67d5b 516 fileNameString[11] = formattedDate[1];
MAA 7:872984a67d5b 517 fileNameString[12] = formattedDate[2];
MAA 7:872984a67d5b 518 fileNameString[13] = formattedDate[3];
MAA 7:872984a67d5b 519 fileNameString[14] = '-';
MAA 7:872984a67d5b 520 fileNameString[15] = formattedDate[5];
MAA 7:872984a67d5b 521 fileNameString[16] = formattedDate[6];
MAA 7:872984a67d5b 522 fileNameString[17] = '-';
MAA 7:872984a67d5b 523 fileNameString[18] = formattedDate[8];
MAA 7:872984a67d5b 524 fileNameString[19] = formattedDate[9];
MAA 6:6d1683c8b26b 525
MAA 7:872984a67d5b 526 fileNameString[20] = '.';
MAA 7:872984a67d5b 527 fileNameString[21] = 's';
MAA 7:872984a67d5b 528 fileNameString[22] = 'p';
MAA 7:872984a67d5b 529 fileNameString[23] = 's';
MAA 6:6d1683c8b26b 530
MAA 6:6d1683c8b26b 531 };
MAA 6:6d1683c8b26b 532
MAA 20:73fa202c73db 533 //! getSpsFileName, getter method, returning a *.sps filename based on the formatted date generated using generateSpsFilename(string formattedDate) method.
MAA 20:73fa202c73db 534 /*!
MAA 20:73fa202c73db 535 \return fileNameString returns file name including postfix.
MAA 20:73fa202c73db 536 */
MAA 6:6d1683c8b26b 537 string SPS::getSpsFileName(void){
MAA 6:6d1683c8b26b 538
MAA 6:6d1683c8b26b 539 return this->fileNameString;
MAA 6:6d1683c8b26b 540
MAA 7:872984a67d5b 541 };
MAA 7:872984a67d5b 542
MAA 20:73fa202c73db 543 //! getCurrentErrString, getter method returning current sps error string
MAA 20:73fa202c73db 544 /*!
MAA 20:73fa202c73db 545 \return currentErrString: returns the current sps error string.
MAA 20:73fa202c73db 546 */
MAA 7:872984a67d5b 547 string SPS::getCurrentErrString(void){
MAA 7:872984a67d5b 548 return this->currentErrString;
MAA 5:11782a2008c2 549 };