Coverage for src / bluetooth_sig / types / advertising / extended.py: 100%
32 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-18 11:17 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-18 11:17 +0000
1"""Extended advertising field types (BLE 5.0+).
3Constant Tone Extension, Advertising Data Info, Auxiliary Pointer, and Sync Info.
4"""
6from __future__ import annotations
8from enum import IntEnum
10import msgspec
13class CTEType(IntEnum):
14 """Constant Tone Extension (CTE) Types (Core Spec Vol 6, Part B, Section 2.5)."""
16 AOA = 0x00 # Angle of Arrival
17 AOD_1US = 0x01 # Angle of Departure with 1μs slots
18 AOD_2US = 0x02 # Angle of Departure with 2μs slots
21class CTEInfo(msgspec.Struct, kw_only=True):
22 """Constant Tone Extension (CTE) information (BLE 5.1+ Direction Finding).
24 Attributes:
25 cte_time: CTE length in 8μs units (0-19, representing 16-160μs)
26 cte_type: Type of CTE (AoA, AoD 1μs, or AoD 2μs)
27 """
29 cte_time: int
30 cte_type: CTEType
33class AdvertisingDataInfo(msgspec.Struct, kw_only=True):
34 """Advertising Data Info (ADI) field (BLE 5.0+).
36 Attributes:
37 advertising_data_id: Advertising Data ID (DID) - 12 bits
38 advertising_set_id: Advertising Set ID (SID) - 4 bits
39 """
41 advertising_data_id: int # 12-bit DID (0-4095)
42 advertising_set_id: int # 4-bit SID (0-15)
45class PHYType(IntEnum):
46 """PHY types for auxiliary channel (Core Spec Vol 6, Part B, Section 2.3.4.6)."""
48 LE_1M = 0x00
49 LE_2M = 0x01
50 LE_CODED = 0x02
53class AuxiliaryPointer(msgspec.Struct, kw_only=True):
54 """Auxiliary Pointer for chaining extended advertising packets (BLE 5.0+).
56 Attributes:
57 channel_index: Advertising channel index (0-39)
58 ca: Clock accuracy (0=51-500ppm, 1=0-50ppm)
59 offset_units: Units for aux_offset (0=30μs, 1=300μs)
60 aux_offset: Time offset to auxiliary packet (13 bits)
61 aux_phy: PHY used for auxiliary packet
62 """
64 channel_index: int # 0-39
65 ca: bool
66 offset_units: int # 0 or 1
67 aux_offset: int # 13-bit value
68 aux_phy: PHYType
71class SyncInfo(msgspec.Struct, kw_only=True):
72 """Synchronization Info for Periodic Advertising (BLE 5.0+).
74 Attributes:
75 sync_packet_offset: Offset to first periodic advertising packet (13 bits, 30μs units)
76 offset_units: Units for sync_packet_offset (0=30μs, 1=300μs)
77 interval: Periodic advertising interval (1.25ms units, range: 7.5ms-81.91875s)
78 channel_map: Channel map for periodic advertising (37 bits)
79 sleep_clock_accuracy: Sleep clock accuracy (0-7, represents ppm ranges)
80 advertising_address: Advertiser address (6 bytes)
81 advertising_address_type: 0=Public, 1=Random
82 sync_counter: Synchronization counter for packet identification
83 """
85 sync_packet_offset: int # 13 bits
86 offset_units: int # 0 or 1
87 interval: int # Periodic advertising interval in 1.25ms units
88 channel_map: int # 37-bit channel map
89 sleep_clock_accuracy: int # 0-7 (ppm ranges)
90 advertising_address: str # MAC address
91 advertising_address_type: int # 0 or 1
92 sync_counter: int # Packet counter