File: //snap/core22/2111/usr/lib/python3/dist-packages/serial/__pycache__/rfc2217.cpython-310.pyc
o
��^_4� � @ s~ d dl mZ d dlZd dlZd dlZd dlZd dlZzd dlZW n ey/ d dl m
Z Y nw zd dlZW n
eyC d dlZY nw d dl
Z
d dlmZmZmZmZmZmZ ejejejejd�ZdZdZdZdZd Zd
ZdZ dZ!d
Z"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6d Z7d!Z8d"Z9d#Z:d$Z;d%Z<d&Z=d'Z>d(Z?d)Z@d*ZAd+ZBd,ZCd-ZDd.ZEd/ZFe/e;e0e<e1e=e2e>e3e?e4e@e5eAe6eBe7eCe8eDe9eEe:eFiZGdZHdZIdZJdZKdZLdZMdZNdZOdZPd ZQd!ZRd"ZSd#ZTd0ZUd1ZVd2ZWd3ZXd4ZYd5ZZd6Z[d7Z\d8Z]d9Z^d:Z_d;Z`d<Zad=Zbd>Zcd7Zdd8Zed9Zfd:Zgd;Zhd<Zid=Zjd>ZkdZldZmdZne
jod>e
jpd=e
jqd?e
jrd<e
jsd@iZteudAdB� et�v� D ��Zwe
jxd>e
jyd?e
jzd=iZ{eudCdB� e{�v� D ��Z|d Z}d>Z~d=ZdDZ�dEZ�dFZ�dGZ�G dHdI� dIe��Z�G dJdK� dKe��Z�G dLdM� dMe�Z�G dNdO� dOe��Z�e�dPk�r�d dl�Z�e�dQdR�Z�e�j���dS��e��� e�j���dT� e���dU� e���� e�j���dV��e���d@��� e���� dS dS )W� )�absolute_importN)�
SerialBase�SerialException�to_bytes� iterbytes�PortNotOpenError�Timeout)�debug�info�warning�error� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �s ��� � � � ,� � � � � � � �
� � � e� f� g� h� i� j� k� l� m� n� o� p�
� � � � � � � �@ � � � � � � � � c c � � | ] \}}||fV qd S �N� ��.0�k�vrJ rJ �0/usr/lib/python3/dist-packages/serial/rfc2217.py� <genexpr>� � � rP c c rH rI rJ rK rJ rJ rO rP � rQ � REQUESTED�ACTIVE�INACTIVE�REALLY_INACTIVEc @ s, e Zd ZdZ d dd�Zdd� Zdd� ZdS )
�TelnetOptionz@Manage a single telnet option, keeps track of DO/DONT WILL/WONT.Nc
C s@ || _ || _|| _|| _|| _|| _|| _|| _d| _| | _ dS )a; Initialize option.
:param connection: connection used to transmit answers
:param name: a readable name for debug outputs
:param send_yes: what to send when option is to be enabled.
:param send_no: what to send when option is to be disabled.
:param ack_yes: what to expect when remote agrees on option.
:param ack_no: what to expect when remote disagrees on option.
:param initial_state: options initialized with REQUESTED are tried to
be enabled on startup. use INACTIVE for all others.
FN)
�
connection�name�option�send_yes�send_no�ack_yes�ack_no�state�active�activation_callback)
�selfrW rX rY rZ r[ r\ r] �
initial_stater` rJ rJ rO �__init__� s
zTelnetOption.__init__c C � dj | d�S )zString for debug outputsz{o.name}:{o.active}({o.state}))�o��format�ra rJ rJ rO �__repr__ � zTelnetOption.__repr__c C s6 || j kr\| jtu rt| _d| _| jdur| �� dS dS | jtu r$dS | jtu rEt| _| j�| j | j
� d| _| jdurC| �� dS dS | jtu rU| j�| j| j
� dS t
d�| ���|| jkr�| jtu rnt| _d| _dS | jtu r�t| _| j�| j| j
� d| _dS | jtu r�dS | jtu r�dS t
d�| ���dS )zo A DO/DONT/WILL/WONT was received for this option, update state and
answer when needed.
TNzoption in illegal state {!r}F)r\ r^ rR rS r_ r` rT rW �telnet_send_optionrZ rY rU r[ �
ValueErrorrg r] �ra �commandrJ rJ rO �process_incoming sB
�
�
�zTelnetOption.process_incomingrI )�__name__�
__module__�__qualname__�__doc__rc ri ro rJ rJ rJ rO rV � s
�rV c @ sL e Zd ZdZddd�Zdd� Zdd� Zd d
� Zee�Z ddd
�Z
dd� ZdS )�TelnetSubnegotiationz� A object to handle subnegotiation of options. In this case actually
sub-sub options for RFC 2217. It is used to track com port options.
Nc C s4 |d u r|}|| _ || _|| _d | _|| _t| _d S rI )rW rX rY �value�
ack_optionrT r^ )ra rW rX rY rv rJ rJ rO rc 9 s
zTelnetSubnegotiation.__init__c C rd )zString for debug outputs.z{sn.name}:{sn.state})�snrf rh rJ rJ rO ri C rj zTelnetSubnegotiation.__repr__c C sH || _ t| _| j�| j| j � | jjr"| jj�d�| j | j �� dS dS )z� Request a change of the value. a request is sent to the server. if
the client needs to know if the change is performed he has to check the
state of this object.
zSB Requesting {} -> {!r}N)
ru rR r^ rW �rfc2217_send_subnegotiationrY �loggerr rg rX )ra ru rJ rJ rO �setG s �zTelnetSubnegotiation.setc C s$ | j tkr
td�| j���| j tkS )z{ Check if answer from server has been received. when server rejects
the change, raise a ValueError.
z%remote rejected value for option {!r})r^ rU rl rg rX rS rh rJ rJ rO �is_readyS s
zTelnetSubnegotiation.is_readyrF c C s>