summaryrefslogtreecommitdiff
path: root/src/systemtask
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemtask')
-rw-r--r--src/systemtask/Messages.h1
-rw-r--r--src/systemtask/SystemMonitor.cpp26
-rw-r--r--src/systemtask/SystemMonitor.h40
-rw-r--r--src/systemtask/SystemTask.cpp29
-rw-r--r--src/systemtask/SystemTask.h8
5 files changed, 49 insertions, 55 deletions
diff --git a/src/systemtask/Messages.h b/src/systemtask/Messages.h
index 4d5ab4ce..2e3456a2 100644
--- a/src/systemtask/Messages.h
+++ b/src/systemtask/Messages.h
@@ -31,6 +31,7 @@ namespace Pinetime {
BatteryPercentageUpdated,
StartFileTransfer,
StopFileTransfer,
+ BleRadioEnableToggle
};
}
}
diff --git a/src/systemtask/SystemMonitor.cpp b/src/systemtask/SystemMonitor.cpp
new file mode 100644
index 00000000..90765e30
--- /dev/null
+++ b/src/systemtask/SystemMonitor.cpp
@@ -0,0 +1,26 @@
+#include "systemtask/SystemTask.h"
+#if configUSE_TRACE_FACILITY == 1
+// FreeRtosMonitor
+#include <FreeRTOS.h>
+#include <task.h>
+#include <nrf_log.h>
+
+void Pinetime::System::SystemMonitor::Process() {
+ if (xTaskGetTickCount() - lastTick > 10000) {
+ NRF_LOG_INFO("---------------------------------------\nFree heap : %d", xPortGetFreeHeapSize());
+ TaskStatus_t tasksStatus[10];
+ auto nb = uxTaskGetSystemState(tasksStatus, 10, nullptr);
+ for (uint32_t i = 0; i < nb; i++) {
+ NRF_LOG_INFO("Task [%s] - %d", tasksStatus[i].pcTaskName, tasksStatus[i].usStackHighWaterMark);
+ if (tasksStatus[i].usStackHighWaterMark < 20)
+ NRF_LOG_INFO("WARNING!!! Task %s task is nearly full, only %dB available",
+ tasksStatus[i].pcTaskName,
+ tasksStatus[i].usStackHighWaterMark * 4);
+ }
+ lastTick = xTaskGetTickCount();
+ }
+}
+#else
+// DummyMonitor
+void Pinetime::System::SystemMonitor::Process() {}
+#endif
diff --git a/src/systemtask/SystemMonitor.h b/src/systemtask/SystemMonitor.h
index 45c02c2c..08c87401 100644
--- a/src/systemtask/SystemMonitor.h
+++ b/src/systemtask/SystemMonitor.h
@@ -1,44 +1,16 @@
#pragma once
-#include <FreeRTOS.h>
+#include <FreeRTOS.h> // declares configUSE_TRACE_FACILITY
#include <task.h>
-#include <nrf_log.h>
namespace Pinetime {
namespace System {
- struct DummyMonitor {};
- struct FreeRtosMonitor {};
-
- template <class T> class SystemMonitor {
- public:
- SystemMonitor() = delete;
- };
-
- template <> class SystemMonitor<DummyMonitor> {
+ class SystemMonitor {
public:
- void Process() const {
- }
- };
-
- template <> class SystemMonitor<FreeRtosMonitor> {
- public:
- void Process() const {
- if (xTaskGetTickCount() - lastTick > 10000) {
- NRF_LOG_INFO("---------------------------------------\nFree heap : %d", xPortGetFreeHeapSize());
- auto nb = uxTaskGetSystemState(tasksStatus, 10, nullptr);
- for (uint32_t i = 0; i < nb; i++) {
- NRF_LOG_INFO("Task [%s] - %d", tasksStatus[i].pcTaskName, tasksStatus[i].usStackHighWaterMark);
- if (tasksStatus[i].usStackHighWaterMark < 20)
- NRF_LOG_INFO("WARNING!!! Task %s task is nearly full, only %dB available",
- tasksStatus[i].pcTaskName,
- tasksStatus[i].usStackHighWaterMark * 4);
- }
- lastTick = xTaskGetTickCount();
- }
- }
-
+ void Process();
+#if configUSE_TRACE_FACILITY == 1
private:
mutable TickType_t lastTick = 0;
- mutable TaskStatus_t tasksStatus[10];
+#endif
};
}
-} \ No newline at end of file
+}
diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp
index e71ebc17..38c728f8 100644
--- a/src/systemtask/SystemTask.cpp
+++ b/src/systemtask/SystemTask.cpp
@@ -1,19 +1,12 @@
#include "systemtask/SystemTask.h"
-#define min // workaround: nimble's min/max macros conflict with libstdc++
-#define max
-#include <host/ble_gap.h>
-#include <host/ble_gatt.h>
-#include <host/ble_hs_adv.h>
-#include <host/util/util.h>
-#include <nimble/hci_common.h>
-#undef max
-#undef min
#include <hal/nrf_rtc.h>
#include <libraries/gpiote/app_gpiote.h>
#include <libraries/log/nrf_log.h>
#include "BootloaderVersion.h"
+#include "components/battery/BatteryController.h"
#include "components/ble/BleController.h"
+#include "displayapp/TouchEvents.h"
#include "drivers/Cst816s.h"
#include "drivers/St7789.h"
#include "drivers/InternalFlash.h"
@@ -115,7 +108,7 @@ SystemTask::SystemTask(Drivers::SpiMaster& spi,
void SystemTask::Start() {
systemTasksMsgQueue = xQueueCreate(10, 1);
- if (pdPASS != xTaskCreate(SystemTask::Process, "MAIN", 350, this, 0, &taskHandle)) {
+ if (pdPASS != xTaskCreate(SystemTask::Process, "MAIN", 350, this, 1, &taskHandle)) {
APP_ERROR_HANDLER(NRF_ERROR_NO_MEM);
}
}
@@ -262,7 +255,7 @@ void SystemTask::Work() {
displayApp.PushMessage(Pinetime::Applications::Display::Messages::GoToRunning);
heartRateApp.PushMessage(Pinetime::Applications::HeartRateTask::Messages::WakeUp);
- if (!bleController.IsConnected()) {
+ if (bleController.IsRadioEnabled() && !bleController.IsConnected()) {
nimbleController.RestartFastAdv();
}
@@ -273,10 +266,10 @@ void SystemTask::Work() {
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
+ if (gesture != Pinetime::Applications::TouchEvents::None and
+ ((gesture == Pinetime::Applications::TouchEvents::DoubleTap and
settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::DoubleTap)) or
- (gesture == Pinetime::Drivers::Cst816S::Gestures::SingleTap and
+ (gesture == Pinetime::Applications::TouchEvents::Tap and
settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::SingleTap)))) {
GoToRunning();
}
@@ -448,7 +441,13 @@ void SystemTask::Work() {
motorController.RunForDuration(35);
displayApp.PushMessage(Pinetime::Applications::Display::Messages::ShowPairingKey);
break;
-
+ case Messages::BleRadioEnableToggle:
+ if(settingsController.GetBleRadioEnabled()) {
+ nimbleController.EnableRadio();
+ } else {
+ nimbleController.DisableRadio();
+ }
+ break;
default:
break;
}
diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h
index abeffd2f..c5b03792 100644
--- a/src/systemtask/SystemTask.h
+++ b/src/systemtask/SystemTask.h
@@ -13,7 +13,6 @@
#include <components/motion/MotionController.h>
#include "systemtask/SystemMonitor.h"
-#include "components/battery/BatteryController.h"
#include "components/ble/NimbleController.h"
#include "components/ble/NotificationManager.h"
#include "components/motor/MotorController.h"
@@ -47,6 +46,7 @@ namespace Pinetime {
class Hrs3300;
}
namespace Controllers {
+ class Battery;
class TouchHandler;
class ButtonHandler;
}
@@ -148,11 +148,7 @@ namespace Pinetime {
bool stepCounterMustBeReset = false;
static constexpr TickType_t batteryMeasurementPeriod = pdMS_TO_TICKS(10 * 60 * 1000);
-#if configUSE_TRACE_FACILITY == 1
- SystemMonitor<FreeRtosMonitor> monitor;
-#else
- SystemMonitor<DummyMonitor> monitor;
-#endif
+ SystemMonitor monitor;
};
}
}