51 #define CTS_ADJUST_REASON_VALID_VALUES_MASK (CTS_AR_NO_CHANGE | \
52 CTS_AR_CHANGE_OF_DST | \
53 CTS_AR_MANUAL_TIME_UPDATE | \
54 CTS_AR_EXTERNAL_REFERENCE_TIME_UPDATE | \
55 CTS_AR_CHANGE_OF_TIME_ZONE)
59 CTS_ERROR_DATA_FIELD_IGNORED = ATT_ERROR_APPLICATION_ERROR,
65 CTS_AR_MANUAL_TIME_UPDATE = 1,
66 CTS_AR_EXTERNAL_REFERENCE_TIME_UPDATE = 2,
67 CTS_AR_CHANGE_OF_TIME_ZONE = 4,
68 CTS_AR_CHANGE_OF_DST = 8
73 CTS_DST_STANDARD_TIME = 0,
74 CTS_DST_HALF_AN_HOUR_DAYLIGH_TIME = 2,
75 CTS_DST_DAYLIGHT_TIME = 4,
76 CTS_DST_DOUBLE_DAYLIGHT_TIME = 8,
85 CTS_RTS_RADIO_TIME_SIGNAL = 3,
87 CTS_RTS_ATOMIC_CLOCK = 5,
88 CTS_RTS_CELULAR_NETOWRK = 6,
121 uint8_t hours_since_update;
124 typedef void (* cts_get_time_cb_t) (
ble_service_t *svc, uint16_t conn_idx);
126 typedef void (* cts_set_time_cb_t) (
ble_service_t *svc, uint16_t conn_idx,
129 typedef void (* cts_set_local_time_info_cb_t) (
ble_service_t *svc, uint16_t conn_idx,
132 typedef void (* cts_get_ref_time_info_cb_t) (
ble_service_t *svc, uint16_t conn_idx);
137 cts_get_time_cb_t get_time;
140 cts_set_time_cb_t set_time;
145 cts_set_local_time_info_cb_t set_local_time_info;
149 cts_get_ref_time_info_cb_t get_ref_time_info;
253 return h * 4 + (m / 15) * (h < 0 ? -1 : 1);
292 return (((time->date_time.
year >= 1582) && (time->date_time.
year <= 9999))
293 || (time->date_time.
year == 0)) &&
294 (time->date_time.
month <= 12) && (time->date_time.
day <= 31) &&
295 (time->date_time.
hours <= 23) && (time->date_time.
minutes <= 59) &&
309 return (((info->time_zone >= -48) && (info->time_zone <= 56)) || (info->time_zone == -128)) &&
310 (info->dst >= 0) && (info->dst <= 8);