summaryrefslogtreecommitdiff
path: root/src/Components/Ble/BatteryInformationService.h
diff options
context:
space:
mode:
authorJF <jf@codingfield.com>2020-09-27 20:02:47 +0200
committerJF <jf@codingfield.com>2020-09-27 20:02:47 +0200
commit5d3a9744938b38c064379c3f78ace5a7dd87926f (patch)
treed0e73cf9c19260328a729eb3ccc398ce8536b329 /src/Components/Ble/BatteryInformationService.h
parent079d437016e2bdbd2161fb6b3f11f9d9e346709a (diff)
Add BatteryInformationService to expose the battery level to BLE host.
Diffstat (limited to 'src/Components/Ble/BatteryInformationService.h')
-rw-r--r--src/Components/Ble/BatteryInformationService.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/Components/Ble/BatteryInformationService.h b/src/Components/Ble/BatteryInformationService.h
new file mode 100644
index 00000000..74b2222c
--- /dev/null
+++ b/src/Components/Ble/BatteryInformationService.h
@@ -0,0 +1,40 @@
+#pragma once
+#include <host/ble_gap.h>
+
+namespace Pinetime {
+ namespace System {
+ class SystemTask;
+ }
+ namespace Controllers {
+ class Battery;
+ class BatteryInformationService {
+ public:
+ BatteryInformationService(Controllers::Battery& batteryController);
+ void Init();
+
+ int
+ OnBatteryServiceRequested(uint16_t connectionHandle, uint16_t attributeHandle, ble_gatt_access_ctxt *context);
+
+ private:
+ Controllers::Battery& batteryController;
+ static constexpr uint16_t batteryInformationServiceId {0x180F};
+ static constexpr uint16_t batteryLevelId {0x2A19};
+
+ static constexpr ble_uuid16_t batteryInformationServiceUuid {
+ .u {.type = BLE_UUID_TYPE_16},
+ .value = batteryInformationServiceId
+ };
+
+ static constexpr ble_uuid16_t batteryLevelUuid {
+ .u {.type = BLE_UUID_TYPE_16},
+ .value = batteryLevelId
+ };
+
+ struct ble_gatt_chr_def characteristicDefinition[3];
+ struct ble_gatt_svc_def serviceDefinition[2];
+
+ uint16_t batteryLevelHandle;
+
+ };
+ }
+}