:py:mod:`leads_vec.devices`
===========================

.. py:module:: leads_vec.devices

.. autodoc2-docstring:: leads_vec.devices
   :allowtitles:

Module Contents
---------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`VeCController <leads_vec.devices.VeCController>`
     - .. autodoc2-docstring:: leads_vec.devices.VeCController
          :summary:
   * - :py:obj:`OBD <leads_vec.devices.OBD>`
     - .. autodoc2-docstring:: leads_vec.devices.OBD
          :summary:
   * - :py:obj:`PowerController <leads_vec.devices.PowerController>`
     -
   * - :py:obj:`BatteryVoltageSensor <leads_vec.devices.BatteryVoltageSensor>`
     -
   * - :py:obj:`WheelSpeedController <leads_vec.devices.WheelSpeedController>`
     -
   * - :py:obj:`AverageOdometer <leads_vec.devices.AverageOdometer>`
     - .. autodoc2-docstring:: leads_vec.devices.AverageOdometer
          :summary:
   * - :py:obj:`WheelSpeedSensors <leads_vec.devices.WheelSpeedSensors>`
     -
   * - :py:obj:`LinearAccelerometer <leads_vec.devices.LinearAccelerometer>`
     - .. autodoc2-docstring:: leads_vec.devices.LinearAccelerometer
          :summary:
   * - :py:obj:`GPS <leads_vec.devices.GPS>`
     -
   * - :py:obj:`CPU <leads_vec.devices.CPU>`
     - .. autodoc2-docstring:: leads_vec.devices.CPU
          :summary:
   * - :py:obj:`Indicator <leads_vec.devices.Indicator>`
     - .. autodoc2-docstring:: leads_vec.devices.Indicator
          :summary:
   * - :py:obj:`BrakeIndicator <leads_vec.devices.BrakeIndicator>`
     - .. autodoc2-docstring:: leads_vec.devices.BrakeIndicator
          :summary:
   * - :py:obj:`LeftIndicator <leads_vec.devices.LeftIndicator>`
     - .. autodoc2-docstring:: leads_vec.devices.LeftIndicator
          :summary:
   * - :py:obj:`RightIndicator <leads_vec.devices.RightIndicator>`
     - .. autodoc2-docstring:: leads_vec.devices.RightIndicator
          :summary:
   * - :py:obj:`LeftIndicatorButton <leads_vec.devices.LeftIndicatorButton>`
     -
   * - :py:obj:`RightIndicatorButton <leads_vec.devices.RightIndicatorButton>`
     -

Data
~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`config <leads_vec.devices.config>`
     - .. autodoc2-docstring:: leads_vec.devices.config
          :summary:
   * - :py:obj:`GPS_ONLY <leads_vec.devices.GPS_ONLY>`
     - .. autodoc2-docstring:: leads_vec.devices.GPS_ONLY
          :summary:
   * - :py:obj:`BAUD_RATE <leads_vec.devices.BAUD_RATE>`
     - .. autodoc2-docstring:: leads_vec.devices.BAUD_RATE
          :summary:
   * - :py:obj:`SOBD_PORT <leads_vec.devices.SOBD_PORT>`
     - .. autodoc2-docstring:: leads_vec.devices.SOBD_PORT
          :summary:
   * - :py:obj:`SOBD_PASSWORD <leads_vec.devices.SOBD_PASSWORD>`
     - .. autodoc2-docstring:: leads_vec.devices.SOBD_PASSWORD
          :summary:
   * - :py:obj:`POWER_CONTROLLER_PORT <leads_vec.devices.POWER_CONTROLLER_PORT>`
     - .. autodoc2-docstring:: leads_vec.devices.POWER_CONTROLLER_PORT
          :summary:
   * - :py:obj:`WHEEL_SPEED_CONTROLLER_PORT <leads_vec.devices.WHEEL_SPEED_CONTROLLER_PORT>`
     - .. autodoc2-docstring:: leads_vec.devices.WHEEL_SPEED_CONTROLLER_PORT
          :summary:
   * - :py:obj:`GPS_RECEIVER_PORT <leads_vec.devices.GPS_RECEIVER_PORT>`
     - .. autodoc2-docstring:: leads_vec.devices.GPS_RECEIVER_PORT
          :summary:
   * - :py:obj:`FRONT_WHEEL_DIAMETER <leads_vec.devices.FRONT_WHEEL_DIAMETER>`
     - .. autodoc2-docstring:: leads_vec.devices.FRONT_WHEEL_DIAMETER
          :summary:
   * - :py:obj:`REAR_WHEEL_DIAMETER <leads_vec.devices.REAR_WHEEL_DIAMETER>`
     - .. autodoc2-docstring:: leads_vec.devices.REAR_WHEEL_DIAMETER
          :summary:
   * - :py:obj:`NUM_DIVISIONS <leads_vec.devices.NUM_DIVISIONS>`
     - .. autodoc2-docstring:: leads_vec.devices.NUM_DIVISIONS
          :summary:
   * - :py:obj:`THROTTLE_PEDAL_PIN <leads_vec.devices.THROTTLE_PEDAL_PIN>`
     - .. autodoc2-docstring:: leads_vec.devices.THROTTLE_PEDAL_PIN
          :summary:
   * - :py:obj:`BRAKE_PEDAL_PIN <leads_vec.devices.BRAKE_PEDAL_PIN>`
     - .. autodoc2-docstring:: leads_vec.devices.BRAKE_PEDAL_PIN
          :summary:
   * - :py:obj:`VOLTAGE_SENSOR_PIN <leads_vec.devices.VOLTAGE_SENSOR_PIN>`
     - .. autodoc2-docstring:: leads_vec.devices.VOLTAGE_SENSOR_PIN
          :summary:
   * - :py:obj:`_ <leads_vec.devices._>`
     - .. autodoc2-docstring:: leads_vec.devices._
          :summary:

API
~~~

.. py:data:: config
   :canonical: leads_vec.devices.config
   :type: leads_vec.config.Config
   :value: 'require_config(...)'

   .. autodoc2-docstring:: leads_vec.devices.config

.. py:data:: GPS_ONLY
   :canonical: leads_vec.devices.GPS_ONLY
   :type: int
   :value: 'get(...)'

   .. autodoc2-docstring:: leads_vec.devices.GPS_ONLY

.. py:data:: BAUD_RATE
   :canonical: leads_vec.devices.BAUD_RATE
   :type: int
   :value: 'get(...)'

   .. autodoc2-docstring:: leads_vec.devices.BAUD_RATE

.. py:data:: SOBD_PORT
   :canonical: leads_vec.devices.SOBD_PORT
   :type: int
   :value: 'get(...)'

   .. autodoc2-docstring:: leads_vec.devices.SOBD_PORT

.. py:data:: SOBD_PASSWORD
   :canonical: leads_vec.devices.SOBD_PASSWORD
   :type: int
   :value: 'get(...)'

   .. autodoc2-docstring:: leads_vec.devices.SOBD_PASSWORD

.. py:data:: POWER_CONTROLLER_PORT
   :canonical: leads_vec.devices.POWER_CONTROLLER_PORT
   :type: str
   :value: 'get(...)'

   .. autodoc2-docstring:: leads_vec.devices.POWER_CONTROLLER_PORT

.. py:data:: WHEEL_SPEED_CONTROLLER_PORT
   :canonical: leads_vec.devices.WHEEL_SPEED_CONTROLLER_PORT
   :type: str
   :value: 'get(...)'

   .. autodoc2-docstring:: leads_vec.devices.WHEEL_SPEED_CONTROLLER_PORT

.. py:data:: GPS_RECEIVER_PORT
   :canonical: leads_vec.devices.GPS_RECEIVER_PORT
   :type: str
   :value: 'get(...)'

   .. autodoc2-docstring:: leads_vec.devices.GPS_RECEIVER_PORT

.. py:data:: FRONT_WHEEL_DIAMETER
   :canonical: leads_vec.devices.FRONT_WHEEL_DIAMETER
   :type: float
   :value: 'get(...)'

   .. autodoc2-docstring:: leads_vec.devices.FRONT_WHEEL_DIAMETER

.. py:data:: REAR_WHEEL_DIAMETER
   :canonical: leads_vec.devices.REAR_WHEEL_DIAMETER
   :type: float
   :value: 'get(...)'

   .. autodoc2-docstring:: leads_vec.devices.REAR_WHEEL_DIAMETER

.. py:data:: NUM_DIVISIONS
   :canonical: leads_vec.devices.NUM_DIVISIONS
   :type: int
   :value: 'get(...)'

   .. autodoc2-docstring:: leads_vec.devices.NUM_DIVISIONS

.. py:data:: THROTTLE_PEDAL_PIN
   :canonical: leads_vec.devices.THROTTLE_PEDAL_PIN
   :type: int
   :value: 'get(...)'

   .. autodoc2-docstring:: leads_vec.devices.THROTTLE_PEDAL_PIN

.. py:data:: BRAKE_PEDAL_PIN
   :canonical: leads_vec.devices.BRAKE_PEDAL_PIN
   :type: int
   :value: 'get(...)'

   .. autodoc2-docstring:: leads_vec.devices.BRAKE_PEDAL_PIN

.. py:data:: VOLTAGE_SENSOR_PIN
   :canonical: leads_vec.devices.VOLTAGE_SENSOR_PIN
   :type: int
   :value: 'get(...)'

   .. autodoc2-docstring:: leads_vec.devices.VOLTAGE_SENSOR_PIN

.. py:class:: VeCController()
   :canonical: leads_vec.devices.VeCController

   Bases: :py:obj:`leads.Controller`

   .. autodoc2-docstring:: leads_vec.devices.VeCController

   .. rubric:: Initialization

   .. autodoc2-docstring:: leads_vec.devices.VeCController.__init__

   .. py:method:: initialize(*parent_tags: str) -> None
      :canonical: leads_vec.devices.VeCController.initialize

      .. autodoc2-docstring:: leads_vec.devices.VeCController.initialize

   .. py:method:: read() -> leads.DataContainer
      :canonical: leads_vec.devices.VeCController.read

      .. autodoc2-docstring:: leads_vec.devices.VeCController.read

.. py:class:: OBD(port: str | typing.Literal[auto], baud_rate: int = 9600, password: str = '')
   :canonical: leads_vec.devices.OBD

   Bases: :py:obj:`leads_comm_serial.SOBD`

   .. autodoc2-docstring:: leads_vec.devices.OBD

   .. rubric:: Initialization

   .. autodoc2-docstring:: leads_vec.devices.OBD.__init__

   .. py:method:: initialize(*parent_tags: str) -> None
      :canonical: leads_vec.devices.OBD.initialize

      .. autodoc2-docstring:: leads_vec.devices.OBD.initialize

.. py:class:: PowerController(port: str | typing.Literal[auto], baud_rate: int = 9600)
   :canonical: leads_vec.devices.PowerController

   Bases: :py:obj:`leads_arduino.ArduinoMicro`

   .. py:method:: initialize(*parent_tags: str) -> None
      :canonical: leads_vec.devices.PowerController.initialize

      .. autodoc2-docstring:: leads_vec.devices.PowerController.initialize

   .. py:method:: read() -> dict[str, float]
      :canonical: leads_vec.devices.PowerController.read

      .. autodoc2-docstring:: leads_vec.devices.PowerController.read

   .. py:method:: write(payload: float) -> None
      :canonical: leads_vec.devices.PowerController.write

      .. autodoc2-docstring:: leads_vec.devices.PowerController.write

.. py:class:: BatteryVoltageSensor()
   :canonical: leads_vec.devices.BatteryVoltageSensor

   Bases: :py:obj:`leads_arduino.VoltageSensor`

   .. py:method:: initialize(*parent_tags: str) -> None
      :canonical: leads_vec.devices.BatteryVoltageSensor.initialize

      .. autodoc2-docstring:: leads_vec.devices.BatteryVoltageSensor.initialize

.. py:class:: WheelSpeedController(port: str | typing.Literal[auto], baud_rate: int = 9600)
   :canonical: leads_vec.devices.WheelSpeedController

   Bases: :py:obj:`leads_arduino.ArduinoMicro`

   .. py:method:: initialize(*parent_tags: str) -> None
      :canonical: leads_vec.devices.WheelSpeedController.initialize

      .. autodoc2-docstring:: leads_vec.devices.WheelSpeedController.initialize

   .. py:method:: read() -> dict[str, float]
      :canonical: leads_vec.devices.WheelSpeedController.read

      .. autodoc2-docstring:: leads_vec.devices.WheelSpeedController.read

.. py:class:: AverageOdometer()
   :canonical: leads_vec.devices.AverageOdometer

   Bases: :py:obj:`leads.ConcurrentOdometer`

   .. autodoc2-docstring:: leads_vec.devices.AverageOdometer

   .. rubric:: Initialization

   .. autodoc2-docstring:: leads_vec.devices.AverageOdometer.__init__

   .. py:method:: initialize(*parent_tags: str) -> None
      :canonical: leads_vec.devices.AverageOdometer.initialize

      .. autodoc2-docstring:: leads_vec.devices.AverageOdometer.initialize

   .. py:method:: write(payload: float) -> None
      :canonical: leads_vec.devices.AverageOdometer.write

      .. autodoc2-docstring:: leads_vec.devices.AverageOdometer.write

   .. py:method:: read() -> float
      :canonical: leads_vec.devices.AverageOdometer.read

      .. autodoc2-docstring:: leads_vec.devices.AverageOdometer.read

.. py:class:: WheelSpeedSensors(wheel_diameter: float, num_divisions: int = 1, odometer_tag: str | None = None, accelerometer_tag: str | None = None)
   :canonical: leads_vec.devices.WheelSpeedSensors

   Bases: :py:obj:`leads_arduino.WheelSpeedSensor`

   .. py:method:: initialize(*parent_tags: str) -> None
      :canonical: leads_vec.devices.WheelSpeedSensors.initialize

      .. autodoc2-docstring:: leads_vec.devices.WheelSpeedSensors.initialize

.. py:class:: LinearAccelerometer()
   :canonical: leads_vec.devices.LinearAccelerometer

   Bases: :py:obj:`leads_arduino.Accelerometer`

   .. autodoc2-docstring:: leads_vec.devices.LinearAccelerometer

   .. rubric:: Initialization

   .. autodoc2-docstring:: leads_vec.devices.LinearAccelerometer.__init__

   .. py:method:: initialize(*parent_tags: str) -> None
      :canonical: leads_vec.devices.LinearAccelerometer.initialize

      .. autodoc2-docstring:: leads_vec.devices.LinearAccelerometer.initialize

   .. py:method:: read() -> leads_arduino.Acceleration
      :canonical: leads_vec.devices.LinearAccelerometer.read

      .. autodoc2-docstring:: leads_vec.devices.LinearAccelerometer.read

.. py:class:: GPS(port: str | typing.Literal[auto], baud_rate: int = 9600)
   :canonical: leads_vec.devices.GPS

   Bases: :py:obj:`leads_gpio.NMEAGPSReceiver`

   .. py:method:: initialize(*parent_tags: str) -> None
      :canonical: leads_vec.devices.GPS.initialize

      .. autodoc2-docstring:: leads_vec.devices.GPS.initialize

.. py:class:: CPU()
   :canonical: leads_vec.devices.CPU

   Bases: :py:obj:`leads_gpio.CPUMonitor`

   .. autodoc2-docstring:: leads_vec.devices.CPU

   .. rubric:: Initialization

   .. autodoc2-docstring:: leads_vec.devices.CPU.__init__

.. py:class:: Indicator(*leds: leads_gpio.led.LED)
   :canonical: leads_vec.devices.Indicator

   Bases: :py:obj:`leads_gpio.LEDGroup`

   .. autodoc2-docstring:: leads_vec.devices.Indicator

   .. rubric:: Initialization

   .. autodoc2-docstring:: leads_vec.devices.Indicator.__init__

   .. py:method:: initialize(*parent_tags: str) -> None
      :canonical: leads_vec.devices.Indicator.initialize

      .. autodoc2-docstring:: leads_vec.devices.Indicator.initialize

.. py:class:: BrakeIndicator(*leds: leads_gpio.led.LED)
   :canonical: leads_vec.devices.BrakeIndicator

   Bases: :py:obj:`leads_vec.devices.Indicator`

   .. autodoc2-docstring:: leads_vec.devices.BrakeIndicator

   .. rubric:: Initialization

   .. autodoc2-docstring:: leads_vec.devices.BrakeIndicator.__init__

   .. py:method:: initialize(*parent_tags: str) -> None
      :canonical: leads_vec.devices.BrakeIndicator.initialize

      .. autodoc2-docstring:: leads_vec.devices.BrakeIndicator.initialize

   .. py:method:: write(payload: bool) -> None
      :canonical: leads_vec.devices.BrakeIndicator.write

      .. autodoc2-docstring:: leads_vec.devices.BrakeIndicator.write

.. py:class:: LeftIndicator(*leds: leads_gpio.led.LED)
   :canonical: leads_vec.devices.LeftIndicator

   Bases: :py:obj:`leads_vec.devices.Indicator`

   .. autodoc2-docstring:: leads_vec.devices.LeftIndicator

   .. rubric:: Initialization

   .. autodoc2-docstring:: leads_vec.devices.LeftIndicator.__init__

   .. py:method:: write(payload: bool) -> None
      :canonical: leads_vec.devices.LeftIndicator.write

      .. autodoc2-docstring:: leads_vec.devices.LeftIndicator.write

.. py:class:: RightIndicator(*leds: leads_gpio.led.LED)
   :canonical: leads_vec.devices.RightIndicator

   Bases: :py:obj:`leads_vec.devices.Indicator`

   .. autodoc2-docstring:: leads_vec.devices.RightIndicator

   .. rubric:: Initialization

   .. autodoc2-docstring:: leads_vec.devices.RightIndicator.__init__

   .. py:method:: write(payload: bool) -> None
      :canonical: leads_vec.devices.RightIndicator.write

      .. autodoc2-docstring:: leads_vec.devices.RightIndicator.write

.. py:class:: LeftIndicatorButton(pin: int, callback: leads_gpio.button.ButtonCallback = ButtonCallback())
   :canonical: leads_vec.devices.LeftIndicatorButton

   Bases: :py:obj:`leads_gpio.Button`, :py:obj:`leads_gpio.ButtonCallback`

   .. py:method:: on_pressed() -> None
      :canonical: leads_vec.devices.LeftIndicatorButton.on_pressed

      .. autodoc2-docstring:: leads_vec.devices.LeftIndicatorButton.on_pressed

   .. py:method:: initialize(*parent_tags: str) -> None
      :canonical: leads_vec.devices.LeftIndicatorButton.initialize

      .. autodoc2-docstring:: leads_vec.devices.LeftIndicatorButton.initialize

.. py:class:: RightIndicatorButton(pin: int, callback: leads_gpio.button.ButtonCallback = ButtonCallback())
   :canonical: leads_vec.devices.RightIndicatorButton

   Bases: :py:obj:`leads_gpio.Button`, :py:obj:`leads_gpio.ButtonCallback`

   .. py:method:: on_pressed() -> None
      :canonical: leads_vec.devices.RightIndicatorButton.on_pressed

      .. autodoc2-docstring:: leads_vec.devices.RightIndicatorButton.on_pressed

   .. py:method:: initialize(*parent_tags: str) -> None
      :canonical: leads_vec.devices.RightIndicatorButton.initialize

      .. autodoc2-docstring:: leads_vec.devices.RightIndicatorButton.initialize

.. py:data:: _
   :canonical: leads_vec.devices._
   :type: None
   :value: None

   .. autodoc2-docstring:: leads_vec.devices._
