소스 검색

Added a new ABOUT_TO_STOP state to manage prepare and backup power adequality

tags/v1.4.0^2
Bertrand Lemasle 6 년 전
부모
커밋
3abdc2edcd
2개의 변경된 파일13개의 추가작업 그리고 6개의 파일을 삭제
  1. +10
    -4
      src/Core.cpp
  2. +3
    -2
      src/Core.h

+ 10
- 4
src/Core.cpp 파일 보기

@@ -39,7 +39,11 @@ namespace core {
bool acquired = false; bool acquired = false;
PositionEntryMetadata metadata; PositionEntryMetadata metadata;
if(movingState >= TRACKER_MOVING_STATE::STOPPED) positions::prepareBackup();
if(movingState >= TRACKER_MOVING_STATE::ABOUT_TO_STOP) {
//forcing when the tracker is about to stop (which should result in STOPPED a few lines below)
positions::prepareBackup(movingState == TRACKER_MOVING_STATE::ABOUT_TO_STOP);
}
acquired = positions::acquire(metadata); acquired = positions::acquire(metadata);
if (acquired) { if (acquired) {
@@ -53,7 +57,7 @@ namespace core {
alerts::add(notifyFailures(metadata)); alerts::add(notifyFailures(metadata));
if(movingState >= TRACKER_MOVING_STATE::STOPPED) { if(movingState >= TRACKER_MOVING_STATE::STOPPED) {
positions::doBackup(movingState == TRACKER_MOVING_STATE::STOPPED); //do not force on STATIC
positions::doBackup(movingState == TRACKER_MOVING_STATE::STOPPED); //forcing at the moment the tracker stop
} }
if (acquired) updateRtcTime(); if (acquired) updateRtcTime();
@@ -124,14 +128,16 @@ namespace core {
if (stoppedInARow < SLEEP_DEFAULT_STOPPED_THRESHOLD) { if (stoppedInARow < SLEEP_DEFAULT_STOPPED_THRESHOLD) {
sleepTime = SLEEP_DEFAULT_PAUSING_TIME_SECONDS; sleepTime = SLEEP_DEFAULT_PAUSING_TIME_SECONDS;
state = TRACKER_MOVING_STATE::PAUSED;
state = stoppedInARow == SLEEP_DEFAULT_STOPPED_THRESHOLD - 1 ?
TRACKER_MOVING_STATE::ABOUT_TO_STOP :
TRACKER_MOVING_STATE::PAUSED;
} }
else if (stoppedInARow == SLEEP_DEFAULT_STOPPED_THRESHOLD) state = TRACKER_MOVING_STATE::STOPPED; else if (stoppedInARow == SLEEP_DEFAULT_STOPPED_THRESHOLD) state = TRACKER_MOVING_STATE::STOPPED;
else state = TRACKER_MOVING_STATE::STATIC; else state = TRACKER_MOVING_STATE::STATIC;
} }
else stoppedInARow = 0; else stoppedInARow = 0;
NOTICE_FORMAT("%dkmh => %d seconds", velocity, sleepTime);
NOTICE_FORMAT("stop %d, state %d, %dkmh => %ds", stoppedInARow, state, velocity, sleepTime);
return state; return state;
} }


+ 3
- 2
src/Core.h 파일 보기

@@ -6,8 +6,9 @@
enum class TRACKER_MOVING_STATE : uint8_t { enum class TRACKER_MOVING_STATE : uint8_t {
MOVING = 0, MOVING = 0,
PAUSED = 1, PAUSED = 1,
STOPPED = 2,
STATIC = 3
ABOUT_TO_STOP = 2,
STOPPED = 3,
STATIC = 4
}; };
namespace core { namespace core {


불러오는 중...
취소
저장