init
Dependencies: aconno_I2C Lis2dh12 WatchdogTimer
Diff: main.cpp
- Revision:
- 42:f482f4cdb319
- Parent:
- 41:07e41dbd5304
- Child:
- 43:7b232f03628f
--- a/main.cpp Thu Jan 17 23:40:03 2019 +0000
+++ b/main.cpp Fri Jan 18 00:07:45 2019 +0000
@@ -215,16 +215,22 @@
if((RET_RTCunixtime - RET_buttonPressTime) > 1) {
switch (RET_buttonPressCount) {
case 1 :
- RET_state = STATE_BUTTONPRESS1;
- mainthread.release();
+ if(RET_state != STATE_DORMANT) {
+ RET_state = STATE_BUTTONPRESS1;
+ mainthread.release();
+ }
break;
case 3 :
- RET_state = STATE_BUTTONPRESS2;
- mainthread.release();
+ if(RET_state != STATE_DORMANT) {
+ RET_state = STATE_BUTTONPRESS2;
+ mainthread.release();
+ }
break;
case 5 :
- RET_state = STATE_BUTTONPRESS3;
- mainthread.release();
+ if(RET_state != STATE_DORMANT) {
+ RET_state = STATE_BUTTONPRESS3;
+ mainthread.release();
+ }
break;
default :
//do nothing
@@ -399,8 +405,8 @@
//calculate motion state
if (RET_motionPendingOnState) {
//check if above threshold
- time_t inMotionForSeconds = (RET_RTCunixtime - RET_motionStartTime) + 5; //Plus 5 to account for rounding and non exact clocks
- if(DEBUG_ON){debug_prep();snprintf(GLOBAL_debug_buffer, sizeof(GLOBAL_debug_buffer), "IN MOTION FOR:%d",inMotionForSeconds);debug_exe();}
+ time_t inMotionForSeconds = (RET_RTCunixtime - RET_motionStartTime) + (DEFAULT_SLEEP_FRAME / 1000); //Plus DEFAULT_SLEEP_FRAME as it should include frame time
+ if(DEBUG_ON){debug_prep();snprintf(GLOBAL_debug_buffer, sizeof(GLOBAL_debug_buffer), "MOTION FOR:%d",inMotionForSeconds);debug_exe();}
if (inMotionForSeconds >= RET_setting_motion_start_seconds && RET_motionState == false) {
RET_motionState = true;
RET_motionTriggeredInTXInterval = true;
@@ -412,8 +418,8 @@
}
}
if (RET_motionPendingOffState) {
- time_t noMotionForSeconds = (RET_RTCunixtime - RET_motionStopTime) + 5; //Plus 5 to account for rounding and non exact clocks
- if(DEBUG_ON){debug_prep();snprintf(GLOBAL_debug_buffer, sizeof(GLOBAL_debug_buffer), "STOPPED FOR:%d",noMotionForSeconds);debug_exe();}
+ time_t noMotionForSeconds = (RET_RTCunixtime - RET_motionStopTime) + (DEFAULT_SLEEP_FRAME / 1000); //Plus DEFAULT_SLEEP_FRAME as it should include frame time
+ if(DEBUG_ON){debug_prep();snprintf(GLOBAL_debug_buffer, sizeof(GLOBAL_debug_buffer), "MOTIONLESS FOR:%d",noMotionForSeconds);debug_exe();}
if (noMotionForSeconds >= RET_setting_motion_stop_seconds && RET_motionState == true) {
//if (GLOBAL_debugLED) LED1blink(2,50);
RET_motionPendingOffState = false;
@@ -862,6 +868,7 @@
}
case STATE_SCORCHEDEARTH :
{
+ if(DEBUG_ON){debug_prep();snprintf(GLOBAL_debug_buffer, sizeof(GLOBAL_debug_buffer),"SCORCHED EARTH - RESETTING");debug_exe();}
setState(STATE_SETUP); //this wont be used but just incase to kick it out of this state
read_app_data_from_flash(&app_data);
app_data.current_firmware_version = 0;
@@ -941,13 +948,14 @@
//MAIN LOGIC
if(DEBUG_ON){
if (RET_state != 99) {
- debug_prep();snprintf(GLOBAL_debug_buffer, sizeof(GLOBAL_debug_buffer), "FW:%d,ST:%d, SET:%d, MOTFR:%d, MOTST: %d, RTC:%u, LOC:%u, LOCFS:%u, ACT:%u \n", FW_VERSION, RET_state, RET_haveSettings, RET_motionTriggeredinFrame, RET_motionState, RET_RTCunixtime,RET_eventTime_location_tx,RET_eventTime_location_failsafe_tx,RET_eventTime_activity_tx);debug_exe();
+ debug_prep();snprintf(GLOBAL_debug_buffer, sizeof(GLOBAL_debug_buffer), "FW:%d,ST:%d, SET:%d, MFR:%d, MST: %d, RTC:%u, L:%u, LFS:%u, A:%u", FW_VERSION, RET_state, RET_haveSettings, RET_motionTriggeredinFrame, RET_motionState, RET_RTCunixtime,RET_eventTime_location_tx,RET_eventTime_location_failsafe_tx,RET_eventTime_activity_tx);debug_exe();
debug_prep();snprintf(GLOBAL_debug_buffer, sizeof(GLOBAL_debug_buffer), "ACT:%s\n",RET_activityData);debug_exe();
} else {
debug_prep();snprintf(GLOBAL_debug_buffer, sizeof(GLOBAL_debug_buffer), "FW:%d, ST:%d, WAKE@:%u\n", FW_VERSION, RET_state, RET_eventTime_wakeFromDormant);debug_exe();
}
}
+ //STATE ENGINE
mainStateEngine();
//LOG FIRST RUN - BOOTLOADER COMMS