Bmag incl gps rettelse
Dependencies: mbed WDT MODSERIAL BME280
Diff: main.cpp
- Branch:
- MbedBMAGThrRev
- Revision:
- 39:0aeb019323bf
- Parent:
- 38:a1615de4ee64
- Child:
- 40:45289e57887d
--- a/main.cpp Thu Sep 28 09:13:10 2017 +0000 +++ b/main.cpp Thu Sep 28 14:19:58 2017 +0000 @@ -37,6 +37,11 @@ int magCntWithoutGpsData = 0; char missingGpsConnectionCounter = 0; char gpsOverridePushButtonCounter = 0; +int seconds; +int minutes; +int hours; +char timeArr[10]; +string timeStr; string INTERPRETERID = ""; char interpreterTmpID[10]; @@ -48,11 +53,12 @@ bool toggler = true; bool dispFlag = false; bool checkStateFlag = false; +bool flushStrErr = false; +char flushStr[200]; int togglecount = 0; ErrorState prevState = NONE; ErrorState presentState = NONE; - //global BMAG variables string lastUTCTimestamp; bool BMAG_Data_Rdy = false; @@ -163,13 +169,51 @@ checkStateFlag = true; } +//set time variables +void setTime(int s, int m, int h){ + seconds = s; + minutes = m; + hours = h; +} + +//get time +string getTime(void){ + memset(timeArr, '/0', 10); + snprintf(timeArr, 10, "%.2d:%.2d:%.2d", hours, minutes, seconds); + timeStr = timeArr; + return timeStr; +} + +//pps tick +void pps_Tick(){ + seconds += 1; + if(seconds == 60){ + minutes += 1; + seconds = 0; + } + if(minutes == 60){ + hours += 1; + minutes = 0; + } + if(hours == 24){ + hours = 0; + } +} + //timer reset // clock update void resetTimer(void){ - clockobj.pps_Tick(); - t.reset(); + t.reset(); + pps_Tick(); } int main(void){ + //init pps timing variables + seconds = 0; + minutes = 0; + hours = 0; + memset(timeArr, '/0', 10); + memset(flushStr,'\0',200); + //init pth char arrays memset(PreassureArr,'\0',10); memset(TemperatureArr,'\0',10); @@ -186,7 +230,7 @@ wd.init(5.0); //PPS - InterruptIn PPS(p12); + InterruptIn PPS(p26); PPS.rise(&resetTimer); //Led outputs @@ -246,7 +290,7 @@ //USB message l1 = "Mounting"; l2 = "USB pen"; - thr_writelines.start(write_lines); + //thr_writelines.start(write_lines); wait_ms(1000); while(!msd.connect()){ @@ -256,7 +300,9 @@ //Opening a file on usb disk FILE * fp; + FILE * e_fp; fp = fopen(currentFilename.c_str(), "a"); + e_fp = fopen("Errorlog.txt", "a"); wait_ms(100); //initializing SPS generation @@ -271,7 +317,7 @@ //GPS message l1 = "GPS"; l2 = "Startup"; - thr_writelines.start(write_lines); + //thr_writelines.start(write_lines); wait_ms(1000); //BMAG communication init @@ -290,7 +336,7 @@ clear_display_waiting(); l1 = "Init"; l2 = "Done"; - thr_writelines.start(write_lines); + //thr_writelines.start(write_lines); wait_ms(1000); //Init errorhandler @@ -323,6 +369,7 @@ //infinite loop running after initialization while(run) { + /* //display txt on disp if(dispFlag){ @@ -349,6 +396,7 @@ dispFlag = false; } + */ //check state / set state if(checkStateFlag){ @@ -483,14 +531,18 @@ checkStateFlag = false; } - //if the gps rx buffer is full, flush the buffer. + //if the gps rx buffer is full, get info to error file. if(gps.rxBufferFull()){ - gps.rxBufferFlush(); + gps.move(flushStr, gps.rxBufferGetCount()); + flushStrErr = true; + //remkark hvis dette sker i error fil } //if the bmag rx buffer is full, flush the buffer. if(bmag.rxBufferFull()){ - bmag.rxBufferFlush(); + bmag.move(flushStr, bmag.rxBufferGetCount()); + flushStrErr = true; + //remkark hvis dette sker i error fil } @@ -499,12 +551,18 @@ //reset last read ms val memset(timer_ms,'\0',5); + + //read time since pps interrupt tmpTime = t.read_ms(); snprintf (timer_ms, 5, "%d",tmpTime); + + if(tmpTime > 1000){ + writeToUsb("timer abover 1000 ms\r\n", e_fp); + } if(RTC_set){ - string tmpTime = clockobj.getTime(); + string tmpTime = getTime(); //HH @@ -598,7 +656,7 @@ if(currentFilename != spsGen.getSpsFileName()) { fileNameUpdated = false; } - + //read battery voltage sprintf(batteryvoltagearr, "%0.1f",(0.00036621652)*battery.read_u16()); batteryvoltage.assign(batteryvoltagearr); @@ -749,10 +807,10 @@ int hours = atoi(tmpHour); int minutes = atoi(tmpMinute); int seconds = atoi(tmpSecond); - clockobj.setTime(seconds, minutes, hours); + setTime(seconds, minutes, hours); dbg.printf("Clock resync done!\r\n"); - dbg.printf("Clock set to %s\r\n", clockobj.getTime()); + dbg.printf("Clock set to %s\r\n", getTime()); RTC_set = true; } @@ -853,11 +911,19 @@ } - + if(flushStrErr){ + writeToUsb(flushStr, e_fp); + writeToUsb("\r\n", e_fp); + + memset(flushStr, '/0', 200); + + flushStrErr = false; + } + //kick / feed watchdog wd.kick(); - Thread::yield(); + //Thread::yield(); } return 0;