
*Jc           @   sd  d  d l  Td   Z d   Z e d d g  Z d   Z d e f d     YZ y d  d	 l Z Wn* e k
 r d
 e e	 f d     YZ
 n Xd
 e e j f d     YZ
 e d k r`e
 d d d d e d e d e d d d d d d Z e j d  e j d  e j   e j   e j d  e j j d e j d   e j j d e j    [ n  d	 S(   i(   t   *c         C   sC   t  |   } |  j d  } x! | d D] } t | |  } q& W| S(   Nt   .i   (   t
   __import__t   splitt   getattr(   t   namet   modt
   componentst   comp(    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyt	   my_import   s
    c         C   sV   xC |  D]; } y t  |  } | j | SWq t t f k
 rA q Xq Wt d   d S(   s1   try given list of modules and return that importss/   No Java Communications API implementation foundN(   R	   t
   SerialPortt   ImportErrort   AttributeError(   t   namesR   R   (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyt   detect_java_comm   s    s
   javax.comms   gnu.ioc         C   sj   t  j j   } g  } xD | j   r[ | j   } | j   t  j j k r | j |  q q W| |  j   S(   s%   Turn a port number into a device name(	   t   commt   CommPortIdentifiert   getPortIdentifierst   hasMoreElementst   nextElementt   getPortTypet   PORT_SERIALt   appendt   getName(   t
   portnumbert   enumt   portst   el(    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyt   device)   s    t
   JavaSerialc           B   s   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d d  Z d   Z	 d	   Z
 d
   Z d d  Z d d  Z d d  Z d d  Z d   Z d   Z d   Z d   Z RS(   s   Serial port class, implemented with Java Communications API and
       thus usable with jython and the appropriate java extension.c         C   s   |  j  d k r t d   n  t |  j   t d  k rQ t j j |  j   } n t j j t |  j    } y | j d d  |  _	 Wn, t
 k
 r } d |  _	 t d |   n X|  j   |  j	 j   |  _ |  j	 j   |  _ t |  _ d S(   sj   Open port with current settings. This may throw a SerialException
           if the port cannot be opened.s.   Port must be configured before it can be used.t    s   python serial modulei
   s   Could not open port: %sN(   t   _portt   Nonet   SerialExceptiont   typeR   R   t   getPortIdentifierR   t   opent   sPortt	   Exceptiont   _reconfigurePortt   getInputStreamt	   _instreamt   getOutputStreamt
   _outstreamt   Truet   _isOpen(   t   selft   portIdt   msg(    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyR$   8   s    	
c         C   s  |  j  s t d   n  |  j  j d  |  j t k rF t j j } nm |  j t k rd t j j	 } nO |  j t
 k r t j j } n1 |  j t k r t j j } n t d |  j   |  j t k r t j j } nO t t k r t j j |  _ n1 |  j t k rt j j } n t d |  j   |  j t k r>t j j } n |  j t k r\t j j } nm |  j t k rzt j j } nO |  j t k rt j j } n1 |  j t k rt j j } n t d |  j   d } } |  j r| t j j O} | t j j  O} n  |  j! r+| t j j" O} | t j j# O} n  |  j  j$ |  j% | | |  |  j  j& | | B |  j' d k r|  j  j |  j' d  n |  j  j(   d S(	   s,   Set communication parameters on opened port.s'   Can only operate on a valid port handlei   s   unsupported bytesize: %rs"   unsupported number of stopbits: %rs   unsupported parity type: %ri    i  N()   R%   R!   t   enableReceiveTimeoutt	   _bytesizet   FIVEBITSR   R
   t
   DATABITS_5t   SIXBITSt
   DATABITS_6t	   SEVENBITSt
   DATABITS_7t	   EIGHTBITSt
   DATABITS_8t
   ValueErrort	   _stopbitst   STOPBITS_ONEt
   STOPBITS_1t   stopbitst   STOPBITS_ONE_POINT_FIVEt   STOPBITS_1_5t
   _jstopbitst   STOPBITS_TWOt
   STOPBITS_2t   _parityt   PARITY_NONEt   PARITY_EVENt
   PARITY_ODDt   PARITY_MARKt   PARITY_SPACEt   _rtsctst   FLOWCONTROL_RTSCTS_INt   FLOWCONTROL_RTSCTS_OUTt   _xonxofft   FLOWCONTROL_XONXOFF_INt   FLOWCONTROL_XONXOFF_OUTt   setSerialPortParamst	   _baudratet   setFlowControlModet   _timeoutt   disableReceiveTimeout(   R.   t	   jdatabitst	   jstopbitst   jparityt   jflowint   jflowout(    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyR'   K   sT    	
		c         C   sU   |  j  rQ |  j rE |  j j   |  j j   |  j j   d |  _ n  t |  _  n  d S(   s
   Close portN(   R-   R%   R)   t   closeR+   R    t   False(   R.   (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyR[      s    		c         C   s
   t  |  S(   N(   R   (   R.   t   port(    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyt   makeDeviceName   s    c         C   s   |  j  s t  n  |  j j   S(   s>   Return the number of characters currently in the input buffer.(   R%   t   portNotOpenErrorR)   t	   available(   R.   (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyt	   inWaiting   s    	 	i   c         C   s   |  j  s t  n  t   } | d k r xW t |  | k  r} |  j j   } | d k rm |  j d k rz Pqz q* | j |  q* Wn  t |  S(   s   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.i    i(	   R%   R_   t	   bytearrayt   lenR)   t   readt   timeoutR   t   bytes(   R.   t   sizeRd   t   x(    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyRd      s    	 		c         C   s`   |  j  s t  n  t | t t f  sF t d t t |  f   n  |  j j |  t	 |  S(   s-   Output the given string over the serial port.s    expected %s or bytearray, got %s(
   R%   R_   t
   isinstanceRf   Rb   t	   TypeErrorR"   R+   t   writeRc   (   R.   t   data(    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyRk      s    	 	c         C   s/   |  j  s t  n  |  j j |  j j    d S(   s9   Clear input buffer, discarding all that is in the buffer.N(   R%   R_   R)   t   skipR`   (   R.   (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyt
   flushInput   s    	 	c         C   s#   |  j  s t  n  |  j j   d S(   sb   Clear output buffer, aborting the current output and
        discarding all that is in the buffer.N(   R%   R_   R+   t   flush(   R.   (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyt   flushOutput   s    	 	g      ?c         C   s*   |  j  s t  n  |  j  j | d  d S(   sH   Send break condition. Timed, returns to idle state after given duration.g     @@N(   R%   R_   t	   sendBreak(   R.   t   duration(    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyRq      s    	 	c         C   s(   |  j  d k r t  n  t d   d S(   sB   Set break: Controls TXD. When active, to transmitting is possible.s1   The setBreak function is not implemented in java.N(   t   fdR    R_   R!   (   R.   t   level(    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyt   setBreak   s     	c         C   s&   |  j  s t  n  |  j  j |  d S(   s)   Set terminal status line: Request To SendN(   R%   R_   t   setRTS(   R.   Rt   (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyRv      s    	 	c         C   s&   |  j  s t  n  |  j  j |  d S(   s-   Set terminal status line: Data Terminal ReadyN(   R%   R_   t   setDTR(   R.   Rt   (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyRw      s    	 	c         C   s#   |  j  s t  n  |  j  j   d S(   s(   Read terminal status line: Clear To SendN(   R%   R_   t   isCTS(   R.   (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyt   getCTS   s    	 	c         C   s#   |  j  s t  n  |  j  j   d S(   s)   Read terminal status line: Data Set ReadyN(   R%   R_   t   isDSR(   R.   (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyt   getDSR   s    	 	c         C   s#   |  j  s t  n  |  j  j   d S(   s)   Read terminal status line: Ring IndicatorN(   R%   R_   t   isRI(   R.   (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyt   getRI   s    	 	c         C   s#   |  j  s t  n  |  j  j   d S(   s)   Read terminal status line: Carrier DetectN(   R%   R_   t   isCD(   R.   (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyt   getCD   s    	 	(   t   __name__t
   __module__t   __doc__R$   R'   R[   R^   Ra   Rd   Rk   Rn   Rp   Rq   Ru   Rv   Rw   Ry   R{   R}   R   (    (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyR   4   s$   		7	
								Nt   Serialc           B   s   e  Z RS(    (   R   R   (    (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyR      s   c           B   s   e  Z RS(    (   R   R   (    (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyR      s   t   __main__i    t   baudratei K  t   bytesizet   parityR?   Re   i   t   xonxofft   rtsctsi   t   hellos   %r
i   s   %s
(   t
   serialutilR	   R   R   R   t
   SerialBaseR   t   ioR   t   FileLikeR   t	   RawIOBaseR   R9   RG   R=   t   sRv   Rw   Rn   Rp   Rk   t   syst   stdioRd   Ra   (    (    (    s5   /usr/lib/python2.7/dist-packages/serial/serialjava.pyt   <module>
   s:   
					

