Make lastY variable more generic and simplify lower to sleep
This commit is contained in:
parent
a90d44f664
commit
42149218b1
@ -11,6 +11,7 @@ void MotionController::Update(int16_t x, int16_t y, int16_t z, uint32_t nbSteps)
|
||||
service->OnNewMotionValues(x, y, z);
|
||||
}
|
||||
|
||||
lastY = this->y;
|
||||
this->x = x;
|
||||
this->y = y;
|
||||
this->z = z;
|
||||
@ -66,16 +67,8 @@ int32_t MotionController::currentShakeSpeed() {
|
||||
return accumulatedspeed;
|
||||
}
|
||||
|
||||
bool MotionController::ShouldSleep() {
|
||||
bool ret = false;
|
||||
|
||||
if (y >= lastYForSleep + 192) {
|
||||
ret = true;
|
||||
}
|
||||
|
||||
lastYForSleep = (y > 320) ? y : 320;
|
||||
|
||||
return ret;
|
||||
bool MotionController::ShouldLowerSleep() const {
|
||||
return z <= 0 && y >= 512 && y >= lastY + 192;
|
||||
}
|
||||
|
||||
void MotionController::IsSensorOk(bool isOk) {
|
||||
|
@ -25,6 +25,9 @@ namespace Pinetime {
|
||||
int16_t Z() const {
|
||||
return z;
|
||||
}
|
||||
int16_t LastY() const {
|
||||
return lastY;
|
||||
}
|
||||
uint32_t NbSteps() const {
|
||||
return nbSteps;
|
||||
}
|
||||
@ -39,7 +42,7 @@ namespace Pinetime {
|
||||
bool Should_ShakeWake(uint16_t thresh);
|
||||
bool Should_RaiseWake(bool isSleeping);
|
||||
int32_t currentShakeSpeed();
|
||||
bool ShouldSleep();
|
||||
bool ShouldLowerSleep() const;
|
||||
void IsSensorOk(bool isOk);
|
||||
bool IsSensorOk() const {
|
||||
return isSensorOk;
|
||||
@ -55,11 +58,11 @@ namespace Pinetime {
|
||||
private:
|
||||
uint32_t nbSteps;
|
||||
uint32_t currentTripSteps = 0;
|
||||
int16_t x;
|
||||
int16_t y;
|
||||
int16_t z;
|
||||
int16_t x = 0;
|
||||
int16_t y = 0;
|
||||
int16_t z = 0;
|
||||
int16_t lastY = 0;
|
||||
int16_t lastYForWakeUp = 0;
|
||||
int16_t lastYForSleep = 0;
|
||||
bool isSensorOk = false;
|
||||
DeviceTypes deviceType = DeviceTypes::Unknown;
|
||||
Pinetime::Controllers::MotionService* service = nullptr;
|
||||
|
@ -37,6 +37,11 @@ Motion::Motion(Pinetime::Applications::DisplayApp* app, Controllers::MotionContr
|
||||
lv_obj_align(labelStep, chart, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0);
|
||||
lv_label_set_text_static(labelStep, "Steps ---");
|
||||
|
||||
labelLastY = lv_label_create(lv_scr_act(), NULL);
|
||||
lv_label_set_text(labelLastY, "LastY 0");
|
||||
lv_label_set_align(labelLastY, LV_LABEL_ALIGN_RIGHT);
|
||||
lv_obj_align(labelLastY, chart, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0);
|
||||
|
||||
taskRefresh = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this);
|
||||
}
|
||||
|
||||
@ -58,4 +63,7 @@ void Motion::Refresh() {
|
||||
motionController.Y() / 0x10,
|
||||
motionController.Z() / 0x10);
|
||||
lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 10);
|
||||
|
||||
lv_label_set_text_fmt(labelLastY, "LastY %d", motionController.LastY() / 0x10);
|
||||
lv_obj_align(labelLastY, chart, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0);
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ namespace Pinetime {
|
||||
lv_obj_t* label;
|
||||
|
||||
lv_obj_t* labelStep;
|
||||
lv_obj_t* labelLastY;
|
||||
lv_task_t* taskRefresh;
|
||||
};
|
||||
}
|
||||
|
@ -503,9 +503,9 @@ void SystemTask::UpdateMotion() {
|
||||
motionController.Should_ShakeWake(settingsController.GetShakeThreshold())) {
|
||||
GoToRunning();
|
||||
}
|
||||
if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::LowerWrist)) {
|
||||
if (motionController.ShouldSleep() && !isSleeping)
|
||||
PushMessage(Messages::GoToSleep);
|
||||
if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::LowerWrist) && !isSleeping &&
|
||||
motionController.ShouldLowerSleep()) {
|
||||
PushMessage(Messages::GoToSleep);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user