Bmag incl gps rettelse

Dependencies:   mbed WDT MODSERIAL BME280

Committer:
MAA
Date:
Fri Jun 02 10:43:14 2017 +0000
Revision:
25:57f9e3273979
Parent:
24:099df3fa2b13
Child:
26:68277a308839
rettelser af SPS klasse tilpasset krav til sps format

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 24:099df3fa2b13 141 //Updates current header string
MAA 24:099df3fa2b13 142 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 143
MAA 24:099df3fa2b13 144 this->headerString = "";
MAA 24:099df3fa2b13 145 this->headerString.resize(256);
MAA 24:099df3fa2b13 146
MAA 24:099df3fa2b13 147 int strLength = 0;
MAA 24:099df3fa2b13 148 char checkSum[5];
MAA 24:099df3fa2b13 149 memset(checkSum,'\0',5);
MAA 24:099df3fa2b13 150 unsigned short chkSum = 0;
MAA 24:099df3fa2b13 151
MAA 24:099df3fa2b13 152 addToCurrentHeaderString(LINESTART);
MAA 24:099df3fa2b13 153 addToCurrentHeaderString("RMRK");
MAA 24:099df3fa2b13 154 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 155 addToCurrentHeaderString(identifier_id);
MAA 24:099df3fa2b13 156 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 157 addToCurrentHeaderString(group_id);
MAA 24:099df3fa2b13 158 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 159 addToCurrentHeaderString("0000/00/00");
MAA 24:099df3fa2b13 160 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 161 addToCurrentHeaderString("00:00:00.000");
MAA 24:099df3fa2b13 162 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 163 addToCurrentHeaderString("ZZZ");
MAA 24:099df3fa2b13 164 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 165 addToCurrentHeaderString(HEADEREND);
MAA 24:099df3fa2b13 166 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 167 addToCurrentHeaderString(source_id);
MAA 24:099df3fa2b13 168 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 169 addToCurrentHeaderString(interpreter_id);
MAA 24:099df3fa2b13 170 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 171 addToCurrentHeaderString("01");
MAA 24:099df3fa2b13 172 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 173 addToCurrentHeaderString(encoding);
MAA 24:099df3fa2b13 174 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 175 addToCurrentHeaderString(source_firmware_version);
MAA 24:099df3fa2b13 176 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 177 addToCurrentHeaderString(interpreter_firmware_version);
MAA 24:099df3fa2b13 178 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 179 addToCurrentHeaderString(HEADEREND);
MAA 24:099df3fa2b13 180 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 181 addToCurrentHeaderString("Barcode");
MAA 24:099df3fa2b13 182 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 183 addToCurrentHeaderString("Latitude");
MAA 24:099df3fa2b13 184 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 185 addToCurrentHeaderString("Longitude");
MAA 24:099df3fa2b13 186 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 187 addToCurrentHeaderString("gpsFixFlag");
MAA 24:099df3fa2b13 188 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 189 addToCurrentHeaderString("batteryVoltage");
MAA 24:099df3fa2b13 190 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 191 addToCurrentHeaderString("mag_time");
MAA 24:099df3fa2b13 192 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 193 addToCurrentHeaderString("mag_value");
MAA 24:099df3fa2b13 194 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 195 addToCurrentHeaderString("mag_quality");
MAA 24:099df3fa2b13 196
MAA 24:099df3fa2b13 197
MAA 24:099df3fa2b13 198 strLength = strlen(this->headerString.c_str());
MAA 24:099df3fa2b13 199
MAA 24:099df3fa2b13 200 //calculate checksum
MAA 24:099df3fa2b13 201 for(int i = 0; i < strLength; i++){
MAA 24:099df3fa2b13 202 if(this->headerString[i] != '>'){
MAA 24:099df3fa2b13 203
MAA 24:099df3fa2b13 204 chkSum = update_crc_16(chkSum, this->headerString[i]);
MAA 24:099df3fa2b13 205
MAA 24:099df3fa2b13 206 }
MAA 24:099df3fa2b13 207 }
MAA 24:099df3fa2b13 208
MAA 24:099df3fa2b13 209 sprintf(checkSum, "%04X", chkSum);
MAA 24:099df3fa2b13 210
MAA 24:099df3fa2b13 211 //append rest of string
MAA 24:099df3fa2b13 212 addToCurrentHeaderString(SPACE);
MAA 24:099df3fa2b13 213 addToCurrentHeaderString(checkSum);
MAA 24:099df3fa2b13 214 addToCurrentHeaderString(LINESTOP);
MAA 24:099df3fa2b13 215 }
MAA 19:5d25cffef662 216
MAA 19:5d25cffef662 217 //! UpdateCurrentErrString, sps ERR string creation method, taking data and info as parameters.
MAA 19:5d25cffef662 218 /*!
MAA 19:5d25cffef662 219
MAA 19:5d25cffef662 220 Generates the current sps ERR string containing everything needed in a BMAG sps string including crc, brackets etc.
MAA 19:5d25cffef662 221
MAA 19:5d25cffef662 222 \param tag: string containing the tag for the sps logging unit eg. "BMAG"
MAA 19:5d25cffef662 223 \param identifier_id: string containing the identifier id of the unit.
MAA 19:5d25cffef662 224 \param group_id: string containing the group id of the unit.
MAA 19:5d25cffef662 225 \param date: string containing the date in the format "YYYY/MM/DD"
MAA 19:5d25cffef662 226 \param time: string containing the current time in format "HH:MM:SS.FFF"
MAA 19:5d25cffef662 227 \param ZZZ: string containing "ZZZ" :)
MAA 23:2e914b705b99 228 \param encoding: string containing encoding as described in the *.sps documentation
MAA 19:5d25cffef662 229 \param source_id: string containing the source id of the unit eg. "0000"
MAA 19:5d25cffef662 230 \param interpreter_id: string containing the interpreter id of the unit eg. "00"
MAA 19:5d25cffef662 231 \param data_line_version: string containing data line version as described in the *.sps documentation, eg. "01"
MAA 19:5d25cffef662 232 \param source_firmware_version: string containing the firmware version of the unit eg. "1.2"
MAA 19:5d25cffef662 233 \param barcode: string containing the barcode of the unit, eg. "12345"
MAA 19:5d25cffef662 234 \param latitude: string containing the latitude of the unit in decimal degrees. For further info read the *.sps documentation.
MAA 19:5d25cffef662 235 \param longitude: string containing the longitude of the unit in decimal degrees. For further info read the *.sps documentation.
MAA 19:5d25cffef662 236 \param gpsFixFlag: bool containing the gps fix status, 1 if gps fix is present, else 0.
MAA 19:5d25cffef662 237 \param mag_time: string containing the last timestamp received from GSM-19 device eg. "000048.0"
MAA 19:5d25cffef662 238 \param mag_nt: string containing the last mag measurement in nT eg. "036418.77"
MAA 19:5d25cffef662 239 \param mag_sq: string containing info about the measurement quality of the last mag measurement eg. "99"
MAA 19:5d25cffef662 240
MAA 19:5d25cffef662 241 */
MAA 23:2e914b705b99 242 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 243
MAA 21:325cb82f1838 244 this->currentErrString = "";
MAA 21:325cb82f1838 245 this->currentErrString.resize(256);
MAA 7:872984a67d5b 246 char checkSum[5];
MAA 7:872984a67d5b 247 memset(checkSum,'\0',5);
MAA 7:872984a67d5b 248 unsigned short chkSum = 0;
MAA 24:099df3fa2b13 249 int strLength = 0;
MAA 7:872984a67d5b 250
MAA 7:872984a67d5b 251 addToCurrentErrString(LINESTART);
MAA 7:872984a67d5b 252 addToCurrentErrString(tag);
MAA 7:872984a67d5b 253 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 254 addToCurrentErrString(identifier_id);
MAA 7:872984a67d5b 255 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 256 addToCurrentErrString(group_id);
MAA 7:872984a67d5b 257 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 258 addToCurrentErrString(date);
MAA 7:872984a67d5b 259 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 260 addToCurrentErrString(time);
MAA 25:57f9e3273979 261 addToCurrentErrString(SPACE);
MAA 25:57f9e3273979 262 addToCurrentErrString("ZZZ");
MAA 24:099df3fa2b13 263 addToCurrentErrString(SPACE);
MAA 24:099df3fa2b13 264 addToCurrentErrString(HEADEREND);
MAA 25:57f9e3273979 265 addToCurrentErrString(SPACE);
MAA 24:099df3fa2b13 266 addToCurrentErrString(source_id);
MAA 24:099df3fa2b13 267 addToCurrentErrString(SPACE);
MAA 24:099df3fa2b13 268 addToCurrentErrString(interpreter_id);
MAA 24:099df3fa2b13 269 addToCurrentErrString(SPACE);
MAA 25:57f9e3273979 270 addToCurrentErrString("02");
MAA 24:099df3fa2b13 271 addToCurrentErrString(SPACE);
MAA 24:099df3fa2b13 272 addToCurrentErrString(encoding);
MAA 24:099df3fa2b13 273 addToCurrentErrString(SPACE);
MAA 24:099df3fa2b13 274 addToCurrentErrString(source_firmware_version);
MAA 24:099df3fa2b13 275 addToCurrentErrString(SPACE);
MAA 24:099df3fa2b13 276 addToCurrentErrString(interpreter_firmware_version);
MAA 24:099df3fa2b13 277 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 278 addToCurrentErrString(HEADEREND);
MAA 7:872984a67d5b 279 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 280 addToCurrentErrString("BMAG");
MAA 25:57f9e3273979 281 if(!gpsFixFlag){
MAA 25:57f9e3273979 282 addToCurrentErrString(SPACE);
MAA 25:57f9e3273979 283 addToCurrentErrString("RTC");
MAA 25:57f9e3273979 284 }
MAA 7:872984a67d5b 285 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 286 addToCurrentErrString("C02");
MAA 7:872984a67d5b 287 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 288 addToCurrentErrString("C03");
MAA 7:872984a67d5b 289
MAA 24:099df3fa2b13 290 strLength = strlen(this->currentErrString.c_str());
MAA 24:099df3fa2b13 291
MAA 7:872984a67d5b 292 //calculate checksum
MAA 24:099df3fa2b13 293 for(int i = 0; i < strLength; i++){
MAA 24:099df3fa2b13 294 if(this->currentErrString[i] != '>'){
MAA 7:872984a67d5b 295
MAA 21:325cb82f1838 296 chkSum = update_crc_16(chkSum, this->currentErrString[i]);
MAA 7:872984a67d5b 297
MAA 7:872984a67d5b 298 }
MAA 7:872984a67d5b 299 }
MAA 21:325cb82f1838 300
MAA 7:872984a67d5b 301 sprintf(checkSum, "%04X", chkSum);
MAA 7:872984a67d5b 302
MAA 7:872984a67d5b 303 //append rest of string
MAA 7:872984a67d5b 304 addToCurrentErrString(SPACE);
MAA 7:872984a67d5b 305 addToCurrentErrString(checkSum);
MAA 8:d6287c33b54a 306 addToCurrentErrString(LINESTOP);
MAA 7:872984a67d5b 307 };
MAA 7:872984a67d5b 308
MAA 19:5d25cffef662 309 //! init_crc16_tab, creates a crc tab.
MAA 19:5d25cffef662 310 /*!
MAA 19:5d25cffef662 311 Populates a crc array for later use
MAA 19:5d25cffef662 312 */
MAA 4:c70ef089a3fd 313 void SPS::init_crc16_tab()
MAA 4:c70ef089a3fd 314 {
MAA 4:c70ef089a3fd 315 int i, j;
MAA 4:c70ef089a3fd 316 unsigned short crc, c;
MAA 4:c70ef089a3fd 317
MAA 4:c70ef089a3fd 318 for (i = 0; i < 256; i++)
MAA 4:c70ef089a3fd 319 {
MAA 4:c70ef089a3fd 320 crc = 0;
MAA 4:c70ef089a3fd 321 c = (unsigned short) i;
MAA 4:c70ef089a3fd 322
MAA 4:c70ef089a3fd 323 for (j = 0; j < 8; j++)
MAA 4:c70ef089a3fd 324 {
MAA 4:c70ef089a3fd 325 if ((crc ^ c) & 0x0001)
MAA 4:c70ef089a3fd 326 crc = (crc >> 1) ^ P_16;
MAA 4:c70ef089a3fd 327 else
MAA 4:c70ef089a3fd 328 crc = crc >> 1;
MAA 4:c70ef089a3fd 329
MAA 4:c70ef089a3fd 330 c = c >> 1;
MAA 4:c70ef089a3fd 331 }
MAA 4:c70ef089a3fd 332 crc_tab16[i] = crc;
MAA 4:c70ef089a3fd 333 }
MAA 4:c70ef089a3fd 334 crc_tab16_init = 1;
MAA 4:c70ef089a3fd 335 };
MAA 4:c70ef089a3fd 336
MAA 4:c70ef089a3fd 337
MAA 19:5d25cffef662 338
MAA 19:5d25cffef662 339 //! update_crc_16, updates crc tab.
MAA 19:5d25cffef662 340 /*!
MAA 20:73fa202c73db 341 \param crc: the crc currently getting calculated
MAA 20:73fa202c73db 342 \param c: next character to be part of crc
MAA 19:5d25cffef662 343 \return returns crc value
MAA 19:5d25cffef662 344 */
MAA 4:c70ef089a3fd 345 unsigned short SPS::update_crc_16(unsigned short crc, char c)
MAA 4:c70ef089a3fd 346 {
MAA 4:c70ef089a3fd 347 unsigned short tmp, short_c;
MAA 4:c70ef089a3fd 348
MAA 4:c70ef089a3fd 349 short_c = 0x00ff & (unsigned short) c;
MAA 4:c70ef089a3fd 350
MAA 4:c70ef089a3fd 351 if (!crc_tab16_init)
MAA 4:c70ef089a3fd 352 init_crc16_tab();
MAA 21:325cb82f1838 353
MAA 4:c70ef089a3fd 354
MAA 4:c70ef089a3fd 355 tmp = crc ^ short_c;
MAA 4:c70ef089a3fd 356 crc = (crc >> 8) ^ crc_tab16[tmp & 0xff];
MAA 4:c70ef089a3fd 357
MAA 4:c70ef089a3fd 358 return crc;
MAA 4:c70ef089a3fd 359 };
MAA 5:11782a2008c2 360
MAA 5:11782a2008c2 361
MAA 20:73fa202c73db 362
MAA 20:73fa202c73db 363 //! getCurrentString, returns the current sps data string
MAA 20:73fa202c73db 364 /*!
MAA 20:73fa202c73db 365 \return returns current sps data string
MAA 20:73fa202c73db 366 */
MAA 5:11782a2008c2 367 string SPS::getCurrentString(void){
MAA 5:11782a2008c2 368 return this->currentString;
MAA 5:11782a2008c2 369 };
MAA 5:11782a2008c2 370
MAA 5:11782a2008c2 371
MAA 20:73fa202c73db 372 //! getErrStatus, returns the current error status flag
MAA 20:73fa202c73db 373 /*!
MAA 20:73fa202c73db 374 \return returns the current error status flag (bool)
MAA 20:73fa202c73db 375 */
MAA 5:11782a2008c2 376 bool SPS::getErrStatus(void){
MAA 5:11782a2008c2 377 return this->errStatus;
MAA 5:11782a2008c2 378 };
MAA 5:11782a2008c2 379
MAA 20:73fa202c73db 380 //! setErrStatus, sets error status flag
MAA 20:73fa202c73db 381 /*!
MAA 20:73fa202c73db 382 \param status: boolean value assigned to errorStatus
MAA 20:73fa202c73db 383 */
MAA 5:11782a2008c2 384 void SPS::setErrStatus(bool status){
MAA 5:11782a2008c2 385 this->errStatus = status;
MAA 5:11782a2008c2 386 };
MAA 5:11782a2008c2 387
MAA 20:73fa202c73db 388 //! getHeaderString, getter method, returning header string for *.sps file
MAA 20:73fa202c73db 389 /*!
MAA 20:73fa202c73db 390 \return returns the header string for the *.sps file
MAA 20:73fa202c73db 391 */
MAA 5:11782a2008c2 392 string SPS::getHeaderString(void){
MAA 5:11782a2008c2 393 return this->headerString;
MAA 5:11782a2008c2 394 };
MAA 5:11782a2008c2 395
MAA 5:11782a2008c2 396 //add data to current string
MAA 20:73fa202c73db 397 //! addToCurrentString, appends string of data to the sps string currently being manipulated.
MAA 20:73fa202c73db 398 /*!
MAA 20:73fa202c73db 399 \param data: string containing data
MAA 20:73fa202c73db 400 */
MAA 5:11782a2008c2 401 void SPS::addToCurrentString(string data){
MAA 21:325cb82f1838 402 int currentStartIndex = strlen(this->currentString.c_str());
MAA 5:11782a2008c2 403 char dataStrLen = 0;
MAA 8:d6287c33b54a 404 int index = 0;
MAA 8:d6287c33b54a 405
MAA 5:11782a2008c2 406 dataStrLen = strlen(data.c_str());
MAA 5:11782a2008c2 407
MAA 5:11782a2008c2 408 for(int i = 0; i < dataStrLen; i++){
MAA 8:d6287c33b54a 409
MAA 21:325cb82f1838 410 if((this->currentString[currentStartIndex+i] != '\r') || (this->currentString[currentStartIndex+i] != '\n')){
MAA 8:d6287c33b54a 411
MAA 21:325cb82f1838 412 this->currentString[currentStartIndex+i] = data[index];
MAA 8:d6287c33b54a 413 index += 1;
MAA 8:d6287c33b54a 414
MAA 8:d6287c33b54a 415 }
MAA 8:d6287c33b54a 416
MAA 5:11782a2008c2 417 }
MAA 5:11782a2008c2 418 }
MAA 5:11782a2008c2 419
MAA 20:73fa202c73db 420 //! addToCurrentString, appends char to the sps string currently being manipulated.
MAA 20:73fa202c73db 421 /*!
MAA 20:73fa202c73db 422 \param data: data character
MAA 20:73fa202c73db 423 */
MAA 5:11782a2008c2 424 void SPS::addToCurrentString(char data){
MAA 21:325cb82f1838 425 int currentStartIndex = strlen(this->currentString.c_str());
MAA 21:325cb82f1838 426 this->currentString[currentStartIndex] = data;
MAA 6:6d1683c8b26b 427 };
MAA 6:6d1683c8b26b 428
MAA 24:099df3fa2b13 429
MAA 24:099df3fa2b13 430 void SPS::addToCurrentHeaderString(string data){
MAA 24:099df3fa2b13 431 int currentStartIndex = strlen(this->headerString.c_str());
MAA 24:099df3fa2b13 432 char dataStrLen = 0;
MAA 24:099df3fa2b13 433 int index = 0;
MAA 24:099df3fa2b13 434
MAA 24:099df3fa2b13 435 dataStrLen = strlen(data.c_str());
MAA 24:099df3fa2b13 436
MAA 24:099df3fa2b13 437 for(int i = 0; i < dataStrLen; i++){
MAA 24:099df3fa2b13 438
MAA 24:099df3fa2b13 439 if((this->headerString[currentStartIndex+i] != '\r') || (this->headerString[currentStartIndex+i] != '\n')){
MAA 24:099df3fa2b13 440
MAA 24:099df3fa2b13 441 this->headerString[currentStartIndex+i] = data[index];
MAA 24:099df3fa2b13 442 index += 1;
MAA 24:099df3fa2b13 443
MAA 24:099df3fa2b13 444 }
MAA 24:099df3fa2b13 445
MAA 24:099df3fa2b13 446 }
MAA 24:099df3fa2b13 447 };
MAA 24:099df3fa2b13 448
MAA 24:099df3fa2b13 449
MAA 24:099df3fa2b13 450 void SPS::addToCurrentHeaderString(char data){
MAA 24:099df3fa2b13 451 int currentStartIndex = strlen(this->headerString.c_str());
MAA 24:099df3fa2b13 452 this->headerString[currentStartIndex] = data;
MAA 24:099df3fa2b13 453 };
MAA 24:099df3fa2b13 454
MAA 20:73fa202c73db 455 //! addToCurrentErrString, appends string to the sps err_string currently being manipulated.
MAA 20:73fa202c73db 456 /*!
MAA 20:73fa202c73db 457 \param data: data string
MAA 20:73fa202c73db 458 */
MAA 7:872984a67d5b 459 void SPS::addToCurrentErrString(string data){
MAA 21:325cb82f1838 460 int currentStartIndex = strlen(this->currentErrString.c_str());
MAA 7:872984a67d5b 461 char dataStrLen = 0;
MAA 7:872984a67d5b 462 dataStrLen = strlen(data.c_str());
MAA 7:872984a67d5b 463
MAA 7:872984a67d5b 464 for(int i = 0; i < dataStrLen; i++){
MAA 21:325cb82f1838 465 this->currentErrString[currentStartIndex+i] = data[i];
MAA 7:872984a67d5b 466 }
MAA 7:872984a67d5b 467
MAA 7:872984a67d5b 468 };
MAA 20:73fa202c73db 469
MAA 20:73fa202c73db 470 //! addToCurrentErrString, appends a character to the sps err_string currently being manipulated.
MAA 20:73fa202c73db 471 /*!
MAA 20:73fa202c73db 472 \param data: data char
MAA 20:73fa202c73db 473 */
MAA 7:872984a67d5b 474 void SPS::addToCurrentErrString(char data){
MAA 7:872984a67d5b 475 int currentStartIndex = strlen(currentErrString.c_str());
MAA 7:872984a67d5b 476 currentErrString[currentStartIndex] = data;
MAA 7:872984a67d5b 477
MAA 7:872984a67d5b 478 };
MAA 7:872984a67d5b 479
MAA 20:73fa202c73db 480 //! generateSpsFilename, generates a sps file name, including file postfix, using the current date as input.
MAA 20:73fa202c73db 481 /*!
MAA 20:73fa202c73db 482 \param formattedDate: Date string using a formatted date witht he format: "YYYY/MM/DD"
MAA 20:73fa202c73db 483 */
MAA 6:6d1683c8b26b 484 void SPS::generateSpsFilename(string formattedDate){
MAA 6:6d1683c8b26b 485
MAA 7:872984a67d5b 486 fileNameString.resize(25);
MAA 6:6d1683c8b26b 487
MAA 7:872984a67d5b 488 fileNameString.replace(0, 10, "/usb/BMAG_");
MAA 6:6d1683c8b26b 489
MAA 7:872984a67d5b 490 fileNameString[10] = formattedDate[0];
MAA 7:872984a67d5b 491 fileNameString[11] = formattedDate[1];
MAA 7:872984a67d5b 492 fileNameString[12] = formattedDate[2];
MAA 7:872984a67d5b 493 fileNameString[13] = formattedDate[3];
MAA 7:872984a67d5b 494 fileNameString[14] = '-';
MAA 7:872984a67d5b 495 fileNameString[15] = formattedDate[5];
MAA 7:872984a67d5b 496 fileNameString[16] = formattedDate[6];
MAA 7:872984a67d5b 497 fileNameString[17] = '-';
MAA 7:872984a67d5b 498 fileNameString[18] = formattedDate[8];
MAA 7:872984a67d5b 499 fileNameString[19] = formattedDate[9];
MAA 6:6d1683c8b26b 500
MAA 7:872984a67d5b 501 fileNameString[20] = '.';
MAA 7:872984a67d5b 502 fileNameString[21] = 's';
MAA 7:872984a67d5b 503 fileNameString[22] = 'p';
MAA 7:872984a67d5b 504 fileNameString[23] = 's';
MAA 6:6d1683c8b26b 505
MAA 6:6d1683c8b26b 506 };
MAA 6:6d1683c8b26b 507
MAA 20:73fa202c73db 508 //! getSpsFileName, getter method, returning a *.sps filename based on the formatted date generated using generateSpsFilename(string formattedDate) method.
MAA 20:73fa202c73db 509 /*!
MAA 20:73fa202c73db 510 \return fileNameString returns file name including postfix.
MAA 20:73fa202c73db 511 */
MAA 6:6d1683c8b26b 512 string SPS::getSpsFileName(void){
MAA 6:6d1683c8b26b 513
MAA 6:6d1683c8b26b 514 return this->fileNameString;
MAA 6:6d1683c8b26b 515
MAA 7:872984a67d5b 516 };
MAA 7:872984a67d5b 517
MAA 20:73fa202c73db 518 //! getCurrentErrString, getter method returning current sps error string
MAA 20:73fa202c73db 519 /*!
MAA 20:73fa202c73db 520 \return currentErrString: returns the current sps error string.
MAA 20:73fa202c73db 521 */
MAA 7:872984a67d5b 522 string SPS::getCurrentErrString(void){
MAA 7:872984a67d5b 523 return this->currentErrString;
MAA 5:11782a2008c2 524 };