aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/ble/CurrentTimeService.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/ble/CurrentTimeService.h')
-rw-r--r--src/components/ble/CurrentTimeService.h27
1 files changed, 19 insertions, 8 deletions
diff --git a/src/components/ble/CurrentTimeService.h b/src/components/ble/CurrentTimeService.h
index ca87d970..91544314 100644
--- a/src/components/ble/CurrentTimeService.h
+++ b/src/components/ble/CurrentTimeService.h
@@ -16,29 +16,40 @@ namespace Pinetime {
CurrentTimeService(DateTime& dateTimeController);
void Init();
- int OnTimeAccessed(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt);
+ int OnCurrentTimeServiceAccessed(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt);
+ int OnCurrentTimeAccessed(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt);
+ int OnLocalTimeAccessed(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt);
private:
static constexpr uint16_t ctsId {0x1805};
- static constexpr uint16_t ctsCharId {0x2a2b};
+ static constexpr uint16_t ctsCurrentTimeCharId {0x2a2b};
+ static constexpr uint16_t ctsLocalTimeCharId {0x2a0f};
static constexpr ble_uuid16_t ctsUuid {.u {.type = BLE_UUID_TYPE_16}, .value = ctsId};
- static constexpr ble_uuid16_t ctChrUuid {.u {.type = BLE_UUID_TYPE_16}, .value = ctsCharId};
+ static constexpr ble_uuid16_t ctsCtChrUuid {.u {.type = BLE_UUID_TYPE_16}, .value = ctsCurrentTimeCharId};
+ static constexpr ble_uuid16_t ctsLtChrUuid {.u {.type = BLE_UUID_TYPE_16}, .value = ctsLocalTimeCharId};
- struct ble_gatt_chr_def characteristicDefinition[2];
+ struct ble_gatt_chr_def characteristicDefinition[3];
struct ble_gatt_svc_def serviceDefinition[2];
typedef struct __attribute__((packed)) {
- uint16_t year;
+ uint8_t year_LSO; // BLE GATT is little endian
+ uint8_t year_MSO;
uint8_t month;
uint8_t dayofmonth;
uint8_t hour;
uint8_t minute;
uint8_t second;
- uint8_t millis;
- uint8_t reason;
- } CtsData;
+ uint8_t dayofweek;
+ uint8_t fractions256; // currently ignored
+ uint8_t reason; // currently ignored, not that any host would set it anyway
+ } CtsCurrentTimeData;
+
+ typedef struct __attribute__((packed)) {
+ uint8_t timezone;
+ uint8_t dst;
+ } CtsLocalTimeData;
DateTime& m_dateTimeController;
};