Ȧ^_7ddlmZddlZddlZddlZddlZddlZ ddlZn#e$r ddl m ZYnwxYwddl m Z m Z mZmZmZmZejejejejdZdZGdde ZedkrddlZed Zejd eejd ed eejd e de!dSdS))absolute_importN) SerialBaseSerialExceptionto_bytesPortNotOpenErrorSerialTimeoutExceptionTimeout)debuginfowarningerrorceZdZdZdZdZdZdZdZe dZ dd Z d Z d Z d ZddZdZdZdZe dZe dZe dZe dZdZdS)Serialz-Serial port implementation for plain sockets.)2Kni,iXiii` ii%iKiiicd|_|jtd|jrtd t j||jt|_ nA#t$r4}d|_ td |j|d}~wwxYw|j d| d|_|js||js|||dS)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.zPort is already open.)timeoutzCould not open port {}: {}FT)logger_portris_opensocketcreate_connectionfrom_urlportstr POLL_TIMEOUT_socket Exceptionformat setblocking_reconfigure_port_dsrdtr_update_dtr_state_rtscts_update_rts_statereset_input_bufferreset_output_buffer)selfmsgs C/usr/lib/python3/dist-packages/serial/urlhandler/protocol_socket.pyopenz Serial.open3sJ  : !"RSS S < ;!"9:: : Z!3DMM$,4O4OYefffDLL Z Z ZDL!">"E"EdlTW"X"XYY Y Z   '''     | %  " " $ $ $| %  " " $ $ $ !!!   """""s8A.. B,8/B''B,cx|jtd|jr|jddSdS)zz Set communication parameters on opened port. For the socket:// protocol all settings are ignored! NzCan only operate on open portsz!ignored port configuration change)r!rrr r,s r.r%zSerial._reconfigure_portQsO < !"BCC C ; B K  @ A A A A A B Bc|jrq|jrM |jtj|jn#YnxYwd|_d|_t jddSdS)z Close portNFg333333?)rr!shutdownr SHUT_RDWRclosetimesleepr1s r.r6z Serial.close[s < | $L))&*:;;;L&&((((D#  DL JsOOOOO  s =AActj|}|jdkr'td|j tj|jdD]\}}|dkrrtj tj d|_ |j t|d|j d}td|d|jcxkrd ksntd n4#t$r'}td |d }~wwxYw|j|jfS) z(extract host and port from an URL stringrzexpected a string in the form "socket://:[?logging={debug|info|warning|error}]": not starting with socket:// ({!r})TloggingzpySerial.socketrzenabled loggingzunknown option: {!r}izport not in range 0...65535z_expected a string in the form "socket://:[?logging={debug|info|warning|error}]": {}N)urlparseurlsplitschemerr#parse_qsqueryitemsr: basicConfig getLoggerrsetLevel LOGGER_LEVELSr ValueErrorporthostname)r,urlpartsoptionvalueses r.rzSerial.from_urljs!#&& <8 # #!55;VEL5I5IKK K _"*"3EK"F"F"L"L"N"N L LY&&')))")"34E"F"FDKK((vay)ABBBK%%&78888$%;%B%B6%J%JKKK ****U**** !>???+ _ _ _!TTZTZ[\T]T]__ _ _  ++sC.D77 E("E##E(c|jsttj|jgggd\}}}t |S)z9Return the number of bytes currently in the input buffer.r)rrselectr!len)r,lrlwlxs r. in_waitingzSerial.in_waitingsF| %"$$ $]DL>2r1== B2wwr2c|jstt}t|j}t ||kr t j|jggg|\}}}|sny|j |t |z }|std| |n#t$rl}|j tjtjtjtjtjfvr"td|Yd}~nd}~wt jt*jf$rm}|dtjtjtjtjtjfvr"td|Yd}~nd}~wwxYw|rnt ||kt/|S)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. zsocket disconnectedread failed: {}Nr)rr bytearrayr _timeoutrOrNr! time_leftrecvrextendOSErrorerrnoEAGAINEALREADY EWOULDBLOCK EINPROGRESSEINTRr#r rexpiredbytes)r,sizereadrready_bufrLs r.rfz Serial.reads | %"$$ ${{$-(($ii$ G$mT\NBGDUDUDWDWXX q! l''s4yy(899A)*?@@@ C     G G G75<ARTYTeglgr"sss)*;*B*B1*E*EFFFtssssL&,/ G G GQ4 ene>OQVQbdidoppp)*;*B*B1*E*EFFFqpppp  G    9$ii$:T{{s- 5CAC GA"EG$A#G  Gc|jstt|}t|x}}t |j}|dkr |j|}|jr|S|j sh| rtdtj g|jgg| \}}}|stdnH| Jtj g|jggd\}}}|std||d}||z}n#t$rt$rl} | jt jt jt jt jt jfvr"td| Yd} ~ nd} ~ wtj$rm} | dt jt jt jt jt jfvr"td| Yd} ~ nd} ~ wwxYw|js#| rtd|dk|t|z S)z Output the given byte string over the serial port. Can block if the connection is blocked. May raise SerialException if the connection is closed. rz Write timeoutNzwrite failed (select)zwrite failed: {})rrrrOr _write_timeoutr!sendis_non_blocking is_infinitercrrNrYrr\r]r^r_r`rarbr#r ) r,datadtx_lenlengthrnrhrgrLs r.writez Serial.writes | %"$$ $ TNNa&& $-..qjj# HL%%a((*GH , G((F4_EEE"(-T\NBHYHYH[H["\"\KAua F4_EEEF#,,..666"(-T\NB"M"MKAua G-.EFFFabbE! "    H H H75<ARTYTeglgr"sss)*<*C*CA*F*FGGGtssss< H H HQ4 ene>OQVQbdidoppp)*<*C*CA*F*FGGGqpppp  H * >w/@/@ >,_===MqjjNAs-"D<5CD<<H6A"F77H6 A#H11H6c|jstd}|rCtj|jgggd\}}} |r|jd}n#t $rl}|jt jt jt j t j t j fvr"td |Yd}~nd}~wtjtjf$rm}|dt jt jt j t j t j fvr"td |Yd}~nd}~wwxYw|AdSdS)z9Clear input buffer, discarding all that is in the buffer.TrirVN)rrrNr!rZr\r]r^r_r`rarbrr#r r)r,rgrhrLs r.r*zSerial.reset_input_buffers| %"$$ $ G -BBBKE1a G4 L--d33E G G G75<ARTYTeglgr"sss)*;*B*B1*E*EFFFtssssL&,/ G G GQ4 ene>OQVQbdidoppp)*;*B*B1*E*EFFFqpppp  G G G G G Gs%A E$A"C  E)A#EEcv|jst|jr|jddSdS)zs Clear output buffer, aborting the current output and discarding all that is in the buffer. zignored reset_output_bufferNrrrr r1s r.r+zSerial.reset_output_buffer sK | %"$$ $ ; < K  : ; ; ; ; ; < >xHH I I I I I J Jr2c||jr4|jd|jdSdS)zJSet break: Controls TXD. When active, to transmitting is possible.z!ignored _update_break_state({!r})N)rr r# _break_stater1s r._update_break_statezSerial._update_break_statesI ; \ K  @GGHYZZ [ [ [ [ [ \ \r2c||jr4|jd|jdSdS)z)Set terminal status line: Request To Sendzignored _update_rts_state({!r})N)rr r# _rts_stater1s r.r)zSerial._update_rts_state%F ; X K  >EEdoVV W W W W W X Xr2c||jr4|jd|jdSdS)z-Set terminal status line: Data Terminal Readyzignored _update_dtr_state({!r})N)rr r# _dtr_stater1s r.r'zSerial._update_dtr_state*rr2cr|jst|jr|jddS)z(Read terminal status line: Clear To Sendzreturning dummy for ctsTrwr1s r.ctsz Serial.cts/@| %"$$ $ ; 8 K  6 7 7 7tr2cr|jst|jr|jddS)z)Read terminal status line: Data Set Readyzreturning dummy for dsrTrwr1s r.dsrz Serial.dsr8rr2cr|jst|jr|jddS)z)Read terminal status line: Ring Indicatorzreturning dummy for riFrwr1s r.riz Serial.riAs@| %"$$ $ ; 7 K  5 6 6 6ur2cr|jst|jr|jddS)z)Read terminal status line: Carrier Detectzreturning dummy for cd)Trwr1s r.cdz Serial.cdJrr2c4|jS)z@Get the file handle of the underlying socket for use with select)r!filenor1s r.rz Serial.filenoVs|""$$$r2N)rT)rx)__name__ __module__ __qualname____doc__ BAUDRATESr/r%r6rpropertyrSrfrtr*r+r{r~r)r'rrrrrr2r.rr-s774I###<BBB   ,,,:X''''R333jGGG2<<<JJJJ\\\ XXX XXX XXXX%%%%%r2r__main__zsocket://localhost:7000z{} z write... shello z read: {} )" __future__rr]r:rNrr7r; ImportError urllib.parseparseserial.serialutilrrrrrr DEBUGINFOWARNINGERRORrDr rrsyssstdoutrtr#flushrfr6rr2r.rs&'&&&&&  $OOOO$$$########$6666666666666666 ] L ]   k%k%k%k%k%Zk%k%k%`  zJJJ())AJV]]1%%&&&J\"""GGJGGIIIJ\((33444GGIIIIIs ! //