• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 = 3
12  PROVISIONED_MULTICAST_DS_TWR = 4
13  PROVISIONED_INDIVIDUAL_MULTICAST_DS_TWR = 5
14  PROVISIONED_UNICAST_DS_TWR_VERY_FAST = 6
15
16
17class RangingUpdateRate(IntEnum):
18  AUTOMATIC = 1
19  INFREQUENT = 2
20  FREQUENT = 3
21
22
23class SlotDuration(IntEnum):
24  MILLIS_1 = 1
25  MILLIS_2 = 2
26
27
28@dataclasses.dataclass(kw_only=True)
29class UwbRangingParams:
30  """Class for Uwb ranging parameters."""
31
32  session_id: int
33  sub_session_id: int = 0
34  config_id: ConfigId
35  device_address: List[int]
36  session_key_info: List[int] = dataclasses.field(
37      default_factory=lambda: [1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1]
38  )
39  sub_session_key_info: Optional[List[int]] = None
40  peer_address: List[int]
41  ranging_update_rate: RangingUpdateRate = RangingUpdateRate.AUTOMATIC
42  slot_duration_ms: SlotDuration = SlotDuration.MILLIS_2
43  is_aoa_disabled: bool = False
44