пропажа слешей

Dependencies:   mbed mbed-STM32F103C8T6 MLX90614 Watchdog DS1820

Committer:
spin7ion
Date:
Tue Sep 29 17:43:11 2020 +0000
Revision:
7:870aba638c02
Parent:
6:70d0218c2a28
Child:
9:e8a07983289f
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hudakz 0:0279e8c1f111 1 #include "stm32f103c8t6.h"
hudakz 0:0279e8c1f111 2 #include "mbed.h"
spin7ion 6:70d0218c2a28 3 #include "DS1820.h"
spin7ion 6:70d0218c2a28 4 #include "MLX90614.h"
spin7ion 6:70d0218c2a28 5 #include "config.h"
spin7ion 6:70d0218c2a28 6 #include "ATCmdParser.h"
spin7ion 6:70d0218c2a28 7 #include "UARTSerial.h"
spin7ion 6:70d0218c2a28 8 #include "Watchdog.h"
spin7ion 6:70d0218c2a28 9
spin7ion 6:70d0218c2a28 10 Watchdog wd;
spin7ion 6:70d0218c2a28 11
spin7ion 6:70d0218c2a28 12 DigitalOut myled(PC_13);
spin7ion 6:70d0218c2a28 13
spin7ion 6:70d0218c2a28 14 //SIM7000
spin7ion 6:70d0218c2a28 15 UARTSerial *_serial;
spin7ion 6:70d0218c2a28 16 ATCmdParser *_parser;
spin7ion 6:70d0218c2a28 17
spin7ion 6:70d0218c2a28 18 //Termometers
spin7ion 6:70d0218c2a28 19 OneWire oneWire(PIN_ONEWIRE);
spin7ion 6:70d0218c2a28 20 const int SENSORS_COUNT = 10;
spin7ion 6:70d0218c2a28 21 DS1820* ds1820[SENSORS_COUNT];
spin7ion 6:70d0218c2a28 22 int sensors_found = 0;
spin7ion 6:70d0218c2a28 23 const char sensorsOrder[]={4,2,5,8,0,3,6,1,9,7};
spin7ion 6:70d0218c2a28 24 float stickTemperatures[SENSORS_COUNT];
spin7ion 6:70d0218c2a28 25
spin7ion 6:70d0218c2a28 26 int i=0;
spin7ion 6:70d0218c2a28 27
spin7ion 6:70d0218c2a28 28 //IR termometer
spin7ion 6:70d0218c2a28 29 I2C i2c(PIN_SDA, PIN_SCL); //sda,scl
spin7ion 6:70d0218c2a28 30 MLX90614 thermometer(&i2c);
spin7ion 6:70d0218c2a28 31 float IRtemp;
hudakz 0:0279e8c1f111 32
spin7ion 6:70d0218c2a28 33 #if DEBUG_PC
spin7ion 6:70d0218c2a28 34 Serial pc(PIN_TX, PIN_RX); // TX, RX
spin7ion 6:70d0218c2a28 35 #endif
spin7ion 6:70d0218c2a28 36
spin7ion 6:70d0218c2a28 37 int index;
spin7ion 6:70d0218c2a28 38 char bufferString[2048];
spin7ion 6:70d0218c2a28 39
spin7ion 6:70d0218c2a28 40 int h_time, m_time, s_time;
spin7ion 6:70d0218c2a28 41 int fq, nst, fix, date; // fix quality, Number of satellites being tracked, 3D fix
spin7ion 6:70d0218c2a28 42 float latitude, longitude, timefix, speed, altitude;
spin7ion 6:70d0218c2a28 43
spin7ion 6:70d0218c2a28 44 char state=STATE_INIT;
spin7ion 6:70d0218c2a28 45 int sleepTimer=0;
spin7ion 6:70d0218c2a28 46 int fixTries=0;
hudakz 0:0279e8c1f111 47
spin7ion 6:70d0218c2a28 48 void parseTime (float timeval)
spin7ion 6:70d0218c2a28 49 {
spin7ion 6:70d0218c2a28 50 //format utc time to beijing time,add 8 time zone
spin7ion 6:70d0218c2a28 51 float time = timeval + 80000.00f;
spin7ion 6:70d0218c2a28 52 h_time = int(time) / 10000;
spin7ion 6:70d0218c2a28 53 m_time = (int(time) % 10000) / 100;
spin7ion 6:70d0218c2a28 54 s_time = int(time) % 100;
spin7ion 6:70d0218c2a28 55 }
spin7ion 6:70d0218c2a28 56
spin7ion 6:70d0218c2a28 57 /*
spin7ion 6:70d0218c2a28 58 * NMEA sentences: https://www.gpsinformation.org/dale/nmea.htm#nmea
spin7ion 6:70d0218c2a28 59 * http://navspark.mybigcommerce.com/content/NMEA_Format_v0.1.pdf
spin7ion 6:70d0218c2a28 60 */
spin7ion 6:70d0218c2a28 61 void nmea_parse(char *cmd)
spin7ion 6:70d0218c2a28 62 {
spin7ion 6:70d0218c2a28 63 char ns, ew, tf, status;
spin7ion 6:70d0218c2a28 64
hudakz 4:00ccc80cbeb8 65
spin7ion 6:70d0218c2a28 66 // Global Positioning System Fix Data
spin7ion 6:70d0218c2a28 67 if(strncmp(cmd,"$GPGGA", 6) == 0)
spin7ion 6:70d0218c2a28 68 {
spin7ion 6:70d0218c2a28 69 sscanf(cmd, "$GPGGA,%f,%f,%c,%f,%c,%d,%d,%*f,%f", &timefix, &latitude, &ns, &longitude, &ew, &fq, &nst, &altitude);
spin7ion 6:70d0218c2a28 70 #if DEBUG_PC
spin7ion 6:70d0218c2a28 71 pc.printf("GPGGA Fix taken at: %f, Latitude: %f %c, Longitude: %f %c, Fix quality: %d, Number of sat: %d, Altitude: %f M\n", timefix, latitude, ns, longitude, ew, fq, nst, altitude);
spin7ion 6:70d0218c2a28 72 #endif
spin7ion 6:70d0218c2a28 73 }
spin7ion 6:70d0218c2a28 74
spin7ion 6:70d0218c2a28 75 // Satellite status
spin7ion 6:70d0218c2a28 76 else if(strncmp(cmd,"$GPGSA", 6) == 0)
spin7ion 6:70d0218c2a28 77 {
spin7ion 6:70d0218c2a28 78 sscanf(cmd, "$GPGSA,%c,%d,%d", &tf, &fix, &nst);
spin7ion 6:70d0218c2a28 79 #if DEBUG_PC
spin7ion 6:70d0218c2a28 80 pc.printf("GPGSA Type fix: %c, 3D fix: %d, number of sat: %d\r\n", tf, fix, nst);
spin7ion 6:70d0218c2a28 81 #endif
spin7ion 6:70d0218c2a28 82 }
spin7ion 6:70d0218c2a28 83
spin7ion 6:70d0218c2a28 84 // Geographic position, Latitude and Longitude
spin7ion 6:70d0218c2a28 85 else if(strncmp(cmd,"$GPGLL", 6) == 0)
spin7ion 6:70d0218c2a28 86 {
spin7ion 6:70d0218c2a28 87 sscanf(cmd, "$GPGLL,%f,%c,%f,%c,%f", &latitude, &ns, &longitude, &ew, &timefix);
spin7ion 6:70d0218c2a28 88 #if DEBUG_PC
spin7ion 6:70d0218c2a28 89 pc.printf("GPGLL Latitude: %f %c, Longitude: %f %c, Fix taken at: %f\n", latitude, ns, longitude, ew, timefix);
spin7ion 6:70d0218c2a28 90 #endif
spin7ion 6:70d0218c2a28 91 }
spin7ion 6:70d0218c2a28 92
spin7ion 6:70d0218c2a28 93 // Geographic position, Latitude and Longitude
spin7ion 6:70d0218c2a28 94 else if(strncmp(cmd,"$GPRMC", 6) == 0)
spin7ion 6:70d0218c2a28 95 {
spin7ion 6:70d0218c2a28 96 sscanf(cmd, "$GPRMC,%f,%c,%f,%c,%f,%c,%f,,%d", &timefix, &status, &latitude, &ns, &longitude, &ew, &speed, &date);
spin7ion 6:70d0218c2a28 97 #if DEBUG_PC
spin7ion 6:70d0218c2a28 98 pc.printf("GPRMC Fix taken at: %f, Status: %c, Latitude: %f %c, Longitude: %f %c, Speed: %f, Date: %d\n", timefix, status, latitude, ns, longitude, ew, speed, date);
spin7ion 6:70d0218c2a28 99 #endif
spin7ion 6:70d0218c2a28 100 }
hudakz 0:0279e8c1f111 101
spin7ion 6:70d0218c2a28 102 //
spin7ion 6:70d0218c2a28 103 else if(strncmp(cmd,"$GNVTG", 6) == 0)
spin7ion 6:70d0218c2a28 104 {
spin7ion 6:70d0218c2a28 105 // pc.printf("its a Vector Track message.\n");
spin7ion 6:70d0218c2a28 106 }
spin7ion 6:70d0218c2a28 107
spin7ion 6:70d0218c2a28 108 else if(strncmp(cmd,"$GNGGA", 6) == 0)
spin7ion 6:70d0218c2a28 109 {
spin7ion 6:70d0218c2a28 110 sscanf(cmd, "$GNGGA,%f,%f,%c,%f,%c,%d,%d,%*f,%f", &timefix, &latitude, &ns, &longitude, &ew, &fq, &nst, &altitude);
spin7ion 6:70d0218c2a28 111 parseTime(timefix);
spin7ion 6:70d0218c2a28 112 #if DEBUG_PC
spin7ion 6:70d0218c2a28 113 pc.printf("GNGGA Fix taken at: %f, Latitude: %f %c, Longitude: %f %c, Fix quality: %d, Number of sat: %d, Altitude: %f M\n", timefix, latitude, ns, longitude, ew, fq, nst, altitude);
spin7ion 6:70d0218c2a28 114 pc.printf("Time: %d:%d:%d\n", h_time, m_time, s_time);
spin7ion 6:70d0218c2a28 115 #endif
spin7ion 6:70d0218c2a28 116 }
spin7ion 6:70d0218c2a28 117
spin7ion 6:70d0218c2a28 118 else if(strncmp(cmd,"$GNGSA", 6) == 0)
spin7ion 6:70d0218c2a28 119 {
spin7ion 6:70d0218c2a28 120 sscanf(cmd, "$GNGSA,%c,%d,%d", &tf, &fix, &nst);
spin7ion 6:70d0218c2a28 121 #if DEBUG_PC
spin7ion 6:70d0218c2a28 122 pc.printf("GNGSA Type fix: %c, 3D fix: %d, number of sat: %d\r\n", tf, fix, nst);
spin7ion 6:70d0218c2a28 123 #endif
spin7ion 6:70d0218c2a28 124 }
spin7ion 6:70d0218c2a28 125
spin7ion 6:70d0218c2a28 126 else if(strncmp(cmd,"$GPGSV", 6) == 0)
spin7ion 6:70d0218c2a28 127 {
spin7ion 6:70d0218c2a28 128 // pc.printf("its a Satellite details message.\n");
spin7ion 6:70d0218c2a28 129 }
spin7ion 6:70d0218c2a28 130
spin7ion 6:70d0218c2a28 131 else if(strncmp(cmd,"$GNGLL", 6) == 0)
spin7ion 6:70d0218c2a28 132 {
spin7ion 6:70d0218c2a28 133 sscanf(cmd, "$GNGLL,%f,%c,%f,%c,%f", &latitude, &ns, &longitude, &ew, &timefix);
spin7ion 6:70d0218c2a28 134 #if DEBUG_PC
spin7ion 6:70d0218c2a28 135 pc.printf("GNGLL Latitude: %f %c, Longitude: %f %c, Fix taken at: %f\n", latitude, ns, longitude, ew, timefix);
spin7ion 6:70d0218c2a28 136 #endif
spin7ion 6:70d0218c2a28 137 }
spin7ion 6:70d0218c2a28 138
spin7ion 6:70d0218c2a28 139 else
spin7ion 6:70d0218c2a28 140 {
spin7ion 6:70d0218c2a28 141 // pc.printf("Unknown message type\n");
hudakz 0:0279e8c1f111 142 }
hudakz 0:0279e8c1f111 143 }
hudakz 0:0279e8c1f111 144
spin7ion 6:70d0218c2a28 145 bool checkIfOk() {
spin7ion 6:70d0218c2a28 146 if(_parser->recv("OK")) {
spin7ion 6:70d0218c2a28 147 #if DEBUG_PC
spin7ion 6:70d0218c2a28 148 pc.printf("Done\r\n");
spin7ion 6:70d0218c2a28 149 #endif
spin7ion 6:70d0218c2a28 150
spin7ion 6:70d0218c2a28 151 return true;
spin7ion 6:70d0218c2a28 152 } else {
spin7ion 6:70d0218c2a28 153 #if DEBUG_PC
spin7ion 6:70d0218c2a28 154 pc.printf("Fail\r\n");
spin7ion 6:70d0218c2a28 155 #endif
spin7ion 6:70d0218c2a28 156
spin7ion 6:70d0218c2a28 157 return false;
spin7ion 6:70d0218c2a28 158 }
spin7ion 6:70d0218c2a28 159 }
spin7ion 6:70d0218c2a28 160
spin7ion 6:70d0218c2a28 161 bool enableGPS(bool powerUp) {
spin7ion 6:70d0218c2a28 162 pc.printf("Powering GPS:");
spin7ion 6:70d0218c2a28 163 if(powerUp){
spin7ion 6:70d0218c2a28 164 _parser->send("AT+CGNSPWR=1"); //GPS power on
spin7ion 6:70d0218c2a28 165 } else {
spin7ion 6:70d0218c2a28 166 _parser->send("AT+CGNSPWR=0"); //GPS power off
spin7ion 6:70d0218c2a28 167 }
spin7ion 6:70d0218c2a28 168
spin7ion 6:70d0218c2a28 169 return checkIfOk();
spin7ion 6:70d0218c2a28 170 }
spin7ion 6:70d0218c2a28 171
spin7ion 6:70d0218c2a28 172 bool setSatSystems(){
spin7ion 6:70d0218c2a28 173 pc.printf("Setting sats:");
spin7ion 6:70d0218c2a28 174 _parser->send("AT+CGNSMOD=1,1,1,1");
spin7ion 6:70d0218c2a28 175 return checkIfOk();
spin7ion 6:70d0218c2a28 176 }
spin7ion 6:70d0218c2a28 177
spin7ion 6:70d0218c2a28 178 bool getGPS() {
spin7ion 6:70d0218c2a28 179 _parser->send("AT+CGNSTST=1,1");
spin7ion 6:70d0218c2a28 180 if(_parser->recv("OK")) {
spin7ion 6:70d0218c2a28 181 int nmeaStrLen=_parser->read(bufferString, 2048);
spin7ion 6:70d0218c2a28 182
spin7ion 6:70d0218c2a28 183 char *curLine = bufferString;
spin7ion 6:70d0218c2a28 184 while(curLine)
spin7ion 6:70d0218c2a28 185 {
spin7ion 6:70d0218c2a28 186 char *nextLine = strchr(curLine, '\n');
spin7ion 6:70d0218c2a28 187 if (nextLine) *nextLine = '\0'; // temporarily terminate the current line
spin7ion 6:70d0218c2a28 188 if(curLine[0]=='$'){
spin7ion 6:70d0218c2a28 189 nmea_parse(curLine);
spin7ion 6:70d0218c2a28 190 #if DEBUG_PC
spin7ion 6:70d0218c2a28 191 pc.printf("curLine=[%s]\n", curLine);
spin7ion 6:70d0218c2a28 192 #endif
spin7ion 6:70d0218c2a28 193 }
spin7ion 6:70d0218c2a28 194 if (nextLine) *nextLine = '\n'; // then restore newline-char, just to be tidy
spin7ion 6:70d0218c2a28 195 curLine = nextLine ? (nextLine+1) : NULL;
spin7ion 6:70d0218c2a28 196 }
spin7ion 6:70d0218c2a28 197 return fix>0;
spin7ion 6:70d0218c2a28 198 }
spin7ion 6:70d0218c2a28 199 return false;
spin7ion 6:70d0218c2a28 200 }
spin7ion 6:70d0218c2a28 201
spin7ion 6:70d0218c2a28 202 int main() {
spin7ion 6:70d0218c2a28 203 confSysClock(); //Configure system clock (72MHz HSE clock, 48MHz USB clock)
spin7ion 6:70d0218c2a28 204
spin7ion 6:70d0218c2a28 205 myled = 1;
spin7ion 6:70d0218c2a28 206
spin7ion 6:70d0218c2a28 207 #if DEBUG_PC
spin7ion 6:70d0218c2a28 208 pc.baud(115200);
spin7ion 6:70d0218c2a28 209 pc.printf("Starting\r\n");
spin7ion 6:70d0218c2a28 210 if (wd.WatchdogCausedReset())
spin7ion 6:70d0218c2a28 211 pc.printf("Watchdog caused reset.\r\n");
spin7ion 6:70d0218c2a28 212
spin7ion 6:70d0218c2a28 213 #endif
spin7ion 6:70d0218c2a28 214
spin7ion 6:70d0218c2a28 215 wd.Configure(WATCHDOG_INTERVAL_S); // sets the timeout interval
spin7ion 6:70d0218c2a28 216
spin7ion 6:70d0218c2a28 217 //Initiate SIM7000 SERIAL
spin7ion 6:70d0218c2a28 218 _serial = new UARTSerial(PIN_SIM_TX, PIN_SIM_RX, 115200);
spin7ion 6:70d0218c2a28 219 _parser = new ATCmdParser(_serial);
spin7ion 6:70d0218c2a28 220 _parser->debug_on( DEBUG_SIM );
spin7ion 6:70d0218c2a28 221 _parser->set_delimiter( "\r\n" );
spin7ion 6:70d0218c2a28 222 _parser->set_timeout (1000*60);
spin7ion 6:70d0218c2a28 223 wait(0.5);
spin7ion 6:70d0218c2a28 224
spin7ion 6:70d0218c2a28 225 enableGPS(0);
spin7ion 6:70d0218c2a28 226 setSatSystems();
spin7ion 6:70d0218c2a28 227
spin7ion 6:70d0218c2a28 228 //Initiate termal stick
spin7ion 6:70d0218c2a28 229 for(i = 0; i < SENSORS_COUNT; i++) {
spin7ion 6:70d0218c2a28 230 ds1820[i] = new DS1820(&oneWire);
spin7ion 6:70d0218c2a28 231 if(!ds1820[i]->begin()) {
spin7ion 6:70d0218c2a28 232 delete ds1820[i];
spin7ion 6:70d0218c2a28 233 break;
spin7ion 6:70d0218c2a28 234 }
spin7ion 6:70d0218c2a28 235 }
spin7ion 6:70d0218c2a28 236
spin7ion 6:70d0218c2a28 237 sensors_found = i;
spin7ion 6:70d0218c2a28 238 #if DEBUG_PC
spin7ion 6:70d0218c2a28 239 pc.printf("Found %d sensors\r\n",sensors_found);
spin7ion 6:70d0218c2a28 240 if (sensors_found==0)
spin7ion 6:70d0218c2a28 241 pc.printf("No devices found");
spin7ion 6:70d0218c2a28 242 #endif
spin7ion 6:70d0218c2a28 243
spin7ion 6:70d0218c2a28 244 //Feed the watchdog
spin7ion 6:70d0218c2a28 245 wd.Service();
spin7ion 6:70d0218c2a28 246 state=STATE_STARTING_GPS;
spin7ion 6:70d0218c2a28 247
spin7ion 6:70d0218c2a28 248 while(1) {
spin7ion 6:70d0218c2a28 249 if (state==STATE_STARTING_GPS){
spin7ion 6:70d0218c2a28 250 #if DEBUG_PC
spin7ion 6:70d0218c2a28 251 pc.printf("STATE=STARTING GPS\n");
spin7ion 6:70d0218c2a28 252 #endif
spin7ion 6:70d0218c2a28 253 enableGPS(1);
spin7ion 6:70d0218c2a28 254 state=STATE_WAITING_FIX;
spin7ion 6:70d0218c2a28 255 fixTries=0;
spin7ion 6:70d0218c2a28 256 wd.Service();
spin7ion 6:70d0218c2a28 257 wait(FIX_CHECK_TIME_S);
spin7ion 6:70d0218c2a28 258 } else if(state==STATE_WAITING_FIX) {
spin7ion 6:70d0218c2a28 259 pc.printf("STATE=WAITNG FIX\n");
spin7ion 6:70d0218c2a28 260 if(getGPS()){
spin7ion 6:70d0218c2a28 261 enableGPS(0);
spin7ion 6:70d0218c2a28 262 state=STATE_COLLECTING_TELEMETRY;
spin7ion 6:70d0218c2a28 263 } else {
spin7ion 6:70d0218c2a28 264 fixTries++;
spin7ion 6:70d0218c2a28 265 if (fixTries>FIX_MAX_TRIES) {
spin7ion 6:70d0218c2a28 266 //fix not achieved in given tries, send as is
spin7ion 6:70d0218c2a28 267 enableGPS(0);
spin7ion 6:70d0218c2a28 268 state=STATE_COLLECTING_TELEMETRY;
spin7ion 6:70d0218c2a28 269 } else {
spin7ion 6:70d0218c2a28 270 wd.Service();
spin7ion 6:70d0218c2a28 271 wait(FIX_CHECK_TIME_S);
spin7ion 6:70d0218c2a28 272 }
spin7ion 6:70d0218c2a28 273 }
spin7ion 6:70d0218c2a28 274 } else if(state==STATE_COLLECTING_TELEMETRY) {
spin7ion 6:70d0218c2a28 275 pc.printf("STATE=COLLECTING TELEMETRY\n");
spin7ion 6:70d0218c2a28 276 for(i=0;i<SENSORS_COUNT;i++){
spin7ion 6:70d0218c2a28 277 if(sensorsOrder[i]<sensors_found){
spin7ion 6:70d0218c2a28 278 ds1820[sensorsOrder[i]]->startConversion();
spin7ion 6:70d0218c2a28 279 }
spin7ion 6:70d0218c2a28 280 }
spin7ion 6:70d0218c2a28 281 wait(1.0);
spin7ion 6:70d0218c2a28 282 for(i=0;i<SENSORS_COUNT;i++){
spin7ion 6:70d0218c2a28 283 if(sensorsOrder[i]<sensors_found){
spin7ion 6:70d0218c2a28 284 if(ds1820[sensorsOrder[i]]->isPresent()){
spin7ion 6:70d0218c2a28 285 stickTemperatures[i]=ds1820[i]->read();
spin7ion 6:70d0218c2a28 286 } else {
spin7ion 6:70d0218c2a28 287 stickTemperatures[i]=-273.f; // Sensor is offline
spin7ion 6:70d0218c2a28 288 }
spin7ion 6:70d0218c2a28 289 }
spin7ion 6:70d0218c2a28 290 }
spin7ion 6:70d0218c2a28 291
spin7ion 6:70d0218c2a28 292 IRtemp=thermometer.read_temp(1);
spin7ion 6:70d0218c2a28 293
spin7ion 6:70d0218c2a28 294
spin7ion 6:70d0218c2a28 295 //Form JSON as {"tempIR":1,"temps":[1,...,10],"latitude":37,"longitude":51,"altitude":21,"validGeo":true}
spin7ion 6:70d0218c2a28 296
spin7ion 6:70d0218c2a28 297
spin7ion 6:70d0218c2a28 298 snprintf(bufferString,2048,"{\"tempIR\":%f,\"latitude\":%f,\"longitude\":%f,\"altitude\":%f,\"validGeo\":%s,", IRtemp, latitude, longitude, altitude, fix ? "true" : "false");
spin7ion 6:70d0218c2a28 299
spin7ion 6:70d0218c2a28 300 index = strlen(bufferString);
spin7ion 6:70d0218c2a28 301
spin7ion 6:70d0218c2a28 302 for(i=0;i<SENSORS_COUNT;i++){
spin7ion 7:870aba638c02 303 index += snprintf(&bufferString[index], 128-index, "%f", stickTemperatures[i]);
spin7ion 6:70d0218c2a28 304 }
spin7ion 6:70d0218c2a28 305
spin7ion 6:70d0218c2a28 306
spin7ion 6:70d0218c2a28 307 state=STATE_SENDING_TELEMETRY;
spin7ion 6:70d0218c2a28 308 } else if(state==STATE_SENDING_TELEMETRY){
spin7ion 6:70d0218c2a28 309 #if DEBUG_PC
spin7ion 6:70d0218c2a28 310 pc.printf(bufferString);
spin7ion 6:70d0218c2a28 311 #endif
spin7ion 6:70d0218c2a28 312
spin7ion 6:70d0218c2a28 313 state=STATE_SLEEPING;
spin7ion 6:70d0218c2a28 314 } else if(state==STATE_SLEEPING){
spin7ion 6:70d0218c2a28 315 wd.Service();
spin7ion 6:70d0218c2a28 316 sleepTimer+=SLEEP_CHECK_TIME;
spin7ion 6:70d0218c2a28 317
spin7ion 6:70d0218c2a28 318 if(sleepTimer>SLEEP_TIME_S){
spin7ion 6:70d0218c2a28 319 state=STATE_STARTING_GPS;
spin7ion 6:70d0218c2a28 320 sleepTimer=0;
spin7ion 6:70d0218c2a28 321 } else {
spin7ion 6:70d0218c2a28 322 wait(SLEEP_CHECK_TIME);
spin7ion 6:70d0218c2a28 323 }
spin7ion 6:70d0218c2a28 324
spin7ion 6:70d0218c2a28 325 }
spin7ion 6:70d0218c2a28 326
spin7ion 6:70d0218c2a28 327
spin7ion 6:70d0218c2a28 328
spin7ion 6:70d0218c2a28 329 wd.Service();
spin7ion 6:70d0218c2a28 330
spin7ion 6:70d0218c2a28 331 #if DEBUG_PC
spin7ion 6:70d0218c2a28 332 for(i=0;i<SENSORS_COUNT;i++){
spin7ion 6:70d0218c2a28 333 pc.printf("temp[%d] = %3.1f C\r\n", i, stickTemperatures[i]); // read temperature
spin7ion 6:70d0218c2a28 334 }
spin7ion 6:70d0218c2a28 335 pc.printf("Temperature : %4.2f C2\r\n",IRtemp);
spin7ion 6:70d0218c2a28 336 #endif
spin7ion 6:70d0218c2a28 337
spin7ion 6:70d0218c2a28 338 //Feed the watchdog
spin7ion 6:70d0218c2a28 339 wd.Service();
spin7ion 6:70d0218c2a28 340 wait(0.5);
spin7ion 6:70d0218c2a28 341 }
spin7ion 6:70d0218c2a28 342 }
spin7ion 6:70d0218c2a28 343