From a9254ee90e835b6a187d1fcd6f8850decca5bc89 Mon Sep 17 00:00:00 2001 From: JF Date: Wed, 22 Apr 2020 20:19:36 +0200 Subject: NimbleController : support CTS --- src/Components/Ble/NimbleController.h | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'src/Components/Ble/NimbleController.h') diff --git a/src/Components/Ble/NimbleController.h b/src/Components/Ble/NimbleController.h index 1901b14e..f44f26d4 100644 --- a/src/Components/Ble/NimbleController.h +++ b/src/Components/Ble/NimbleController.h @@ -5,15 +5,42 @@ namespace Pinetime { namespace Controllers { - + class DateTime; class NimbleController { public: + NimbleController(DateTime& dateTimeController); void Init(); void StartAdvertising(); int OnGAPEvent(ble_gap_event *event); + int OnDiscoveryEvent(uint16_t connectionHandle, const ble_gatt_error *error, const ble_gatt_svc *service); + int + OnCharacteristicDiscoveryEvent(uint16_t conn_handle, const ble_gatt_error *error, + const ble_gatt_chr *characteristic); + int OnCurrentTimeReadResult(uint16_t conn_handle, const ble_gatt_error *error, const ble_gatt_attr *attribute); private: static constexpr char* deviceName = "Pinetime-JF"; + static constexpr uint16_t BleGatServiceCts = 0x1805; + + typedef struct __attribute__((packed)) { + uint16_t year; + uint8_t month; + uint8_t dayofmonth; + uint8_t hour; + uint8_t minute; + uint8_t second; + uint8_t millis; + uint8_t reason; + } CtsData; + + DateTime& dateTimeController; + + ble_uuid16_t ctsUuid; + + static constexpr uint16_t bleGattCharacteristicCurrentTime = 0x2a2b; + ble_uuid16_t ctsCurrentTimeUuid; + uint8_t addrType; + uint16_t connectionHandle; }; } } -- cgit v1.2.3-70-g09d2