summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/CMakeLists.txt11
-rw-r--r--src/components/motion/MotionController.cpp22
-rw-r--r--src/components/motion/MotionController.h6
-rw-r--r--src/components/settings/Settings.h16
-rw-r--r--src/displayapp/Apps.h1
-rw-r--r--src/displayapp/DisplayApp.cpp6
-rw-r--r--src/displayapp/screens/settings/SettingShakeThreshold.cpp137
-rw-r--r--src/displayapp/screens/settings/SettingShakeThreshold.h37
-rw-r--r--src/displayapp/screens/settings/SettingWakeUp.cpp8
-rw-r--r--src/displayapp/screens/settings/Settings.cpp15
-rw-r--r--src/systemtask/SystemTask.cpp8
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) {