diff options
| -rw-r--r-- | src/CMakeLists.txt | 11 | ||||
| -rw-r--r-- | src/components/motion/MotionController.cpp | 22 | ||||
| -rw-r--r-- | src/components/motion/MotionController.h | 6 | ||||
| -rw-r--r-- | src/components/settings/Settings.h | 16 | ||||
| -rw-r--r-- | src/displayapp/Apps.h | 1 | ||||
| -rw-r--r-- | src/displayapp/DisplayApp.cpp | 6 | ||||
| -rw-r--r-- | src/displayapp/screens/settings/SettingShakeThreshold.cpp | 137 | ||||
| -rw-r--r-- | src/displayapp/screens/settings/SettingShakeThreshold.h | 37 | ||||
| -rw-r--r-- | src/displayapp/screens/settings/SettingWakeUp.cpp | 8 | ||||
| -rw-r--r-- | src/displayapp/screens/settings/Settings.cpp | 15 | ||||
| -rw-r--r-- | src/systemtask/SystemTask.cpp | 8 |
11 files changed, 9 insertions, 258 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ddf37c4..921bcf4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -283,10 +283,10 @@ set(LVGL_SRC libs/lvgl/src/lv_font/lv_font_fmt_txt.c libs/lvgl/src/lv_font/lv_font_loader.c # LVGL Fonts - libs/lvgl/src/lv_font/lv_font_montserrat_14.c - libs/lvgl/src/lv_font/lv_font_montserrat_18.c - libs/lvgl/src/lv_font/lv_font_montserrat_22.c - libs/lvgl/src/lv_font/lv_font_montserrat_28.c + # libs/lvgl/src/lv_font/lv_font_montserrat_14.c + # libs/lvgl/src/lv_font/lv_font_montserrat_18.c + # libs/lvgl/src/lv_font/lv_font_montserrat_22.c + # libs/lvgl/src/lv_font/lv_font_montserrat_28.c # libs/lvgl/src/lv_hal/lv_hal_disp.c libs/lvgl/src/lv_hal/lv_hal_indev.c @@ -387,7 +387,6 @@ list(APPEND SOURCE_FILES displayapp/screens/Screen.cpp displayapp/screens/Clock.cpp displayapp/screens/Tile.cpp - displayapp/screens/Meter.cpp displayapp/screens/BatteryIcon.cpp displayapp/screens/BleIcon.cpp displayapp/screens/NotificationIcon.cpp @@ -408,7 +407,6 @@ list(APPEND SOURCE_FILES displayapp/screens/settings/SettingTimeFormat.cpp displayapp/screens/settings/SettingWakeUp.cpp displayapp/screens/settings/SettingDisplay.cpp - displayapp/screens/settings/SettingShakeThreshold.cpp ## Watch faces displayapp/screens/WatchFaceDigital.cpp @@ -452,6 +450,7 @@ list(APPEND SOURCE_FILES FreeRTOS/port_cmsis.c displayapp/LittleVgl.cpp + displayapp/fonts/neofont.c displayapp/fonts/lv_font_sys_48.c displayapp/lv_pinetime_theme.c diff --git a/src/components/motion/MotionController.cpp b/src/components/motion/MotionController.cpp index aa2f3ee..0404e3f 100644 --- a/src/components/motion/MotionController.cpp +++ b/src/components/motion/MotionController.cpp @@ -31,28 +31,6 @@ bool MotionController::Should_RaiseWake(bool isSleeping) { return false; } -bool MotionController::Should_ShakeWake(uint16_t thresh) { - bool wake = false; - auto diff = xTaskGetTickCount() - lastShakeTime; - lastShakeTime = xTaskGetTickCount(); - /* Currently Polling at 10hz, If this ever goes faster scalar and EMA might need adjusting */ - int32_t speed = std::abs(z + (y / 2) + (x / 4) - lastYForShake - lastZForShake) / diff * 100; - //(.2 * speed) + ((1 - .2) * accumulatedspeed); - // implemented without floats as .25Alpha - accumulatedspeed = (speed / 5) + ((accumulatedspeed / 5) * 4); - - if (accumulatedspeed > thresh) { - wake = true; - } - lastXForShake = x / 4; - lastYForShake = y / 2; - lastZForShake = z; - return wake; -} -int32_t MotionController::currentShakeSpeed() { - return accumulatedspeed; -} - void MotionController::IsSensorOk(bool isOk) { isSensorOk = isOk; } diff --git a/src/components/motion/MotionController.h b/src/components/motion/MotionController.h index 5200b41..a56991a 100644 --- a/src/components/motion/MotionController.h +++ b/src/components/motion/MotionController.h @@ -25,9 +25,7 @@ namespace Pinetime { return z; } - bool Should_ShakeWake(uint16_t thresh); bool Should_RaiseWake(bool isSleeping); - int32_t currentShakeSpeed(); void IsSensorOk(bool isOk); bool IsSensorOk() const { return isSensorOk; @@ -47,11 +45,7 @@ namespace Pinetime { bool isSensorOk = false; DeviceTypes deviceType = DeviceTypes::Unknown; - int16_t lastXForShake = 0; - int16_t lastYForShake = 0; - int16_t lastZForShake = 0; int32_t accumulatedspeed = 0; - uint32_t lastShakeTime = 0; }; } }
\ No newline at end of file diff --git a/src/components/settings/Settings.h b/src/components/settings/Settings.h index 8a32efa..5201b77 100644 --- a/src/components/settings/Settings.h +++ b/src/components/settings/Settings.h @@ -13,7 +13,6 @@ namespace Pinetime { SingleTap = 0, DoubleTap = 1, RaiseWrist = 2, - Shake = 3, }; enum class Colors : uint8_t { White, @@ -96,18 +95,6 @@ namespace Pinetime { return settings.screenTimeOut; }; - void SetShakeThreshold(uint16_t thresh){ - if(settings.shakeWakeThreshold != thresh){ - settings.shakeWakeThreshold = thresh; - settingsChanged = true; - } - - } - - int16_t GetShakeThreshold() const{ - return settings.shakeWakeThreshold; - } - void setWakeUpMode(WakeUpMode wakeUp, bool enabled) { if (enabled != isWakeUpModeOn(wakeUp)) { settingsChanged = true; @@ -148,7 +135,7 @@ namespace Pinetime { }; private: - static constexpr uint32_t settingsVersion = 0x4011; // infinitime redux settings + static constexpr uint32_t settingsVersion = 0x4021; // infinitime redux settings struct SettingsData { uint32_t version = settingsVersion; uint32_t screenTimeOut = 15000; @@ -159,7 +146,6 @@ namespace Pinetime { uint8_t clockFace = 0; std::bitset<4> wakeUpMode {0}; - uint16_t shakeWakeThreshold = 150; Controllers::BrightnessController::Levels brightLevel = Controllers::BrightnessController::Levels::Medium; }; diff --git a/src/displayapp/Apps.h b/src/displayapp/Apps.h index 929cfaf..c308c75 100644 --- a/src/displayapp/Apps.h +++ b/src/displayapp/Apps.h @@ -15,7 +15,6 @@ namespace Pinetime { SettingTimeFormat, SettingDisplay, SettingWakeUp, - SettingShakeThreshold, Error }; } diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp index e62bd81..574f964 100644 --- a/src/displayapp/DisplayApp.cpp +++ b/src/displayapp/DisplayApp.cpp @@ -11,7 +11,6 @@ #include "displayapp/screens/Clock.h" #include "displayapp/screens/FirmwareUpdate.h" #include "displayapp/screens/FirmwareValidation.h" -#include "displayapp/screens/Meter.h" #include "displayapp/screens/Notifications.h" #include "displayapp/screens/Tile.h" #include "displayapp/screens/Error.h" @@ -27,7 +26,6 @@ #include "displayapp/screens/settings/SettingTimeFormat.h" #include "displayapp/screens/settings/SettingWakeUp.h" #include "displayapp/screens/settings/SettingDisplay.h" -#include "displayapp/screens/settings/SettingShakeThreshold.h" #include "libs/lv_conf.h" @@ -346,10 +344,6 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction) currentScreen = std::make_unique<Screens::SettingDisplay>(this, settingsController); ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown); break; - case Apps::SettingShakeThreshold: - currentScreen = std::make_unique<Screens::SettingShakeThreshold>(this, settingsController, motionController, *systemTask); - ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown); - break; } currentApp = app; } diff --git a/src/displayapp/screens/settings/SettingShakeThreshold.cpp b/src/displayapp/screens/settings/SettingShakeThreshold.cpp deleted file mode 100644 index 9d40fcf..0000000 --- a/src/displayapp/screens/settings/SettingShakeThreshold.cpp +++ /dev/null @@ -1,137 +0,0 @@ -#include "displayapp/screens/settings/SettingShakeThreshold.h" -#include <lvgl/lvgl.h> -#include "displayapp/DisplayApp.h" -#include "displayapp/screens/Screen.h" -#include "displayapp/screens/Symbols.h" - -using namespace Pinetime::Applications::Screens; - -namespace { - void event_handler(lv_obj_t* obj, lv_event_t event) { - SettingShakeThreshold* screen = static_cast<SettingShakeThreshold*>(obj->user_data); - screen->UpdateSelected(obj, event); - } -} - -SettingShakeThreshold::SettingShakeThreshold(DisplayApp* app, - Controllers::Settings& settingsController, - Controllers::MotionController& motionController, - System::SystemTask& systemTask) - : Screen(app), settingsController {settingsController}, motionController {motionController}, systemTask {systemTask} { - - lv_obj_t* title = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text_static(title, "Wake Sensitivity"); - lv_label_set_align(title, LV_LABEL_ALIGN_CENTER); - lv_obj_align(title, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 0, 0); - - positionArc = lv_arc_create(lv_scr_act(), nullptr); - positionArc->user_data = this; - - lv_obj_set_event_cb(positionArc, event_handler); - lv_arc_set_bg_angles(positionArc, 180, 360); - lv_arc_set_range(positionArc, 0, 4095); - lv_arc_set_adjustable(positionArc, true); - lv_obj_set_width(positionArc, lv_obj_get_width(lv_scr_act()) - 10); - lv_obj_set_height(positionArc, 240); - lv_obj_align(positionArc, title, LV_ALIGN_OUT_BOTTOM_MID, 0, 0); - - animArc = lv_arc_create(positionArc, positionArc); - lv_arc_set_adjustable(animArc, false); - lv_obj_set_width(animArc, lv_obj_get_width(positionArc)); - lv_obj_set_height(animArc, lv_obj_get_height(positionArc)); - lv_obj_align_mid(animArc, positionArc, LV_ALIGN_CENTER, 0, 0); - lv_obj_set_style_local_line_opa(animArc, LV_ARC_PART_BG, LV_STATE_DEFAULT, 0); - lv_obj_set_style_local_line_opa(animArc, LV_ARC_PART_INDIC, LV_STATE_DEFAULT, LV_OPA_70); - lv_obj_set_style_local_line_opa(animArc, LV_ARC_PART_KNOB, LV_STATE_DEFAULT, LV_OPA_0); - lv_obj_set_style_local_line_color(animArc, LV_ARC_PART_INDIC, LV_STATE_DEFAULT, LV_COLOR_RED); - lv_obj_set_style_local_bg_color(animArc, LV_ARC_PART_BG, LV_STATE_CHECKED, LV_COLOR_TRANSP); - - animArc->user_data = this; - lv_obj_set_click(animArc, false); - - calButton = lv_btn_create(lv_scr_act(), nullptr); - calButton->user_data = this; - lv_obj_set_event_cb(calButton, event_handler); - lv_obj_set_height(calButton, 80); - lv_obj_set_width(calButton, 200); - lv_obj_align(calButton, lv_scr_act(), LV_ALIGN_IN_BOTTOM_MID, 0, 0); - lv_btn_set_checkable(calButton, true); - calLabel = lv_label_create(calButton, NULL); - lv_label_set_text(calLabel, "Calibrate"); - - lv_arc_set_value(positionArc, settingsController.GetShakeThreshold()); - - vDecay = xTaskGetTickCount(); - calibrating = false; - EnableForCal = false; - if(!settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake)){ - EnableForCal = true; - settingsController.setWakeUpMode(Pinetime::Controllers::Settings::WakeUpMode::Shake,true); - } - refreshTask = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this); -} - -SettingShakeThreshold::~SettingShakeThreshold() { - settingsController.SetShakeThreshold(lv_arc_get_value(positionArc)); - - if(EnableForCal){ - settingsController.setWakeUpMode(Pinetime::Controllers::Settings::WakeUpMode::Shake,false); - EnableForCal = false; - } - lv_task_del(refreshTask); - settingsController.SaveSettings(); - lv_obj_clean(lv_scr_act()); -} - -void SettingShakeThreshold::Refresh() { - - if (calibrating == 1) { - if (xTaskGetTickCount() - vCalTime > pdMS_TO_TICKS(2000)) { - vCalTime = xTaskGetTickCount(); - calibrating = 2; - lv_obj_set_style_local_bg_color(calButton, LV_BTN_PART_MAIN, LV_STATE_CHECKED, LV_COLOR_RED); - lv_obj_set_style_local_bg_color(calButton, LV_BTN_PART_MAIN, LV_STATE_CHECKED, LV_COLOR_RED); - lv_label_set_text(calLabel, "Shake!!"); - } - } - if (calibrating == 2) { - - if ((motionController.currentShakeSpeed() - 300) > lv_arc_get_value(positionArc)) { - lv_arc_set_value(positionArc, (int16_t) motionController.currentShakeSpeed() - 300); - } - if (xTaskGetTickCount() - vCalTime > pdMS_TO_TICKS(7500)) { - lv_btn_set_state(calButton, LV_STATE_DEFAULT); - lv_event_send(calButton, LV_EVENT_VALUE_CHANGED, NULL); - } - } - if (motionController.currentShakeSpeed() - 300 > lv_arc_get_value(animArc)) { - lv_arc_set_value(animArc, (uint16_t) motionController.currentShakeSpeed() - 300); - vDecay = xTaskGetTickCount(); - } else if ((xTaskGetTickCount() - vDecay) > pdMS_TO_TICKS(1500)) { - lv_arc_set_value(animArc, lv_arc_get_value(animArc) - 25); - } -} - -void SettingShakeThreshold::UpdateSelected(lv_obj_t* object, lv_event_t event) { - - switch (event) { - case LV_EVENT_VALUE_CHANGED: { - if (object == calButton) { - if (lv_btn_get_state(calButton) == LV_BTN_STATE_CHECKED_RELEASED && calibrating == 0) { - lv_arc_set_value(positionArc, 0); - calibrating = 1; - vCalTime = xTaskGetTickCount(); - lv_label_set_text(calLabel, "Ready!"); - lv_obj_set_click(positionArc, false); - lv_obj_set_style_local_bg_color(calButton, LV_BTN_PART_MAIN, LV_STATE_CHECKED, LV_COLOR_GREEN); - lv_obj_set_style_local_bg_color(calButton, LV_BTN_PART_MAIN, LV_STATE_CHECKED, LV_COLOR_GREEN); - } else if (lv_btn_get_state(calButton) == LV_BTN_STATE_RELEASED) { - calibrating = 0; - lv_obj_set_click(positionArc, true); - lv_label_set_text(calLabel, "Calibrate"); - } - break; - } - } - } -} diff --git a/src/displayapp/screens/settings/SettingShakeThreshold.h b/src/displayapp/screens/settings/SettingShakeThreshold.h deleted file mode 100644 index 37f4a65..0000000 --- a/src/displayapp/screens/settings/SettingShakeThreshold.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -#include <cstdint> -#include <lvgl/lvgl.h> -#include "components/settings/Settings.h" -#include "displayapp/screens/Screen.h" -#include <components/motion/MotionController.h> -#include "systemtask/SystemTask.h" -namespace Pinetime { - - namespace Applications { - namespace Screens { - - class SettingShakeThreshold : public Screen { - public: - SettingShakeThreshold(DisplayApp* app, - Pinetime::Controllers::Settings& settingsController, - Controllers::MotionController& motionController, - System::SystemTask& systemTask); - - ~SettingShakeThreshold() override; - void Refresh() override; - void UpdateSelected(lv_obj_t* object, lv_event_t event); - - private: - Controllers::Settings& settingsController; - Controllers::MotionController& motionController; - System::SystemTask& systemTask; - uint8_t calibrating; - bool EnableForCal; - uint32_t vDecay,vCalTime; - lv_obj_t *positionArc, *animArc,*calButton, *calLabel; - lv_task_t* refreshTask; - }; - } - } -} diff --git a/src/displayapp/screens/settings/SettingWakeUp.cpp b/src/displayapp/screens/settings/SettingWakeUp.cpp index e1b6e36..8339d9a 100644 --- a/src/displayapp/screens/settings/SettingWakeUp.cpp +++ b/src/displayapp/screens/settings/SettingWakeUp.cpp @@ -65,14 +65,6 @@ SettingWakeUp::SettingWakeUp(Pinetime::Applications::DisplayApp* app, Pinetime:: lv_checkbox_set_checked(cbOption[optionsTotal], true); } optionsTotal++; - cbOption[optionsTotal] = lv_checkbox_create(container1, nullptr); - lv_checkbox_set_text_static(cbOption[optionsTotal], " Shake Wake"); - cbOption[optionsTotal]->user_data = this; - lv_obj_set_event_cb(cbOption[optionsTotal], event_handler); - if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake)) { - lv_checkbox_set_checked(cbOption[optionsTotal], true); - } - optionsTotal++; } SettingWakeUp::~SettingWakeUp() { diff --git a/src/displayapp/screens/settings/Settings.cpp b/src/displayapp/screens/settings/Settings.cpp index 01dd534..b71e333 100644 --- a/src/displayapp/screens/settings/Settings.cpp +++ b/src/displayapp/screens/settings/Settings.cpp @@ -17,9 +17,6 @@ Settings::Settings(Pinetime::Applications::DisplayApp* app, Pinetime::Controller [this]() -> std::unique_ptr<Screen> { return CreateScreen1(); }, - [this]() -> std::unique_ptr<Screen> { - return CreateScreen2(); - }, }, Screens::ScreenListModes::UpDown} { } @@ -37,20 +34,10 @@ std::unique_ptr<Screen> Settings::CreateScreen1() { {Symbols::sun, "Display", Apps::SettingDisplay}, {Symbols::eye, "Wake Up", Apps::SettingWakeUp}, {Symbols::clock, "Time format", Apps::SettingTimeFormat}, - {Symbols::none, "None", Apps::None} + {Symbols::check, "Firmware", Apps::FirmwareValidation}, }}; return std::make_unique<Screens::List>(0, 1, app, settingsController, applications); } -std::unique_ptr<Screen> Settings::CreateScreen2() { - std::array<Screens::List::Applications, 4> applications {{ - {Symbols::tachometer, "Shake Calib.", Apps::SettingShakeThreshold}, - {Symbols::check, "Firmware", Apps::FirmwareValidation}, - {Symbols::none, "None", Apps::None}, - {Symbols::none, "None", Apps::None} -}}; - - return std::make_unique<Screens::List>(1, 2, app, settingsController, applications); -} diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp index 0cf72ac..8f76d8e 100644 --- a/src/systemtask/SystemTask.cpp +++ b/src/systemtask/SystemTask.cpp @@ -391,8 +391,8 @@ void SystemTask::UpdateMotion() { return; } - if (isSleeping && !(settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::RaiseWrist) || - settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake))) { + if (isSleeping && !settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::RaiseWrist)) { + // Could we use here the accelerometer's low energy tilt-to-wake function? return; } if (stepCounterMustBeReset) { @@ -409,10 +409,6 @@ void SystemTask::UpdateMotion() { motionController.Should_RaiseWake(isSleeping)) { GoToRunning(); } - if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake) && - motionController.Should_ShakeWake(settingsController.GetShakeThreshold())) { - GoToRunning(); - } } void SystemTask::HandleButtonAction(Controllers::ButtonActions action) { |
