
    #)di\!                         d dl Z d dlZ	 d dlZn# e$ r	 d dlmZ Y nw xY w	 d dlZn# e$ r d dlZY nw xY wd dlZd dl	Z	d dl
mZmZmZmZmZ dZd ZdZdZdZdZdZdZd	Z G d
 de          ZdS )    N)
SerialBaseSerialExceptionPortNotOpenErrorto_bytesTimeoutA      C      P   Q   R   c                   v     e Zd ZdZ fdZd Zd Zd Zd Ze	d             Z
d Zd	 Zd
 ZddZd Zd Z xZS )Serial)i,  iw  iX  i  i  i`	  i  i%  i K  i   i   i  i  i  i  i  i  i@B c                 r    d | _         d | _        d | _         t          t          |           j        |i | d S N)_hid_handle_read_buffer_threadsuperr   __init__)selfargskwargs	__class__s      h/var/www/menimich/repos/protonApp/venv/lib/python3.11/site-packages/serial/urlhandler/protocol_cp2110.pyr   zSerial.__init__E   sB     $fd$d5f55555    c                 H   | j         t          d          | j        rt          d          t          j                    | _        t          j                    | _        	 |                     | j	                  }| j        
                    |           n@# t          $ r3}t          |j        d                    | j         |                    d }~ww xY w	 |                                  d| _        t          j        | j                  | _        | j                            d           | j                            d                    | j                              | j                                         d S #  	 | j                                         n#  Y nxY wd | _         xY w)Nz.Port must be configured before it can be used.zPort is already open.zcould 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   openzSerial.openK   s   :!"RSSS< 	;!"9:::!KMM:<<	c}}T\22H&&x0000 	c 	c 	c!#)-I-P-PQUQ[]`-a-abbb	c	!""$$$  DL$+43FGGGDLL""4(((L  !G!N!Ntz!Z!Z[[[L     	 &&((((#Ds<   4B 
C.CCE5 5F!8FF!FF!c                    t          j        |          }|j        dk    r't          d                    |j                            |j        r|j                            d          S |j                            d          S )Ncp2110zuexpected a string in the forms "cp2110:///dev/hidraw9" or "cp2110://0001:0023:00": not starting with cp2110:// {{!r}}zutf-8)urlparseurlsplitschemer   r*   netlocencodepath)r   urlpartss      r   r%   zSerial.from_urlj   s    !#&&<8##!55;VEL5I5IK K K < 	0<&&w///z  )))r   c                     d| _         | j        r!| j                            d           d | _        | j                                         d | _        d S )NFr	   )r!   r   joinr   r2   r   s    r   r2   zSerial.closeu   sS    < 	 La   DL   r   c           	         d }| j         t          j        k    rd}n| j         t          j        k    rd}no| j         t          j        k    rd}nW| j         t          j        k    rd}n?| j         t          j        k    rd}n't          d                    | j                             | j	        rd}nd}d }| j
        dk    rd}nQ| j
        dk    rd}nC| j
        d	k    rd}n5| j
        d
k    rd}n't          d                    | j
                            d }| j        t          j        k    rd}nW| j        t          j        k    rd}n?| j        t          j        k    rd}n't          d                    | j                            t          j        dt"          | j        ||||          }| j                            |           | j                            t+          t,          t.          f                     |                                  d S )Nr   r	   r         zInvalid parity: {!r}            zInvalid 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         r   r+   zSerial._reconfigure_port}   s   <6---LL\V...LL\V///LL\V///LL\V000LL3::4<HHIII; 	&!%!%>Q"OO^q  "OO^q  "OO^q  "OO5<<T^LLMMM>V000"OO^v==="OO^v222"OOCJJ4>ZZ[[[%{&N    	,,-ABBB,,-|<==	? 	? 	?  """""r   c                 4    | j                                         S r   )r   qsizerB   s    r   
in_waitingzSerial.in_waiting   s     &&(((r   c                 2   | j         st                      | j                            t	          t
          t          f                     | j                                        r5| j        	                    d           | j                                        3d S d S )NF)
r!   r   r   r\   r]   _REPORT_SET_PURGE_FIFOS_PURGE_RX_FIFOr   rg   getrB   s    r   reset_input_bufferzSerial.reset_input_buffer   s    | 	%"$$$,,*N;<<	> 	> 	> %%'' 	)!!%((( %%'' 	) 	) 	) 	) 	)r   c                     | j         st                      | j                            t	          t
          t          f                     d S r   )r!   r   r   r\   r]   rj   _PURGE_TX_FIFOrB   s    r   reset_output_bufferzSerial.reset_output_buffer   sN    | 	%"$$$,,*N;<<	> 	> 	> 	> 	>r   c                     | j         st                      | j        r0| j                             t	          t
          df                     d S | j                             t	          t          df                     d S )Nr   )r   r   _break_stater\   r]   _REPORT_SET_TRANSMIT_LINE_BREAK_REPORT_SET_STOP_LINE_BREAKrB   s    r   r`   zSerial._update_break_state   s     	%"$$$ 	9006:;;= = = = = 002A6779 9 9 9 9r   r	   c                    | j         st                      t                      }	 t          | j                  }t          |          |k     r| j        t          d          | j        	                    d|
                                          }|t          |          S ||z  }|                                rnt          |          |k     n# t          j        $ r Y nw xY wt          |          S )Nz&connection failed (reader thread died)T)r!   r   	bytearrayr   _timeoutlenr   r   r   rl   	time_leftr]   expiredr"   Empty)r   sizedatatimeoutbufs        r   readzSerial.read   s    | 	%"$$${{	dm,,Gd))d""<')*RSSS'++D'2C2C2E2EFF; ;;&??$$  d))d"" { 	 	 	D	T{{s   A:C  -C C C c                 D   | j         st                      t          |          }t          |          }|dk    rft	          |d          }t          |g          |d |         z   }| j                            |           ||d          }t          |          }|dk    dd S d S )Nr   ?   )r!   r   r   rx   minr   write)r   r}   tx_len
to_be_sentreports        r   r   zSerial.write   s    | 	%"$$$~~TqjjVT**Jzl++d;J;.??F""6***
$DYYF qjjjjjjr   c                 *   	 | j         rw| j                            dd          }|s&|                    d          }|t	          |          k    sJ | j                            t          |                     | j         wd | _        d S # d | _        w xY w)N@   d   )
timeout_msr   )	r!   r   r   poprx   r   putrv   r   )r   r}   data_lens      r   r.   zSerial._hid_read_loop   s    		 , 7',,RC,@@ 88A;;3t99,,,,!%%ioo666 , 7  DLLL4DLs   A>B	 		B)r	   )__name__
__module____qualname__	BAUDRATESr   r5   r%   r2   r+   propertyrh   rm   rp   r`   r   r   r.   __classcell__)r   s   @r   r   r   =   s        "I6 6 6 6 6! ! !>	* 	* 	*     7# 7# 7#r ) ) X)) ) )> > >9 9 9   (  
  
  
  
  
  
  
 r   r   )rX   r,   r8   ImportErrorurllib.parseparser"   queuer#   rK   serial.serialutilr   r   r   r   r   r^   _DISABLE_UARTr_   rj   ro   rk   rZ   rs   rt   r    r   r   <module>r      sL  6     $OOOO $ $ $########$LLLL    


  ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ "  ! "& " E  E  E  E  E Z E  E  E  E  E s    & 	22