init
Dependencies: aconno_I2C Lis2dh12 WatchdogTimer
Diff: main.cpp
- Revision:
- 33:760005331b4c
- Parent:
- 32:dff4858bdf37
- Child:
- 34:4493c9f6d707
--- a/main.cpp Tue Jan 01 20:46:39 2019 +0000
+++ b/main.cpp Thu Jan 03 10:09:38 2019 +0000
@@ -19,7 +19,6 @@
#define DEFAULT_CONNECTION_TIMEOUT 180
#define DEFAULT_BEACON_INTERVAL_SECONDS 10
-
//------------------------------------------------------------------------------
//FUNCTION PROTOTYPES
//------------------------------------------------------------------------------
@@ -42,6 +41,7 @@
bool GLOBAL_needToConfigureLis3dh = false;
bool GLOBAL_registeredOnNetwork = false;
bool GLOBAL_modemOn = false;
+bool GLOBAL_LEDSequenceinProgress = false;
time_t GLOBAL_RTCunixtime = 0;
time_t GLOBAL_wakeTime = 0;
char GLOBAL_exceptionString[10];
@@ -269,7 +269,7 @@
}
}
//SETUP STATE VISUALISE
- if (RET_state == STATE_SETUP) {
+ if (!GLOBAL_LEDSequenceinProgress && RET_state == STATE_SETUP) {
led1 = !led1;
}
}
@@ -516,6 +516,7 @@
float voltage = getBatteryV();
float temperature = getTemperature();
bool selftestresult = selfTest();
+ if (selftestresult == false) { LED1errorCode(4,20); } //ERROR 4
Modem modem(PN_UART_TX, PN_UART_RX, PN_UART_CTS, PN_UART_RTS, PN_GSM_PWR_KEY, PN_VREG_EN, PN_GSM_WAKE_DISABLE);
if (modem.on()) {
//RET_imei = modem.getIMEI();
@@ -524,7 +525,7 @@
char locString[70];
memcpy(locString, modem.getLocation(1, RET_setting_location_timeout), 70);
if (modem.registerOnNetwork(DEFAULT_CONNECTION_ATTEMPTS,(RET_setting_connection_timeout*1000))) {
- int timetaken = (RET_RTCunixtime - GLOBAL_wakeTime);
+ int timetaken = (RET_RTCunixtime - GLOBAL_wakeTime) + 10; //add 10 for ussd response time.
char bytestosend[160];
snprintf(bytestosend,sizeof(bytestosend),"(%s,a:setup,f:%d,v:%.2f,t:%.1f,e:%d,z:SETUP-%s,c:1,s:1%s)\0",GLOBAL_defaultApi,FW_VERSION,voltage,temperature,timetaken,GLOBAL_exceptionString,locString);
char result[180];
@@ -534,17 +535,19 @@
if (!saveSettings(result)) {
//something went critically wrong getting settings
pass = false;
+ LED1errorCode(5,20); //ERROR 5
}
}
} else {
//FAILUREMODE modem failed to register on network
DEBUG("NET REGISTER FAIL");
+ LED1errorCode(3,20); //ERROR 3
pass = false;
}
} else {
//FAILUREMODE Modem failed to turn on
DEBUG("MODEM ON FAIL");
- LED1blink(200,50);
+ LED1errorCode(2,20); //ERROR 2
pass = false;
}
@@ -568,7 +571,7 @@
char locString[70];
memcpy(locString, modem.getLocation(location_accuracy, RET_setting_location_timeout), 70);
if (modem.registerOnNetwork(DEFAULT_CONNECTION_ATTEMPTS,(RET_setting_connection_timeout*1000))) {
- int timetaken = (RET_RTCunixtime - GLOBAL_wakeTime);
+ int timetaken = (RET_RTCunixtime - GLOBAL_wakeTime) + 10; //add 10 for ussd response time.;
char bytestosend[160];
snprintf(bytestosend,sizeof(bytestosend),"(%s,a:loc,f:%d,t:%.1f,v:%.2f,z:TEST-%s,e:%d,c:1,s:1%s)\0",GLOBAL_defaultApi,FW_VERSION,temperature,voltage,GLOBAL_exceptionString,timetaken,locString);
char result[180];
@@ -578,12 +581,14 @@
//DEBUG("\nfromserver: %s \n",result);
if (getSettings) {
saveSettings(result);
- LED1blink(6,250);
+ LED1blink(5,250);
}
}
+ } else {
+ LED1errorCode(3,20); //ERROR 3
}
} else {
- LED1blink(200,50);
+ LED1errorCode(2,20); //ERROR 2
}
//RESETS
RET_motionTriggeredInTXInterval = 0;
@@ -602,11 +607,11 @@
//DEBUG("locString:%s-\n",locString);
//SEND DATA
if (modem.registerOnNetwork(DEFAULT_CONNECTION_ATTEMPTS,(RET_setting_connection_timeout*1000))) {
- int timetaken = (RET_RTCunixtime - GLOBAL_wakeTime);
+ int timetaken = (RET_RTCunixtime - GLOBAL_wakeTime) + 10; //add 10 for ussd response time
//Check if we should wait for settings back
bool getSettings = true;
- if ( ((RET_RTCunixtime - RET_SettingsGotAt)/3600) < RET_setting_minimumupdate_hrs ) { getSettings = false;}
+ if ( ((RET_RTCunixtime - RET_SettingsGotAt)/3600) < RET_setting_minimumupdate_hrs ) { getSettings = false; timetaken -= 10;} //remove the extra 10 seconds from times
char bytesToSend[160];
snprintf(bytesToSend,sizeof(bytesToSend),"(%s,a:loc,f:%d,t:%.1f,v:%.2f,z:LOC-%s,e:%d,c:1,s:%d%s)\0",GLOBAL_defaultApi,FW_VERSION,temperature,voltage,GLOBAL_exceptionString,timetaken,getSettings,locString);
@@ -618,9 +623,11 @@
saveSettings(result);
}
}
+ } else {
+ LED1errorCode(3,20); //ERROR 3
}
} else {
- LED1blink(200,50);
+ LED1errorCode(2,20); //ERROR 2
}
//RESETS
RET_motionTriggeredInTXInterval = 0;
@@ -644,9 +651,11 @@
memset(RET_activityData,0,sizeof(RET_activityData));
if (RET_haveSettings) { RET_motionFrameStart = RET_RTCunixtime; }
}
+ } else {
+ LED1errorCode(3,20); //ERROR 3
}
} else {
- LED1blink(200,50);
+ LED1errorCode(2,20); //ERROR 3
}
//RESETS
RET_motionTriggeredInTXInterval = 0;
@@ -664,7 +673,7 @@
if (setup()) {
// All good
} else {
- LED1blink(200,50);
+ //LED1blink(200,50);
RET_eventTime_wakeFromDormant = (RET_RTCunixtime + (24*3600)); //24hrs
setState(STATE_DORMANT);
DEBUG("SETUP FAILED:DORMANT until %u\n",RET_eventTime_wakeFromDormant);
@@ -793,7 +802,7 @@
//CHECK FOR FIRST BOOT
- if (RET_coldBoot == 1) { factoryReset(); dumpSettings(); }
+ if (RET_coldBoot == 1) { factoryReset(); dumpSettings(); LED1errorCode(6,3); }
//SHALL WE SLEEP
if (RET_sleepToggle == 1) {