diff options
author | JF <jf@codingfield.com> | 2020-05-17 10:29:13 +0200 |
---|---|---|
committer | Gitea <gitea@fake.local> | 2020-05-17 10:29:13 +0200 |
commit | 8a94750e30399bfb204cbec59a769d9d1b6b5baa (patch) | |
tree | 8a1a58beae54e238d28aff116c900f3b428b7db4 /src/Components/Ble/NimbleController.h | |
parent | 86d5732b960fbe7f81ed711b2de7e6b79293c96a (diff) | |
parent | be1ad9b07083e656a649d223750ff4b14b781b7b (diff) |
Merge branch 'develop' of JF/PineTime into master
Diffstat (limited to 'src/Components/Ble/NimbleController.h')
-rw-r--r-- | src/Components/Ble/NimbleController.h | 47 |
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; + }; + } +} |