summaryrefslogtreecommitdiff
path: root/src/logging/NrfLogger.cpp
diff options
context:
space:
mode:
authorJF <jf@codingfield.com>2020-11-10 19:32:36 (GMT)
committerJF <jf@codingfield.com>2020-11-10 19:32:36 (GMT)
commit04abc91f157f5925ffa404728291a69893acf8cf (patch)
tree5c887c6d22ba8d901022ebae395a7b6c165d9dc0 /src/logging/NrfLogger.cpp
parent65ecb65b57bd55582c1aa1a5babd4d76df89e621 (diff)
parentf0e1f98823e41bfc2d9743fa8de70c882f26f93b (diff)
Merge branch 'develop' into master
Diffstat (limited to 'src/logging/NrfLogger.cpp')
-rw-r--r--src/logging/NrfLogger.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/logging/NrfLogger.cpp b/src/logging/NrfLogger.cpp
new file mode 100644
index 0000000..0d95c06
--- /dev/null
+++ b/src/logging/NrfLogger.cpp
@@ -0,0 +1,37 @@
+#include <libraries/log/nrf_log_ctrl.h>
+#include <libraries/log/nrf_log_default_backends.h>
+#include <FreeRTOS.h>
+#include <task.h>
+#include <libraries/log/nrf_log.h>
+#include "NrfLogger.h"
+
+using namespace Pinetime::Logging;
+
+void NrfLogger::Init() {
+ auto result = NRF_LOG_INIT(nullptr);
+ APP_ERROR_CHECK(result);
+
+ NRF_LOG_DEFAULT_BACKENDS_INIT();
+
+ if (pdPASS != xTaskCreate(NrfLogger::Process, "LOGGER", 200, this, 0, &m_logger_thread))
+ APP_ERROR_HANDLER(NRF_ERROR_NO_MEM);
+}
+
+void NrfLogger::Process(void*) {
+ NRF_LOG_INFO("Logger task started!");
+ // Suppress endless loop diagnostic
+ #pragma clang diagnostic push
+ #pragma ide diagnostic ignored "EndlessLoop"
+ while (1) {
+ NRF_LOG_FLUSH();
+ vTaskDelay(100); // Not good for power consumption, it will wake up every 100ms...
+ }
+ // Clear diagnostic suppression
+ #pragma clang diagnostic pop
+}
+
+void NrfLogger::Resume() {
+ vTaskResume(m_logger_thread);
+}
+
+