diff options
author | JF <jf@codingfield.com> | 2020-04-23 20:57:53 +0200 |
---|---|---|
committer | JF <jf@codingfield.com> | 2020-04-23 20:57:53 +0200 |
commit | 89ccdd00032dbd6f97ce5cff57f588b6bd88ef2a (patch) | |
tree | b005a935fd2af435dfcd958813032ef5ff21da20 /src/Components/Ble/CurrentTimeClient.h | |
parent | 24a7b6e39758386f9f33df266a9419dd3408f862 (diff) |
NimbleController : Encapsulate CTS client in its own class.
Diffstat (limited to 'src/Components/Ble/CurrentTimeClient.h')
-rw-r--r-- | src/Components/Ble/CurrentTimeClient.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/Components/Ble/CurrentTimeClient.h b/src/Components/Ble/CurrentTimeClient.h new file mode 100644 index 00000000..94892cef --- /dev/null +++ b/src/Components/Ble/CurrentTimeClient.h @@ -0,0 +1,54 @@ +#pragma once +#include <cstdint> +#include <array> +#include <Components/DateTime/DateTimeController.h> +#include <host/ble_gap.h> + +namespace Pinetime { + namespace Controllers { + int CurrentTimeDiscoveryEventCallback(uint16_t conn_handle, const struct ble_gatt_error *error, + const struct ble_gatt_svc *service, void *arg); + int CurrentTimeCharacteristicDiscoveredCallback(uint16_t conn_handle, const struct ble_gatt_error *error, + const struct ble_gatt_chr *chr, void *arg); + int CurrentTimeReadCallback(uint16_t conn_handle, const struct ble_gatt_error *error, + struct ble_gatt_attr *attr, void *arg); + + class CurrentTimeClient { + public: + explicit CurrentTimeClient(DateTime& dateTimeController); + void Init(); + 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); + + + void StartDiscovery(uint16_t connectionHandle); + private: + 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; + + static constexpr uint16_t ctsServiceId {0x1805}; + static constexpr uint16_t currentTimeCharacteristicId {0x2a2b}; + + static constexpr ble_uuid16_t ctsServiceUuid { + .u { .type = BLE_UUID_TYPE_16 }, + .value = ctsServiceId + }; + static constexpr ble_uuid16_t currentTimeCharacteristicUuid { + .u { .type = BLE_UUID_TYPE_16 }, + .value = currentTimeCharacteristicId + }; + + DateTime& dateTimeController; + }; + } +}
\ No newline at end of file |