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