diff options
| author | Michele Bini <michele.bini@gmail.com> | 2022-03-25 15:04:54 (GMT) |
|---|---|---|
| committer | Michele Bini <michele.bini@gmail.com> | 2022-03-25 15:04:54 (GMT) |
| commit | bfddfc467425891853d8c39451fd2acdcf7b8e77 (patch) | |
| tree | c159055af5c6b5fd1a58826feb1448e45c199dff | |
| parent | 1d240df4e0106742fb5b438242cda66f1824b5e2 (diff) | |
sans sysinfo
| -rw-r--r-- | src/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/displayapp/Apps.h | 1 | ||||
| -rw-r--r-- | src/displayapp/DisplayApp.cpp | 10 | ||||
| -rw-r--r-- | src/displayapp/screens/ApplicationList.cpp | 1 | ||||
| -rw-r--r-- | src/displayapp/screens/SystemInfo.cpp | 279 | ||||
| -rw-r--r-- | src/displayapp/screens/SystemInfo.h | 57 | ||||
| -rw-r--r-- | src/displayapp/screens/settings/Settings.cpp | 2 |
7 files changed, 3 insertions, 349 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e62b3ec..e55938b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -401,7 +401,6 @@ list(APPEND SOURCE_FILES displayapp/screens/BleIcon.cpp displayapp/screens/NotificationIcon.cpp displayapp/screens/Brightness.cpp - displayapp/screens/SystemInfo.cpp displayapp/screens/Label.cpp displayapp/screens/FirmwareUpdate.cpp displayapp/screens/Motion.cpp @@ -593,7 +592,6 @@ set(INCLUDE_FILES displayapp/screens/BleIcon.h displayapp/screens/NotificationIcon.h displayapp/screens/Brightness.h - displayapp/screens/SystemInfo.h displayapp/screens/ScreenList.h displayapp/screens/Label.h displayapp/screens/FirmwareUpdate.h diff --git a/src/displayapp/Apps.h b/src/displayapp/Apps.h index b3eac43..d8b36c9 100644 --- a/src/displayapp/Apps.h +++ b/src/displayapp/Apps.h @@ -6,7 +6,6 @@ namespace Pinetime { None, Launcher, Clock, - SysInfo, FirmwareUpdate, FirmwareValidation, NotificationsPreview, diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp index dc7ec57..03de120 100644 --- a/src/displayapp/DisplayApp.cpp +++ b/src/displayapp/DisplayApp.cpp @@ -16,7 +16,6 @@ #include "displayapp/screens/FirmwareValidation.h" #include "displayapp/screens/Meter.h" #include "displayapp/screens/Notifications.h" -#include "displayapp/screens/SystemInfo.h" #include "displayapp/screens/Tile.h" #include "displayapp/screens/Steps.h" #include "displayapp/screens/Error.h" @@ -253,8 +252,8 @@ void DisplayApp::Refresh() { } break; case Messages::ButtonLongerPressed: - // Create reboot app and open it instead - LoadApp(Apps::SysInfo, DisplayApp::FullRefreshDirections::Up); + // Open up Firmware window, before possible reboot if press continues + LoadApp(Apps::FirmwareValidation, DisplayApp::FullRefreshDirections::Up); break; case Messages::ButtonDoubleClicked: if (currentApp != Apps::Notifications && currentApp != Apps::NotificationsPreview) { @@ -385,11 +384,6 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction) currentScreen = std::make_unique<Screens::SettingAirplaneMode>(this, settingsController); ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown); break; - case Apps::SysInfo: - currentScreen = std::make_unique<Screens::SystemInfo>( - this, dateTimeController, batteryController, brightnessController, bleController, watchdog, motionController, touchPanel); - ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown); - break; case Apps::HeartRate: currentScreen = std::make_unique<Screens::HeartRate>(this, heartRateController, *systemTask); break; diff --git a/src/displayapp/screens/ApplicationList.cpp b/src/displayapp/screens/ApplicationList.cpp index 42f37ad..a34a255 100644 --- a/src/displayapp/screens/ApplicationList.cpp +++ b/src/displayapp/screens/ApplicationList.cpp @@ -60,7 +60,6 @@ std::unique_ptr<Screen> ApplicationList::CreateScreen2() { std::array<Screens::Tile::Applications, 6> applications { {{"A", Apps::Meter}, {"C", Apps::Clock}, - {"E", Apps::SysInfo}, {"F", Apps::Brightness} } }; diff --git a/src/displayapp/screens/SystemInfo.cpp b/src/displayapp/screens/SystemInfo.cpp deleted file mode 100644 index e0138f8..0000000 --- a/src/displayapp/screens/SystemInfo.cpp +++ /dev/null @@ -1,279 +0,0 @@ -#include <FreeRTOS.h> -#include <task.h> -#include "displayapp/screens/SystemInfo.h" -#include <lvgl/lvgl.h> -#include "displayapp/DisplayApp.h" -#include "displayapp/screens/Label.h" -#include "Version.h" -#include "BootloaderVersion.h" -#include "components/battery/BatteryController.h" -#include "components/ble/BleController.h" -#include "components/brightness/BrightnessController.h" -#include "components/datetime/DateTimeController.h" -#include "components/motion/MotionController.h" -#include "drivers/Watchdog.h" - -using namespace Pinetime::Applications::Screens; - -namespace { - const char* ToString(const Pinetime::Controllers::MotionController::DeviceTypes deviceType) { - switch (deviceType) { - case Pinetime::Controllers::MotionController::DeviceTypes::BMA421: - return "BMA421"; - case Pinetime::Controllers::MotionController::DeviceTypes::BMA425: - return "BMA425"; - case Pinetime::Controllers::MotionController::DeviceTypes::Unknown: - return "???"; - } - return "???"; - } -} - -SystemInfo::SystemInfo(Pinetime::Applications::DisplayApp* app, - Pinetime::Controllers::DateTime& dateTimeController, - Pinetime::Controllers::Battery& batteryController, - Pinetime::Controllers::BrightnessController& brightnessController, - Pinetime::Controllers::Ble& bleController, - Pinetime::Drivers::WatchdogView& watchdog, - Pinetime::Controllers::MotionController& motionController, - Pinetime::Drivers::Cst816S& touchPanel) - : Screen(app), - dateTimeController {dateTimeController}, - batteryController {batteryController}, - brightnessController {brightnessController}, - bleController {bleController}, - watchdog {watchdog}, - motionController {motionController}, - touchPanel {touchPanel}, - screens {app, - 0, - {[this]() -> std::unique_ptr<Screen> { - return CreateScreen1(); - }, - [this]() -> std::unique_ptr<Screen> { - return CreateScreen2(); - }, - [this]() -> std::unique_ptr<Screen> { - return CreateScreen3(); - }, - [this]() -> std::unique_ptr<Screen> { - return CreateScreen4(); - }, - [this]() -> std::unique_ptr<Screen> { - return CreateScreen5(); - }}, - Screens::ScreenListModes::UpDown} { -} - -SystemInfo::~SystemInfo() { - lv_obj_clean(lv_scr_act()); -} - -bool SystemInfo::OnTouchEvent(Pinetime::Applications::TouchEvents event) { - return screens.OnTouchEvent(event); -} - -std::unique_ptr<Screen> SystemInfo::CreateScreen1() { - lv_obj_t* label = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_recolor(label, true); - lv_label_set_text_fmt(label, - "#FFFF00 InfiniTime#\n\n" - "#444444 Version# %ld.%ld.%ld\n" - "#444444 Short Ref# %s\n" - "#444444 Build date#\n" - "%s\n" - "%s\n\n" - "#444444 Bootloader# %s", - Version::Major(), - Version::Minor(), - Version::Patch(), - Version::GitCommitHash(), - __DATE__, - __TIME__, - BootloaderVersion::VersionString()); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_obj_align(label, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); - return std::make_unique<Screens::Label>(0, 5, app, label); -} - -std::unique_ptr<Screen> SystemInfo::CreateScreen2() { - auto batteryPercent = batteryController.PercentRemaining(); - auto resetReason = [this]() { - switch (watchdog.ResetReason()) { - case Drivers::Watchdog::ResetReasons::Watchdog: - return "wtdg"; - case Drivers::Watchdog::ResetReasons::HardReset: - return "hardr"; - case Drivers::Watchdog::ResetReasons::NFC: - return "nfc"; - case Drivers::Watchdog::ResetReasons::SoftReset: - return "softr"; - case Drivers::Watchdog::ResetReasons::CpuLockup: - return "cpulock"; - case Drivers::Watchdog::ResetReasons::SystemOff: - return "off"; - case Drivers::Watchdog::ResetReasons::LpComp: - return "lpcomp"; - case Drivers::Watchdog::ResetReasons::DebugInterface: - return "dbg"; - case Drivers::Watchdog::ResetReasons::ResetPin: - return "rst"; - default: - return "?"; - } - }(); - - // uptime - static constexpr uint32_t secondsInADay = 60 * 60 * 24; - static constexpr uint32_t secondsInAnHour = 60 * 60; - static constexpr uint32_t secondsInAMinute = 60; - uint32_t uptimeSeconds = dateTimeController.Uptime().count(); - uint32_t uptimeDays = (uptimeSeconds / secondsInADay); - uptimeSeconds = uptimeSeconds % secondsInADay; - uint32_t uptimeHours = uptimeSeconds / secondsInAnHour; - uptimeSeconds = uptimeSeconds % secondsInAnHour; - uint32_t uptimeMinutes = uptimeSeconds / secondsInAMinute; - uptimeSeconds = uptimeSeconds % secondsInAMinute; - // TODO handle more than 100 days of uptime - - lv_obj_t* label = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_recolor(label, true); - lv_label_set_text_fmt(label, - "#444444 Date# %02d/%02d/%04d\n" - "#444444 Time# %02d:%02d:%02d\n" - "#444444 Uptime#\n %02lud %02lu:%02lu:%02lu\n" - "#444444 Battery# %d%%/%03imV\n" - "#444444 Backlight# %s\n" - "#444444 Last reset# %s\n" - "#444444 Accel.# %s\n" - "#444444 Touch.# %x.%x.%x\n", - dateTimeController.Day(), - static_cast<uint8_t>(dateTimeController.Month()), - dateTimeController.Year(), - dateTimeController.Hours(), - dateTimeController.Minutes(), - dateTimeController.Seconds(), - uptimeDays, - uptimeHours, - uptimeMinutes, - uptimeSeconds, - batteryPercent, - batteryController.Voltage(), - brightnessController.ToString(), - resetReason, - ToString(motionController.DeviceType()), - touchPanel.GetChipId(), - touchPanel.GetVendorId(), - touchPanel.GetFwVersion()); - lv_obj_align(label, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); - return std::make_unique<Screens::Label>(1, 5, app, label); -} - -std::unique_ptr<Screen> SystemInfo::CreateScreen3() { - lv_mem_monitor_t mon; - lv_mem_monitor(&mon); - - lv_obj_t* label = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_recolor(label, true); - auto& bleAddr = bleController.Address(); - lv_label_set_text_fmt(label, - "#444444 BLE MAC#\n" - " %02x:%02x:%02x:%02x:%02x:%02x" - "\n" - "#444444 LVGL Memory#\n" - " #444444 used# %d (%d%%)\n" - " #444444 max used# %lu\n" - " #444444 frag# %d%%\n" - " #444444 free# %d", - bleAddr[5], - bleAddr[4], - bleAddr[3], - bleAddr[2], - bleAddr[1], - bleAddr[0], - static_cast<int>(mon.total_size - mon.free_size), - mon.used_pct, - mon.max_used, - mon.frag_pct, - static_cast<int>(mon.free_biggest_size)); - lv_obj_align(label, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); - return std::make_unique<Screens::Label>(2, 5, app, label); -} - -bool SystemInfo::sortById(const TaskStatus_t& lhs, const TaskStatus_t& rhs) { - return lhs.xTaskNumber < rhs.xTaskNumber; -} - -std::unique_ptr<Screen> SystemInfo::CreateScreen4() { - static constexpr uint8_t maxTaskCount = 9; - TaskStatus_t tasksStatus[maxTaskCount]; - - lv_obj_t* infoTask = lv_table_create(lv_scr_act(), nullptr); - lv_table_set_col_cnt(infoTask, 4); - lv_table_set_row_cnt(infoTask, maxTaskCount + 1); - lv_obj_set_style_local_pad_all(infoTask, LV_TABLE_PART_CELL1, LV_STATE_DEFAULT, 0); - lv_obj_set_style_local_border_color(infoTask, LV_TABLE_PART_CELL1, LV_STATE_DEFAULT, LV_COLOR_GRAY); - - lv_table_set_cell_value(infoTask, 0, 0, "#"); - lv_table_set_col_width(infoTask, 0, 30); - lv_table_set_cell_value(infoTask, 0, 1, "S"); // State - lv_table_set_col_width(infoTask, 1, 30); - lv_table_set_cell_value(infoTask, 0, 2, "Task"); - lv_table_set_col_width(infoTask, 2, 80); - lv_table_set_cell_value(infoTask, 0, 3, "Free"); - lv_table_set_col_width(infoTask, 3, 90); - - auto nb = uxTaskGetSystemState(tasksStatus, maxTaskCount, nullptr); - std::sort(tasksStatus, tasksStatus + nb, sortById); - for (uint8_t i = 0; i < nb && i < maxTaskCount; i++) { - char buffer[7] = {0}; - - sprintf(buffer, "%lu", tasksStatus[i].xTaskNumber); - lv_table_set_cell_value(infoTask, i + 1, 0, buffer); - switch (tasksStatus[i].eCurrentState) { - case eReady: - case eRunning: - buffer[0] = 'R'; - break; - case eBlocked: - buffer[0] = 'B'; - break; - case eSuspended: - buffer[0] = 'S'; - break; - case eDeleted: - buffer[0] = 'D'; - break; - default: - buffer[0] = 'I'; // Invalid - break; - } - buffer[1] = '\0'; - lv_table_set_cell_value(infoTask, i + 1, 1, buffer); - lv_table_set_cell_value(infoTask, i + 1, 2, tasksStatus[i].pcTaskName); - if (tasksStatus[i].usStackHighWaterMark < 20) { - sprintf(buffer, "%d low", tasksStatus[i].usStackHighWaterMark); - } else { - sprintf(buffer, "%d", tasksStatus[i].usStackHighWaterMark); - } - lv_table_set_cell_value(infoTask, i + 1, 3, buffer); - } - return std::make_unique<Screens::Label>(3, 5, app, infoTask); -} - -std::unique_ptr<Screen> SystemInfo::CreateScreen5() { - lv_obj_t* label = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_recolor(label, true); - lv_label_set_text_static(label, - "Software Licensed\n" - "under the terms of\n" - "the GNU General\n" - "Public License v3\n" - "#444444 Source code#\n" - "#FFFF00 https://github.com/#\n" - "#FFFF00 InfiniTimeOrg/#\n" - "#FFFF00 InfiniTime#"); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_obj_align(label, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); - return std::make_unique<Screens::Label>(4, 5, app, label); -}
\ No newline at end of file diff --git a/src/displayapp/screens/SystemInfo.h b/src/displayapp/screens/SystemInfo.h deleted file mode 100644 index a382ed8..0000000 --- a/src/displayapp/screens/SystemInfo.h +++ /dev/null @@ -1,57 +0,0 @@ -#pragma once - -#include <memory> -#include "displayapp/screens/Screen.h" -#include "displayapp/screens/ScreenList.h" - -namespace Pinetime { - namespace Controllers { - class DateTime; - class Battery; - class BrightnessController; - class Ble; - } - - namespace Drivers { - class WatchdogView; - } - - namespace Applications { - class DisplayApp; - - namespace Screens { - class SystemInfo : public Screen { - public: - explicit SystemInfo(DisplayApp* app, - Pinetime::Controllers::DateTime& dateTimeController, - Pinetime::Controllers::Battery& batteryController, - Pinetime::Controllers::BrightnessController& brightnessController, - Pinetime::Controllers::Ble& bleController, - Pinetime::Drivers::WatchdogView& watchdog, - Pinetime::Controllers::MotionController& motionController, - Pinetime::Drivers::Cst816S& touchPanel); - ~SystemInfo() override; - bool OnTouchEvent(TouchEvents event) override; - - private: - Pinetime::Controllers::DateTime& dateTimeController; - Pinetime::Controllers::Battery& batteryController; - Pinetime::Controllers::BrightnessController& brightnessController; - Pinetime::Controllers::Ble& bleController; - Pinetime::Drivers::WatchdogView& watchdog; - Pinetime::Controllers::MotionController& motionController; - Pinetime::Drivers::Cst816S& touchPanel; - - ScreenList<5> screens; - - static bool sortById(const TaskStatus_t& lhs, const TaskStatus_t& rhs); - - std::unique_ptr<Screen> CreateScreen1(); - std::unique_ptr<Screen> CreateScreen2(); - std::unique_ptr<Screen> CreateScreen3(); - std::unique_ptr<Screen> CreateScreen4(); - std::unique_ptr<Screen> CreateScreen5(); - }; - } - } -} diff --git a/src/displayapp/screens/settings/Settings.cpp b/src/displayapp/screens/settings/Settings.cpp index c819a38..ba80869 100644 --- a/src/displayapp/screens/settings/Settings.cpp +++ b/src/displayapp/screens/settings/Settings.cpp @@ -48,7 +48,7 @@ std::unique_ptr<Screen> Settings::CreateScreen2() { {Symbols::tachometer, "Shake Calib.", Apps::SettingShakeThreshold}, {Symbols::check, "Firmware", Apps::FirmwareValidation}, {Symbols::airplane, "Airplane mode", Apps::SettingAirplaneMode}, - {Symbols::list, "About", Apps::SysInfo} + {Symbols::none, "None", Apps::None} }}; return std::make_unique<Screens::List>(1, 2, app, settingsController, applications); |
