diff options
| author | Michele Bini <michele.bini@gmail.com> | 2022-03-25 02:56:04 (GMT) |
|---|---|---|
| committer | Michele Bini <michele.bini@gmail.com> | 2022-03-25 03:20:18 (GMT) |
| commit | ac8bc2a0a0662b19ee6c286f105dac20a375a9f4 (patch) | |
| tree | 55b6d51236a65d7be871cb369f0c1d373bde3dae | |
| parent | 0dcdc37ab00fbc73932df94ec67f39421c266a6d (diff) | |
Remove stopwatch and countdown timer
| -rw-r--r-- | src/CMakeLists.txt | 7 | ||||
| -rw-r--r-- | src/components/motor/MotorController.cpp | 1 | ||||
| -rw-r--r-- | src/components/timer/TimerController.cpp | 69 | ||||
| -rw-r--r-- | src/components/timer/TimerController.h | 37 | ||||
| -rw-r--r-- | src/displayapp/Apps.h | 2 | ||||
| -rw-r--r-- | src/displayapp/DisplayApp.cpp | 18 | ||||
| -rw-r--r-- | src/displayapp/DisplayApp.h | 3 | ||||
| -rw-r--r-- | src/displayapp/DisplayAppRecovery.cpp | 1 | ||||
| -rw-r--r-- | src/displayapp/DisplayAppRecovery.h | 1 | ||||
| -rw-r--r-- | src/displayapp/Messages.h | 1 | ||||
| -rw-r--r-- | src/displayapp/screens/ApplicationList.cpp | 2 | ||||
| -rw-r--r-- | src/displayapp/screens/StopWatch.cpp | 200 | ||||
| -rw-r--r-- | src/displayapp/screens/StopWatch.h | 91 | ||||
| -rw-r--r-- | src/displayapp/screens/Timer.cpp | 161 | ||||
| -rw-r--r-- | src/displayapp/screens/Timer.h | 39 | ||||
| -rw-r--r-- | src/displayapp/screens/settings/Settings.cpp | 4 | ||||
| -rw-r--r-- | src/main.cpp | 3 | ||||
| -rw-r--r-- | src/systemtask/Messages.h | 1 | ||||
| -rw-r--r-- | src/systemtask/SystemTask.cpp | 13 | ||||
| -rw-r--r-- | src/systemtask/SystemTask.h | 3 |
20 files changed, 2 insertions, 655 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 465cdce..2c17092 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -398,7 +398,6 @@ list(APPEND SOURCE_FILES displayapp/screens/Tile.cpp displayapp/screens/Meter.cpp displayapp/screens/InfiniPaint.cpp - displayapp/screens/StopWatch.cpp displayapp/screens/BatteryIcon.cpp displayapp/screens/BleIcon.cpp displayapp/screens/NotificationIcon.cpp @@ -416,7 +415,6 @@ list(APPEND SOURCE_FILES displayapp/screens/List.cpp displayapp/screens/BatteryInfo.cpp displayapp/screens/Steps.cpp - displayapp/screens/Timer.cpp displayapp/screens/Error.cpp displayapp/screens/Alarm.cpp displayapp/screens/Styles.cpp @@ -472,7 +470,6 @@ list(APPEND SOURCE_FILES components/firmwarevalidator/FirmwareValidator.cpp components/motor/MotorController.cpp components/settings/Settings.cpp - components/timer/TimerController.cpp components/alarm/AlarmController.cpp components/fs/FS.cpp drivers/Cst816s.cpp @@ -540,7 +537,6 @@ list(APPEND RECOVERY_SOURCE_FILES components/ble/MotionService.cpp components/firmwarevalidator/FirmwareValidator.cpp components/settings/Settings.cpp - components/timer/TimerController.cpp components/alarm/AlarmController.cpp drivers/Cst816s.cpp FreeRTOS/port.c @@ -598,7 +594,6 @@ set(INCLUDE_FILES displayapp/screens/Tile.h displayapp/screens/Meter.h displayapp/screens/InfiniPaint.h - displayapp/screens/StopWatch.h displayapp/screens/BatteryIcon.h displayapp/screens/BleIcon.h displayapp/screens/NotificationIcon.h @@ -613,7 +608,6 @@ set(INCLUDE_FILES displayapp/screens/Notifications.h displayapp/screens/HeartRate.h displayapp/screens/Motion.h - displayapp/screens/Timer.h displayapp/screens/Alarm.h displayapp/Colors.h drivers/St7789.h @@ -651,7 +645,6 @@ set(INCLUDE_FILES components/ble/HeartRateService.h components/ble/MotionService.h components/settings/Settings.h - components/timer/TimerController.h components/alarm/AlarmController.h drivers/Cst816s.h FreeRTOS/portmacro.h diff --git a/src/components/motor/MotorController.cpp b/src/components/motor/MotorController.cpp index c794a02..bee07fb 100644 --- a/src/components/motor/MotorController.cpp +++ b/src/components/motor/MotorController.cpp @@ -12,7 +12,6 @@ using namespace Pinetime::Controllers; void MotorController::Init() { nrf_gpio_cfg_output(PinMap::Motor); nrf_gpio_pin_set(PinMap::Motor); - app_timer_init(); app_timer_create(&shortVibTimer, APP_TIMER_MODE_SINGLE_SHOT, StopMotor); app_timer_create(&longVibTimer, APP_TIMER_MODE_REPEATED, Ring); diff --git a/src/components/timer/TimerController.cpp b/src/components/timer/TimerController.cpp deleted file mode 100644 index 79e44d6..0000000 --- a/src/components/timer/TimerController.cpp +++ /dev/null @@ -1,69 +0,0 @@ -// -// Created by florian on 16.05.21. -// - -#include "components/timer/TimerController.h" -#include "systemtask/SystemTask.h" -#include "app_timer.h" -#include "task.h" - -using namespace Pinetime::Controllers; - - -APP_TIMER_DEF(timerAppTimer); - -namespace { - void TimerEnd(void* p_context) { - auto* controller = static_cast<Pinetime::Controllers::TimerController*> (p_context); - if(controller != nullptr) - controller->OnTimerEnd(); - } -} - - -void TimerController::Init() { - app_timer_create(&timerAppTimer, APP_TIMER_MODE_SINGLE_SHOT, TimerEnd); -} - -void TimerController::StartTimer(uint32_t duration) { - app_timer_stop(timerAppTimer); - auto currentTicks = xTaskGetTickCount(); - app_timer_start(timerAppTimer, APP_TIMER_TICKS(duration), this); - endTicks = currentTicks + APP_TIMER_TICKS(duration); - timerRunning = true; -} - -uint32_t TimerController::GetTimeRemaining() { - if (!timerRunning) { - return 0; - } - auto currentTicks = xTaskGetTickCount(); - - TickType_t deltaTicks = 0; - if (currentTicks > endTicks) { - deltaTicks = 0xffffffff - currentTicks; - deltaTicks += (endTicks + 1); - } else { - deltaTicks = endTicks - currentTicks; - } - - return (static_cast<TickType_t>(deltaTicks) / static_cast<TickType_t>(configTICK_RATE_HZ)) * 1000; -} - -void TimerController::StopTimer() { - app_timer_stop(timerAppTimer); - timerRunning = false; -} - -bool TimerController::IsRunning() { - return timerRunning; -} -void TimerController::OnTimerEnd() { - timerRunning = false; - if(systemTask != nullptr) - systemTask->PushMessage(System::Messages::OnTimerDone); -} - -void TimerController::Register(Pinetime::System::SystemTask* systemTask) { - this->systemTask = systemTask; -} diff --git a/src/components/timer/TimerController.h b/src/components/timer/TimerController.h deleted file mode 100644 index fa7bc90..0000000 --- a/src/components/timer/TimerController.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -#include <cstdint> -#include "app_timer.h" -#include "portmacro_cmsis.h" - -namespace Pinetime { - namespace System { - class SystemTask; - } - namespace Controllers { - - class TimerController { - public: - TimerController() = default; - - void Init(); - - void StartTimer(uint32_t duration); - - void StopTimer(); - - uint32_t GetTimeRemaining(); - - bool IsRunning(); - - void OnTimerEnd(); - - void Register(System::SystemTask* systemTask); - - private: - System::SystemTask* systemTask = nullptr; - TickType_t endTicks; - bool timerRunning = false; - }; - } -}
\ No newline at end of file diff --git a/src/displayapp/Apps.h b/src/displayapp/Apps.h index 11c71d2..42a4ea0 100644 --- a/src/displayapp/Apps.h +++ b/src/displayapp/Apps.h @@ -11,13 +11,11 @@ namespace Pinetime { FirmwareValidation, NotificationsPreview, Notifications, - Timer, Alarm, FlashLight, BatteryInfo, Paint, HeartRate, - StopWatch, Motion, Steps, QuickSettings, diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp index 229ed79..077154d 100644 --- a/src/displayapp/DisplayApp.cpp +++ b/src/displayapp/DisplayApp.cpp @@ -2,7 +2,6 @@ #include <libraries/log/nrf_log.h> #include "displayapp/screens/HeartRate.h" #include "displayapp/screens/Motion.h" -#include "displayapp/screens/Timer.h" #include "displayapp/screens/Alarm.h" #include "components/battery/BatteryController.h" #include "components/ble/BleController.h" @@ -16,7 +15,6 @@ #include "displayapp/screens/FirmwareUpdate.h" #include "displayapp/screens/FirmwareValidation.h" #include "displayapp/screens/InfiniPaint.h" -#include "displayapp/screens/StopWatch.h" #include "displayapp/screens/Meter.h" #include "displayapp/screens/Notifications.h" #include "displayapp/screens/SystemInfo.h" @@ -87,7 +85,6 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd, Controllers::Settings& settingsController, Pinetime::Controllers::MotorController& motorController, Pinetime::Controllers::MotionController& motionController, - Pinetime::Controllers::TimerController& timerController, Pinetime::Controllers::AlarmController& alarmController, Pinetime::Controllers::BrightnessController& brightnessController, Pinetime::Controllers::TouchHandler& touchHandler) @@ -103,7 +100,6 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd, settingsController {settingsController}, motorController {motorController}, motionController {motionController}, - timerController {timerController}, alarmController {alarmController}, brightnessController {brightnessController}, touchHandler {touchHandler} { @@ -195,14 +191,6 @@ void DisplayApp::Refresh() { case Messages::NewNotification: LoadApp(Apps::NotificationsPreview, DisplayApp::FullRefreshDirections::Down); break; - case Messages::TimerDone: - if (currentApp == Apps::Timer) { - auto* timer = static_cast<Screens::Timer*>(currentScreen.get()); - timer->setDone(); - } else { - LoadApp(Apps::Timer, DisplayApp::FullRefreshDirections::Down); - } - break; case Messages::AlarmTriggered: if (currentApp == Apps::Alarm) { auto* alarm = static_cast<Screens::Alarm*>(currentScreen.get()); @@ -363,9 +351,6 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction) this, notificationManager, systemTask->nimble().alertService(), motorController, *systemTask, Screens::Notifications::Modes::Preview); ReturnApp(Apps::Clock, FullRefreshDirections::Up, TouchEvents::SwipeUp); break; - case Apps::Timer: - currentScreen = std::make_unique<Screens::Timer>(this, timerController); - break; case Apps::Alarm: currentScreen = std::make_unique<Screens::Alarm>(this, alarmController, settingsController, *systemTask); break; @@ -421,9 +406,6 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction) currentScreen = std::make_unique<Screens::FlashLight>(this, *systemTask, brightnessController); ReturnApp(Apps::QuickSettings, FullRefreshDirections::Down, TouchEvents::SwipeDown); break; - case Apps::StopWatch: - currentScreen = std::make_unique<Screens::StopWatch>(this, *systemTask); - break; case Apps::Paint: currentScreen = std::make_unique<Screens::InfiniPaint>(this, lvgl, motorController); break; diff --git a/src/displayapp/DisplayApp.h b/src/displayapp/DisplayApp.h index 1eaefaa..3c8845c 100644 --- a/src/displayapp/DisplayApp.h +++ b/src/displayapp/DisplayApp.h @@ -13,7 +13,6 @@ #include "components/firmwarevalidator/FirmwareValidator.h" #include "components/settings/Settings.h" #include "displayapp/screens/Screen.h" -#include "components/timer/TimerController.h" #include "components/alarm/AlarmController.h" #include "touchhandler/TouchHandler.h" @@ -59,7 +58,6 @@ namespace Pinetime { Controllers::Settings& settingsController, Pinetime::Controllers::MotorController& motorController, Pinetime::Controllers::MotionController& motionController, - Pinetime::Controllers::TimerController& timerController, Pinetime::Controllers::AlarmController& alarmController, Pinetime::Controllers::BrightnessController& brightnessController, Pinetime::Controllers::TouchHandler& touchHandler); @@ -86,7 +84,6 @@ namespace Pinetime { Pinetime::Controllers::Settings& settingsController; Pinetime::Controllers::MotorController& motorController; Pinetime::Controllers::MotionController& motionController; - Pinetime::Controllers::TimerController& timerController; Pinetime::Controllers::AlarmController& alarmController; Pinetime::Controllers::BrightnessController &brightnessController; Pinetime::Controllers::TouchHandler& touchHandler; diff --git a/src/displayapp/DisplayAppRecovery.cpp b/src/displayapp/DisplayAppRecovery.cpp index 9d6eb22..d1c3f1d 100644 --- a/src/displayapp/DisplayAppRecovery.cpp +++ b/src/displayapp/DisplayAppRecovery.cpp @@ -21,7 +21,6 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd, Controllers::Settings& settingsController, Pinetime::Controllers::MotorController& motorController, Pinetime::Controllers::MotionController& motionController, - Pinetime::Controllers::TimerController& timerController, Pinetime::Controllers::AlarmController& alarmController, Pinetime::Controllers::BrightnessController& brightnessController, Pinetime::Controllers::TouchHandler& touchHandler) diff --git a/src/displayapp/DisplayAppRecovery.h b/src/displayapp/DisplayAppRecovery.h index 61f1c9b..c3f722c 100644 --- a/src/displayapp/DisplayAppRecovery.h +++ b/src/displayapp/DisplayAppRecovery.h @@ -56,7 +56,6 @@ namespace Pinetime { Controllers::Settings& settingsController, Pinetime::Controllers::MotorController& motorController, Pinetime::Controllers::MotionController& motionController, - Pinetime::Controllers::TimerController& timerController, Pinetime::Controllers::AlarmController& alarmController, Pinetime::Controllers::BrightnessController& brightnessController, Pinetime::Controllers::TouchHandler& touchHandler); diff --git a/src/displayapp/Messages.h b/src/displayapp/Messages.h index 57d02be..d6929ff 100644 --- a/src/displayapp/Messages.h +++ b/src/displayapp/Messages.h @@ -14,7 +14,6 @@ namespace Pinetime { ButtonLongerPressed, ButtonDoubleClicked, NewNotification, - TimerDone, BleFirmwareUpdateStarted, UpdateTimeOut, DimScreen, diff --git a/src/displayapp/screens/ApplicationList.cpp b/src/displayapp/screens/ApplicationList.cpp index e584bf7..eac2dfb 100644 --- a/src/displayapp/screens/ApplicationList.cpp +++ b/src/displayapp/screens/ApplicationList.cpp @@ -40,10 +40,8 @@ bool ApplicationList::OnTouchEvent(Pinetime::Applications::TouchEvents event) { std::unique_ptr<Screen> ApplicationList::CreateScreen1() { std::array<Screens::Tile::Applications, 6> applications {{ - {Symbols::stopWatch, Apps::StopWatch}, {Symbols::shoe, Apps::Steps}, {Symbols::heartBeat, Apps::HeartRate}, - {Symbols::hourGlass, Apps::Timer}, }}; return std::make_unique<Screens::Tile>(0, 2, app, settingsController, batteryController, dateTimeController, applications); diff --git a/src/displayapp/screens/StopWatch.cpp b/src/displayapp/screens/StopWatch.cpp deleted file mode 100644 index 8749839..0000000 --- a/src/displayapp/screens/StopWatch.cpp +++ /dev/null @@ -1,200 +0,0 @@ -#include "displayapp/screens/StopWatch.h" - -#include "displayapp/screens/Screen.h" -#include "displayapp/screens/Symbols.h" -#include <lvgl/lvgl.h> -#include <FreeRTOS.h> -#include <task.h> - -using namespace Pinetime::Applications::Screens; - -// Anonymous namespace for local functions -namespace { - TimeSeparated_t convertTicksToTimeSegments(const TickType_t timeElapsed) { - const int timeElapsedMillis = (static_cast<float>(timeElapsed) / static_cast<float>(configTICK_RATE_HZ)) * 1000; - - const int hundredths = (timeElapsedMillis % 1000) / 10; // Get only the first two digits and ignore the last - const int secs = (timeElapsedMillis / 1000) % 60; - const int mins = (timeElapsedMillis / 1000) / 60; - return TimeSeparated_t {mins, secs, hundredths}; - } - - TickType_t calculateDelta(const TickType_t startTime, const TickType_t currentTime) { - TickType_t delta = 0; - // Take care of overflow - if (startTime > currentTime) { - delta = 0xffffffff - startTime; - delta += (currentTime + 1); - } else { - delta = currentTime - startTime; - } - return delta; - } -} - -static void play_pause_event_handler(lv_obj_t* obj, lv_event_t event) { - auto stopWatch = static_cast<StopWatch*>(obj->user_data); - stopWatch->playPauseBtnEventHandler(event); -} - -static void stop_lap_event_handler(lv_obj_t* obj, lv_event_t event) { - auto stopWatch = static_cast<StopWatch*>(obj->user_data); - stopWatch->stopLapBtnEventHandler(event); -} - -StopWatch::StopWatch(DisplayApp* app, System::SystemTask& systemTask) - : Screen(app), - systemTask {systemTask}, - currentState {States::Init}, - startTime {}, - oldTimeElapsed {}, - currentTimeSeparated {}, - lapBuffer {}, - lapNr {} { - - time = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_text_font(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_76); - lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); - lv_label_set_text(time, "00:00"); - lv_obj_align(time, lv_scr_act(), LV_ALIGN_CENTER, 0, -45); - - msecTime = lv_label_create(lv_scr_act(), nullptr); - // lv_obj_set_style_local_text_font(msecTime, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_bold_20); - lv_obj_set_style_local_text_color(msecTime, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); - lv_label_set_text(msecTime, "00"); - lv_obj_align(msecTime, lv_scr_act(), LV_ALIGN_CENTER, 0, 3); - - btnPlayPause = lv_btn_create(lv_scr_act(), nullptr); - btnPlayPause->user_data = this; - lv_obj_set_event_cb(btnPlayPause, play_pause_event_handler); - lv_obj_set_height(btnPlayPause, 50); - lv_obj_set_width(btnPlayPause, 115); - lv_obj_align(btnPlayPause, lv_scr_act(), LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); - txtPlayPause = lv_label_create(btnPlayPause, nullptr); - lv_label_set_text(txtPlayPause, Symbols::play); - - btnStopLap = lv_btn_create(lv_scr_act(), nullptr); - btnStopLap->user_data = this; - lv_obj_set_event_cb(btnStopLap, stop_lap_event_handler); - lv_obj_set_height(btnStopLap, 50); - lv_obj_set_width(btnStopLap, 115); - lv_obj_align(btnStopLap, lv_scr_act(), LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); - lv_obj_set_style_local_bg_color(btnStopLap, LV_BTN_PART_MAIN, LV_STATE_DISABLED, lv_color_hex(0x080808)); - txtStopLap = lv_label_create(btnStopLap, nullptr); - lv_obj_set_style_local_text_color(txtStopLap, LV_BTN_PART_MAIN, LV_STATE_DISABLED, lv_color_hex(0x888888)); - lv_label_set_text(txtStopLap, Symbols::stop); - lv_obj_set_state(btnStopLap, LV_STATE_DISABLED); - lv_obj_set_state(txtStopLap, LV_STATE_DISABLED); - - lapOneText = lv_label_create(lv_scr_act(), nullptr); - // lv_obj_set_style_local_text_font(lapOneText, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_bold_20); - lv_obj_set_style_local_text_color(lapOneText, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_YELLOW); - lv_obj_align(lapOneText, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 50, 30); - lv_label_set_text(lapOneText, ""); - - lapTwoText = lv_label_create(lv_scr_act(), nullptr); - // lv_obj_set_style_local_text_font(lapTwoText, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_bold_20); - lv_obj_set_style_local_text_color(lapTwoText, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_YELLOW); - lv_obj_align(lapTwoText, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 50, 55); - lv_label_set_text(lapTwoText, ""); - - taskRefresh = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this); -} - -StopWatch::~StopWatch() { - lv_task_del(taskRefresh); - systemTask.PushMessage(Pinetime::System::Messages::EnableSleeping); - lv_obj_clean(lv_scr_act()); -} - -void StopWatch::reset() { - currentState = States::Init; - oldTimeElapsed = 0; - lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); - lv_obj_set_style_local_text_color(msecTime, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); - - lv_label_set_text(time, "00:00"); - lv_label_set_text(msecTime, "00"); - - lv_label_set_text(lapOneText, ""); - lv_label_set_text(lapTwoText, ""); - lapBuffer.clearBuffer(); - lapNr = 0; - lv_obj_set_state(btnStopLap, LV_STATE_DISABLED); - lv_obj_set_state(txtStopLap, LV_STATE_DISABLED); -} - -void StopWatch::start() { - lv_obj_set_state(btnStopLap, LV_STATE_DEFAULT); - lv_obj_set_state(txtStopLap, LV_STATE_DEFAULT); - lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GREEN); - lv_obj_set_style_local_text_color(msecTime, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GREEN); - lv_label_set_text(txtPlayPause, Symbols::pause); - lv_label_set_text(txtStopLap, Symbols::lapsFlag); - startTime = xTaskGetTickCount(); - currentState = States::Running; - systemTask.PushMessage(Pinetime::System::Messages::DisableSleeping); -} - -void StopWatch::pause() { - startTime = 0; - // Store the current time elapsed in cache - oldTimeElapsed += timeElapsed; - currentState = States::Halted; - lv_label_set_text(txtPlayPause, Symbols::play); - lv_label_set_text(txtStopLap, Symbols::stop); - lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_YELLOW); - lv_obj_set_style_local_text_color(msecTime, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_YELLOW); - systemTask.PushMessage(Pinetime::System::Messages::EnableSleeping); -} - -void StopWatch::Refresh() { - if (currentState == States::Running) { - timeElapsed = calculateDelta(startTime, xTaskGetTickCount()); - currentTimeSeparated = convertTicksToTimeSegments((oldTimeElapsed + timeElapsed)); - - lv_label_set_text_fmt(time, "%02d:%02d", currentTimeSeparated.mins, currentTimeSeparated.secs); - lv_label_set_text_fmt(msecTime, "%02d", currentTimeSeparated.hundredths); - } -} - -void StopWatch::playPauseBtnEventHandler(lv_event_t event) { - if (event != LV_EVENT_CLICKED) { - return; - } - if (currentState == States::Init) { - start(); - } else if (currentState == States::Running) { - pause(); - } else if (currentState == States::Halted) { - start(); - } -} - -void StopWatch::stopLapBtnEventHandler(lv_event_t event) { - if (event != LV_EVENT_CLICKED) { - return; - } - // If running, then this button is used to save laps - if (currentState == States::Running) { - lapBuffer.addLaps(currentTimeSeparated); - lapNr++; - if (lapBuffer[1]) { - lv_label_set_text_fmt( - lapOneText, "#%2d %2d:%02d.%02d", (lapNr - 1), lapBuffer[1]->mins, lapBuffer[1]->secs, lapBuffer[1]->hundredths); - } - if (lapBuffer[0]) { - lv_label_set_text_fmt(lapTwoText, "#%2d %2d:%02d.%02d", lapNr, lapBuffer[0]->mins, lapBuffer[0]->secs, lapBuffer[0]->hundredths); - } - } else if (currentState == States::Halted) { - reset(); - } -} - -bool StopWatch::OnButtonPushed() { - if (currentState == States::Running) { - pause(); - return true; - } - return false; -} diff --git a/src/displayapp/screens/StopWatch.h b/src/displayapp/screens/StopWatch.h deleted file mode 100644 index 06193f6..0000000 --- a/src/displayapp/screens/StopWatch.h +++ /dev/null @@ -1,91 +0,0 @@ -#pragma once - -#include "displayapp/screens/Screen.h" -#include "components/datetime/DateTimeController.h" -#include "displayapp/LittleVgl.h" - -#include <FreeRTOS.h> -#include "portmacro_cmsis.h" - -#include <array> -#include "systemtask/SystemTask.h" - -namespace Pinetime::Applications::Screens { - - enum class States { Init, Running, Halted }; - - struct TimeSeparated_t { - int mins; - int secs; - int hundredths; - }; - - // A simple buffer to hold the latest two laps - template <int N> struct LapTextBuffer_t { - LapTextBuffer_t() : buffer {}, currentSize {}, capacity {N}, head {-1} { - } - - void addLaps(const TimeSeparated_t& timeVal) { - head++; - head %= capacity; - buffer[head] = timeVal; - - if (currentSize < capacity) { - currentSize++; - } - } - - void clearBuffer() { - buffer = {}; - currentSize = 0; - head = -1; - } - - TimeSeparated_t* operator[](std::size_t idx) { - // Sanity check for out-of-bounds - if (idx >= 0 && idx < capacity) { - if (idx < currentSize) { - // This transformation is to ensure that head is always pointing to index 0. - const auto transformed_idx = (head - idx) % capacity; - return (&buffer[transformed_idx]); - } - } - return nullptr; - } - - private: - std::array<TimeSeparated_t, N> buffer; - uint8_t currentSize; - uint8_t capacity; - int8_t head; - }; - - class StopWatch : public Screen { - public: - StopWatch(DisplayApp* app, System::SystemTask& systemTask); - ~StopWatch() override; - void Refresh() override; - - void playPauseBtnEventHandler(lv_event_t event); - void stopLapBtnEventHandler(lv_event_t event); - bool OnButtonPushed() override; - - void reset(); - void start(); - void pause(); - - private: - Pinetime::System::SystemTask& systemTask; - TickType_t timeElapsed; - States currentState; - TickType_t startTime; - TickType_t oldTimeElapsed; - TimeSeparated_t currentTimeSeparated; // Holds Mins, Secs, millisecs - LapTextBuffer_t<2> lapBuffer; - int lapNr = 0; - lv_obj_t *time, *msecTime, *btnPlayPause, *btnStopLap, *txtPlayPause, *txtStopLap; - lv_obj_t *lapOneText, *lapTwoText; - - lv_task_t* taskRefresh; - }; -} diff --git a/src/displayapp/screens/Timer.cpp b/src/displayapp/screens/Timer.cpp deleted file mode 100644 index a5e4019..0000000 --- a/src/displayapp/screens/Timer.cpp +++ /dev/null @@ -1,161 +0,0 @@ -#include "displayapp/screens/Timer.h" - -#include "displayapp/screens/Screen.h" -#include "displayapp/screens/Symbols.h" -#include <lvgl/lvgl.h> - -using namespace Pinetime::Applications::Screens; - -static void btnEventHandler(lv_obj_t* obj, lv_event_t event) { - Timer* screen = static_cast<Timer*>(obj->user_data); - screen->OnButtonEvent(obj, event); -} - -void Timer::createButtons() { - btnMinutesUp = lv_btn_create(lv_scr_act(), nullptr); - btnMinutesUp->user_data = this; - lv_obj_set_event_cb(btnMinutesUp, btnEventHandler); - lv_obj_align(btnMinutesUp, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 20, -80); - lv_obj_set_height(btnMinutesUp, 40); - lv_obj_set_width(btnMinutesUp, 60); - txtMUp = lv_label_create(btnMinutesUp, nullptr); - lv_label_set_text(txtMUp, "+"); - - btnMinutesDown = lv_btn_create(lv_scr_act(), nullptr); - btnMinutesDown->user_data = this; - lv_obj_set_event_cb(btnMinutesDown, btnEventHandler); - lv_obj_align(btnMinutesDown, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 20, +40); - lv_obj_set_height(btnMinutesDown, 40); - lv_obj_set_width(btnMinutesDown, 60); - txtMDown = lv_label_create(btnMinutesDown, nullptr); - lv_label_set_text(txtMDown, "-"); - - btnSecondsUp = lv_btn_create(lv_scr_act(), nullptr); - btnSecondsUp->user_data = this; - lv_obj_set_event_cb(btnSecondsUp, btnEventHandler); - lv_obj_align(btnSecondsUp, lv_scr_act(), LV_ALIGN_IN_RIGHT_MID, 10, -80); - lv_obj_set_height(btnSecondsUp, 40); - lv_obj_set_width(btnSecondsUp, 60); - txtSUp = lv_label_create(btnSecondsUp, nullptr); - lv_label_set_text(txtSUp, "+"); - - btnSecondsDown = lv_btn_create(lv_scr_act(), nullptr); - btnSecondsDown->user_data = this; - lv_obj_set_event_cb(btnSecondsDown, btnEventHandler); - lv_obj_align(btnSecondsDown, lv_scr_act(), LV_ALIGN_IN_RIGHT_MID, 10, +40); - lv_obj_set_height(btnSecondsDown, 40); - lv_obj_set_width(btnSecondsDown, 60); - txtSDown = lv_label_create(btnSecondsDown, nullptr); - lv_label_set_text(txtSDown, "-"); -} - -Timer::Timer(DisplayApp* app, Controllers::TimerController& timerController) - : Screen(app), running {true}, timerController {timerController} { - - time = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_text_font(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_76); - lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); - - uint32_t seconds = timerController.GetTimeRemaining() / 1000; - lv_label_set_text_fmt(time, "%02lu:%02lu", seconds / 60, seconds % 60); - - lv_obj_align(time, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, -20); - - btnPlayPause = lv_btn_create(lv_scr_act(), nullptr); - btnPlayPause->user_data = this; - lv_obj_set_event_cb(btnPlayPause, btnEventHandler); - lv_obj_align(btnPlayPause, lv_scr_act(), LV_ALIGN_IN_BOTTOM_MID, 0, -10); - lv_obj_set_height(btnPlayPause, 40); - txtPlayPause = lv_label_create(btnPlayPause, nullptr); - if (timerController.IsRunning()) { - lv_label_set_text(txtPlayPause, Symbols::pause); - } else { - lv_label_set_text(txtPlayPause, Symbols::play); - createButtons(); - } - - taskRefresh = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this); -} - -Timer::~Timer() { - lv_task_del(taskRefresh); - lv_obj_clean(lv_scr_act()); -} - -void Timer::Refresh() { - if (timerController.IsRunning()) { - uint32_t seconds = timerController.GetTimeRemaining() / 1000; - lv_label_set_text_fmt(time, "%02lu:%02lu", seconds / 60, seconds % 60); - } -} - -void Timer::OnButtonEvent(lv_obj_t* obj, lv_event_t event) { - if (event == LV_EVENT_CLICKED) { - if (obj == btnPlayPause) { - if (timerController.IsRunning()) { - lv_label_set_text(txtPlayPause, Symbols::play); - uint32_t seconds = timerController.GetTimeRemaining() / 1000; - minutesToSet = seconds / 60; - secondsToSet = seconds % 60; - timerController.StopTimer(); - createButtons(); - - } else if (secondsToSet + minutesToSet > 0) { - lv_label_set_text(txtPlayPause, Symbols::pause); - timerController.StartTimer((secondsToSet + minutesToSet * 60) * 1000); - - lv_obj_del(btnSecondsDown); - btnSecondsDown = nullptr; - lv_obj_del(btnSecondsUp); - btnSecondsUp = nullptr; - lv_obj_del(btnMinutesDown); - btnMinutesDown = nullptr; - lv_obj_del(btnMinutesUp); - btnMinutesUp = nullptr; - } - } else { - if (!timerController.IsRunning()) { - if (obj == btnMinutesUp) { - if (minutesToSet >= 59) { - minutesToSet = 0; - } else { - minutesToSet++; - } - lv_label_set_text_fmt(time, "%02d:%02d", minutesToSet, secondsToSet); - - } else if (obj == btnMinutesDown) { - if (minutesToSet == 0) { - minutesToSet = 59; - } else { - minutesToSet--; - } - lv_label_set_text_fmt(time, "%02d:%02d", minutesToSet, secondsToSet); - - } else if (obj == btnSecondsUp) { - if (secondsToSet >= 59) { - secondsToSet = 0; - } else { - secondsToSet++; - } - lv_label_set_text_fmt(time, "%02d:%02d", minutesToSet, secondsToSet); - - } else if (obj == btnSecondsDown) { - if (secondsToSet == 0) { - secondsToSet = 59; - } else { - secondsToSet--; - } - lv_label_set_text_fmt(time, "%02d:%02d", minutesToSet, secondsToSet); - } - } - } - } -} - -void Timer::setDone() { - lv_label_set_text(time, "00:00"); - lv_label_set_text(txtPlayPause, Symbols::play); - secondsToSet = 0; - minutesToSet = 0; - createButtons(); -} diff --git a/src/displayapp/screens/Timer.h b/src/displayapp/screens/Timer.h deleted file mode 100644 index 23c8734..0000000 --- a/src/displayapp/screens/Timer.h +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#include "displayapp/screens/Screen.h" -#include "components/datetime/DateTimeController.h" -#include "systemtask/SystemTask.h" -#include "displayapp/LittleVgl.h" - -#include "components/timer/TimerController.h" - -namespace Pinetime::Applications::Screens { - - class Timer : public Screen { - public: - enum class Modes { Normal, Done }; - - Timer(DisplayApp* app, Controllers::TimerController& timerController); - - ~Timer() override; - - void Refresh() override; - - void setDone(); - - void OnButtonEvent(lv_obj_t* obj, lv_event_t event); - - private: - bool running; - uint8_t secondsToSet = 0; - uint8_t minutesToSet = 0; - Controllers::TimerController& timerController; - - void createButtons(); - - lv_obj_t *time, *msecTime, *btnPlayPause, *txtPlayPause, *btnMinutesUp, *btnMinutesDown, *btnSecondsUp, *btnSecondsDown, *txtMUp, - *txtMDown, *txtSUp, *txtSDown; - - lv_task_t* taskRefresh; - }; -} diff --git a/src/displayapp/screens/settings/Settings.cpp b/src/displayapp/screens/settings/Settings.cpp index 4b53ba0..6950090 100644 --- a/src/displayapp/screens/settings/Settings.cpp +++ b/src/displayapp/screens/settings/Settings.cpp @@ -51,8 +51,8 @@ std::unique_ptr<Screen> Settings::CreateScreen1() { std::unique_ptr<Screen> Settings::CreateScreen2() { std::array<Screens::List::Applications, 4> applications {{ {Symbols::shoe, "Steps", Apps::SettingSteps}, - {Symbols::none, "None", Apps::None} - {Symbols::none, "None", Apps::None} + {Symbols::none, "None", Apps::None}, + {Symbols::none, "None", Apps::None}, {Symbols::batteryHalf, "Battery", Apps::BatteryInfo}}}; return std::make_unique<Screens::List>(1, 4, app, settingsController, applications); diff --git a/src/main.cpp b/src/main.cpp index fa492d0..ec11099 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -111,7 +111,6 @@ Pinetime::Drivers::Watchdog watchdog; Pinetime::Drivers::WatchdogView watchdogView(watchdog); Pinetime::Controllers::NotificationManager notificationManager; Pinetime::Controllers::MotionController motionController; -Pinetime::Controllers::TimerController timerController; Pinetime::Controllers::AlarmController alarmController {dateTimeController}; Pinetime::Controllers::TouchHandler touchHandler(touchPanel, lvgl); Pinetime::Controllers::ButtonHandler buttonHandler; @@ -129,7 +128,6 @@ Pinetime::Applications::DisplayApp displayApp(lcd, settingsController, motorController, motionController, - timerController, alarmController, brightnessController, touchHandler); @@ -143,7 +141,6 @@ Pinetime::System::SystemTask systemTask(spi, batteryController, bleController, dateTimeController, - timerController, alarmController, watchdog, notificationManager, diff --git a/src/systemtask/Messages.h b/src/systemtask/Messages.h index 4fa0bc8..10b17ba 100644 --- a/src/systemtask/Messages.h +++ b/src/systemtask/Messages.h @@ -8,7 +8,6 @@ namespace Pinetime { TouchWakeUp, OnNewTime, OnNewNotification, - OnTimerDone, OnNewCall, BleConnected, UpdateTimeOut, diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp index 70b3018..87c46cf 100644 --- a/src/systemtask/SystemTask.cpp +++ b/src/systemtask/SystemTask.cpp @@ -55,7 +55,6 @@ SystemTask::SystemTask(Drivers::SpiMaster& spi, Controllers::Battery& batteryController, Controllers::Ble& bleController, Controllers::DateTime& dateTimeController, - Controllers::TimerController& timerController, Controllers::AlarmController& alarmController, Drivers::Watchdog& watchdog, Pinetime::Controllers::NotificationManager& notificationManager, @@ -79,7 +78,6 @@ SystemTask::SystemTask(Drivers::SpiMaster& spi, batteryController {batteryController}, bleController {bleController}, dateTimeController {dateTimeController}, - timerController {timerController}, alarmController {alarmController}, watchdog {watchdog}, notificationManager {notificationManager}, @@ -126,8 +124,6 @@ void SystemTask::Work() { NRF_LOG_INFO("Last reset reason : %s", Pinetime::Drivers::Watchdog::ResetReasonToString(watchdog.ResetReason())); APP_GPIOTE_INIT(2); - app_timer_init(); - spi.Init(); spiNorFlash.Init(); spiNorFlash.Wakeup(); @@ -151,8 +147,6 @@ void SystemTask::Work() { batteryController.Register(this); motorController.Init(); motionSensor.SoftReset(); - timerController.Register(this); - timerController.Init(); alarmController.Init(this); // Reset the TWI device because the motion sensor chip most probably crashed it... @@ -302,13 +296,6 @@ void SystemTask::Work() { displayApp.PushMessage(Pinetime::Applications::Display::Messages::NewNotification); } break; - case Messages::OnTimerDone: - if (isSleeping && !isWakingUp) { - GoToRunning(); - } - motorController.RunForDuration(35); - displayApp.PushMessage(Pinetime::Applications::Display::Messages::TimerDone); - break; case Messages::SetOffAlarm: if (isSleeping && !isWakingUp) { GoToRunning(); diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h index c5b0379..e984264 100644 --- a/src/systemtask/SystemTask.h +++ b/src/systemtask/SystemTask.h @@ -16,7 +16,6 @@ #include "components/ble/NimbleController.h" #include "components/ble/NotificationManager.h" #include "components/motor/MotorController.h" -#include "components/timer/TimerController.h" #include "components/alarm/AlarmController.h" #include "components/fs/FS.h" #include "touchhandler/TouchHandler.h" @@ -62,7 +61,6 @@ namespace Pinetime { Controllers::Battery& batteryController, Controllers::Ble& bleController, Controllers::DateTime& dateTimeController, - Controllers::TimerController& timerController, Controllers::AlarmController& alarmController, Drivers::Watchdog& watchdog, Pinetime::Controllers::NotificationManager& notificationManager, @@ -107,7 +105,6 @@ namespace Pinetime { Pinetime::Controllers::Ble& bleController; Pinetime::Controllers::DateTime& dateTimeController; - Pinetime::Controllers::TimerController& timerController; Pinetime::Controllers::AlarmController& alarmController; QueueHandle_t systemTasksMsgQueue; std::atomic<bool> isSleeping {false}; |
