serial_config.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from dataclasses import dataclass
  2. from enum import Enum
  3. from typing import Annotated
  4. from beartype import beartype
  5. from beartype.vale import Is
  6. class NBusBaudrate(Enum):
  7. """
  8. Enum class for serial baudrate speed.
  9. """
  10. SPEED_9600 = 9600
  11. SPEED_19200 = 19200
  12. SPEED_38400 = 38400
  13. SPEED_57600 = 7600
  14. SPEED_115200 = 115200
  15. SPEED_230400 = 230400
  16. SPEED_460800 = 460800
  17. SPEED_576000 = 576000
  18. SPEED_921600 = 921600
  19. class NBusParity(Enum):
  20. """
  21. Enum class for serial parity.
  22. """
  23. NONE = "N"
  24. ODD = "O"
  25. EVEN = "E"
  26. @beartype
  27. @dataclass(frozen=True)
  28. class NBusSerialConfig:
  29. """
  30. Configuration of serial port.
  31. :ivar port_name: The serial port identifier.
  32. :ivar baud: The baud rate for the serial communication.
  33. :ivar parity: The parity bit setting for the serial communication.
  34. :ivar timeout: The timeout value for the serial communication.
  35. :ivar request_attempts: The number of attempts for a request.
  36. :ivar enable_log: Flag to enable or disable logging.
  37. """
  38. port_name: str
  39. baud: NBusBaudrate
  40. parity: NBusParity
  41. timeout: Annotated[float, Is[lambda value: value > 0]]
  42. request_attempts: Annotated[int, Is[lambda value: value > 0]]
  43. enable_log: bool