
    ^_#                     x    d dl mZ d dlZd dlZd dl ej
                  ej                     Zd Z G d de	      Z
y)    )absolute_importN)*c                 P    t        | D cg c]  }t        |       c}      S c c}w )N)sabord)stringxs     2/usr/lib/python3/dist-packages/serial/serialcli.pyas_byte_arrayr      s    '1A'(('s   #c                       e Zd ZdZdZd Zd Zd Zed        Z	ddZ
d Zd	 Zd
 Zd Zd Zd Zed        Zed        Zed        Zed        Zy)Serialz)Serial port implementation for .NET/Mono.)2   K   n            i,  iX  i  i  i`	  i  i%  i K  i   i   i  c                 v   | j                   t        d      | j                  rt        d      	 t        j                  j
                  j                  | j                        | _        | j                  d| _
        | j                  d| _        | j                          | j                  j                          d| _        | j                  s| j                          | j                   s| j#                          | j%                          y# t        $ r'}d| _        t        d| j                  d|      d}~ww xY w)zx        Open port with current settings. This may throw a SerialException
        if the port cannot be opened.
        Nz.Port must be configured before it can be used.zPort is already open.zcould not open port z: T)_portSerialExceptionis_openSystemIOPorts
SerialPortportstr_port_handle	Exception
_rts_state
_dtr_state_reconfigure_portOpen_dsrdtr_update_dtr_state_rtscts_update_rts_statereset_input_buffer)selfmsgs     r
   openzSerial.open   s    
 ::!"RSS<<!"9::	V &		 : :4<< HD ??""DO??""DO  ||""$||""$!#  	V $D!$,,PS"TUU	Vs   8D 	D8"D33D8c                    | j                   st        d      | j                  >t        j                  j
                  j                  j                  | j                   _        n't        | j                  dz        | j                   _        | j                  >t        j                  j
                  j                  j                  | j                   _        n't        | j                  dz        | j                   _        	 | j                  | j                   _        | j"                  t$        k(  rd| j                   _        n| j"                  t(        k(  rd| j                   _        nb| j"                  t*        k(  rd| j                   _        n=| j"                  t,        k(  rd| j                   _        nt        d| j"                  z        | j.                  t0        k(  r?t3        t        j                  j
                  j4                  d	      | j                   _        n]| j.                  t6        k(  r?t        j                  j
                  j4                  j8                  | j                   _        n| j.                  t:        k(  r>t        j                  j
                  j4                  j<                  | j                   _        n| j.                  t>        k(  r>t        j                  j
                  j4                  j@                  | j                   _        ni| j.                  tB        k(  r>t        j                  j
                  j4                  jD                  | j                   _        nt        d
| j.                  z        | jF                  tH        k(  r>t        j                  j
                  jJ                  jL                  | j                   _%        n| jF                  tN        k(  r>t        j                  j
                  jJ                  jP                  | j                   _%        ni| jF                  tR        k(  r>t        j                  j
                  jJ                  jT                  | j                   _%        nt        d| jF                  z        | jV                  rJ| jX                  r>t        j                  j
                  jZ                  j\                  | j                   _-        y| jV                  r>t        j                  j
                  jZ                  j^                  | j                   _-        y| jX                  r>t        j                  j
                  jZ                  j`                  | j                   _-        yt3        t        j                  j
                  jZ                  d	      | j                   _-        y# t        $ r}t        t!        |            d}~ww xY w)z,Set communication parameters on opened port.z'Can only operate on a valid port handleNi              z#Unsupported number of data bits: %rNonezUnsupported parity mode: %rz#Unsupported number of stop bits: %r)1r   r   _timeoutr   r   r   r   InfiniteTimeoutReadTimeoutint_write_timeoutWriteTimeout	_baudrateBaudRateIOError
ValueErrorstr	_bytesizeFIVEBITSDataBitsSIXBITS	SEVENBITS	EIGHTBITS_parityPARITY_NONEgetattrParityPARITY_EVENEven
PARITY_ODDOddPARITY_MARKMarkPARITY_SPACESpace	_stopbitsSTOPBITS_ONEStopBitsOneSTOPBITS_ONE_POINT_FIVEOnePointFiveSTOPBITS_TWOTwor%   _xonxoff	HandshakeRequestToSendXOnXOffRequestToSendXOnXOff)r(   es     r
   r!   zSerial._reconfigure_port=   s     !"KLL == ,2IIOO,F,F,V,VD),/0D,ED)
 &-3YY__-G-G-W-WD*-01D1Dt1K-LD*	%)-D&
 >>X%)*D&^^w&)*D&^^y()*D&^^y()*D&BT^^STT<<;&'.vyy/E/Ev'ND$\\[('-yy'='='B'BD$\\Z''-yy'='='A'AD$\\[('-yy'='='B'BD$\\\)'-yy'='='C'CD$:T\\IJJ>>\))/)A)A)E)ED&^^66)/)A)A)N)ND&^^|+)/)A)A)E)ED&BT^^STT<<DMM*0))//*C*C*X*XD'\\*0))//*C*C*Q*QD']]*0))//*C*C*K*KD'*1&))//2K2KV*TD'Y  	%SV$$	%s   ;V$ $	W-WWc                     | j                   r6| j                  r"	 | j                  j                          d| _        d| _         yy# t        j                  j
                  j                  $ r Y 9w xY w)z
Close portNF)r   r   Closer   r   r   InvalidOperationExceptionr(   s    r
   closezSerial.close   sa    <<  %%++- %)! DL  yy@@ s   A 'A.-A.c                 Z    | j                   s
t               | j                  j                  S )z>Return the number of characters currently in the input buffer.)r   PortNotOpenErrorr   BytesToReadr_   s    r
   
in_waitingzSerial.in_waiting   s&     ||"$$  ,,,    c                    | j                   s
t               t               }|r2	 |j                  | j                  j                                |dz  }|r2t        |      S # t        j                  $ r Y t        |      S w xY w)z        Read size bytes from the serial port. If a timeout is set it may
        return less characters as requested. With no timeout it will block
        until the requested number of bytes is read.
           )	r   rb   	bytearrayappendr   ReadByter   TimeoutExceptionbytes)r(   sizedatas      r
   readzSerial.read   s     ||"$$ {D--6689 	  T{	 **  T{	s   )A   B ?B c                     | j                   s
t               	 | j                  j                  t	        |      dt        |             t        |      S # t        j                  $ r t        d      w xY w)z-Output the given string over the serial port.r   zWrite timeout)	r   rb   r   Writer   lenr   rk   SerialTimeoutException)r(   rn   s     r
   writezSerial.write   sh    ||"$$	: ##M$$7CIF 4y && 	:(99	:s   /A A1c                 d    | j                   s
t               | j                  j                          y)z9Clear input buffer, discarding all that is in the buffer.N)r   rb   r   DiscardInBufferr_   s    r
   r'   zSerial.reset_input_buffer   s$    ||"$$))+re   c                 d    | j                   s
t               | j                  j                          y)zs        Clear output buffer, aborting the current output and
        discarding all that is in the buffer.
        N)r   rb   r   DiscardOutBufferr_   s    r
   reset_output_bufferzSerial.reset_output_buffer   s&    
 ||"$$**,re   c                 x    | j                   s
t               t        | j                        | j                  _        y)zT
        Set break: Controls TXD. When active, to transmitting is possible.
        N)r   rb   bool_break_stater   
BreakStater_   s    r
   _update_break_statezSerial._update_break_state   s-     ||"$$'+D,=,='>$re   c                 x    | j                   s
t               t        | j                        | j                  _        y)z)Set terminal status line: Request To SendN)r   rb   r{   r   r   	RtsEnabler_   s    r
   r&   zSerial._update_rts_state   )    ||"$$&*4??&;#re   c                 x    | j                   s
t               t        | j                        | j                  _        y)z-Set terminal status line: Data Terminal ReadyN)r   rb   r{   r    r   	DtrEnabler_   s    r
   r$   zSerial._update_dtr_state   r   re   c                 Z    | j                   s
t               | j                  j                  S )z(Read terminal status line: Clear To Send)r   rb   r   
CtsHoldingr_   s    r
   ctsz
Serial.cts   &     ||"$$  +++re   c                 Z    | j                   s
t               | j                  j                  S )z)Read terminal status line: Data Set Ready)r   rb   r   
DsrHoldingr_   s    r
   dsrz
Serial.dsr   r   re   c                 0    | j                   s
t               y)z)Read terminal status line: Ring IndicatorF)r   rb   r_   s    r
   riz	Serial.ri   s     ||"$$re   c                 Z    | j                   s
t               | j                  j                  S )z)Read terminal status line: Carrier Detect)r   rb   r   	CDHoldingr_   s    r
   cdz	Serial.cd   s&     ||"$$  ***re   N)rg   )__name__
__module____qualname____doc__	BAUDRATESr*   r!   r`   propertyrd   ro   rt   r'   ry   r~   r&   r$   r   r   r   r    re   r
   r   r      s    34I"<CUP
! - -(,-?<< , , , ,   + +re   r   )
__future__r   r   System.IO.Portsserial.serialutilArrayByter   r   
SerialBaser   r   re   r
   <module>r      s:    '    ll6;;)a+Z a+re   