summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/CMakeLists.txt3
-rw-r--r--src/components/ble/DfuService.cpp5
-rw-r--r--src/components/brightness/BrightnessController.cpp117
-rw-r--r--src/components/brightness/BrightnessController.h17
-rw-r--r--src/components/motion/MotionController.cpp23
-rw-r--r--src/components/motion/MotionController.h2
-rw-r--r--src/components/settings/Settings.h48
-rw-r--r--src/displayapp/Apps.h1
-rw-r--r--src/displayapp/DisplayApp.cpp42
-rw-r--r--src/displayapp/Messages.h4
-rw-r--r--src/displayapp/screens/Brightness.cpp103
-rw-r--r--src/displayapp/screens/Brightness.h33
-rw-r--r--src/displayapp/screens/Notifications.cpp3
-rw-r--r--src/displayapp/screens/settings/QuickSettings.cpp8
-rw-r--r--src/displayapp/screens/settings/QuickSettings.h3
-rw-r--r--src/displayapp/screens/settings/SettingWakeUp.cpp103
-rw-r--r--src/displayapp/screens/settings/SettingWakeUp.h32
-rw-r--r--src/displayapp/screens/settings/Settings.cpp2
-rw-r--r--src/systemtask/Messages.h6
-rw-r--r--src/systemtask/SystemTask.cpp193
-rw-r--r--src/systemtask/SystemTask.h17
21 files changed, 10 insertions, 755 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0f5ff2b..292e2c1 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -390,7 +390,6 @@ list(APPEND SOURCE_FILES
displayapp/screens/BatteryIcon.cpp
displayapp/screens/BleIcon.cpp
displayapp/screens/NotificationIcon.cpp
- displayapp/screens/Brightness.cpp
displayapp/screens/Label.cpp
displayapp/screens/FirmwareUpdate.cpp
displayapp/screens/FirmwareValidation.cpp
@@ -405,7 +404,6 @@ list(APPEND SOURCE_FILES
displayapp/screens/settings/QuickSettings.cpp
displayapp/screens/settings/Settings.cpp
displayapp/screens/settings/SettingTimeFormat.cpp
- displayapp/screens/settings/SettingWakeUp.cpp
displayapp/screens/settings/SettingDisplay.cpp
## Watch faces
@@ -548,7 +546,6 @@ set(INCLUDE_FILES
displayapp/screens/BatteryIcon.h
displayapp/screens/BleIcon.h
displayapp/screens/NotificationIcon.h
- displayapp/screens/Brightness.h
displayapp/screens/ScreenList.h
displayapp/screens/Label.h
displayapp/screens/FirmwareUpdate.h
diff --git a/src/components/ble/DfuService.cpp b/src/components/ble/DfuService.cpp
index cf99f01..51e9e5d 100644
--- a/src/components/ble/DfuService.cpp
+++ b/src/components/ble/DfuService.cpp
@@ -122,11 +122,6 @@ int DfuService::WritePacketHandler(uint16_t connectionHandle, os_mbuf* om) {
NRF_LOG_INFO(
"[DFU] -> Start data received : SD size : %d, BT size : %d, app size : %d", softdeviceSize, bootloaderSize, applicationSize);
- // wait until SystemTask has finished waking up all devices
- while (systemTask.IsSleeping()) {
- vTaskDelay(50); // 50ms
- }
-
dfuImage.Erase();
uint8_t data[] {16, 1, 1};
diff --git a/src/components/brightness/BrightnessController.cpp b/src/components/brightness/BrightnessController.cpp
index 2d9f980..29de5bb 100644
--- a/src/components/brightness/BrightnessController.cpp
+++ b/src/components/brightness/BrightnessController.cpp
@@ -8,119 +8,8 @@ void BrightnessController::Init() {
nrf_gpio_cfg_output(PinMap::LcdBacklightLow);
nrf_gpio_cfg_output(PinMap::LcdBacklightMedium);
nrf_gpio_cfg_output(PinMap::LcdBacklightHigh);
- Set(level);
+ nrf_gpio_pin_clear(PinMap::LcdBacklightLow);
+ nrf_gpio_pin_set(PinMap::LcdBacklightMedium);
+ nrf_gpio_pin_set(PinMap::LcdBacklightHigh);
}
-void BrightnessController::Set(BrightnessController::Levels level) {
- this->level = level;
- switch (level) {
- default:
- case Levels::High:
- nrf_gpio_pin_clear(PinMap::LcdBacklightLow);
- nrf_gpio_pin_clear(PinMap::LcdBacklightMedium);
- nrf_gpio_pin_clear(PinMap::LcdBacklightHigh);
- break;
- case Levels::Medium:
- nrf_gpio_pin_clear(PinMap::LcdBacklightLow);
- nrf_gpio_pin_clear(PinMap::LcdBacklightMedium);
- nrf_gpio_pin_set(PinMap::LcdBacklightHigh);
- break;
- case Levels::Low:
- nrf_gpio_pin_clear(PinMap::LcdBacklightLow);
- nrf_gpio_pin_set(PinMap::LcdBacklightMedium);
- nrf_gpio_pin_set(PinMap::LcdBacklightHigh);
- break;
- case Levels::Off:
- nrf_gpio_pin_set(PinMap::LcdBacklightLow);
- nrf_gpio_pin_set(PinMap::LcdBacklightMedium);
- nrf_gpio_pin_set(PinMap::LcdBacklightHigh);
- break;
- }
-}
-
-void BrightnessController::Lower() {
- switch (level) {
- case Levels::High:
- Set(Levels::Medium);
- break;
- case Levels::Medium:
- Set(Levels::Low);
- break;
- case Levels::Low:
- Set(Levels::Off);
- break;
- default:
- break;
- }
-}
-
-void BrightnessController::Higher() {
- switch (level) {
- case Levels::Off:
- Set(Levels::Low);
- break;
- case Levels::Low:
- Set(Levels::Medium);
- break;
- case Levels::Medium:
- Set(Levels::High);
- break;
- default:
- break;
- }
-}
-
-BrightnessController::Levels BrightnessController::Level() const {
- return level;
-}
-
-void BrightnessController::Backup() {
- backupLevel = level;
-}
-
-void BrightnessController::Restore() {
- Set(backupLevel);
-}
-
-void BrightnessController::Step() {
- switch (level) {
- case Levels::Low:
- Set(Levels::Medium);
- break;
- case Levels::Medium:
- Set(Levels::High);
- break;
- case Levels::High:
- Set(Levels::Low);
- break;
- default:
- break;
- }
-}
-
-const char* BrightnessController::GetIcon() {
- switch (level) {
- case Levels::Medium:
- return Applications::Screens::Symbols::brightnessMedium;
- case Levels::High:
- return Applications::Screens::Symbols::brightnessHigh;
- default:
- break;
- }
- return Applications::Screens::Symbols::brightnessLow;
-}
-
-const char* BrightnessController::ToString() {
- switch (level) {
- case Levels::Off:
- return "Off";
- case Levels::Low:
- return "Low";
- case Levels::Medium:
- return "Medium";
- case Levels::High:
- return "High";
- default:
- return "???";
- }
-} \ No newline at end of file
diff --git a/src/components/brightness/BrightnessController.h b/src/components/brightness/BrightnessController.h
index 0d7ac2f..31ef40a 100644
--- a/src/components/brightness/BrightnessController.h
+++ b/src/components/brightness/BrightnessController.h
@@ -6,24 +6,7 @@ namespace Pinetime {
namespace Controllers {
class BrightnessController {
public:
- enum class Levels { Off, Low, Medium, High };
void Init();
-
- void Set(Levels level);
- Levels Level() const;
- void Lower();
- void Higher();
- void Step();
-
- void Backup();
- void Restore();
-
- const char* GetIcon();
- const char* ToString();
-
- private:
- Levels level = Levels::High;
- Levels backupLevel = Levels::High;
};
}
}
diff --git a/src/components/motion/MotionController.cpp b/src/components/motion/MotionController.cpp
index 0404e3f..6ddb876 100644
--- a/src/components/motion/MotionController.cpp
+++ b/src/components/motion/MotionController.cpp
@@ -8,29 +8,6 @@ void MotionController::Update(int16_t x, int16_t y, int16_t z) {
this->z = z;
}
-bool MotionController::Should_RaiseWake(bool isSleeping) {
- if ((x + 335) <= 670 && z < 0) {
- if (not isSleeping) {
- if (y <= 0) {
- return false;
- } else {
- lastYForWakeUp = 0;
- return false;
- }
- }
-
- if (y >= 0) {
- lastYForWakeUp = 0;
- return false;
- }
- if (y + 230 < lastYForWakeUp) {
- lastYForWakeUp = y;
- return true;
- }
- }
- return false;
-}
-
void MotionController::IsSensorOk(bool isOk) {
isSensorOk = isOk;
}
diff --git a/src/components/motion/MotionController.h b/src/components/motion/MotionController.h
index a56991a..8802412 100644
--- a/src/components/motion/MotionController.h
+++ b/src/components/motion/MotionController.h
@@ -25,7 +25,6 @@ namespace Pinetime {
return z;
}
- bool Should_RaiseWake(bool isSleeping);
void IsSensorOk(bool isOk);
bool IsSensorOk() const {
return isSensorOk;
@@ -41,7 +40,6 @@ namespace Pinetime {
int16_t x;
int16_t y;
int16_t z;
- int16_t lastYForWakeUp = 0;
bool isSensorOk = false;
DeviceTypes deviceType = DeviceTypes::Unknown;
diff --git a/src/components/settings/Settings.h b/src/components/settings/Settings.h
index 5201b77..7842664 100644
--- a/src/components/settings/Settings.h
+++ b/src/components/settings/Settings.h
@@ -1,7 +1,6 @@
#pragma once
#include <cstdint>
#include <bitset>
-#include "components/brightness/BrightnessController.h"
namespace Pinetime {
namespace Controllers {
@@ -9,11 +8,6 @@ namespace Pinetime {
public:
enum class ClockType : uint8_t { H24, H12 };
enum class Notification : uint8_t { ON, OFF };
- enum class WakeUpMode : uint8_t {
- SingleTap = 0,
- DoubleTap = 1,
- RaiseWrist = 2,
- };
enum class Colors : uint8_t {
White,
Silver,
@@ -95,47 +89,8 @@ namespace Pinetime {
return settings.screenTimeOut;
};
- void setWakeUpMode(WakeUpMode wakeUp, bool enabled) {
- if (enabled != isWakeUpModeOn(wakeUp)) {
- settingsChanged = true;
- }
- settings.wakeUpMode.set(static_cast<size_t>(wakeUp), enabled);
- // Handle special behavior
- if (enabled) {
- switch (wakeUp) {
- case WakeUpMode::SingleTap:
- settings.wakeUpMode.set(static_cast<size_t>(WakeUpMode::DoubleTap), false);
- break;
- case WakeUpMode::DoubleTap:
- settings.wakeUpMode.set(static_cast<size_t>(WakeUpMode::SingleTap), false);
- break;
- default:
- break;
- }
- }
- };
-
- std::bitset<4> getWakeUpModes() const {
- return settings.wakeUpMode;
- }
-
- bool isWakeUpModeOn(const WakeUpMode mode) const {
- return getWakeUpModes()[static_cast<size_t>(mode)];
- }
-
- void SetBrightness(Controllers::BrightnessController::Levels level) {
- if (level != settings.brightLevel) {
- settingsChanged = true;
- }
- settings.brightLevel = level;
- };
-
- Controllers::BrightnessController::Levels GetBrightness() const {
- return settings.brightLevel;
- };
-
private:
- static constexpr uint32_t settingsVersion = 0x4021; // infinitime redux settings
+ static constexpr uint32_t settingsVersion = 0x4121; // infinitime redux settings
struct SettingsData {
uint32_t version = settingsVersion;
uint32_t screenTimeOut = 15000;
@@ -146,7 +101,6 @@ namespace Pinetime {
uint8_t clockFace = 0;
std::bitset<4> wakeUpMode {0};
- Controllers::BrightnessController::Levels brightLevel = Controllers::BrightnessController::Levels::Medium;
};
SettingsData settings;
diff --git a/src/displayapp/Apps.h b/src/displayapp/Apps.h
index c308c75..663d9f4 100644
--- a/src/displayapp/Apps.h
+++ b/src/displayapp/Apps.h
@@ -14,7 +14,6 @@ namespace Pinetime {
Settings,
SettingTimeFormat,
SettingDisplay,
- SettingWakeUp,
Error
};
}
diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp
index 574f964..a03f4cf 100644
--- a/src/displayapp/DisplayApp.cpp
+++ b/src/displayapp/DisplayApp.cpp
@@ -7,7 +7,6 @@
#include "components/motion/MotionController.h"
#include "components/motor/MotorController.h"
#include "displayapp/screens/ApplicationList.h"
-#include "displayapp/screens/Brightness.h"
#include "displayapp/screens/Clock.h"
#include "displayapp/screens/FirmwareUpdate.h"
#include "displayapp/screens/FirmwareValidation.h"
@@ -24,7 +23,6 @@
#include "displayapp/screens/settings/QuickSettings.h"
#include "displayapp/screens/settings/Settings.h"
#include "displayapp/screens/settings/SettingTimeFormat.h"
-#include "displayapp/screens/settings/SettingWakeUp.h"
#include "displayapp/screens/settings/SettingDisplay.h"
#include "libs/lv_conf.h"
@@ -119,7 +117,6 @@ void DisplayApp::Process(void* instance) {
void DisplayApp::InitHw() {
brightnessController.Init();
- brightnessController.Set(settingsController.GetBrightness());
}
void DisplayApp::Refresh() {
@@ -142,28 +139,6 @@ void DisplayApp::Refresh() {
Messages msg;
if (xQueueReceive(msgQueue, &msg, queueTimeout)) {
switch (msg) {
- case Messages::DimScreen:
- // Backup brightness is the brightness to return to after dimming or sleeping
- brightnessController.Backup();
- brightnessController.Set(Controllers::BrightnessController::Levels::Low);
- break;
- case Messages::RestoreBrightness:
- brightnessController.Restore();
- break;
- case Messages::GoToSleep:
- while (brightnessController.Level() != Controllers::BrightnessController::Levels::Off) {
- brightnessController.Lower();
- vTaskDelay(100);
- }
- lcd.DisplayOff();
- PushMessageToSystemTask(Pinetime::System::Messages::OnDisplayTaskSleeping);
- state = States::Idle;
- break;
- case Messages::GoToRunning:
- lcd.DisplayOn();
- brightnessController.Restore();
- state = States::Running;
- break;
case Messages::UpdateTimeOut:
PushMessageToSystemTask(System::Messages::UpdateTimeOut);
break;
@@ -194,16 +169,11 @@ void DisplayApp::Refresh() {
case TouchEvents::SwipeRight:
LoadApp(Apps::QuickSettings, DisplayApp::FullRefreshDirections::RightAnim);
break;
- case TouchEvents::DoubleTap:
- PushMessageToSystemTask(System::Messages::GoToSleep);
- break;
default:
break;
}
} else if (returnTouchEvent == gesture) {
LoadApp(returnToApp, returnDirection);
- brightnessController.Set(settingsController.GetBrightness());
- brightnessController.Backup();
}
} else {
touchHandler.CancelTap();
@@ -211,12 +181,8 @@ void DisplayApp::Refresh() {
} break;
case Messages::ButtonPushed:
if (!currentScreen->OnButtonPushed()) {
- if (currentApp == Apps::Clock) {
- PushMessageToSystemTask(System::Messages::GoToSleep);
- } else {
+ if (currentApp != Apps::Clock) {
LoadApp(returnToApp, returnDirection);
- brightnessController.Set(settingsController.GetBrightness());
- brightnessController.Backup();
}
}
break;
@@ -325,7 +291,7 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction)
// Settings
case Apps::QuickSettings:
currentScreen = std::make_unique<Screens::QuickSettings>(
- this, batteryController, dateTimeController, brightnessController, motorController, settingsController);
+ this, batteryController, dateTimeController, motorController, settingsController);
ReturnApp(Apps::Clock, FullRefreshDirections::LeftAnim, TouchEvents::SwipeLeft);
break;
case Apps::Settings:
@@ -336,10 +302,6 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction)
currentScreen = std::make_unique<Screens::SettingTimeFormat>(this, settingsController);
ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown);
break;
- case Apps::SettingWakeUp:
- currentScreen = std::make_unique<Screens::SettingWakeUp>(this, settingsController);
- ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown);
- break;
case Apps::SettingDisplay:
currentScreen = std::make_unique<Screens::SettingDisplay>(this, settingsController);
ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown);
diff --git a/src/displayapp/Messages.h b/src/displayapp/Messages.h
index c27c5e5..c6d9dd6 100644
--- a/src/displayapp/Messages.h
+++ b/src/displayapp/Messages.h
@@ -4,8 +4,6 @@ namespace Pinetime {
namespace Applications {
namespace Display {
enum class Messages : uint8_t {
- GoToSleep,
- GoToRunning,
UpdateDateTime,
UpdateBleConnection,
TouchEvent,
@@ -16,8 +14,6 @@ namespace Pinetime {
NewNotification,
BleFirmwareUpdateStarted,
UpdateTimeOut,
- DimScreen,
- RestoreBrightness,
Clock,
};
}
diff --git a/src/displayapp/screens/Brightness.cpp b/src/displayapp/screens/Brightness.cpp
deleted file mode 100644
index d9901ae..0000000
--- a/src/displayapp/screens/Brightness.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-#include "displayapp/screens/Brightness.h"
-#include <lvgl/lvgl.h>
-
-using namespace Pinetime::Applications::Screens;
-
-void slider_event_cb(lv_obj_t* slider, lv_event_t event) {
- if (event == LV_EVENT_VALUE_CHANGED) {
- auto* brightnessSlider = static_cast<Brightness*>(slider->user_data);
- brightnessSlider->OnValueChanged();
- }
-}
-
-Brightness::Brightness(Pinetime::Applications::DisplayApp* app, Controllers::BrightnessController& brightness)
- : Screen(app), brightness {brightness} {
- slider = lv_slider_create(lv_scr_act(), nullptr);
- lv_obj_set_user_data(slider, this);
- lv_obj_set_width(slider, LV_DPI * 2);
- lv_obj_align(slider, nullptr, LV_ALIGN_CENTER, 0, 0);
- lv_obj_set_event_cb(slider, slider_event_cb);
- lv_slider_set_range(slider, 0, 2);
- lv_slider_set_value(slider, LevelToInt(brightness.Level()), LV_ANIM_OFF);
-
- slider_label = lv_label_create(lv_scr_act(), nullptr);
- lv_label_set_text(slider_label, LevelToString(brightness.Level()));
- lv_obj_set_auto_realign(slider_label, true);
- lv_obj_align(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 30);
-}
-
-Brightness::~Brightness() {
- lv_obj_clean(lv_scr_act());
-}
-
-const char* Brightness::LevelToString(Pinetime::Controllers::BrightnessController::Levels level) {
- switch (level) {
- case Pinetime::Controllers::BrightnessController::Levels::Off:
- return "Off";
- case Pinetime::Controllers::BrightnessController::Levels::Low:
- return "Low";
- case Pinetime::Controllers::BrightnessController::Levels::Medium:
- return "Medium";
- case Pinetime::Controllers::BrightnessController::Levels::High:
- return "High";
- default:
- return "???";
- }
-}
-
-void Brightness::OnValueChanged() {
- SetValue(lv_slider_get_value(slider));
-}
-
-void Brightness::SetValue(uint8_t value) {
- switch (value) {
- case 0:
- brightness.Set(Controllers::BrightnessController::Levels::Low);
- break;
- case 1:
- brightness.Set(Controllers::BrightnessController::Levels::Medium);
- break;
- case 2:
- brightness.Set(Controllers::BrightnessController::Levels::High);
- break;
- }
- lv_label_set_text(slider_label, LevelToString(brightness.Level()));
-}
-
-uint8_t Brightness::LevelToInt(Pinetime::Controllers::BrightnessController::Levels level) {
- switch (level) {
- case Pinetime::Controllers::BrightnessController::Levels::Off:
- return 0;
- case Pinetime::Controllers::BrightnessController::Levels::Low:
- return 0;
- case Pinetime::Controllers::BrightnessController::Levels::Medium:
- return 1;
- case Pinetime::Controllers::BrightnessController::Levels::High:
- return 2;
- default:
- return 0;
- }
-}
-
-bool Brightness::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
- switch (event) {
- case TouchEvents::SwipeLeft:
- brightness.Lower();
- if (brightness.Level() == Pinetime::Controllers::BrightnessController::Levels::Off) {
- brightness.Set(Controllers::BrightnessController::Levels::Low);
- }
- SetValue();
- return true;
- case TouchEvents::SwipeRight:
- brightness.Higher();
- SetValue();
- return true;
- default:
- return false;
- }
-}
-
-void Brightness::SetValue() {
- lv_slider_set_value(slider, LevelToInt(brightness.Level()), LV_ANIM_OFF);
- lv_label_set_text(slider_label, LevelToString(brightness.Level()));
-}
diff --git a/src/displayapp/screens/Brightness.h b/src/displayapp/screens/Brightness.h
deleted file mode 100644
index 693570c..0000000
--- a/src/displayapp/screens/Brightness.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#pragma once
-
-#include <lvgl/src/lv_core/lv_obj.h>
-#include <cstdint>
-#include "displayapp/screens/Screen.h"
-#include "components/brightness/BrightnessController.h"
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
- class Brightness : public Screen {
- public:
- Brightness(DisplayApp* app, Controllers::BrightnessController& brightness);
- ~Brightness() override;
-
- bool OnTouchEvent(TouchEvents event) override;
-
- void OnValueChanged();
-
- private:
- Controllers::BrightnessController& brightness;
-
- lv_obj_t* slider_label;
- lv_obj_t* slider;
-
- const char* LevelToString(Controllers::BrightnessController::Levels level);
- uint8_t LevelToInt(Controllers::BrightnessController::Levels level);
- void SetValue(uint8_t value);
- void SetValue();
- };
- }
- }
-}
diff --git a/src/displayapp/screens/Notifications.cpp b/src/displayapp/screens/Notifications.cpp
index 7cbfec8..81ee234 100644
--- a/src/displayapp/screens/Notifications.cpp
+++ b/src/displayapp/screens/Notifications.cpp
@@ -42,7 +42,6 @@ Notifications::Notifications(DisplayApp* app,
}
if (mode == Modes::Preview) {
- systemTask.PushMessage(System::Messages::DisableSleeping);
if (notification.category == Controllers::NotificationManager::Categories::IncomingCall) {
motorController.StartRinging();
} else {
@@ -67,7 +66,6 @@ Notifications::~Notifications() {
lv_task_del(taskRefresh);
// make sure we stop any vibrations before exiting
motorController.StopRinging();
- systemTask.PushMessage(System::Messages::EnableSleeping);
lv_obj_clean(lv_scr_act());
}
@@ -86,7 +84,6 @@ void Notifications::Refresh() {
}
void Notifications::OnPreviewInteraction() {
- systemTask.PushMessage(System::Messages::EnableSleeping);
motorController.StopRinging();
if (timeoutLine != nullptr) {
lv_obj_del(timeoutLine);
diff --git a/src/displayapp/screens/settings/QuickSettings.cpp b/src/displayapp/screens/settings/QuickSettings.cpp
index 47f4ca5..9919aec 100644
--- a/src/displayapp/screens/settings/QuickSettings.cpp
+++ b/src/displayapp/screens/settings/QuickSettings.cpp
@@ -20,13 +20,11 @@ namespace {
QuickSettings::QuickSettings(Pinetime::Applications::DisplayApp* app,
Pinetime::Controllers::Battery& batteryController,
Controllers::DateTime& dateTimeController,
- Controllers::BrightnessController& brightness,
Controllers::MotorController& motorController,
Pinetime::Controllers::Settings& settingsController)
: Screen(app),
batteryController {batteryController},
dateTimeController {dateTimeController},
- brightness {brightness},
motorController {motorController},
settingsController {settingsController} {
@@ -61,7 +59,7 @@ QuickSettings::QuickSettings(Pinetime::Applications::DisplayApp* app,
lv_obj_align(btn1, nullptr, LV_ALIGN_IN_TOP_LEFT, buttonXOffset, barHeight);
btn1_lvl = lv_label_create(btn1, nullptr);
- lv_label_set_text_static(btn1_lvl, brightness.GetIcon());
+ lv_label_set_text_static(btn1_lvl, "-");
btn2 = lv_btn_create(lv_scr_act(), nullptr);
btn2->user_data = this;
@@ -127,10 +125,6 @@ void QuickSettings::OnButtonEvent(lv_obj_t* object, lv_event_t event) {
if (object == btn2 && event == LV_EVENT_CLICKED) {
} else if (object == btn1 && event == LV_EVENT_CLICKED) {
- brightness.Step();
- lv_label_set_text_static(btn1_lvl, brightness.GetIcon());
- settingsController.SetBrightness(brightness.Level());
-
} else if (object == btn3 && event == LV_EVENT_VALUE_CHANGED) {
if (lv_obj_get_state(btn3, LV_BTN_PART_MAIN) & LV_STATE_CHECKED) {
diff --git a/src/displayapp/screens/settings/QuickSettings.h b/src/displayapp/screens/settings/QuickSettings.h
index 7913898..8b47648 100644
--- a/src/displayapp/screens/settings/QuickSettings.h
+++ b/src/displayapp/screens/settings/QuickSettings.h
@@ -4,7 +4,6 @@
#include "displayapp/screens/Screen.h"
#include <lvgl/lvgl.h>
#include "components/datetime/DateTimeController.h"
-#include "components/brightness/BrightnessController.h"
#include "components/motor/MotorController.h"
#include "components/settings/Settings.h"
#include "components/battery/BatteryController.h"
@@ -19,7 +18,6 @@ namespace Pinetime {
QuickSettings(DisplayApp* app,
Pinetime::Controllers::Battery& batteryController,
Controllers::DateTime& dateTimeController,
- Controllers::BrightnessController& brightness,
Controllers::MotorController& motorController,
Pinetime::Controllers::Settings& settingsController);
@@ -32,7 +30,6 @@ namespace Pinetime {
private:
Pinetime::Controllers::Battery& batteryController;
Controllers::DateTime& dateTimeController;
- Controllers::BrightnessController& brightness;
Controllers::MotorController& motorController;
Controllers::Settings& settingsController;
diff --git a/src/displayapp/screens/settings/SettingWakeUp.cpp b/src/displayapp/screens/settings/SettingWakeUp.cpp
deleted file mode 100644
index 8339d9a..0000000
--- a/src/displayapp/screens/settings/SettingWakeUp.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-#include "displayapp/screens/settings/SettingWakeUp.h"
-#include <lvgl/lvgl.h>
-#include "displayapp/DisplayApp.h"
-#include "displayapp/screens/Screen.h"
-#include "displayapp/screens/Symbols.h"
-#include "components/settings/Settings.h"
-
-using namespace Pinetime::Applications::Screens;
-
-namespace {
- static void event_handler(lv_obj_t* obj, lv_event_t event) {
- SettingWakeUp* screen = static_cast<SettingWakeUp*>(obj->user_data);
- screen->UpdateSelected(obj, event);
- }
-}
-
-SettingWakeUp::SettingWakeUp(Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::Settings& settingsController)
- : Screen(app), settingsController {settingsController} {
- ignoringEvents = false;
- lv_obj_t* container1 = lv_cont_create(lv_scr_act(), nullptr);
-
- lv_obj_set_style_local_bg_opa(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP);
- lv_obj_set_style_local_pad_all(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 10);
- lv_obj_set_style_local_pad_inner(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 5);
- lv_obj_set_style_local_border_width(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 0);
-
- lv_obj_set_pos(container1, 10, 60);
- lv_obj_set_width(container1, LV_HOR_RES - 20);
- lv_obj_set_height(container1, LV_VER_RES - 50);
- lv_cont_set_layout(container1, LV_LAYOUT_COLUMN_LEFT);
-
- lv_obj_t* title = lv_label_create(lv_scr_act(), nullptr);
- lv_label_set_text_static(title, "Wake Up");
- lv_label_set_align(title, LV_LABEL_ALIGN_CENTER);
- lv_obj_align(title, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 15, 15);
-
- lv_obj_t* icon = lv_label_create(lv_scr_act(), nullptr);
- lv_obj_set_style_local_text_color(icon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_ORANGE);
- lv_label_set_text_static(icon, Symbols::eye);
- lv_label_set_align(icon, LV_LABEL_ALIGN_CENTER);
- lv_obj_align(icon, title, LV_ALIGN_OUT_LEFT_MID, -10, 0);
-
- optionsTotal = 0;
- cbOption[optionsTotal] = lv_checkbox_create(container1, nullptr);
- lv_checkbox_set_text_static(cbOption[optionsTotal], " Single Tap");
- cbOption[optionsTotal]->user_data = this;
- lv_obj_set_event_cb(cbOption[optionsTotal], event_handler);
- if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::SingleTap)) {
- lv_checkbox_set_checked(cbOption[optionsTotal], true);
- }
- optionsTotal++;
- cbOption[optionsTotal] = lv_checkbox_create(container1, nullptr);
- lv_checkbox_set_text_static(cbOption[optionsTotal], " Double Tap");
- cbOption[optionsTotal]->user_data = this;
- lv_obj_set_event_cb(cbOption[optionsTotal], event_handler);
- if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::DoubleTap)) {
- lv_checkbox_set_checked(cbOption[optionsTotal], true);
- }
- optionsTotal++;
- cbOption[optionsTotal] = lv_checkbox_create(container1, nullptr);
- lv_checkbox_set_text_static(cbOption[optionsTotal], " Raise Wrist");
- cbOption[optionsTotal]->user_data = this;
- lv_obj_set_event_cb(cbOption[optionsTotal], event_handler);
- if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::RaiseWrist)) {
- lv_checkbox_set_checked(cbOption[optionsTotal], true);
- }
- optionsTotal++;
-}
-
-SettingWakeUp::~SettingWakeUp() {
- lv_obj_clean(lv_scr_act());
- settingsController.SaveSettings();
-}
-
-void SettingWakeUp::UpdateSelected(lv_obj_t* object, lv_event_t event) {
- using WakeUpMode = Pinetime::Controllers::Settings::WakeUpMode;
- if (event == LV_EVENT_VALUE_CHANGED && !ignoringEvents) {
- ignoringEvents = true;
-
- // Find the index of the checkbox that triggered the event
- int index = 0;
- for (; index < optionsTotal; ++index) {
- if (cbOption[index] == object) {
- break;
- }
- }
-
- // Toggle needed wakeup mode
- auto mode = static_cast<WakeUpMode>(index);
- auto currentState = settingsController.isWakeUpModeOn(mode);
- settingsController.setWakeUpMode(mode, !currentState);
-
- // Update checkbox according to current wakeup modes.
- // This is needed because we can have extra logic when setting or unsetting wakeup modes,
- // for example, when setting SingleTap, DoubleTap is unset and vice versa.
- auto modes = settingsController.getWakeUpModes();
- for (int i = 0; i < optionsTotal; ++i) {
- lv_checkbox_set_checked(cbOption[i], modes[i]);
- }
-
- ignoringEvents = false;
- }
-}
diff --git a/src/displayapp/screens/settings/SettingWakeUp.h b/src/displayapp/screens/settings/SettingWakeUp.h
deleted file mode 100644
index cd244ae..0000000
--- a/src/displayapp/screens/settings/SettingWakeUp.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include <lvgl/lvgl.h>
-#include "components/settings/Settings.h"
-#include "displayapp/screens/Screen.h"
-
-namespace Pinetime {
-
- namespace Applications {
- namespace Screens {
-
- class SettingWakeUp : public Screen {
- public:
- SettingWakeUp(DisplayApp* app, Pinetime::Controllers::Settings& settingsController);
- ~SettingWakeUp() override;
-
- void UpdateSelected(lv_obj_t* object, lv_event_t event);
-
- private:
- Controllers::Settings& settingsController;
- uint8_t optionsTotal;
- lv_obj_t* cbOption[5];
- // When UpdateSelected is called, it uses lv_checkbox_set_checked,
- // which can cause extra events to be fired,
- // which might trigger UpdateSelected again, causing a loop.
- // This variable is used as a mutex to prevent that.
- bool ignoringEvents;
- };
- }
- }
-}
diff --git a/src/displayapp/screens/settings/Settings.cpp b/src/displayapp/screens/settings/Settings.cpp
index 3d257ae..22666a8 100644
--- a/src/displayapp/screens/settings/Settings.cpp
+++ b/src/displayapp/screens/settings/Settings.cpp
@@ -35,8 +35,8 @@ bool Settings::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
std::unique_ptr<Screen> Settings::CreateScreen1() {
std::array<Screens::List::Applications, 4> applications {{
{Symbols::sun, "Display", Apps::SettingDisplay},
- {Symbols::eye, "Wake Up", Apps::SettingWakeUp},
{Symbols::clock, "Time format", Apps::SettingTimeFormat},
+ {Symbols::none, "None", Apps::None},
{Symbols::none, "None", Apps::None}
}};
diff --git a/src/systemtask/Messages.h b/src/systemtask/Messages.h
index 0792089..38a9c8e 100644
--- a/src/systemtask/Messages.h
+++ b/src/systemtask/Messages.h
@@ -3,9 +3,6 @@
namespace Pinetime {
namespace System {
enum class Messages {
- GoToSleep,
- GoToRunning,
- TouchWakeUp,
OnNewTime,
OnNewNotification,
OnNewCall,
@@ -16,9 +13,6 @@ namespace Pinetime {
OnTouchEvent,
HandleButtonEvent,
HandleButtonTimerEvent,
- OnDisplayTaskSleeping,
- EnableSleeping,
- DisableSleeping,
OnNewDay,
OnChargingEvent,
StopRinging,
diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp
index c121808..c333aad 100644
--- a/src/systemtask/SystemTask.cpp
+++ b/src/systemtask/SystemTask.cpp
@@ -28,20 +28,6 @@ namespace {
}
}
-void DimTimerCallback(TimerHandle_t xTimer) {
-
- NRF_LOG_INFO("DimTimerCallback");
- auto sysTask = static_cast<SystemTask*>(pvTimerGetTimerID(xTimer));
- sysTask->OnDim();
-}
-
-void IdleTimerCallback(TimerHandle_t xTimer) {
-
- NRF_LOG_INFO("IdleTimerCallback");
- auto sysTask = static_cast<SystemTask*>(pvTimerGetTimerID(xTimer));
- sysTask->OnIdle();
-}
-
void MeasureBatteryTimerCallback(TimerHandle_t xTimer) {
auto* sysTask = static_cast<SystemTask*>(pvTimerGetTimerID(xTimer));
sysTask->PushMessage(Pinetime::System::Messages::MeasureBatteryTimerExpired);
@@ -185,10 +171,7 @@ void SystemTask::Work() {
batteryController.MeasureVoltage();
- idleTimer = xTimerCreate("idleTimer", pdMS_TO_TICKS(2000), pdFALSE, this, IdleTimerCallback);
- dimTimer = xTimerCreate("dimTimer", pdMS_TO_TICKS(settingsController.GetScreenTimeOut() - 2000), pdFALSE, this, DimTimerCallback);
measureBatteryTimer = xTimerCreate("measureBattery", batteryMeasurementPeriod, pdTRUE, this, MeasureBatteryTimerCallback);
- xTimerStart(dimTimer, 0);
xTimerStart(measureBatteryTimer, portMAX_DELAY);
#pragma clang diagnostic push
@@ -200,75 +183,13 @@ void SystemTask::Work() {
if (xQueueReceive(systemTasksMsgQueue, &msg, 100)) {
Messages message = static_cast<Messages>(msg);
switch (message) {
- case Messages::EnableSleeping:
- // Make sure that exiting an app doesn't enable sleeping,
- // if the exiting was caused by a firmware update
- if (!bleController.IsFirmwareUpdating()) {
- doNotGoToSleep = false;
- }
- ReloadIdleTimer();
- break;
- case Messages::DisableSleeping:
- doNotGoToSleep = true;
- break;
case Messages::UpdateTimeOut:
- xTimerChangePeriod(dimTimer, pdMS_TO_TICKS(settingsController.GetScreenTimeOut() - 2000), 0);
- break;
- case Messages::GoToRunning:
- spi.Wakeup();
-
- // Double Tap needs the touch screen to be in normal mode
- if (!settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::DoubleTap)) {
- touchPanel.Wakeup();
- }
-
- xTimerStart(dimTimer, 0);
- spiNorFlash.Wakeup();
- lcd.Wakeup();
-
- displayApp.PushMessage(Pinetime::Applications::Display::Messages::GoToRunning);
-
- if (!bleController.IsConnected()) {
- nimbleController.RestartFastAdv();
- }
-
- isSleeping = false;
- isWakingUp = false;
- isDimmed = false;
- break;
- case Messages::TouchWakeUp: {
- if (touchHandler.GetNewTouchInfo()) {
- auto gesture = touchHandler.GestureGet();
- if (gesture != Pinetime::Drivers::Cst816S::Gestures::None and
- ((gesture == Pinetime::Drivers::Cst816S::Gestures::DoubleTap and
- settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::DoubleTap)) or
- (gesture == Pinetime::Drivers::Cst816S::Gestures::SingleTap and
- settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::SingleTap)))) {
- GoToRunning();
- }
- }
- } break;
- case Messages::GoToSleep:
- if (doNotGoToSleep) {
- break;
- }
- isGoingToSleep = true;
- NRF_LOG_INFO("[systemtask] Going to sleep");
- xTimerStop(idleTimer, 0);
- xTimerStop(dimTimer, 0);
- displayApp.PushMessage(Pinetime::Applications::Display::Messages::GoToSleep);
break;
case Messages::OnNewTime:
- ReloadIdleTimer();
displayApp.PushMessage(Pinetime::Applications::Display::Messages::UpdateDateTime);
break;
case Messages::OnNewNotification:
if (settingsController.GetNotificationStatus() == Pinetime::Controllers::Settings::Notification::ON) {
- if (isSleeping && !isWakingUp) {
- GoToRunning();
- } else {
- ReloadIdleTimer();
- }
displayApp.PushMessage(Pinetime::Applications::Display::Messages::NewNotification);
}
break;
@@ -276,29 +197,21 @@ void SystemTask::Work() {
motorController.StopRinging();
break;
case Messages::BleConnected:
- ReloadIdleTimer();
isBleDiscoveryTimerRunning = true;
bleDiscoveryTimer = 5;
break;
case Messages::BleFirmwareUpdateStarted:
- doNotGoToSleep = true;
- if (isSleeping && !isWakingUp) {
- GoToRunning();
- }
displayApp.PushMessage(Pinetime::Applications::Display::Messages::BleFirmwareUpdateStarted);
break;
case Messages::BleFirmwareUpdateFinished:
if (bleController.State() == Pinetime::Controllers::Ble::FirmwareUpdateStates::Validated) {
NVIC_SystemReset();
}
- doNotGoToSleep = false;
- xTimerStart(dimTimer, 0);
break;
case Messages::OnTouchEvent:
if (touchHandler.GetNewTouchInfo()) {
touchHandler.UpdateLvglTouchPoint();
}
- ReloadIdleTimer();
displayApp.PushMessage(Pinetime::Applications::Display::Messages::TouchEvent);
break;
case Messages::HandleButtonEvent: {
@@ -307,12 +220,6 @@ void SystemTask::Work() {
action = buttonHandler.HandleEvent(Controllers::ButtonHandler::Events::Release);
} else {
action = buttonHandler.HandleEvent(Controllers::ButtonHandler::Events::Press);
- // This is for faster wakeup, sacrificing special longpress and doubleclick handling while sleeping
- if (IsSleeping()) {
- fastWakeUpDone = true;
- GoToRunning();
- break;
- }
}
HandleButtonAction(action);
} break;
@@ -320,23 +227,6 @@ void SystemTask::Work() {
auto action = buttonHandler.HandleEvent(Controllers::ButtonHandler::Events::Timer);
HandleButtonAction(action);
} break;
- case Messages::OnDisplayTaskSleeping:
- if (BootloaderVersion::IsValid()) {
- // First versions of the bootloader do not expose their version and cannot initialize the SPI NOR FLASH
- // if it's in sleep mode. Avoid bricked device by disabling sleep mode on these versions.
- spiNorFlash.Sleep();
- }
- lcd.Sleep();
- spi.Sleep();
-
- // Double Tap needs the touch screen to be in normal mode
- if (!settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::DoubleTap)) {
- touchPanel.Sleep();
- }
-
- isSleeping = true;
- isGoingToSleep = false;
- break;
case Messages::OnNewDay:
// We might be sleeping (with TWI device disabled.
// Remember we'll have to reset the counter next time we're awake
@@ -345,10 +235,6 @@ void SystemTask::Work() {
case Messages::OnChargingEvent:
batteryController.ReadPowerState();
motorController.RunForDuration(15);
- ReloadIdleTimer();
- if (isSleeping && !isWakingUp) {
- GoToRunning();
- }
break;
case Messages::MeasureBatteryTimerExpired:
batteryController.MeasureVoltage();
@@ -383,14 +269,6 @@ void SystemTask::Work() {
}
void SystemTask::UpdateMotion() {
- if (isGoingToSleep or isWakingUp) {
- return;
- }
-
- 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) {
motionSensor.ResetStepCounter();
stepCounterMustBeReset = false;
@@ -401,27 +279,14 @@ void SystemTask::UpdateMotion() {
motionController.IsSensorOk(motionSensor.IsOk());
motionController.Update(motionValues.x, motionValues.y, motionValues.z);
- if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::RaiseWrist) &&
- motionController.Should_RaiseWake(isSleeping)) {
- GoToRunning();
- }
}
void SystemTask::HandleButtonAction(Controllers::ButtonActions action) {
- if (IsSleeping()) {
- return;
- }
-
- ReloadIdleTimer();
-
using Actions = Controllers::ButtonActions;
switch (action) {
case Actions::Click:
- // If the first action after fast wakeup is a click, it should be ignored.
- if (!fastWakeUpDone && !isGoingToSleep) {
- displayApp.PushMessage(Applications::Display::Messages::ButtonPushed);
- }
+ displayApp.PushMessage(Applications::Display::Messages::ButtonPushed);
break;
case Actions::DoubleClick:
displayApp.PushMessage(Applications::Display::Messages::ButtonDoubleClicked);
@@ -435,37 +300,13 @@ void SystemTask::HandleButtonAction(Controllers::ButtonActions action) {
default:
return;
}
-
- fastWakeUpDone = false;
-}
-
-void SystemTask::GoToRunning() {
- if (isGoingToSleep or (not isSleeping) or isWakingUp) {
- return;
- }
- isWakingUp = true;
- PushMessage(Messages::GoToRunning);
}
void SystemTask::OnTouchEvent() {
- if (isGoingToSleep) {
- return;
- }
- if (!isSleeping) {
- PushMessage(Messages::OnTouchEvent);
- } else if (!isWakingUp) {
- if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::SingleTap) or
- settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::DoubleTap)) {
- PushMessage(Messages::TouchWakeUp);
- }
- }
+ PushMessage(Messages::OnTouchEvent);
}
void SystemTask::PushMessage(System::Messages msg) {
- if (msg == Messages::GoToSleep && !doNotGoToSleep) {
- isGoingToSleep = true;
- }
-
if (in_isr()) {
BaseType_t xHigherPriorityTaskWoken;
xHigherPriorityTaskWoken = pdFALSE;
@@ -478,33 +319,3 @@ void SystemTask::PushMessage(System::Messages msg) {
xQueueSend(systemTasksMsgQueue, &msg, portMAX_DELAY);
}
}
-
-void SystemTask::OnDim() {
- if (doNotGoToSleep) {
- return;
- }
- NRF_LOG_INFO("Dim timeout -> Dim screen")
- displayApp.PushMessage(Pinetime::Applications::Display::Messages::DimScreen);
- xTimerStart(idleTimer, 0);
- isDimmed = true;
-}
-
-void SystemTask::OnIdle() {
- if (doNotGoToSleep) {
- return;
- }
- NRF_LOG_INFO("Idle timeout -> Going to sleep")
- PushMessage(Messages::GoToSleep);
-}
-
-void SystemTask::ReloadIdleTimer() {
- if (isSleeping || isGoingToSleep) {
- return;
- }
- if (isDimmed) {
- displayApp.PushMessage(Pinetime::Applications::Display::Messages::RestoreBrightness);
- isDimmed = false;
- }
- xTimerReset(dimTimer, 0);
- xTimerStop(idleTimer, 0);
-}
diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h
index 600d13e..a632469 100644
--- a/src/systemtask/SystemTask.h
+++ b/src/systemtask/SystemTask.h
@@ -72,17 +72,10 @@ namespace Pinetime {
void OnTouchEvent();
- void OnIdle();
- void OnDim();
-
Pinetime::Controllers::NimbleController& nimble() {
return nimbleController;
};
- bool IsSleeping() const {
- return isSleeping;
- }
-
private:
TaskHandle_t taskHandle;
@@ -97,10 +90,6 @@ namespace Pinetime {
Pinetime::Controllers::Ble& bleController;
Pinetime::Controllers::DateTime& dateTimeController;
QueueHandle_t systemTasksMsgQueue;
- std::atomic<bool> isSleeping {false};
- std::atomic<bool> isGoingToSleep {false};
- std::atomic<bool> isWakingUp {false};
- std::atomic<bool> isDimmed {false};
Pinetime::Drivers::Watchdog& watchdog;
Pinetime::Controllers::NotificationManager& notificationManager;
Pinetime::Controllers::MotorController& motorController;
@@ -115,18 +104,12 @@ namespace Pinetime {
static void Process(void* instance);
void Work();
- void ReloadIdleTimer();
bool isBleDiscoveryTimerRunning = false;
uint8_t bleDiscoveryTimer = 0;
- TimerHandle_t dimTimer;
- TimerHandle_t idleTimer;
TimerHandle_t measureBatteryTimer;
- bool doNotGoToSleep = false;
void HandleButtonAction(Controllers::ButtonActions action);
- bool fastWakeUpDone = false;
- void GoToRunning();
void UpdateMotion();
bool stepCounterMustBeReset = false;
static constexpr TickType_t batteryMeasurementPeriod = pdMS_TO_TICKS(10 * 60 * 1000);