
    #)di#                        d dl mZ d dlZd dlZd dlZd dlmZ 	 d dlZn# e$ r	 d dl	m
Z Y nw xY wd Zd Z G d de          Z G d d	e          Z G d
 dej                  Zedk    r ed          Zde_         ee           dS dS )    )absolute_importN)to_bytesc              #   `  K   d}t          j        |           D ]i}d                    t          |                    d|cxk    rdk     rn n|                    d          ndfV  |dz  }|dk    rd	V  ]|d
k    rdV  d}j|dk    r%|d
k     r|dz  }|dk    rd	V  dV  |d
k     dV  dS dS )z    yield tuples of hex and ASCII display in multiples of 16. Includes a
    space after 8 bytes and (None, None) after 16 bytes and at the end.
    r   z{:02X}        ascii.      )     )NN)z   r   N)serial	iterbytesformatorddecode)datanbs      e/var/www/menimich/repos/protonApp/venv/lib/python3.11/site-packages/serial/urlhandler/protocol_spy.pysixteenr   %   s     
 	
Ad##  A''da>Q>Q>Q>Q'>Q>Q>Q>Q>Q'):):):WZ[[[[	Q66OOOO"WWA1uu"ffFAAvv	 "ff
  u    c              #   :  K   g }g }d}t          |           D ]\  }}|Q|d                    d                    |          d                    |          g          fV  |dd= |dd= |dz  }X|                    |           |                    |           dS )z yield lines with hexdump of datar   Nr   r   r   )r   joinappend)r   valuesr   offsethas         r   hexdumpr!   <   s      FEF  19388RWWV__bggenn$EFFGGGGqqq	aaadNFFMM!LLOOOO r   c                   *    e Zd ZdZd Zd Zd Zd ZdS )	FormatRawz&Forward only RX and TX data to output.c                 >    || _         || _        d| _        d| _        d S )N[32m[31m)outputcolorrx_colortx_colorselfr'   r(   s      r   __init__zFormatRaw.__init__O   s"    
""r   c                     | j         r| j                            | j                   | j                            |           | j                                         dS )zshow received dataN)r(   r'   writer)   flushr,   r   s     r   rxzFormatRaw.rxU   T    : 	-Kdm,,,$r   c                     | j         r| j                            | j                   | j                            |           | j                                         dS )zshow transmitted dataN)r(   r'   r/   r*   r0   r1   s     r   txzFormatRaw.tx\   r3   r   c                     dS )z(do not) show control callsN r,   namevalues      r   controlzFormatRaw.controlc   s    r   N)__name__
__module____qualname____doc__r-   r2   r5   r;   r7   r   r   r#   r#   L   sV        00# # #        r   r#   c                   2    e Zd ZdZd Zd	dZd Zd Zd ZdS )
FormatHexdumpax      Create a hex dump of RX ad TX data, show when control lines are read or
    written.

    output example::

        000000.000 Q-RX flushInput
        000002.469 RTS  inactive
        000002.773 RTS  active
        000003.001 TX   48 45 4C 4C 4F                                    HELLO
        000003.102 RX   48 45 4C 4C 4F                                    HELLO

    c                 |    t          j                     | _        || _        || _        d| _        d| _        d| _        d S )Nr%   r&   z[37m)time
start_timer'   r(   r)   r*   control_colorr+   s      r   r-   zFormatHexdump.__init__w   s9    )++
""'r   r   c                     | j                             d                    ||||                     | j                                          d S )Nz{:010.3f} {:4} {}{}
)r'   r/   r   r0   )r,   	timestamplabelr:   value2s        r   
write_linezFormatHexdump.write_line   sH    188E5RXYYZZZr   c                 l   | j         r| j                            | j                   |r[t	          |          D ]I\  }}|                     t          j                    | j        z
  dd                    |          |           JdS |                     t          j                    | j        z
  dd           dS )zshow received data as hex dumpRX{:04X}  z<empty>N)	r(   r'   r/   r)   r!   rJ   rC   rD   r   r,   r   r   rows       r   r2   zFormatHexdump.rx   s    : 	-Kdm,,, 	L&t}} e e	do =tZEVEVW]E^E^`cdddde e OODIKK$/94KKKKKr   c                    | j         r| j                            | j                   t	          |          D ]I\  }}|                     t          j                    | j        z
  dd                    |          |           JdS )z!show transmitted data as hex dumpTXrM   N)	r(   r'   r/   r*   r!   rJ   rC   rD   r   rN   s       r   r5   zFormatHexdump.tx   s    : 	-Kdm,,,"4== 	a 	aKFCOODIKK$/94ARARSYAZAZ\_````	a 	ar   c                     | j         r| j                            | j                   |                     t          j                    | j        z
  ||           dS )zshow control callsN)r(   r'   r/   rE   rJ   rC   rD   r8   s      r   r;   zFormatHexdump.control   sN    : 	2Kd0111	do5tUCCCCCr   N)r   )	r<   r=   r>   r?   r-   rJ   r2   r5   r;   r7   r   r   rA   rA   h   sy         ( ( (   L L La a aD D D D Dr   rA   c                       e Zd ZdZ fdZej        j        j        d             Zd Z	 fdZ
d fd	Z eej        d          r fd	Z eej        d
          r fdZe fd            Z fdZ fdZ fdZd fd	Zej        j        j        d             Zej        j        j        d             Zej        j        j        d             Zej        j        j         fd            Zej        j        j         fd            Zej        j        j         fd            Zej        j        j         fd            Z xZS )Serialzc    Inherit the native Serial port implementation and wrap all the methods and
    attributes.
    c                 d     t          t          |           j        |i | d | _        d| _        d S )NF)superrT   r-   	formattershow_all)r,   argskwargs	__class__s      r   r-   zSerial.__init__   s7    $fd$d5f555r   c                 ~    |:t           j        j                            | |                     |                     d S d S N)r   rT   port__set__from_url)r,   r:   s     r   r^   zSerial.port   s=    M&&tT]]5-A-ABBBBB r   c                    t          j        |          }|j        dk    r,t          j        d                    |j                            t          }d}t          j        }	 t          j	        |j
        d                                          D ]h\  }}|dk    rt          |d         d          }"|dk    rd}+|d	k    rt          }9|d
k    rd| _        Gt          d                    |                    n9# t          $ r,}t          j        d                    |                    d}~ww xY w |||          | _        d                    |j        |j        g          S )z(extract host and port from an URL stringspyzmexpected a string in the form "spy://port[?option[=value][&option[=value]]]": not starting with spy:// ({!r})FTfiler   wr(   rawallzunknown option: {!r}zPexpected a string in the form "spy://port[?option[=value][&option[=value]]]": {}Nr   )urlparseurlsplitschemer   SerialExceptionr   rA   sysstderrparse_qsqueryitemsopenr#   rX   
ValueErrorrW   r   netlocpath)	r,   urlpartsrW   r(   r'   optionr   es	            r   r`   zSerial.from_url   s   !#&&<5  (228&2F2FH H H
 "		P"*"3EK"F"F"L"L"N"N 
L 
LV##!&)S11FFw&& EEu__ )IIu__$(DMM$%;%B%B6%J%JKKK
L  	P 	P 	P(EEKVAYYP P P	P #6511wwej1222s   "BC8 8
D.'D))D.c                     t          |          }| j                            |           t          t          |                               |          S r]   )r   rW   r5   rV   rT   r/   )r,   r5   r[   s     r   r/   zSerial.write   sB    b\\"VT""((,,,r   r
   c                     t          t          |                               |          }|s| j        r| j                            |           |S r]   )rV   rT   readrX   rW   r2   )r,   sizer2   r[   s      r   rz   zSerial.read   sL    64  %%d++ 	" 	"Nb!!!	r   cancel_readc                     | j                             dd           t          t          |                                            d S )NQ-RXr|   )rW   r;   rV   rT   r|   r,   r[   s    r   r|   zSerial.cancel_read   s=    N""6=999&$++-----r   cancel_writec                     | j                             dd           t          t          |                                            d S )NQ-TXr   )rW   r;   rV   rT   r   r   s    r   r   zSerial.cancel_write   s=    N""6>:::&$,,.....r   c                     t          t          |           j        }| j        r.| j                            dd                    |                     |S )Nr~   zin_waiting -> {})rV   rT   
in_waitingrX   rW   r;   r   )r,   r   r[   s     r   r   zSerial.in_waiting   sL    &$*= 	IN""6+=+D+DQ+G+GHHHr   c                     | j                             dd           t          t          |                                            d S )Nr   r0   )rW   r;   rV   rT   r0   r   s    r   r0   zSerial.flush   s=    vw///fd!!#####r   c                     | j                             dd           t          t          |                                            d S )Nr~   reset_input_buffer)rW   r;   rV   rT   r   r   s    r   r   zSerial.reset_input_buffer   s>    v';<<<fd..00000r   c                     | j                             dd           t          t          |                                            d S )Nr   reset_output_buffer)rW   r;   rV   rT   r   r   s    r   r   zSerial.reset_output_buffer   s>    v'<===fd//11111r         ?c                     | j                             dd                    |                     t          t          |                               |           d S )NBRKzsend_break {}s)rW   r;   r   rV   rT   
send_break)r,   durationr[   s     r   r   zSerial.send_break   sN    u&6&=&=h&G&GHHHfd&&x00000r   c                     | j                             d|rdnd           t          j        j                            | |           d S )Nr   activeinactive)rW   r;   r   rT   break_conditionr_   r,   levels     r   r   zSerial.break_condition   sD    u%&GhhZHHH%--dE:::::r   c                     | j                             d|rdnd           t          j        j                            | |           d S )NRTSr   r   )rW   r;   r   rT   rtsr_   r   s     r   r   z
Serial.rts   D    u%&GhhZHHH!!$.....r   c                     | j                             d|rdnd           t          j        j                            | |           d S )NDTRr   r   )rW   r;   r   rT   dtrr_   r   s     r   r   z
Serial.dtr  r   r   c                 z    t          t          |           j        }| j                            d|rdnd           |S )NCTSr   r   )rV   rT   ctsrW   r;   r,   r   r[   s     r   r   z
Serial.cts  ;    fd##'u%&GhhZHHHr   c                 z    t          t          |           j        }| j                            d|rdnd           |S )NDSRr   r   )rV   rT   dsrrW   r;   r   s     r   r   z
Serial.dsr  r   r   c                 z    t          t          |           j        }| j                            d|rdnd           |S )NRIr   r   )rV   rT   rirW   r;   r   s     r   r   z	Serial.ri  ;    fd##&t%FXXJGGGr   c                 z    t          t          |           j        }| j                            d|rdnd           |S )NCDr   r   )rV   rT   cdrW   r;   r   s     r   r   z	Serial.cd  r   r   )r
   )r   )r<   r=   r>   r?   r-   r   rT   r^   setterr`   r/   rz   hasattrr|   r   propertyr   r0   r   r   r   r   r   r   r   getterr   r   r   __classcell__)r[   s   @r   rT   rT      s            
 ]C C C3 3 3>- - - - -
      wv}m,, .	. 	. 	. 	. 	. wv}n-- /	/ 	/ 	/ 	/ 	/     X$ $ $ $ $1 1 1 1 12 2 2 2 21 1 1 1 1 1 ]"); ; *); ]/ / / ]/ / / ]    
 ]    
 ]    
 ]        r   rT   __main__zspy:///dev/ttyS0)
__future__r   rk   rC   r   serial.serialutilr   rg   ImportErrorurllib.parseparser   r!   objectr#   rA   rT   r<   serr^   printr7   r   r   <module>r      ss  . ' & & & & & 



   ' ' ' ' ' '$OOOO $ $ $########$  .          80D 0D 0D 0D 0DF 0D 0D 0DfA A A A AV] A A AH z
&,,C!CH	E#JJJJJ s    --