blob: f44f26d453458a65d80871fae0a42a0f8f690e74 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
#pragma once
#include <cstdint>
#include <host/ble_gap.h>
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;
};
}
}
|