Ë
    Ê¦^_\!  ã                   óÎ   — d dl Z d dlZ	 d dlZ	 d dlZ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y# e$ r	 d dlmZ Y ŒFw xY w# e$ r d dlZY ŒPw xY w)é    N)Ú
SerialBaseÚSerialExceptionÚPortNotOpenErrorÚto_bytesÚTimeoutéA   é   éC   é   éP   éQ   éR   c                   óp   ‡ — 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                 óV   •— d | _         d | _        d | _        t        t        | �  |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.pyr   zSerial.__init__E   s.   ø€ ØˆÔØ ˆÔØˆŒÜŒf�dÑ$ dÐ5¨fÓ5ó    c                 ól  — | j                   €t        d«      ‚| j                  rt        d«      ‚t        j                  «       | _        t        j                  «       | _        	 | j                  | j                  «      }| j                  j                  |«       	 | j                  «        d| _        t        j                   | j"                  ¬«      | _        | j$                  j'                  d«       | j$                  j)                  dj                  | j                   «      «       | j$                  j+                  «        y # t        $ r5}t        |j                  dj                  | j                   |«      «      ‚d }~ww xY w#  	 | j                  j-                  «        d | _        ‚ #  Y d | _        ‚ xY w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   sb  € Ø�:‰:ÐÜ!Ð"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Å8E=Æ F3ÆF%ÆF3Æ%F0Æ'F3c                 ó  — t        j                  |«      }|j                  dk7  r$t        dj	                  |j                  «      «      ‚|j
                  r|j
                  j                  d«      S |j                  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   ss   € Ü×!Ñ! #Ó&ˆØ�<‰<˜8Ò#Ü!ð5ç5;±V¸E¿L¹LÓ5IóKð Kð �<Š<Ø—<‘<×&Ñ& wÓ/Ð/Ø�z‰z× Ñ  Ó)Ð)r   c                 ó°   — d| _         | j                  r"| j                  j                  d«       d | _        | j                  j	                  «        d | _        y )NFr	   )r!   r   Újoinr   r2   ©r   s    r   r2   zSerial.closeu   sC   € ØˆŒØ�<Š<Ø�L‰L×Ñ˜aÔ ØˆDŒLØ×Ñ×ÑÔ ØˆÕr   c           	      óž  — d }| j                   t        j                  k(  rd}n¤| j                   t        j                  k(  rd}n„| j                   t        j                  k(  rd}nd| j                   t        j
                  k(  rd}nD| j                   t        j                  k(  rd}n$t        dj                  | j                   «      «      ‚| j                  rd}nd}d }| j                  dk(  rd}nZ| j                  dk(  rd}nH| j                  d	k(  rd}n6| j                  d
k(  rd}n$t        dj                  | j                  «      «      ‚d }| j                  t        j                  k(  rd}nd| j                  t        j                  k(  rd}nD| j                  t        j                  k(  rd}n$t        dj                  | j                  «      «      ‚t        j                   dt"        | j$                  ||||«      }| j&                  j)                  |«       | j&                  j)                  t+        t,        t.        f«      «       | j1                  «        y )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×-Ñ-Ò-Ø‰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à×Ñ×,Ñ,ÜÔ-¬|Ð<Ó=ô	?à× Ñ Õ"r   c                 ó6   — | j                   j                  «       S r   )r   ÚqsizerB   s    r   Ú
in_waitingzSerial.in_waiting¶   s   € à× Ñ ×&Ñ&Ó(Ð(r   c                 ó.  — | j                   s
t        «       ‚| j                  j                  t	        t
        t        f«      «       | j                  j                  «       r7| j                  j                  d«       | j                  j                  «       rŒ6y y )NF)
r!   r   r   r\   r]   Ú_REPORT_SET_PURGE_FIFOSÚ_PURGE_RX_FIFOr   rg   ÚgetrB   s    r   Úreset_input_bufferzSerial.reset_input_bufferº   sp   € Ø�|Š|Ü"Ó$Ð$Ø×Ñ×,Ñ,ÜÔ*¬NÐ;Ó<ô	>ð ×Ñ×%Ñ%Ô'Ø×Ñ×!Ñ! %Ô(ð ×Ñ×%Ñ%×'r   c                 óŒ   — | j                   s
t        «       ‚| j                  j                  t	        t
        t        f«      «       y r   )r!   r   r   r\   r]   rj   Ú_PURGE_TX_FIFOrB   s    r   Úreset_output_bufferzSerial.reset_output_bufferÃ   s4   € Ø�|Š|Ü"Ó$Ð$Ø×Ñ×,Ñ,ÜÔ*¬NÐ;Ó<õ	>r   c                 óò   — | j                   s
t        «       ‚| j                  r+| j                   j                  t	        t
        df«      «       y | j                   j                  t	        t        df«      «       y )Nr   )r   r   Ú_break_stater\   r]   Ú_REPORT_SET_TRANSMIT_LINE_BREAKÚ_REPORT_SET_STOP_LINE_BREAKrB   s    r   r`   zSerial._update_break_stateÉ   sc   € Ø×ÒÜ"Ó$Ð$à×ÒØ×Ñ×0Ñ0ÜÔ6¸Ð:Ó;õ=ð ×Ñ×0Ñ0ÜÔ2°AÐ6Ó7õ9r   c                 óÌ  — | j                   s
t        «       ‚t        «       }	 t        | j                  «      }t        |«      |k  rs| j                  €t        d«      ‚| j                  j                  d|j                  «       «      }|€t        |«      S ||z  }|j                  «       rnt        |«      |k  rŒst        |«      S # t        j                  $ r Y t        |«      S w xY w)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Ð   € Ø�|Š|Ü"Ó$Ð$ä‹{ˆð	Ü˜dŸm™mÓ,ˆGÜ�d“)˜dÒ"Ø—<‘<Ð'Ü)Ð*RÓSÐSØ×'Ñ'×+Ñ+¨D°'×2CÑ2CÓ2EÓF�Ø�;Ü  ›;Ð&Ø˜‘�Ø—?‘?Ô$Øô �d“)˜dÓ"ô �T‹{Ðøô �{‰{ò 	ØÜ�T‹{Ðð	ús   ¢A0C Â$C ÃC#Ã"C#c                 ó  — | j                   s
t        «       ‚t        |«      }t        |«      }|dkD  rPt	        |d«      }t        |g«      |d | z   }| j
                  j                  |«       ||d  }t        |«      }|dkD  rŒOy y )Nr   é?   )r!   r   r   rx   Úminr   Úwrite)r   r}   Útx_lenÚ
to_be_sentÚreports        r   r„   zSerial.writeë   s�   € Ø�|Š|Ü"Ó$Ð$Ü˜‹~ˆÜ�T“ˆØ�qŠjÜ˜V TÓ*ˆJÜ˜z˜lÓ+¨d°;°JÐ.?Ñ?ˆFØ×Ñ×"Ñ" 6Ô*à˜
˜Ð$ˆDÜ˜“YˆFð �q�jr   c                 ó(  — 	 | j                   rr| j                  j                  dd¬«      }|sŒ,|j                  d«      }|t	        |«      k(  sJ ‚| j
                  j                  t        |«      «       | j                   rŒrd | _        y # 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€   € ð		 Ø—,’,Ø×'Ñ'×,Ñ,¨R¸CÐ,Ó@�ÙØØŸ8™8 A›;�Ø¤3 t£9Ò,Ð,Ð,Ø×!Ñ!×%Ñ%¤i°£oÔ6ð —,“,ð  ˆD�Lø˜4ˆD�Lú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   =   sV   ø„ ð"€Iô6ò!ò>	*ò ò7#ðr ñ)ó ð)ò)ò>ò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œ      s”   ðó6 Û ð$ÛðÛó ã ß ^Õ ^ð "Ð Ø€Ø€àÐ Ø€Ø€à!Ð à"&Ð Ø"Ð ôE ˆZõ E øð; ò $ß#ð$ûð
 ò Ýðús"   ŠA �A ÁAÁAÁ	A$Á#A$