1"""Class for UWB ranging parameters for testing."""
2
3import dataclasses
4from enum import IntEnum
5from typing import List, Optional
6
7
8class ConfigId(IntEnum):
9  UNICAST_DS_TWR = 1
10  MULTICAST_DS_TWR = 2
11  PROVISIONED_UNICAST_DS_TWR = 4
12  PROVISIONED_MULTICAST_DS_TWR = 5
13  PROVISIONED_INDIVIDUAL_MULTICAST_DS_TWR = 7
14
15
16class RangingUpdateRate(IntEnum):
17  AUTOMATIC = 1
18  INFREQUENT = 2
19  FREQUENT = 3
20
21
22class SlotDuration(IntEnum):
23  MILLIS_1 = 1
24  MILLIS_2 = 2
25
26
27@dataclasses.dataclass(kw_only=True)
28class UwbRangingParams:
29  """Class for Uwb ranging parameters."""
30
31  session_id: int
32  sub_session_id: int = 0
33  config_id: ConfigId
34  device_address: List[int]
35  session_key_info: List[int] = dataclasses.field(
36      default_factory=lambda: [1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1]
37  )
38  sub_session_key_info: Optional[List[int]] = None
39  peer_address: List[int]
40  ranging_update_rate: RangingUpdateRate = RangingUpdateRate.AUTOMATIC
41  slot_duration_ms: SlotDuration = SlotDuration.MILLIS_2
42  is_aoa_disabled: bool = False
43