summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorokaestne <git@oliver-kaestner.de>2020-11-15 15:05:51 +0100
committerokaestne <git@oliver-kaestner.de>2020-11-16 01:35:45 +0100
commit1516573df46239ea76b7a8b142a6b719668cb26d (patch)
treeb11259f8ca0e10e3d1e2da5df827703ac0294317
parentc3475b92fad2eff4b2a43e5343863d11fe4caca3 (diff)
Include cleanup: components
-rw-r--r--src/components/battery/BatteryController.cpp3
-rw-r--r--src/components/battery/BatteryController.h2
-rw-r--r--src/components/ble/AlertNotificationClient.cpp10
-rw-r--r--src/components/ble/AlertNotificationClient.h14
-rw-r--r--src/components/ble/AlertNotificationService.cpp13
-rw-r--r--src/components/ble/AlertNotificationService.h10
-rw-r--r--src/components/ble/BatteryInformationService.h4
-rw-r--r--src/components/ble/BleController.cpp2
-rw-r--r--src/components/ble/BleController.h3
-rw-r--r--src/components/ble/CurrentTimeClient.cpp3
-rw-r--r--src/components/ble/CurrentTimeClient.h10
-rw-r--r--src/components/ble/CurrentTimeService.h4
-rw-r--r--src/components/ble/DeviceInformationService.h9
-rw-r--r--src/components/ble/DfuService.cpp4
-rw-r--r--src/components/ble/DfuService.h4
-rw-r--r--src/components/ble/ImmediateAlertService.cpp6
-rw-r--r--src/components/ble/ImmediateAlertService.h4
-rw-r--r--src/components/ble/MusicService.cpp2
-rw-r--r--src/components/ble/MusicService.h7
-rw-r--r--src/components/ble/NimbleController.cpp24
-rw-r--r--src/components/ble/NimbleController.h23
-rw-r--r--src/components/ble/NotificationManager.cpp2
-rw-r--r--src/components/ble/NotificationManager.h4
-rw-r--r--src/components/ble/ServiceDiscovery.cpp4
-rw-r--r--src/components/ble/ServiceDiscovery.h6
-rw-r--r--src/components/brightness/BrightnessController.cpp2
-rw-r--r--src/components/firmwarevalidator/FirmwareValidator.cpp6
-rw-r--r--src/components/gfx/Gfx.cpp5
-rw-r--r--src/components/gfx/Gfx.h8
-rw-r--r--src/logging/NrfLogger.cpp7
-rw-r--r--src/logging/NrfLogger.h3
-rw-r--r--src/main.cpp54
-rw-r--r--src/main.h1
-rw-r--r--src/systemtask/SystemTask.cpp32
-rw-r--r--src/systemtask/SystemTask.h20
35 files changed, 199 insertions, 116 deletions
diff --git a/src/components/battery/BatteryController.cpp b/src/components/battery/BatteryController.cpp
index 571efae6..3e3d65b4 100644
--- a/src/components/battery/BatteryController.cpp
+++ b/src/components/battery/BatteryController.cpp
@@ -1,8 +1,7 @@
-#include <drivers/include/nrfx_saadc.h>
+#include "BatteryController.h"
#include <hal/nrf_gpio.h>
#include <libraries/log/nrf_log.h>
#include <algorithm>
-#include "BatteryController.h"
using namespace Pinetime::Controllers;
diff --git a/src/components/battery/BatteryController.h b/src/components/battery/BatteryController.h
index f07648a9..7cc964e4 100644
--- a/src/components/battery/BatteryController.h
+++ b/src/components/battery/BatteryController.h
@@ -1,7 +1,7 @@
#pragma once
+#include <cstdint>
#include <drivers/include/nrfx_saadc.h>
-
namespace Pinetime {
namespace Controllers {
class Battery {
diff --git a/src/components/ble/AlertNotificationClient.cpp b/src/components/ble/AlertNotificationClient.cpp
index abe41099..e7a18626 100644
--- a/src/components/ble/AlertNotificationClient.cpp
+++ b/src/components/ble/AlertNotificationClient.cpp
@@ -1,7 +1,7 @@
-#include <systemtask/SystemTask.h>
-#include "NotificationManager.h"
-
#include "AlertNotificationClient.h"
+#include <algorithm>
+#include "NotificationManager.h"
+#include "systemtask/SystemTask.h"
using namespace Pinetime::Controllers;
constexpr ble_uuid16_t AlertNotificationClient::ansServiceUuid;
@@ -159,8 +159,8 @@ void AlertNotificationClient::OnNotification(ble_gap_event *event) {
const auto maxBufferSize{maxMessageSize + headerSize};
const auto dbgPacketLen = OS_MBUF_PKTLEN(event->notify_rx.om);
- size_t bufferSize = min(dbgPacketLen + stringTerminatorSize, maxBufferSize);
- auto messageSize = min(maxMessageSize, (bufferSize - headerSize));
+ size_t bufferSize = std::min(dbgPacketLen + stringTerminatorSize, maxBufferSize);
+ auto messageSize = std::min(maxMessageSize, (bufferSize - headerSize));
NotificationManager::Notification notif;
os_mbuf_copydata(event->notify_rx.om, headerSize, messageSize - 1, notif.message.data());
diff --git a/src/components/ble/AlertNotificationClient.h b/src/components/ble/AlertNotificationClient.h
index bc0df51e..fa10456c 100644
--- a/src/components/ble/AlertNotificationClient.h
+++ b/src/components/ble/AlertNotificationClient.h
@@ -1,13 +1,23 @@
#pragma once
#include <cstdint>
-#include <array>
+#include <functional>
+#define min // workaround: nimble's min/max macros conflict with libstdc++
+#define max
#include <host/ble_gap.h>
+#undef max
+#undef min
#include "BleClient.h"
-
namespace Pinetime {
+
+ namespace System {
+ class SystemTask;
+ }
+
namespace Controllers {
+ class NotificationManager;
+
class AlertNotificationClient : public BleClient {
public:
explicit AlertNotificationClient(Pinetime::System::SystemTask &systemTask,
diff --git a/src/components/ble/AlertNotificationService.cpp b/src/components/ble/AlertNotificationService.cpp
index 32711b92..3156470c 100644
--- a/src/components/ble/AlertNotificationService.cpp
+++ b/src/components/ble/AlertNotificationService.cpp
@@ -1,10 +1,9 @@
-
-#include <hal/nrf_rtc.h>
-#include "NotificationManager.h"
-#include <systemtask/SystemTask.h>
-
#include "AlertNotificationService.h"
+#include <hal/nrf_rtc.h>
#include <cstring>
+#include <algorithm>
+#include "NotificationManager.h"
+#include "systemtask/SystemTask.h"
using namespace Pinetime::Controllers;
@@ -60,8 +59,8 @@ int AlertNotificationService::OnAlert(uint16_t conn_handle, uint16_t attr_handle
const auto maxBufferSize{maxMessageSize + headerSize};
const auto dbgPacketLen = OS_MBUF_PKTLEN(ctxt->om);
- size_t bufferSize = min(dbgPacketLen + stringTerminatorSize, maxBufferSize);
- auto messageSize = min(maxMessageSize, (bufferSize-headerSize));
+ size_t bufferSize = std::min(dbgPacketLen + stringTerminatorSize, maxBufferSize);
+ auto messageSize = std::min(maxMessageSize, (bufferSize-headerSize));
NotificationManager::Notification notif;
os_mbuf_copydata(ctxt->om, headerSize, messageSize-1, notif.message.data());
diff --git a/src/components/ble/AlertNotificationService.h b/src/components/ble/AlertNotificationService.h
index 1b8c4989..120312d2 100644
--- a/src/components/ble/AlertNotificationService.h
+++ b/src/components/ble/AlertNotificationService.h
@@ -1,10 +1,20 @@
#pragma once
#include <cstdint>
#include <array>
+#define min // workaround: nimble's min/max macros conflict with libstdc++
+#define max
#include <host/ble_gap.h>
+#undef max
+#undef min
namespace Pinetime {
+
+ namespace System {
+ class SystemTask;
+ }
namespace Controllers {
+ class NotificationManager;
+
class AlertNotificationService {
public:
AlertNotificationService(Pinetime::System::SystemTask &systemTask,
diff --git a/src/components/ble/BatteryInformationService.h b/src/components/ble/BatteryInformationService.h
index 74b2222c..b00000a4 100644
--- a/src/components/ble/BatteryInformationService.h
+++ b/src/components/ble/BatteryInformationService.h
@@ -1,5 +1,9 @@
#pragma once
+#define min // workaround: nimble's min/max macros conflict with libstdc++
+#define max
#include <host/ble_gap.h>
+#undef max
+#undef min
namespace Pinetime {
namespace System {
diff --git a/src/components/ble/BleController.cpp b/src/components/ble/BleController.cpp
index 2b396e12..650ec79f 100644
--- a/src/components/ble/BleController.cpp
+++ b/src/components/ble/BleController.cpp
@@ -1,5 +1,3 @@
-#include <cstring>
-#include <cstdlib>
#include "BleController.h"
using namespace Pinetime::Controllers;
diff --git a/src/components/ble/BleController.h b/src/components/ble/BleController.h
index 3f52ea25..0570c8d0 100644
--- a/src/components/ble/BleController.h
+++ b/src/components/ble/BleController.h
@@ -1,8 +1,7 @@
#pragma once
-#include <FreeRTOS.h>
-#include <queue.h>
#include <array>
+#include <cstdint>
namespace Pinetime {
namespace Controllers {
diff --git a/src/components/ble/CurrentTimeClient.cpp b/src/components/ble/CurrentTimeClient.cpp
index 92f9374b..be50fede 100644
--- a/src/components/ble/CurrentTimeClient.cpp
+++ b/src/components/ble/CurrentTimeClient.cpp
@@ -1,5 +1,6 @@
-#include <hal/nrf_rtc.h>
#include "CurrentTimeClient.h"
+#include <hal/nrf_rtc.h>
+#include "components/datetime/DateTimeController.h"
using namespace Pinetime::Controllers;
diff --git a/src/components/ble/CurrentTimeClient.h b/src/components/ble/CurrentTimeClient.h
index 93139399..1b2e018c 100644
--- a/src/components/ble/CurrentTimeClient.h
+++ b/src/components/ble/CurrentTimeClient.h
@@ -1,13 +1,15 @@
#pragma once
+#define min // workaround: nimble's min/max macros conflict with libstdc++
+#define max
+#include <host/ble_gap.h>
+#undef max
+#undef min
#include <cstdint>
-#include <array>
-
-#include "components/datetime/DateTimeController.h"
#include "BleClient.h"
-#include <host/ble_gap.h>
namespace Pinetime {
namespace Controllers {
+ class DateTime;
class CurrentTimeClient : public BleClient {
public:
diff --git a/src/components/ble/CurrentTimeService.h b/src/components/ble/CurrentTimeService.h
index a6be9647..23956283 100644
--- a/src/components/ble/CurrentTimeService.h
+++ b/src/components/ble/CurrentTimeService.h
@@ -3,7 +3,11 @@
#include <array>
#include "components/datetime/DateTimeController.h"
+#define min // workaround: nimble's min/max macros conflict with libstdc++
+#define max
#include <host/ble_gap.h>
+#undef max
+#undef min
namespace Pinetime {
namespace Controllers {
diff --git a/src/components/ble/DeviceInformationService.h b/src/components/ble/DeviceInformationService.h
index 25ab8402..94ca7bbf 100644
--- a/src/components/ble/DeviceInformationService.h
+++ b/src/components/ble/DeviceInformationService.h
@@ -1,9 +1,10 @@
#pragma once
-#include <cstdint>
-#include <array>
-
+#define min // workaround: nimble's min/max macros conflict with libstdc++
+#define max
#include <host/ble_gap.h>
-#include <Version.h>
+#undef max
+#undef min
+#include "Version.h"
namespace Pinetime {
namespace Controllers {
diff --git a/src/components/ble/DfuService.cpp b/src/components/ble/DfuService.cpp
index 4dec5141..90795b49 100644
--- a/src/components/ble/DfuService.cpp
+++ b/src/components/ble/DfuService.cpp
@@ -1,8 +1,8 @@
+#include "DfuService.h"
#include <cstring>
-
#include "components/ble/BleController.h"
+#include "drivers/SpiNorFlash.h"
#include "systemtask/SystemTask.h"
-#include "DfuService.h"
using namespace Pinetime::Controllers;
diff --git a/src/components/ble/DfuService.h b/src/components/ble/DfuService.h
index d7ba460c..096bd99a 100644
--- a/src/components/ble/DfuService.h
+++ b/src/components/ble/DfuService.h
@@ -3,7 +3,11 @@
#include <cstdint>
#include <array>
+#define min // workaround: nimble's min/max macros conflict with libstdc++
+#define max
#include <host/ble_gap.h>
+#undef max
+#undef min
namespace Pinetime {
namespace System {
diff --git a/src/components/ble/ImmediateAlertService.cpp b/src/components/ble/ImmediateAlertService.cpp
index e2cee308..0f6bf6cf 100644
--- a/src/components/ble/ImmediateAlertService.cpp
+++ b/src/components/ble/ImmediateAlertService.cpp
@@ -1,7 +1,7 @@
-#include <systemtask/SystemTask.h>
-#include <cstring>
#include "ImmediateAlertService.h"
-#include "AlertNotificationService.h"
+#include <cstring>
+#include "NotificationManager.h"
+#include "systemtask/SystemTask.h"
using namespace Pinetime::Controllers;
diff --git a/src/components/ble/ImmediateAlertService.h b/src/components/ble/ImmediateAlertService.h
index c42846c4..2bc9cba5 100644
--- a/src/components/ble/ImmediateAlertService.h
+++ b/src/components/ble/ImmediateAlertService.h
@@ -1,5 +1,9 @@
#pragma once
+#define min // workaround: nimble's min/max macros conflict with libstdc++
+#define max
#include <host/ble_gap.h>
+#undef max
+#undef min
namespace Pinetime {
namespace System {
diff --git a/src/components/ble/MusicService.cpp b/src/components/ble/MusicService.cpp
index 84f2972b..fdecb6b3 100644
--- a/src/components/ble/MusicService.cpp
+++ b/src/components/ble/MusicService.cpp
@@ -15,8 +15,8 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-#include <systemtask/SystemTask.h>
#include "MusicService.h"
+#include "systemtask/SystemTask.h"
int MSCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg) {
auto musicService = static_cast<Pinetime::Controllers::MusicService *>(arg);
diff --git a/src/components/ble/MusicService.h b/src/components/ble/MusicService.h
index b365909b..ee3628b0 100644
--- a/src/components/ble/MusicService.h
+++ b/src/components/ble/MusicService.h
@@ -18,10 +18,13 @@
#pragma once
#include <cstdint>
-#include <array>
+#include <string>
+#define min // workaround: nimble's min/max macros conflict with libstdc++
+#define max
#include <host/ble_gap.h>
#include <host/ble_uuid.h>
-#include <string>
+#undef max
+#undef min
//c7e50000-78fc-48fe-8e23-43b37a1942d0
#define MUSIC_SERVICE_UUID_BASE {0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, 0x00, 0x00, 0xe5, 0xc7}
diff --git a/src/components/ble/NimbleController.cpp b/src/components/ble/NimbleController.cpp
index af7f4029..a6f3cc39 100644
--- a/src/components/ble/NimbleController.cpp
+++ b/src/components/ble/NimbleController.cpp
@@ -1,15 +1,19 @@
-#include "components/datetime/DateTimeController.h"
-#include <systemtask/SystemTask.h>
-#include "components/ble/NotificationManager.h"
-#include <hal/nrf_rtc.h>
#include "NimbleController.h"
-#include "MusicService.h"
-#include <services/gatt/ble_svc_gatt.h>
-#include <services/gap/ble_svc_gap.h>
-#include <host/util/util.h>
-#include <host/ble_hs_id.h>
-#include <host/ble_hs.h>
+#include <hal/nrf_rtc.h>
+#define min // workaround: nimble's min/max macros conflict with libstdc++
+#define max
#include <host/ble_gap.h>
+#include <host/ble_hs.h>
+#include <host/ble_hs_id.h>
+#include <host/util/util.h>
+#undef max
+#undef min
+#include <services/gap/ble_svc_gap.h>
+#include <services/gatt/ble_svc_gatt.h>
+#include "components/ble/BleController.h"
+#include "components/ble/NotificationManager.h"
+#include "components/datetime/DateTimeController.h"
+#include "systemtask/SystemTask.h"
using namespace Pinetime::Controllers;
diff --git a/src/components/ble/NimbleController.h b/src/components/ble/NimbleController.h
index 8ddec1f9..914f11e6 100644
--- a/src/components/ble/NimbleController.h
+++ b/src/components/ble/NimbleController.h
@@ -2,24 +2,35 @@
#include <cstdint>
-#include "AlertNotificationService.h"
+#define min // workaround: nimble's min/max macros conflict with libstdc++
+#define max
+#include <host/ble_gap.h>
+#undef max
+#undef min
#include "AlertNotificationClient.h"
-#include "DeviceInformationService.h"
+#include "AlertNotificationService.h"
+#include "BatteryInformationService.h"
#include "CurrentTimeClient.h"
-#include "DfuService.h"
#include "CurrentTimeService.h"
-#include "MusicService.h"
-#include "BatteryInformationService.h"
+#include "DeviceInformationService.h"
+#include "DfuService.h"
#include "ImmediateAlertService.h"
+#include "MusicService.h"
#include "ServiceDiscovery.h"
-#include <host/ble_gap.h>
namespace Pinetime {
namespace Drivers {
class SpiNorFlash;
}
+
+ namespace System {
+ class SystemTask;
+ }
+
namespace Controllers {
+ class Ble;
class DateTime;
+ class NotificationManager;
class NimbleController {
diff --git a/src/components/ble/NotificationManager.cpp b/src/components/ble/NotificationManager.cpp
index 67711723..dabcb4ba 100644
--- a/src/components/ble/NotificationManager.cpp
+++ b/src/components/ble/NotificationManager.cpp
@@ -1,6 +1,6 @@
+#include "NotificationManager.h"
#include <cstring>
#include <algorithm>
-#include "NotificationManager.h"
using namespace Pinetime::Controllers;
diff --git a/src/components/ble/NotificationManager.h b/src/components/ble/NotificationManager.h
index 49fe8306..036d2ed9 100644
--- a/src/components/ble/NotificationManager.h
+++ b/src/components/ble/NotificationManager.h
@@ -2,6 +2,8 @@
#include <array>
#include <atomic>
+#include <cstddef>
+#include <cstdint>
namespace Pinetime {
namespace Controllers {
@@ -27,7 +29,7 @@ namespace Pinetime {
bool ClearNewNotificationFlag();
bool AreNewNotificationsAvailable();
- static constexpr uint8_t MaximumMessageSize() { return MessageSize; };
+ static constexpr size_t MaximumMessageSize() { return MessageSize; };
size_t NbNotifications() const;
private:
diff --git a/src/components/ble/ServiceDiscovery.cpp b/src/components/ble/ServiceDiscovery.cpp
index 4b29d89c..4d37b8bd 100644
--- a/src/components/ble/ServiceDiscovery.cpp
+++ b/src/components/ble/ServiceDiscovery.cpp
@@ -1,5 +1,7 @@
-#include <libraries/log/nrf_log.h>
#include "ServiceDiscovery.h"
+#include <libraries/log/nrf_log.h>
+#include "BleClient.h"
+
using namespace Pinetime::Controllers;
ServiceDiscovery::ServiceDiscovery(std::array<BleClient*, 2>&& clients) : clients{clients} {
diff --git a/src/components/ble/ServiceDiscovery.h b/src/components/ble/ServiceDiscovery.h
index c86fc4ec..0b26bd1d 100644
--- a/src/components/ble/ServiceDiscovery.h
+++ b/src/components/ble/ServiceDiscovery.h
@@ -1,12 +1,12 @@
#pragma once
#include <array>
-#include <functional>
-#include <memory>
-#include "BleClient.h"
+#include <cstdint>
namespace Pinetime {
namespace Controllers {
+ class BleClient;
+
class ServiceDiscovery {
public:
ServiceDiscovery(std::array<BleClient*, 2>&& bleClients);
diff --git a/src/components/brightness/BrightnessController.cpp b/src/components/brightness/BrightnessController.cpp
index c8825d68..78c461d7 100644
--- a/src/components/brightness/BrightnessController.cpp
+++ b/src/components/brightness/BrightnessController.cpp
@@ -1,5 +1,5 @@
-#include <hal/nrf_gpio.h>
#include "BrightnessController.h"
+#include <hal/nrf_gpio.h>
using namespace Pinetime::Controllers;
diff --git a/src/components/firmwarevalidator/FirmwareValidator.cpp b/src/components/firmwarevalidator/FirmwareValidator.cpp
index 244d5c06..48f98550 100644
--- a/src/components/firmwarevalidator/FirmwareValidator.cpp
+++ b/src/components/firmwarevalidator/FirmwareValidator.cpp
@@ -1,8 +1,8 @@
-#include <drivers/InternalFlash.h>
-#include <hal/nrf_rtc.h>
-
#include "FirmwareValidator.h"
+#include <hal/nrf_rtc.h>
+#include "drivers/InternalFlash.h"
+
using namespace Pinetime::Controllers;
bool FirmwareValidator::IsValidated() const {
diff --git a/src/components/gfx/Gfx.cpp b/src/components/gfx/Gfx.cpp
index 3c5dbfb7..b9b94013 100644
--- a/src/components/gfx/Gfx.cpp
+++ b/src/components/gfx/Gfx.cpp
@@ -1,8 +1,5 @@
-#include <libraries/svc/nrf_svci.h>
-#include <FreeRTOS.h>
-#include <task.h>
#include "Gfx.h"
-#include "../../drivers/St7789.h"
+#include "drivers/St7789.h"
using namespace Pinetime::Components;
Gfx::Gfx(Pinetime::Drivers::St7789 &lcd) : lcd{lcd} {
diff --git a/src/components/gfx/Gfx.h b/src/components/gfx/Gfx.h
index 091f06f5..35341e01 100644
--- a/src/components/gfx/Gfx.h
+++ b/src/components/gfx/Gfx.h
@@ -1,10 +1,10 @@
#pragma once
-#include <cstdint>
-#include <nrf_font.h>
-#include <drivers/BufferProvider.h>
#include <FreeRTOS.h>
+#include <nrf_font.h>
#include <task.h>
-
+#include <cstddef>
+#include <cstdint>
+#include "drivers/BufferProvider.h"
namespace Pinetime {
namespace Drivers {
diff --git a/src/logging/NrfLogger.cpp b/src/logging/NrfLogger.cpp
index 0d95c06a..9f7624be 100644
--- a/src/logging/NrfLogger.cpp
+++ b/src/logging/NrfLogger.cpp
@@ -1,9 +1,8 @@
+#include "NrfLogger.h"
+
+#include <libraries/log/nrf_log.h>
#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;
diff --git a/src/logging/NrfLogger.h b/src/logging/NrfLogger.h
index cb7089f2..fb68b919 100644
--- a/src/logging/NrfLogger.h
+++ b/src/logging/NrfLogger.h
@@ -1,6 +1,9 @@
#pragma once
#include "Logger.h"
+#include <FreeRTOS.h>
+#include <task.h>
+
namespace Pinetime {
namespace Logging{
class NrfLogger : public Logger {
diff --git a/src/main.cpp b/src/main.cpp
index 45aac6de..35057045 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,32 +1,44 @@
-#include <FreeRTOS.h>
-#include <task.h>
-#include <timers.h>
-#include <legacy/nrf_drv_clock.h>
+// nrf
#include <hal/nrf_rtc.h>
#include <hal/nrf_wdt.h>
-#include <os/os_cputime.h>
-#include <libraries/timer/app_timer.h>
+#include <legacy/nrf_drv_clock.h>
#include <libraries/gpiote/app_gpiote.h>
-#include "displayapp/DisplayApp.h"
+#include <libraries/timer/app_timer.h>
#include <softdevice/common/nrf_sdh.h>
-#include "components/datetime/DateTimeController.h"
-#include "components/battery/BatteryController.h"
-#include "components/ble/BleController.h"
-#include "components/ble/NotificationManager.h"
-#include <drivers/St7789.h>
-#include <drivers/SpiMaster.h>
-#include <drivers/Spi.h>
-#include "displayapp/LittleVgl.h"
-#include <systemtask/SystemTask.h>
-#include <nimble/nimble_port_freertos.h>
-#include <nimble/npl_freertos.h>
-#include <nimble/nimble_port.h>
-#include <host/ble_hs.h>
+
+// nimble
+#define min // workaround: nimble's min/max macros conflict with libstdc++
+#define max
#include <controller/ble_ll.h>
-#include <transport/ram/ble_hci_ram.h>
+#include <host/ble_hs.h>
#include <host/util/util.h>
+#include <nimble/nimble_port.h>
+#include <nimble/nimble_port_freertos.h>
+#include <nimble/npl_freertos.h>
+#include <os/os_cputime.h>
#include <services/gap/ble_svc_gap.h>
+#include <transport/ram/ble_hci_ram.h>
+#undef max
+#undef min
+
+// FreeRTOS
+#include <FreeRTOS.h>
+#include <task.h>
+#include <timers.h>
+#include "components/battery/BatteryController.h"
+#include "components/ble/BleController.h"
+#include "components/ble/NotificationManager.h"
+#include "components/datetime/DateTimeController.h"
+#include "displayapp/DisplayApp.h"
+#include "displayapp/LittleVgl.h"
+#include "drivers/Spi.h"
+#include "drivers/SpiMaster.h"
+#include "drivers/SpiNorFlash.h"
+#include "drivers/St7789.h"
+#include "drivers/TwiMaster.h"
+#include "drivers/Cst816s.h"
+#include "systemtask/SystemTask.h"
#if NRF_LOG_ENABLED
#include "logging/NrfLogger.h"
diff --git a/src/main.h b/src/main.h
index b0a8a57e..2ff32b8f 100644
--- a/src/main.h
+++ b/src/main.h
@@ -2,6 +2,7 @@
#include <FreeRTOS.h>
#include <timers.h>
+#include <nrfx_gpiote.h>
void nrfx_gpiote_evt_handler(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action);
void DebounceTimerCallback(TimerHandle_t xTimer); \ No newline at end of file
diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp
index dac4ce29..81e7323a 100644
--- a/src/systemtask/SystemTask.cpp
+++ b/src/systemtask/SystemTask.cpp
@@ -1,19 +1,27 @@
-#include <libraries/log/nrf_log.h>
-#include <libraries/gpiote/app_gpiote.h>
-#include <drivers/Cst816s.h>
-#include "displayapp/LittleVgl.h"
-#include <hal/nrf_rtc.h>
-#include "components/ble/NotificationManager.h"
-#include <host/ble_gatt.h>
-#include <host/ble_hs_adv.h>
#include "SystemTask.h"
-#include <nimble/hci_common.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 <drivers/InternalFlash.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/ble/BleController.h"
+#include "displayapp/LittleVgl.h"
+#include "drivers/Cst816s.h"
+#include "drivers/St7789.h"
+#include "drivers/InternalFlash.h"
+#include "drivers/SpiMaster.h"
+#include "drivers/SpiNorFlash.h"
+#include "drivers/TwiMaster.h"
#include "main.h"
-#include "components/ble/NimbleController.h"
-#include "../BootloaderVersion.h"
using namespace Pinetime::System;
diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h
index 6ef0cfbf..fe6e7cbe 100644
--- a/src/systemtask/SystemTask.h
+++ b/src/systemtask/SystemTask.h
@@ -4,17 +4,23 @@
#include <FreeRTOS.h>
#include <task.h>
-#include <drivers/SpiMaster.h>
-#include <drivers/St7789.h>
-#include "components/battery/BatteryController.h"
-#include "displayapp/DisplayApp.h"
-#include <drivers/Watchdog.h>
-#include <drivers/SpiNorFlash.h>
+#include <timers.h>
+
#include "SystemMonitor.h"
+#include "components/battery/BatteryController.h"
#include "components/ble/NimbleController.h"
-#include "timers.h"
+#include "components/ble/NotificationManager.h"
+#include "displayapp/DisplayApp.h"
+#include "drivers/Watchdog.h"
namespace Pinetime {
+ namespace Drivers {
+ class Cst816S;
+ class SpiMaster;
+ class SpiNorFlash;
+ class St7789;
+ class TwiMaster;
+ }
namespace System {
class SystemTask {
public: