"""Class for UWB ranging parameters for testing."""

import dataclasses
from enum import IntEnum
from typing import List, Optional


class ConfigId(IntEnum):
  UNICAST_DS_TWR = 1
  MULTICAST_DS_TWR = 2
  PROVISIONED_UNICAST_DS_TWR = 4
  PROVISIONED_MULTICAST_DS_TWR = 5
  PROVISIONED_INDIVIDUAL_MULTICAST_DS_TWR = 7


class RangingUpdateRate(IntEnum):
  AUTOMATIC = 1
  INFREQUENT = 2
  FREQUENT = 3


class SlotDuration(IntEnum):
  MILLIS_1 = 1
  MILLIS_2 = 2


@dataclasses.dataclass(kw_only=True)
class UwbRangingParams:
  """Class for Uwb ranging parameters."""

  session_id: int
  sub_session_id: int = 0
  config_id: ConfigId
  device_address: List[int]
  session_key_info: List[int] = dataclasses.field(
      default_factory=lambda: [1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1]
  )
  sub_session_key_info: Optional[List[int]] = None
  peer_address: List[int]
  ranging_update_rate: RangingUpdateRate = RangingUpdateRate.AUTOMATIC
  slot_duration_ms: SlotDuration = SlotDuration.MILLIS_2
  is_aoa_disabled: bool = False
