summaryrefslogtreecommitdiff
path: root/src/Components/Ble/NimbleController.h
diff options
context:
space:
mode:
authorJF <jf@codingfield.com>2020-05-17 10:29:13 +0200
committerGitea <gitea@fake.local>2020-05-17 10:29:13 +0200
commit8a94750e30399bfb204cbec59a769d9d1b6b5baa (patch)
tree8a1a58beae54e238d28aff116c900f3b428b7db4 /src/Components/Ble/NimbleController.h
parent86d5732b960fbe7f81ed711b2de7e6b79293c96a (diff)
parentbe1ad9b07083e656a649d223750ff4b14b781b7b (diff)
Merge branch 'develop' of JF/PineTime into master
Diffstat (limited to 'src/Components/Ble/NimbleController.h')
-rw-r--r--src/Components/Ble/NimbleController.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/Components/Ble/NimbleController.h b/src/Components/Ble/NimbleController.h
new file mode 100644
index 00000000..44fbbe2c
--- /dev/null
+++ b/src/Components/Ble/NimbleController.h
@@ -0,0 +1,47 @@
+#pragma once
+
+#include <cstdint>
+#include "AlertNotificationService.h"
+#include "AlertNotificationClient.h"
+#include "DeviceInformationService.h"
+#include "CurrentTimeClient.h"
+#include "CurrentTimeService.h"
+#include <host/ble_gap.h>
+
+namespace Pinetime {
+ namespace Controllers {
+ class DateTime;
+ class NimbleController {
+
+ public:
+ NimbleController(Pinetime::System::SystemTask& systemTask, Pinetime::Controllers::Ble& bleController, DateTime& dateTimeController, Pinetime::Controllers::NotificationManager& notificationManager);
+ void Init();
+ void StartAdvertising();
+ int OnGAPEvent(ble_gap_event *event);
+
+ int OnDiscoveryEvent(uint16_t i, const ble_gatt_error *pError, const ble_gatt_svc *pSvc);
+ int OnCTSCharacteristicDiscoveryEvent(uint16_t connectionHandle, const ble_gatt_error *error,
+ const ble_gatt_chr *characteristic);
+ int OnANSCharacteristicDiscoveryEvent(uint16_t connectionHandle, const ble_gatt_error *error,
+ const ble_gatt_chr *characteristic);
+ int OnCurrentTimeReadResult(uint16_t connectionHandle, const ble_gatt_error *error, ble_gatt_attr *attribute);
+ int OnANSDescriptorDiscoveryEventCallback(uint16_t connectionHandle, const ble_gatt_error *error,
+ uint16_t characteristicValueHandle, const ble_gatt_dsc *descriptor);
+ private:
+ static constexpr char* deviceName = "Pinetime-JF";
+ Pinetime::System::SystemTask& systemTask;
+ Pinetime::Controllers::Ble& bleController;
+ DateTime& dateTimeController;
+ Pinetime::Controllers::NotificationManager& notificationManager;
+
+ DeviceInformationService deviceInformationService;
+ CurrentTimeClient currentTimeClient;
+ AlertNotificationService anService;
+ AlertNotificationClient alertNotificationClient;
+ CurrentTimeService currentTimeService;
+
+ uint8_t addrType;
+ uint16_t connectionHandle;
+ };
+ }
+}