Current File : //usr/lib/python3/dist-packages/serial/urlhandler/__pycache__/protocol_cp2110.cpython-312.pyc
�

ʦ^_\!����ddlZddlZ	ddlZ	ddlZddlZddl	Z	ddl
mZmZm
Z
mZmZdZdZdZdZdZdZdZdZd	ZGd
�de�Zy#e$r	ddlmZY�FwxYw#e$rddlZY�PwxYw)�N)�
SerialBase�SerialException�PortNotOpenError�to_bytes�Timeout�A��C��P�Q�Rc�p��eZdZdZ�fd�Zd�Zd�Zd�Zd�Ze	d��Z
d�Zd	�Zd
�Z
dd�Zd�Zd
�Z�xZS)�Serial)i,iwiXi�ii`	i�i�%iKi�i�i�i�ii �i�ii@Bc�V��d|_d|_d|_tt|�|i|��y�N)�_hid_handle�_read_buffer�_thread�superr�__init__)�self�args�kwargs�	__class__s   ��C/usr/lib/python3/dist-packages/serial/urlhandler/protocol_cp2110.pyrzSerial.__init__Es.������ ������
�f�d�$�d�5�f�5�c�l�|j�td��|jrtd��tj�|_tj�|_	|j|j�}|jj|�	|j�d|_tj |j"��|_|j$j'd�|j$j)dj|j��|j$j+�y#t$r5}t|jdj|j|���d}~wwxYw#	|jj-�d|_�#Yd|_�xYwxYw)Nz.Port must be configured before it can be used.zPort is already open.zcould not open port {}: {}T)�targetz$pySerial CP2110 reader thread for {})�_portr�is_open�Queuer�hid�devicer�from_url�portstr�	open_path�OSError�errno�format�_reconfigure_port�	threading�Thread�_hid_read_loopr�	setDaemon�setName�start�close)r�portpath�msgs   r�openzSerial.openKsb���:�:��!�"R�S�S��<�<�!�"9�:�:�!�K�K�M����:�:�<���	c��}�}�T�\�\�2�H����&�&�x�0�	!��"�"�$� �D�L�$�+�+�4�3F�3F�G�D�L��L�L�"�"�4�(��L�L� � �!G�!N�!N�t�z�z�!Z�[��L�L��� ��#�	c�!�#�)�)�-I�-P�-P�QU�Q[�Q[�]`�-a�b�b��	c��
	�
�� � �&�&�(� $�D����
��#�D���s<�"6D?�F�?	E=�0E8�8E=�F3�F%�F3�%F0�'F3c��tj|�}|jdk7r$tdj	|j���|j
r|j
j
d�S|jj
d�S)N�cp2110zuexpected a string in the forms "cp2110:///dev/hidraw9" or "cp2110://0001:0023:00": not starting with cp2110:// {{!r}}zutf-8)�urlparse�urlsplit�schemerr*�netloc�encode�path)r�url�partss   rr%zSerial.from_urljss���!�!�#�&���<�<�8�#�!�5�5;�V�E�L�L�5I�K�
K��<�<��<�<�&�&�w�/�/��z�z� � ��)�)rc��d|_|jr"|jjd�d|_|jj	�d|_y)NFr	)r!r�joinrr2�rs rr2zSerial.closeusC������<�<��L�L���a� ��D�L������ ���rc	��d}|jtjk(rd}n�|jtjk(rd}n�|jtjk(rd}nd|jtj
k(rd}nD|jtjk(rd}n$tdj|j���|jrd}nd}d}|jdk(rd}nZ|jdk(rd}nH|jd	k(rd}n6|jd
k(rd}n$tdj|j���d}|jtjk(rd}nd|jtjk(rd}nD|jtjk(rd}n$tdj|j���tj d
t"|j$||||�}|j&j)|�|j&j)t+t,t.f��|j1�y)Nrr	r��zInvalid parity: {!r}����zInvalid char len: {!r}z$Invalid stop bit specification: {!r}z>BLBBBB)�_parity�serial�PARITY_NONE�
PARITY_ODD�PARITY_EVEN�PARITY_MARK�PARITY_SPACE�
ValueErrorr*�rtscts�	_bytesize�	_stopbits�STOPBITS_ONE�STOPBITS_ONE_POINT_FIVE�STOPBITS_TWO�struct�pack�_REPORT_GETSET_UART_CONFIG�	_baudrater�send_feature_report�bytes�_REPORT_GETSET_UART_ENABLE�_ENABLE_UART�_update_break_state)r�parity_value�flow_control_value�data_bits_value�stop_bits_value�configuration_reports      rr+zSerial._reconfigure_port}s������<�<�6�-�-�-��L�
�\�\�V�.�.�
.��L�
�\�\�V�/�/�
/��L�
�\�\�V�/�/�
/��L�
�\�\�V�0�0�
0��L��3�:�:�4�<�<�H�I�I��;�;�!%��!%�����>�>�Q��"�O�
�^�^�q�
 �"�O�
�^�^�q�
 �"�O�
�^�^�q�
 �"�O��5�<�<�T�^�^�L�M�M����>�>�V�0�0�0�"�O�
�^�^�v�=�=�
=�"�O�
�^�^�v�2�2�
2�"�O��C�J�J�4�>�>�Z�[�[�%�{�{��&��N�N����� ��	
���,�,�-A�B����,�,��-�|�<�=�	?�� � �"rc�6�|jj�Sr)r�qsizerBs r�
in_waitingzSerial.in_waiting�s��� � �&�&�(�(rc�.�|js
t��|jjt	t
tf��|jj�r7|jjd�|jj�r�6yy)NF)
r!rrr\r]�_REPORT_SET_PURGE_FIFOS�_PURGE_RX_FIFOrrg�getrBs r�reset_input_bufferzSerial.reset_input_buffer�sp���|�|�"�$�$����,�,��*�N�;�<�	>����%�%�'����!�!�%�(����%�%�'rc��|js
t��|jjt	t
tf��yr)r!rrr\r]rj�_PURGE_TX_FIFOrBs r�reset_output_bufferzSerial.reset_output_buffer�s4���|�|�"�$�$����,�,��*�N�;�<�	>rc���|js
t��|jr+|jjt	t
df��y|jjt	tdf��y)Nr)rr�_break_stater\r]�_REPORT_SET_TRANSMIT_LINE_BREAK�_REPORT_SET_STOP_LINE_BREAKrBs rr`zSerial._update_break_state�sc�����"�$�$�������0�0��6��:�;�
=�
���0�0��2�A�6�7�
9rc���|js
t��t�}	t|j�}t|�|krs|j�td��|jjd|j��}|�t|�S||z
}|j�rnt|�|kr�st|�S#tj$r
Yt|�SwxYw)Nz&connection failed (reader thread died)T)r!r�	bytearrayr�_timeout�lenrrrrl�	time_leftr]�expiredr"�Empty)r�size�data�timeout�bufs     r�readzSerial.read�s����|�|�"�$�$��{��	��d�m�m�,�G��d�)�d�"��<�<�'�)�*R�S�S��'�'�+�+�D�'�2C�2C�2E�F���;� ��;�&������?�?�$���d�)�d�"��T�{����{�{�	���T�{��	�s�A0C�$C�C#�"C#c��|js
t��t|�}t|�}|dkDrPt	|d�}t|g�|d|z}|j
j
|�||d}t|�}|dkDr�Oyy)Nr�?)r!rrrx�minr�write)rr}�tx_len�
to_be_sent�reports     rr�zSerial.write�s����|�|�"�$�$���~���T����q�j��V�T�*�J��z�l�+�d�;�J�.?�?�F����"�"�6�*��
��$�D���Y�F�
�q�jrc�(�	|jrr|jjdd��}|s�,|jd�}|t	|�k(sJ�|j
j
t|��|jr�rd|_y#d|_wxYw)N�@�d)�
timeout_msr)	r!rr��poprxr�putrvr)rr}�data_lens   rr.zSerial._hid_read_loop�s���		 ��,�,��'�'�,�,�R�C�,�@�����8�8�A�;���3�t�9�,�,�,��!�!�%�%�i��o�6�
�,�,� �D�L��4�D�L�s�A=B�	B)r	)�__name__�
__module__�__qualname__�	BAUDRATESrr5r%r2r+�propertyrhrmrpr`r�r�r.�
__classcell__)rs@rrr=sV���"�I�6�!�>	*� �7#�r�)��)�)�>�9��(�
 rr)rXr,r8�ImportError�urllib.parse�parser"�queuer#rK�serial.serialutilrrrrrr^�
_DISABLE_UARTr_rjrorkrZrsrtr�rr�<module>r�s���6��$�����
�^�^�"���
���������!��"&��"��E �Z�E ��;�$�#�$��
����s"�A�A�A�A�	A$�#A$