:py:mod:`leads_comm_serial.identity`
====================================

.. py:module:: leads_comm_serial.identity

.. autodoc2-docstring:: leads_comm_serial.identity
   :allowtitles:

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

Classes
~~~~~~~

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

   * - :py:obj:`AutoIdentity <leads_comm_serial.identity.AutoIdentity>`
     - .. autodoc2-docstring:: leads_comm_serial.identity.AutoIdentity
          :summary:

Functions
~~~~~~~~~

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

   * - :py:obj:`_detect_ports <leads_comm_serial.identity._detect_ports>`
     - .. autodoc2-docstring:: leads_comm_serial.identity._detect_ports
          :summary:

Data
~~~~

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

   * - :py:obj:`_available_ports <leads_comm_serial.identity._available_ports>`
     - .. autodoc2-docstring:: leads_comm_serial.identity._available_ports
          :summary:
   * - :py:obj:`_lock <leads_comm_serial.identity._lock>`
     - .. autodoc2-docstring:: leads_comm_serial.identity._lock
          :summary:
   * - :py:obj:`_instances <leads_comm_serial.identity._instances>`
     - .. autodoc2-docstring:: leads_comm_serial.identity._instances
          :summary:
   * - :py:obj:`_ports_detected <leads_comm_serial.identity._ports_detected>`
     - .. autodoc2-docstring:: leads_comm_serial.identity._ports_detected
          :summary:

API
~~~

.. py:data:: _available_ports
   :canonical: leads_comm_serial.identity._available_ports
   :type: list[str]
   :value: None

   .. autodoc2-docstring:: leads_comm_serial.identity._available_ports

.. py:data:: _lock
   :canonical: leads_comm_serial.identity._lock
   :type: threading.Lock
   :value: '_Lock(...)'

   .. autodoc2-docstring:: leads_comm_serial.identity._lock

.. py:class:: AutoIdentity(retry: bool = False, remainder: bytes = b'', separator: bytes = b';')
   :canonical: leads_comm_serial.identity.AutoIdentity

   Bases: :py:obj:`object`

   .. autodoc2-docstring:: leads_comm_serial.identity.AutoIdentity

   .. rubric:: Initialization

   .. autodoc2-docstring:: leads_comm_serial.identity.AutoIdentity.__init__

   .. py:method:: meta() -> tuple[bool, bytes, bytes]
      :canonical: leads_comm_serial.identity.AutoIdentity.meta

      .. autodoc2-docstring:: leads_comm_serial.identity.AutoIdentity.meta

   .. py:method:: suggest_next_port(tried_port: str | None = None) -> str | None
      :canonical: leads_comm_serial.identity.AutoIdentity.suggest_next_port

      .. autodoc2-docstring:: leads_comm_serial.identity.AutoIdentity.suggest_next_port

   .. py:method:: check_identity(connection: leads_comm_serial.connection.SerialConnection) -> bool
      :canonical: leads_comm_serial.identity.AutoIdentity.check_identity
      :abstractmethod:

      .. autodoc2-docstring:: leads_comm_serial.identity.AutoIdentity.check_identity

   .. py:method:: _establish_connection_no_lock(serial: serial.Serial) -> leads_comm_serial.connection.SerialConnection
      :canonical: leads_comm_serial.identity.AutoIdentity._establish_connection_no_lock

      .. autodoc2-docstring:: leads_comm_serial.identity.AutoIdentity._establish_connection_no_lock

   .. py:method:: establish_connection(serial: serial.Serial) -> leads_comm_serial.connection.SerialConnection
      :canonical: leads_comm_serial.identity.AutoIdentity.establish_connection

      .. autodoc2-docstring:: leads_comm_serial.identity.AutoIdentity.establish_connection

.. py:data:: _instances
   :canonical: leads_comm_serial.identity._instances
   :type: dict[leads_comm_serial.identity.AutoIdentity, str | None]
   :value: None

   .. autodoc2-docstring:: leads_comm_serial.identity._instances

.. py:data:: _ports_detected
   :canonical: leads_comm_serial.identity._ports_detected
   :type: bool
   :value: False

   .. autodoc2-docstring:: leads_comm_serial.identity._ports_detected

.. py:function:: _detect_ports() -> None
   :canonical: leads_comm_serial.identity._detect_ports

   .. autodoc2-docstring:: leads_comm_serial.identity._detect_ports
