HOME


Mini Shell 1.0
Redirecting to https://devs.lapieza.net/iniciar-sesion Redirecting to https://devs.lapieza.net/iniciar-sesion.
DIR: /proc/1784574/root/usr/lib/python3/dist-packages/serial/tools/__pycache__/
Upload File :
Current File : //proc/1784574/root/usr/lib/python3/dist-packages/serial/tools/__pycache__/miniterm.cpython-311.pyc
�

�,�_���ddlmZddlZddlZddlZddlZddlZddlmZddl	m
Z
ejd���	en#e
$reZeZYnwxYwd�ZGd�de��Zejd	kr)ddlZddlZddlZGd
�de��ZGd�d
e��ZnIejdkrddlZddlZddlZGd�d
e��Zn#ed�ej�����Gd�de��ZGd�de��Z Gd�de��Z!Gd�de��Z"Gd�de��Z#Gd�de#��Z$Gd�de��Z%Gd�d e��Z&Gd!�d"e��Z'e e!e"d#�Z(ee#e$e%e&e'd$�Z)d%�Z*Gd&�d'e��Z+d+d)�Z,e-d*kre,��dSdS),�)�absolute_importN)�comports)�
hexlify_codecc�8�|dkrtj��ndS)N�hexlify)r�getregentry��cs �7/usr/lib/python3/dist-packages/serial/tools/miniterm.py�<lambda>rs���i���-�3�5�5�5�T��c��t|��}|dkr%d�td��|z��St|��S)z)generate a readable description for a key� z	Ctrl+{:c}�@)�ord�format�repr)�	character�
ascii_codes  r�key_descriptionr!sA���Y���J��B����!�!�#�c�(�(�Z�"7�8�8�8��I���r
c�H�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)�ConsoleBasez8OS abstraction for console (input/output codec, no echo)c��tjdkrtjj|_ntj|_tj|_dS�N)�r)�sys�version_info�stdout�buffer�byte_output�output��selfs r�__init__zConsoleBase.__init__.s7����v�%�%�"�z�0�D���"�z�D���j����r
c��dS)z.Set console to read single characters, no echoN�r"s r�setupzConsoleBase.setup5����r
c��dS)z Restore default console settingsNr&r"s r�cleanupzConsoleBase.cleanup8r(r
c��dS)z"Read a single key from the consoleNr&r"s r�getkeyzConsoleBase.getkey;s���tr
c�l�|j�|��|j���dS)zWrite bytes (already encoded)N)r �write�flush)r#�byte_strings  r�write_byteszConsoleBase.write_bytes?s4������{�+�+�+����� � � � � r
c�l�|j�|��|j���dS)zWrite stringN)r!r.r/�r#�texts  rr.zConsoleBase.writeDs2������$������������r
c��dS)zCancel getkey operationNr&r"s r�cancelzConsoleBase.cancelIr(r
c�.�|���|S�N)r*r"s r�	__enter__zConsoleBase.__enter__Ps���������r
c�.�|���dSr8)r')r#�args�kwargss   r�__exit__zConsoleBase.__exit__Ts���
�
�����r
N)
�__name__�
__module__�__qualname__�__doc__r$r'r*r,r1r.r6r9r=r&r
rrr+s�������B�B�!�!�!�=�=�=�/�/�/����!�!�!�
���
&�&�&��������r
r�ntc�$�eZdZdZd�Zd�Zd�ZdS)�Outz$file-like wrapper that uses os.writec��||_dSr8)�fd)r#rFs  rr$zOut.__init__`s
���D�G�G�Gr
c��dSr8r&r"s rr/z	Out.flushcs���Dr
c�:�tj|j|��dSr8)�osr.rF)r#�ss  rr.z	Out.writefs���H�T�W�a� � � � � r
N)r>r?r@rAr$r/r.r&r
rrDrD]sG������2�2�	�	�	�	�	�	�	!�	!�	!�	!�	!r
rDc�d��eZdZddddddddd	d
d�
Zdd
ddddddddd�
Z�fd�Zd�Zd�Zd�Z�xZ	S)�ConsolezbOPzbOQzbORzbOSzb[15~zb[17~zb[18~zb[19~zb[20~zb[21~)
�;�<�=�>�?r�A�B�C�Dzzzzzzz[2~z[3~z[5~z[6~)
�H�P�K�M�G�O�R�S�I�Qc�n��tt|�����tjj���|_tjj���|_	tjj�
d��tjj�d��tj
��dk�r"ttj���d��d��dkr�d}ddlm}t'|d��stj|j��|_tjjj}tjjj}tjjj}|���}||d	��tj|����|j|zdkr$||d	��|j|z��||_t;jd
��t?t@j!�"����d��|_#t;jd
��t?t@j$�"����d��t@_$|j#t@_!d
|j#_%dS)Ni��10�.�iZ)�r�LPDWORD����UTF-8�replace)&�superrLr$�ctypes�windll�kernel32�GetConsoleOutputCP�
_saved_ocp�GetConsoleCP�
_saved_icp�SetConsoleOutputCP�SetConsoleCP�platform�release�int�version�split�ctypes.wintypes�wintypes�hasattr�POINTER�DWORDre�SetConsoleMode�GetConsoleMode�GetStdHandle�byref�value�	_saved_cm�codecs�	getwriterrDrr�filenor!�stderr�encoding)r#�"ENABLE_VIRTUAL_TERMINAL_PROCESSINGryr}r~r�mode�	__class__s       �rr$zConsole.__init__�s!����'�4� � �)�)�+�+�+�$�m�4�G�G�I�I�D�O�$�m�4�A�A�C�C�D�O��M�"�5�5�e�<�<�<��M�"�/�/��6�6�6���!�!�T�)�)�c�(�2B�2D�2D�2J�2J�3�2O�2O�PQ�2R�.S�.S�V[�.[�.[�5;�2�2�2�2�2�2�2��x��3�3�F�'-�~�h�n�'E�'E�H�$�!'��!7�!F��!'��!7�!F��%�}�5�B���~�~�'�'����|�|�C�0�0�&�,�t�2D�2D�E�E�E��J�!C�C��I�I�"�N�<�<��#4�#4�d�j�Ce�6e�f�f�f�%)�D�N�3�&�*�7�3�3�C��
�8I�8I�8K�8K�4L�4L�i�X�X�D�K�2��)�'�2�2�3�s�z�7H�7H�7J�7J�3K�3K�Y�W�W�C�J���C�J�#*�D�K� � � r
c�f�tjj�|j��tjj�|j��	tjj�tjj�d��|j	��dS#t$rYdSwxYw)Nrf)rjrkrlrqrnrrrpr}rr��AttributeErrorr"s r�__del__zConsole.__del__�s����M�"�5�5�d�o�F�F�F��M�"�/�/���@�@�@�
��
�&�5�5�f�m�6L�6Y�6Y�Z]�6^�6^�`d�`n�o�o�o�o�o��!�
�
�
����
���s�AB"�"
B0�/B0c�V�	tj��}|td��krtd��S|td��us|td��urO	tj��}|td��ur
|j|S|j|S#t
$rYnwxYw|S��)NT�
�
r��)�msvcrt�getwch�unichr�fncodes�navcodes�KeyError)r#�z�codes   rr,zConsole.getkey�s���
��M�O�O����r�
�
�?�?�!�"�:�:�%��&��)�)�^�^�q�F�4�L�L�'8�'8��%�}������q�	�	�>�>�#'�<��#5�5�#'�=��#6�6��#�����������H�
s�0B�B�
B%�$B%c��tjj���}tjj�|ddd��dS)N�r�r)rjrkrl�GetConsoleWindow�user32�PostMessageA)r#�hwnds  rr6zConsole.cancel�s?���=�)�:�:�<�<�D��M� �-�-�d�E�4��C�C�C�C�Cr
)
r>r?r@r�r�r$r�r,r6�
__classcell__�r�s@rrLrLis������������������
�
������������
�
��	+�	+�	+�	+�	+�6	�	�	�	�	�	�"	D�	D�	D�	D�	D�	D�	Dr
rL�posixc�6��eZdZ�fd�Zd�Zd�Zd�Zd�Z�xZS)rLc����tt|�����tj���|_tj|j��|_	tj|j��tj
dkr=tjtjj��tj��|_dStj|_dSr)rirLr$r�stdinr�rF�termios�	tcgetattr�old�atexit�registerr*rr��	getreaderr��	enc_stdin)r#r�s �rr$zConsole.__init__�s�����'�4� � �)�)�+�+�+��i�&�&�(�(�D�G��(���1�1�D�H��O�D�L�)�)�)���&�(�(�!E��!1�#�)�2D�!E�!E�c�i�!P�!P�����!$�����r
c�@�tj|j��}|dtjztjztjz|d<d|dtj<d|dtj<tj|jtj	|��dS)Nr��r)
r�r�rF�ICANON�ECHO�ISIG�VMIN�VTIME�	tcsetattr�TCSANOW)r#�news  rr'z
Console.setup�s{���#�D�G�,�,�C���V�w�~�o�-���
�=���
�M�C��F�#$�C��F�7�<� �$%�C��F�7�=�!���d�g�w���<�<�<�<�<r
c�~�|j�d��}|td��krtd��}|S)Nr���)r��readr�)r#r
s  rr,zConsole.getkey�s8����#�#�A�&�&�A��F�4�L�L� � ��1�I�I���Hr
c�P�tj|jtjd��dS)N�)�fcntl�ioctlrFr��TIOCSTIr"s rr6zConsole.cancel�s ���K�����%�8�8�8�8�8r
c�Z�tj|jtj|j��dSr8)r�r�rF�	TCSAFLUSHr�r"s rr*zConsole.cleanup�s$����d�g�w�'8�$�(�C�C�C�C�Cr
)	r>r?r@r$r'r,r6r*r�r�s@rrLrL�s{�������	+�	+�	+�	+�	+�	=�	=�	=�	�	�	�	9�	9�	9�	D�	D�	D�	D�	D�	D�	Dr
z9Sorry no implementation for your platform ({}) available.c�$�eZdZdZd�Zd�Zd�ZdS)�	Transformz&do-nothing: forward all data unchangedc��|S)ztext received from serial portr&r3s  r�rxzTransform.rx�����r
c��|S)ztext to be sent to serial portr&r3s  r�txzTransform.tx�r�r
c��|S)z(text to be sent but displayed on consoler&r3s  r�echozTransform.echo�r�r
N)r>r?r@rAr�r�r�r&r
rr�r��sG������0�0�����������r
r�c��eZdZdZd�ZdS)�CRLFzENTER sends CR+LFc�.�|�dd��S)N�
�
�rhr3s  rr�zCRLF.tx�s���|�|�D�&�)�)�)r
N)r>r?r@rAr�r&r
rr�r��s)��������*�*�*�*�*r
r�c��eZdZdZd�Zd�ZdS)�CRzENTER sends CRc�.�|�dd��S)N�
r�r�r3s  rr�zCR.rx����|�|�D�$�'�'�'r
c�.�|�dd��S)Nr�r�r�r3s  rr�zCR.txr�r
N�r>r?r@rAr�r�r&r
rr�r��s8��������(�(�(�(�(�(�(�(r
r�c��eZdZdZdS)�LFzENTER sends LFN)r>r?r@rAr&r
rr�r�s���������r
r�c��eZdZdZed�ed��D����Ze�ddd���d�ZeZ	dS)	�
NoTerminalz0remove typical terminal control codes from inputc#�FK�|]}t|��dv�|d|zfV��dS)�
	�$N)r���.0�xs  r�	<genexpr>zNoTerminal.<genexpr>s;����]�]�q�����R\�A\�A\�A�v��z�?�A\�A\�A\�A\�]�]r
r�!$�%$)r��c�6�|�|j��Sr8)�	translate�REPLACEMENT_MAPr3s  rr�z
NoTerminal.rxs���~�~�d�2�3�3�3r
N)
r>r?r@rA�dict�ranger��updater�r�r&r
rr�r�sx������:�:��d�]�]�E�E�"�I�I�]�]�]�]�]�O������	
�	
����4�4�4��D�D�Dr
r�c��eZdZdZed�ed��D����Ze�dddd���dS)	�
NoControlsz%Remove all control codes, incl. CR+LFc#�$K�|]}|d|zfV��dS)r�Nr&r�s  rr�zNoControls.<genexpr>s*����>�>�q�A�v��z�?�>�>�>�>�>�>r
ri#$r�r�)rr�r�N)r>r?r@rAr�r�r�r�r&r
rr�r�sk������/�/��d�>�>�E�E�"�I�I�>�>�>�>�>�O�������	
�	
�����r
r�c��eZdZdZd�ZeZdS)�	PrintablezMShow decimal code for all non-ASCII characters and replace most control codesc	��g}|D]�}d|cxkrdksn|dvr|�|���+|dkr3|�tdt|��z�����d|�d�d�t|����D����|�d����d�|��S)N� �r�r�c3�ZK�|]&}tdt|��zdz
��V��'dS)i� �0N)r�r)r��ds  rr�zPrintable.rx.<locals>.<genexpr>2s9����U�U�!����Q����"� 4�5�5�U�U�U�U�U�Ur
z{:d}�)�appendr�r�extendr�join)r#r4�rr
s    rr�zPrintable.rx*s������	�	�A��a� � � � �&� � � � �A��O�O����������S���������Q����0�0�1�1�1�1����U�U�v�}�}�S�QR�V�V�?T�?T�U�U�U�U�U�U�����
�
�
�
��w�w�q�z�z�r
N)r>r?r@rAr�r�r&r
rr�r�'s*������W�W�
�
�
��D�D�Dr
r�c�$�eZdZdZd�Zd�Zd�ZdS)�Colorizez,Apply different colors for received and echoc�"�d|_d|_dS)Nzz)�input_color�
echo_colorr"s rr$zColorize.__init__<s��%���$����r
c��|j|zSr8)rr3s  rr�zColorize.rxAs����$�&�&r
c��|j|zSr8)rr3s  rr�z
Colorize.echoDs�����%�%r
N)r>r?r@rAr$r�r�r&r
rr�r�9sG������6�6�%�%�%�
'�'�'�&�&�&�&�&r
r�c��eZdZdZd�Zd�ZdS)�DebugIOzPrint what is sent and receivedc��tj�d�|����tj���|S)Nz [RX:{!r}] �rr�r.rr/r3s  rr�z
DebugIO.rxK�?���
����-�-�d�3�3�4�4�4��
�������r
c��tj�d�|����tj���|S)Nz [TX:{!r}] rr3s  rr�z
DebugIO.txPrr
Nr�r&r
rrrHs8������)�)����
����r
r)�crlf�cr�lf)�direct�default�	nocontrol�	printable�colorize�debugc�2�tj�d��g}tt	t����d��D]R\}\}}}tj�d�|||����|�|���S	td��}	t|��dz
}d|cxkrt|��ks"ntj�d���_	||}n#t$rYnwxYw|S)z�    Show a list of ports and ask the user for a choice. To make selection
    easier on systems with long device names, also allow the input of an
    index.
    z
--- Available ports:
r�z--- {:2}: {:20} {!r}
Tz#--- Enter port index or full name: rz--- Invalid index!
)rr�r.�	enumerate�sortedrrr��	raw_inputru�len�
ValueError)�ports�n�port�desc�hwid�indexs      r�ask_for_portrks0���J���/�0�0�0��E�!*�6�(�*�*�+=�+=�q�!A�!A������D�$���
���1�8�8��D�$�G�G�H�H�H�
���T�������>�?�?��	 ���I�I��M�E���*�*�*�*��E�
�
�*�*�*�*��
� � �!7�8�8�8��+���<�D�D���	�	�	��D�	�����s�/A
D�
D�Dc��eZdZdZdd�Zd�Zd�Zd�Zd	�Zdd
�Z	d�Z
d�Zdd�Zdd�Z
d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�Minitermz�    Terminal application. Copy data from serial port to console and vice versa.
    Handle special keys from the console to show menu etc.
    Fr
r&c�L�t��|_||_||_d|_d|_d|_||_||_|�	��td��|_td��|_d|_
d|_d|_d|_d|_dS)NFrg��)rL�console�serialr��raw�input_encoding�output_encoding�eol�filters�update_transformationsr��exit_character�menu_character�alive�
_reader_alive�receiver_thread�
rx_decoder�
tx_decoder)r#�serial_instancer�r*r+s     rr$zMiniterm.__init__�s����y�y���%�����	����%���&����������#�#�%�%�%�$�T�l�l���$�T�l�l�����
�!���#����������r
c��d|_tj|jd���|_d|j_|j���dS)zStart reader threadTr���target�nameN)r0�	threading�Thread�readerr1�daemon�startr"s r�
_start_readerzMiniterm._start_reader�sJ��!���(�/�t�{��N�N�N���&*���#���"�"�$�$�$�$�$r
c��d|_t|jd��r|j���|j���dS)z6Stop reader thread only, wait for clean exit of threadF�cancel_readN)r0rzr&r@r1r�r"s r�_stop_readerzMiniterm._stop_reader�sM��"����4�;�
�.�.�	&��K�#�#�%�%�%���!�!�#�#�#�#�#r
c��d|_|���tj|jd���|_d|j_|j���|j�	��dS)zstart worker threadsTr�r6N)
r/r>r9r:�writer�transmitter_threadr<r=r%r'r"s rr=zMiniterm.start�so����
�������"+�"2�$�+�D�"Q�"Q�"Q���)-���&���%�%�'�'�'���������r
c��d|_dS)zset flag to stop worker threadsFN)r/r"s r�stopz
Miniterm.stop�s
����
�
�
r
c���|j���|sIt|jd��r|j���|j���dSdS)z$wait for worker threads to terminater@N)rDr�rzr&r@r1)r#�
transmit_onlys  rr�z
Miniterm.join�sl����$�$�&�&�&��	(��t�{�M�2�2�
*���'�'�)�)�)�� �%�%�'�'�'�'�'�	(�	(r
c�8�|j���dSr8)r&�closer"s rrJzMiniterm.close�s����������r
c��t|jgd�|jD��z}d�|D��|_t	t|j����|_dS)zFtake list of transformation classes and instantiate them for rx and txc�(�g|]}t|��Sr&)�TRANSFORMATIONS)r��fs  r�
<listcomp>z3Miniterm.update_transformations.<locals>.<listcomp>�s4��=T�=T�=T�AB�>M�Q�=O�=T�=T�=Tr
c�"�g|]}|����
Sr&r&)r��ts  rrOz3Miniterm.update_transformations.<locals>.<listcomp>�s��"@�"@�"@�1�1�1�3�3�"@�"@�"@r
N)�EOL_TRANSFORMATIONSr*r+�tx_transformations�list�reversed�rx_transformations)r#�transformationss  rr,zMiniterm.update_transformations�sq��.�t�x�8�9�=T�=T�FJ�l�=T�=T�=T�T��"@�"@��"@�"@�"@���"&�x��0G�'H�'H�"I�"I����r
rhc�X�||_tj|��|��|_dS)zset encoding for received dataN)r(r��getincrementaldecoderr2�r#r��errorss   r�set_rx_encodingzMiniterm.set_rx_encoding�s*��&���@�&�6�x�@�@��H�H����r
c�X�||_tj|��|��|_dS)z!set encoding for transmitted dataN)r)r��getincrementalencoder�
tx_encoderrZs   r�set_tx_encodingzMiniterm.set_tx_encoding�s*��'���@�&�6�x�@�@��H�H����r
c�<�tj�d�|j�����tj�d�|jjrdnd|jjrdnd|jjrdnd����	tj�d�|jjrdnd|jj	rdnd|jj
rdnd|jjrdnd����n#tj$rYnwxYwtj�d�|jj
rdnd����tj�d�|jjrdnd����tj�d	�|j����tj�d
�|j����tj�d�|j�������tj�d�d
�|j������dS)z$Write current settings to sys.stderrzK
--- Settings: {p.name}  {p.baudrate},{p.bytesize},{p.parity},{p.stopbits}
��pz&--- RTS: {:8}  DTR: {:8}  BREAK: {:8}
�active�inactivez---- CTS: {:8}  DSR: {:8}  RI: {:8}  CD: {:8}
z--- software flow control: {}
z--- hardware flow control: {}
�--- serial input encoding: {}
�--- serial output encoding: {}
z--- EOL: {}
�--- filters: {}
r�N)rr�r.rr&�rts�dtr�break_condition�cts�dsr�ri�cd�SerialException�xonxoff�rtsctsr(r)r*�upperr�r+r"s r�dump_port_settingszMiniterm.dump_port_settings�s^���
���h�o�o��k�p���	�	�	��
���B�I�I����
8�X�X�j����
8�X�X�j���4�
D�X�X�*�G�G�	H�	H�	H�		��J���M�T�T�!�[�_�<���*�!�[�_�<���*�!�[�^�;����!�[�^�;����	>�>�
?�
?�
?�
?��
�%�	�	�	�
�D�	����	�
���:�A�A�d�k�Na�Bq�(�(�gq�r�r�s�s�s��
���:�A�A�d�k�N`�Bp�(�(�fp�q�q�r�r�r��
���:�A�A�$�BU�V�V�W�W�W��
���;�B�B�4�CW�X�X�Y�Y�Y��
����/�/�����0@�0@�A�A�B�B�B��
���,�3�3�C�H�H�T�\�4J�4J�K�K�L�L�L�L�Ls�A-D�D�Dc���	|jr�|jr�|j�|jjpd��}|ru|jr|j�|��nS|j�	|��}|j
D]}|�|��}�|j�|��|jr
|j��dSdSdSdS#tj
$r"d|_|j����wxYw)zloop and copy serial->consoler�FN)r/r0r&r��
in_waitingr'r%r1r2�decoderVr�r.rpr6)r#�datar4�transformations    rr;zMiniterm.reader�s3��	��*�

1��!3�

1��{�'�'���(>�(C�!�D�D���1��x�1���0�0��6�6�6�6�#��5�5�d�;�;��.2�.E�;�;�N�#1�#4�#4�T�#:�#:�D�D���*�*�4�0�0�0��*�

1��!3�

1�

1�

1�

1�

1�

1�

1�

1�

1���%�	�	�	��D�J��L���!�!�!��	���s�B9C�1C4c�r�d}	|j�r	|j���}n#t$rd}YnwxYw|jsdS|r|�|��d}n�||jkrd}n�||jkr|���dS|}|jD]}|�	|��}�|j
�|j�
|����|jr;|}|jD]}|�|��}�|j�|��|j��dSdS#d|_�xYw)z�        Loop and copy console->serial until self.exit_character character is
        found. When self.menu_character is found, interpret the next key
        locally.
        F�TN)r/r%r,�KeyboardInterrupt�handle_menu_keyr.r-rFrSr�r&r.r_�encoder�)r#�menu_activer
r4ry�	echo_texts      rrCzMiniterm.writers�����	��*�
6����+�+�-�-�A�A��(�����A�A�A������z���E��6��(�(��+�+�+�"'�K�K��$�-�-�-�"&�K�K��$�-�-�-��I�I�K�K�K��E��D�*.�*A�7�7��-�0�0��6�6����K�%�%�d�o�&<�&<�T�&B�&B�C�C�C��y�6�$%�	�.2�.E�G�G�N�(6�(;�(;�I�(F�(F�I�I���*�*�9�5�5�5�3�*�
6�
6�
6�
6�
6��4	��D�J����s4�D,�'�D,�6�D,�6�
D,�AD,�BD,�,
D6c�B�||jks||jkrW|j�|j�|����|jr|j�|��d'Sd'S|dkr|���d'S|dvr3tj
�|�����d'S|dkrY|jj|j_tj
�d�
|jjrdnd����d'S|dkrY|jj|j_tj
�d�
|jjrdnd����d'S|d	krY|jj|j_tj
�d
�
|jjrdnd����d'S|dkrJ|j|_tj
�d�
|jrdnd����d'S|d
kr|���d'S|dkr�t#t$��}|�|j��dz}|t+|��krd}|||_tj
�d�
|j�������|���d'S|dkr|���d'S|dkr|���d'S|dvr|���d'S|dvr|���d'S|dvr|���d'S|dkr,tj|j_|���d'S|dkr,tj|j_|���d'S|dvr,tj |j_!|���d'S|dvr,tj"|j_!|���d'S|dvr,tj#|j_!|���d'S|dvr,tj$|j_!|���d'S|dvr,tj%|j_!|���d'S|dkr,tj&|j_'|���d'S|dkr,tj(|j_'|���d'S|d kr,tj)|j_'|���d'S|d!vr&|d"k|j_*|���d'S|d#vr&|d$k|j_+|���d'S|d%vr|�,��d'Stj
�d&�
t[|������d'S)(z"Implement a simple menu / settings�zhH?�z--- RTS {} ---
rdre�z--- DTR {} ---
�z--- BREAK {} ---
�z--- local echo {} ---
��r�rz--- EOL: {} ---
��	�pP�zZ�bB�8�7�eE�oO�mM�sS�nN�1�2�3�xX�X�rRr\�qQz!--- unknown menu character {} --
N).r.r-r&r.r_r~r�r%�upload_filerr��
get_help_textrirrjrk�
change_filterrTrRrr*rrsr,�change_encodingrt�change_port�suspend_port�change_baudrate�	EIGHTBITS�bytesize�	SEVENBITS�PARITY_EVEN�parity�
PARITY_ODD�PARITY_MARK�PARITY_SPACE�PARITY_NONE�STOPBITS_ONE�stopbits�STOPBITS_TWO�STOPBITS_ONE_POINT_FIVErqrrrFr)r#r
�modesr*s    rr}zMiniterm.handle_menu_key's�����#�#�#�q�D�,?�'?�'?��K���d�o�4�4�Q�7�7�8�8�8��y�
&���"�"�1�%�%�%�%�%�
&�
&�
�&�[�[���������
�)�^�^��J���T�/�/�1�1�2�2�2�2�2�
�&�[�[�"&�+�/�1�D�K�O��J���/�6�6�4�;�?�7b�x�x�Xb�c�c�d�d�d�d�d�
�&�[�[�"&�+�/�1�D�K�O��J���/�6�6�4�;�?�7b�x�x�Xb�c�c�d�d�d�d�d�
�&�[�[�.2�k�.I�*I�D�K�'��J���1�8�8�T�[�E`�9p���fp�q�q�r�r�r�r�r�
�&�[�[� �I�
�D�I��J���6�=�=�$�)�>c�h�h�Yc�d�d�e�e�e�e�e�
�&�[�[���� � � � � �
�&�[�[��,�-�-�E��+�+�d�h�'�'�!�+�C��c�%�j�j� � ����S�z�D�H��J���0�7�7�����8H�8H�I�I�J�J�J��'�'�)�)�)�)�)�
�&�[�[�� � �"�"�"�"�"�
�&�[�[��#�#�%�%�%�%�%��$�Y�Y���������
�$�Y�Y���������
�$�Y�Y�� � �"�"�"�"�"�
�#�X�X�#)�#3�D�K� ��#�#�%�%�%�%�%�
�#�X�X�#)�#3�D�K� ��#�#�%�%�%�%�%�
�$�Y�Y�!'�!3�D�K���#�#�%�%�%�%�%�
�$�Y�Y�!'�!2�D�K���#�#�%�%�%�%�%�
�$�Y�Y�!'�!3�D�K���#�#�%�%�%�%�%�
�$�Y�Y�!'�!4�D�K���#�#�%�%�%�%�%�
�$�Y�Y�!'�!3�D�K���#�#�%�%�%�%�%�
�#�X�X�#)�#6�D�K� ��#�#�%�%�%�%�%�
�#�X�X�#)�#6�D�K� ��#�#�%�%�%�%�%�
�#�X�X�#)�#A�D�K� ��#�#�%�%�%�%�%�
�$�Y�Y�#$��8�D�K���#�#�%�%�%�%�%�
�$�Y�Y�"#�s�(�D�K���#�#�%�%�%�%�%�
�$�Y�Y��I�I�K�K�K�K�K��J���A�H�H��YZ�I[�I[�\�\�]�]�]�]�]r
c��tj�d��tj���|j5tj����d��}|�rE	t|d��5}tj�d�	|����	|�
d��}|snS|j�|��|j���tj�d���k	ddd��n#1swxYwYtj�d	�	|����nJ#t$r=}tj�d
�	||����Yd}~nd}~wwxYwddd��dS#1swxYwYdS)z,Ask user for filenname and send its contentsz
--- File to upload: r��rbz--- Sending file {} ---
TirbNz
--- File {} sent ---
z"--- ERROR opening file {}: {} ---
)
rr�r.r/r%r��readline�rstrip�openrr�r&�IOError)r#�filenamerN�block�es     rr�zMiniterm.upload_file}sR���
���1�2�2�2��
������
�\�	`�	`��y�)�)�+�+�2�2�6�:�:�H��
`�
`��h��-�-�	2���
�(�(�)D�)K�)K�H�)U�)U�V�V�V�2�$%�F�F�4�L�L�E�#(�&� %� �K�-�-�e�4�4�4� �K�-�-�/�/�/��J�,�,�S�1�1�1�2�!&�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2��J�$�$�%?�%F�%F�x�%P�%P�Q�Q�Q�Q���`�`�`��J�$�$�%J�%Q�%Q�RZ�\]�%^�%^�_�_�_�_�_�_�_�_�����`����	`�	`�	`�	`�	`�	`�	`�	`�	`�	`�	`�	`����	`�	`�	`�	`�	`�	`sa�5G�;E5�BD7�+E5�7D;	�;E5�>D;	�?5E5�4G�5
F<�?3F7�2G�7F<�<G�G�Gc	��tj�d��tj�d�d�t	t
�����D������tj�d�d�|j������|j	5tj
�������
��}ddd��n#1swxYwY|r]|D]?}|t
vr4tj�d�|����n�@||_|���tj�d�d�|j������dS)	zchange the i/o transformationsz
--- Available Filters:
r�c3�HK�|]\}}d�||��V��dS)z---   {:<10} = {.__doc__}N�r�r��k�vs   rr�z)Miniterm.change_filter.<locals>.<genexpr>�sJ����#9�#9���1�
(�.�.�q�!�4�4�#9�#9�#9�#9�#9�#9r
z$
--- Enter new filter name(s) [{}]: r�Nz--- unknown filter: {!r}
rh)rr�r.r�rrM�itemsrr+r%r�r��lowerrwr,)r#�new_filtersrNs   rr�zMiniterm.change_filter�s����
���5�6�6�6��
������#9�#9���4�4�6�6�7�7�#9�#9�#9�9�9�	:�	:�	:�	�
���@�G�G����QU�Q]�H^�H^�_�_�`�`�`�
�\�	?�	?��)�,�,�.�.�4�4�6�6�<�<�>�>�K�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?��	.� �
.�
.���O�+�+��J�$�$�%A�%H�%H��%K�%K�L�L�L��E�,� +����+�+�-�-�-��
���,�3�3�C�H�H�T�\�4J�4J�K�K�L�L�L�L�Ls�AD � D$�'D$c��tj�d�|j����|j5tj������}ddd��n#1swxYwY|r�	tj
|��|�|��|�|��nB#t$r5tj�d�|����YnwxYwtj�d�|j����tj�d�|j����dS)z"change encoding on the serial portz#
--- Enter new encoding name [{}]: Nz--- invalid encoding name: {}
rfrg)rr�r.rr(r%r�r��stripr��lookupr\r`�LookupErrorr))r#�new_encodings  rr�zMiniterm.change_encoding�s����
���?�F�F�t�GZ�[�[�\�\�\�
�\�	8�	8��9�-�-�/�/�5�5�7�7�L�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8��	3�
3��
�l�+�+�+��$�$�\�2�2�2��$�$�\�2�2�2�2��	�
Y�
Y�
Y��
� � �!B�!I�!I�,�!W�!W�X�X�X�X�X�
Y����
	�
���:�A�A�$�BU�V�V�W�W�W��
���;�B�B�4�CW�X�X�Y�Y�Y�Y�Ys#�1A<�<B�B�
C	�	<D�Dc�<�tj�d��tj���|j5|jj}	ttj�	���
����|j_|���nU#t$rH}tj�d�
|����||j_Yd}~nd}~wwxYwddd��dS#1swxYwYdS)zchange the baudratez
--- Baudrate: z#--- ERROR setting baudrate: {} ---
N)rr�r.r/r%r&�baudraterur�r�r�rtrr)r#�backupr�s   rr�zMiniterm.change_baudrate�sJ���
���+�,�,�,��
������
�\�	*�	*��[�)�F�
*�'*�3�9�+=�+=�+?�+?�+E�+E�+G�+G�'H�'H���$�
�'�'�)�)�)�)��	�
.�
.�
.��
� � �!G�!N�!N�q�!Q�!Q�R�R�R�'-���$�$�$�$�$�$�����
.����		*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*s=�
D�AB/�D�/
D�9>C<�7D�<D�D�D�Dc��|j5	t��}n#t$rd}YnwxYwddd��n#1swxYwY|�r�||jjk�rr|���|j���}	tj|d���}|�|��|jj	|_	|jj
|_
|���|jj|_|j�
��||_tj�d�|jj����n]#t$$rP}tj�d�|����|�
��Yd}~nd}~wwxYw|���dSdSdS)z;Have a conversation with the user to change the serial portNT)�do_not_openz--- Port changed to: {} ---
z#--- ERROR opening new port: {} ---
)r%rr|r&rrA�getSettingsDict�serial_for_url�applySettingsDictrirjr�rkrJrr�r.r�	Exceptionr>)r#r�settings�
new_serialr�s     rr�zMiniterm.change_port�s��
�\�	�	�
�#�~�~����$�
�
�
�����
����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�	!�D�D�K�,�,�,��������{�2�2�4�4�H�
[�#�2�4�T�J�J�J�
��,�,�X�6�6�6�!%���
��!%���
�����!�!�!�-1�[�-H�
�*�
��!�!�#�#�#�(����
� � �!@�!G�!G���HX�!Y�!Y�Z�Z�Z�Z��
�
#�
#�
#��
� � �!G�!N�!N�q�!Q�!Q�R�R�R�� � �"�"�"�"�"�"�"�"�����
#����
��� � � � � �+	!�	!�,�,s>�7��7�(�7�(�7�;�;�A2E�
F-�AF(�(F-c��|���|j���tj�d�|jj����d}|jjs�tj�d�t|j
�������|j���}||j
kr|�
��nw|dvrd}np	|j���nI#t$r<}tj�d�|����Yd}~nd}~wwxYw|jj��|r|���dS|���tj�d	�|jj����dS)
zl        open port temporarily, allow reconnect, exit and port change to get
        out of the loop
        z
--- Port closed: {} ---
FzC--- Quit: {exit} | p: port change | any other key to reconnect ---
)�exitr�Tz--- ERROR opening port: {} ---
Nz--- Port opened: {} ---
)rAr&rJrr�r.rr�is_openrr-r%r,rFr�r�r�r>)r#�do_change_portr�r�s    rr�zMiniterm.suspend_port�s���	
��������������
���6�=�=�d�k�>N�O�O�P�P�P����+�%�
	O��J���c�j�j�$�T�%8�9�9�k�;�;�
<�
<�
<���#�#�%�%�A��D�'�'�'��	�	������d���!%���
O��� � �"�"�"�"���
O�
O�
O��
� � �!C�!J�!J�1�!M�!M�N�N�N�N�N�N�N�N�����
O�����+�%�
	O��	S���������
��� � � ��J���8�?�?���@P�Q�Q�R�R�R�R�Rs�>D�
E�"2E�Ec��d�ttdd��t|j��t|j��td��td��td��td��td��td	��td
��td��td���
��S)zreturn the help textab
--- pySerial ({version}) - miniterm - help
---
--- {exit:8} Exit program (alias {menu} Q)
--- {menu:8} Menu escape key, followed by:
--- Menu keys:
---    {menu:7} Send the menu character itself to remote
---    {exit:7} Send the exit character itself to remote
---    {info:7} Show info
---    {upload:7} Upload file (prompt will be shown)
---    {repr:7} encoding
---    {filter:7} edit filters
--- Toggles:
---    {rts:7} RTS   {dtr:7} DTR   {brk:7} BREAK
---    {echo:7} echo  {eol:7} EOL
---
--- Port settings ({menu} followed by the following):
---    p          change port
---    7 8        set data bits
---    N E O S M  change parity (None, Even, Odd, Space, Mark)
---    1 2 3      set stop bits (1, 2, 1.5)
---    b          change baud rate
---    x X        disable/enable software flow control
---    r R        disable/enable hardware flow control
�VERSIONzunknown versionr�r�r�r�r�r�r�r�r�)rvr��menurirj�brkr��info�uploadr�filterr*)r�getattrr&rr-r.r"s rr�zMiniterm.get_help_texts����0�F�7�6�9�.?�@�@��� 3�4�4��� 3�4�4��v�&�&��v�&�&��v�&�&���'�'���'�'�!�&�)�)���'�'�!�&�)�)��v�&�&��(�(�1#	(r
N)Fr
r&)Fr�)r>r?r@rAr$r>rAr=rFr�rJr,r\r`rtr;rCr}r�r�r�r�r�r�r�r&r
rr!r!�s���������
����$%�%�%�$�$�$�������(�(�(�(����J�J�J�I�I�I�I�
I�I�I�I�
M�M�M�2���&$�$�$�LT^�T^�T^�l`�`�`�,M�M�M�&Z�Z�Z� *�*�*�!�!�!�<S�S�S�>&(�&(�&(�&(�&(r
r!�%c
��ddl}|�d���}|�ddd|���|�d	dtd
|���|�d��}|�d
gd�d�dd���|�dddd���|�dddd���|�dtd|���|�dtd|���|�dd d!d"d#�$��|�d%dd&d���|�d'��}|�d(d)dd*d���|�d+d,d-d.d/�0��|�d1d2d3d4d5g�6��|�d7gd8�d9�d:d;���|�d<dd=d���|�d>��}|�d?td@dAdB�C��|�dDtd@dEdF�C��|�dG��}|�dHdIddJd���|�dKddLd���|���}|j|jkr|�dM��|j	r�dN|j	vr�tj�dO��tj�dP�
dQ�tt�����D������tj�dP��tjdR��|j	}ndSg}	|j�|jdTkru	t'��|_|js|�dU��nD#t($r7tj�dP��|�dV��YnwxYw	t+j|j|j|j|j|jd#�W��}	t7|	dX��sdR|	_|j�N|js;tj�dY�|jrdZnd[����|j|	_|j �N|js;tj�d\�|j rdZnd[����|j |	_ tC|	t*j"��r|j#|	_#|	�$��n�#t*j%$rm}
tj�d]�|j|
����|j&r�|j'stjdR��ndT|_Yd}
~
nd}
~
wwxYw��8tQ|	|j)|j*�+��|�^��}tY|j��|_-tY|j��|_.|j/|_/|�0|j1��|�2|j1��|js�tj�d_�|j�`����tj�da�tg|j-��tg|j.��tg|j.��tgdb������|�4��	|�
d#��n#t($rYnwxYw|jstj�dc��|�
��|�5��dS)dzCommand line tool, entry pointrNz9Miniterm - A simple terminal program for the serial port.)�descriptionrrQz(serial port name ("-" to show port list))�nargs�helprr�z#set baud rate, default: %(default)s)r��typer�rz
port settingsz--parity)�N�Er[r]rYc�*�|���Sr8�rsr	s rrzmain.<locals>.<lambda>G���q�w�w�y�y�r
z*set parity, one of {N E O S M}, default: Nr�)�choicesr�r�rz--rtscts�
store_truez)enable RTS/CTS flow control (default off)F)�actionr�rz	--xonxoffz*enable software flow control (default off)z--rtsz2set initial RTS line state (possible values: 0, 1))r�r�rz--dtrz2set initial DTR line state (possible values: 0, 1)z--non-exclusive�	exclusive�store_falsez disable locking for native portsT)�destr�r�rz--askz"ask again for port when open failsz
data handlingz-ez--echozenable local echo (default off)z
--encoding�serial_port_encoding�CODECzXset the encoding for the serial port (e.g. hexlify, Latin1, UTF-8), default: %(default)srg)r��metavarr�rz-fz--filterr��NAMEzadd text transformation)r�r�r�rz--eol)r�r�r�c�*�|���Sr8r�r	s rrzmain.<locals>.<lambda>�r�r
zend of line moder�z--rawz)Do no apply any encodings/transformations�hotkeysz--exit-char�NUMzWUnicode of special character that is used to exit the application, default: %(default)sr#)r�r�r�rz--menu-charz_Unicode code of special character that is used to control miniterm (menu), default: %(default)sr$�diagnosticsz-qz--quietzsuppress non-error messagesz	--developzshow Python traceback on errorz.--exit-char can not be the same as --menu-charr�zAvailable filters:
r�c3�HK�|]\}}d�||��V��dS)z{:<10} = {.__doc__}Nr�r�s   rr�zmain.<locals>.<genexpr>�sJ����'=�'=��A�q�&�,�,�Q��2�2�'=�'=�'=�'=�'=�'=r
r�r�-zport is not givenz"user aborted and port is not given)r�rrrqr�r@z--- forcing DTR {}
rdrez--- forcing RTS {}
zcould not open port {!r}: {}
)r�r*r+zP--- Miniterm on {p.name}  {p.baudrate},{p.bytesize},{p.parity},{p.stopbits} ---
rbz6--- Quit: {} | Menu: {} | Help: {} followed by {} ---
�z
--- exit ---
)6�argparse�ArgumentParser�add_argumentru�add_argument_group�
parse_args�	menu_char�	exit_char�errorr�rr�r.r�rrMr�r�rrr|r&r�r�r�rrrqrz�timeoutrj�quietrri�
isinstance�Serialr�r�rp�develop�askr!r�r*r�r�r-r.r'r\r�r`rr=rJ)�default_port�default_baudrate�default_rts�default_dtrr��parser�groupr;r+r4r��miniterms            r�mainr-s����O�O�O�
�
$�
$�O�%�Q�Q�F������
7��	���������
�
2� ��"�"�"�
�%�%�o�6�6�E�	����)�)�)�
 �
 �
9������
�����
8��	����
�����
9��	����
����
�
A��	����
����
�
A��	����
����
��
/������
�����
1��	����
�%�%�o�6�6�E�	����h��
.��	����
����
#��
g������
����j���
&������
����$�$�$�
 �
 �
������
�����
8��	����
�%�%�i�0�0�E�	����
��
f������
����
��
n������
�%�%�m�4�4�E�	����i��
*��	����
�����
-��	���������D��~���'�'����E�F�F�F��{�
��T�[� � ��J���3�4�4�4��J���T�Y�Y�'=�'=�"�?�#8�#8�#:�#:�;�;�'=�'=�'=�=�=�
>�
>�
>�
�J���T�"�"�"��H�Q�K�K�K��+����+��.��9���	�S� 0� 0�
6�(�N�N��	�
�y�6��L�L�!4�5�5�5���%�
C�
C�
C��
� � ��&�&�&����A�B�B�B�B�B�
C����#	�$�3��	��
��{��{��� �
"�"�"�O��?�M�:�:�
,�*+��'��x�#��z�j��J�$�$�%;�%B�%B�t�x�Cg�8�8�]g�%h�%h�i�i�i�&*�h��#��x�#��z�j��J�$�$�%;�%B�%B�t�x�Cg�8�8�]g�%h�%h�i�i�i�&*�h��#��/�6�=�9�9�
;�,0�N��)�� � �"�"�"�
���%�	 �	 �	 ��J���=�D�D�T�Y�PQ�R�R�S�S�S��|�
���8�
 ����������	����������	 ����K.�`��
�Y��H�N�N����	���H�
%�T�^�4�4�H��$�T�^�4�4�H���8�H�L����T�6�7�7�7����T�6�7�7�7��:�&��
���l�s�s��o�t���	 �	 �	 ��
���R�Y�Y��H�3�4�4��H�3�4�4��H�3�4�4��F�#�#�	%�%�	&�	&�	&�
�N�N����
��
�
�d�������
�
�
���
�����:�-��
���+�,�,�,��M�M�O�O�O��N�N�����s>�5N%�%>O&�%O&�*D.T�V�(A#V�V�\�
\*�)\*�__main__)Nr�NN).�
__future__rr�rIrr9r&�serial.tools.list_portsr�serial.toolsrr�r�	NameError�input�chrr�r�objectrr8r�rjrsrDrLr�r�r��NotImplementedErrorrr�r�r�r�r�r�r�r�rrRrMrr!rr>r&r
r�<module>rsH��'�&�&�&�&�&�
�
�
�
�	�	�	�	�
�
�
�
�����
�
�
�
�,�,�,�,�,�,�&�&�&�&�&�&����Q�Q�R�R�R��
�I�I�������I�
�F�F�F��������*�*�*�*�*�&�*�*�*�Z�7�d�?�?��M�M�M��M�M�M��O�O�O�
!�
!�
!�
!�
!�f�
!�
!�
!�RD�RD�RD�RD�RD�+�RD�RD�RD�RD�h�W�����M�M�M��N�N�N��L�L�L�D�D�D�D�D�+�D�D�D�D�>�
�C�J�J�3�<�X�X�Z�Z�Z����������*�*�*�*�*�9�*�*�*�(�(�(�(�(��(�(�(����������
�
�
�
�
��
�
�
� 	�	�	�	�	��	�	�	������	����$&�&�&�&�&�y�&�&�&������i����&
�
�
���������
�
������2c(�c(�c(�c(�c(�v�c(�c(�c(�R
a�a�a�a�H�z����D�F�F�F�F�F��s�<�	A�A