src.bluetooth_sig.gatt.characteristics.device_time_control_point

Device Time Control Point characteristic (0x2B91).

Per DTS v1.0 Table 3.14 and Table 3.15, the DTCP characteristic structure is:

E2E_CRC (uint16, conditional) + Opcode (uint8) + Operand (0-17 bytes).

Request opcodes (Client -> Server):

0x02: Propose Time Update (M) — Time Update operand (Table 3.16) 0x03: Force Time Update (O) — Time Update operand (Table 3.16) 0x04: Propose Non-Logged Time Adj Limit — uint16 operand (Table 3.18) 0x05: Retrieve Active Time Adjustments — no operand

Response opcodes (Server -> Client):

0x07: Report Active Time Adjustments — operand (Table 3.19) 0x09: DTCP Response (M) — operand (Table 3.20)

Opcodes 0x00, 0x01, 0x06, 0x08, 0x0A-0xFF are Reserved for Future Use.

References

Bluetooth SIG Device Time Service v1.0, Table 3.14, Table 3.15

Classes

Name

Description

DeviceTimeControlPointCharacteristic

Device Time Control Point characteristic (0x2B91).

DeviceTimeControlPointData

Parsed data from Device Time Control Point characteristic.

DeviceTimeControlPointOpCode

DTCP opcode values — DTS v1.0 Table 3.15.

Module Contents

class src.bluetooth_sig.gatt.characteristics.device_time_control_point.DeviceTimeControlPointCharacteristic

Bases: src.bluetooth_sig.gatt.characteristics.base.BaseCharacteristic[DeviceTimeControlPointData]

Device Time Control Point characteristic (0x2B91).

org.bluetooth.characteristic.device_time_control_point

Used to initiate DTCP procedures on the Device Time Service server.

allow_variable_length = True
min_length = 1
class src.bluetooth_sig.gatt.characteristics.device_time_control_point.DeviceTimeControlPointData

Bases: msgspec.Struct

Parsed data from Device Time Control Point characteristic.

op_code: DeviceTimeControlPointOpCode
parameter: bytes | None = None
class src.bluetooth_sig.gatt.characteristics.device_time_control_point.DeviceTimeControlPointOpCode

Bases: enum.IntEnum

DTCP opcode values — DTS v1.0 Table 3.15.

DTCP_RESPONSE = 9
FORCE_TIME_UPDATE = 3
PROPOSE_NON_LOGGED_TIME_ADJUSTMENT_LIMIT = 4
PROPOSE_TIME_UPDATE = 2
REPORT_ACTIVE_TIME_ADJUSTMENTS = 7
RETRIEVE_ACTIVE_TIME_ADJUSTMENTS = 5