1_#ddlmZddlZddlZddlZddlmZ ddlZdZ dZ Gdde ZGdd e ZGd d ej Zed k(redZd e_eeyy#e$r ddl m ZY\wxYw))absolute_importN)to_bytesc#BKd}tj|D]Z}djt|d|cxkrdkrnn|j dndf|dz }|dk(rd O|d k\sUd d}\|dkDr"|d kr|dz }|dk(rd d |d krd y y w)z yield tuples of hex and ASCII display in multiples of 16. Includes a space after 8 bytes and (None, None) after 16 bytes and at the end. rz{:02X}  ascii.) )NN)z r N)serial iterbytesformatorddecode)datanbs @/usr/lib/python3/dist-packages/serial/urlhandler/protocol_spy.pysixteenr%s A   d #A'da>Q'>Q'):WZ[[ Q 6O "W A 1u"f FAAv  "f   sA,B/)BBc#Kg}g}d}t|D]n\}}|E|djdj|dj|gf|dd=|dd=|dz }M|j||j|pyw)z yield lines with hexdump of datarNr r r)rjoinappend)rvaluesroffsethas rhexdumpr <s F E F 1 9388RWWV_bggen$EFG Gq a dNF MM!  LLOsBBc(eZdZdZdZdZdZdZy) FormatRawz&Forward only RX and TX data to output.c<||_||_d|_d|_y)N)outputcolorrx_colortx_colorselfr&r's r__init__zFormatRaw.__init__Os  " " c|jr%|jj|j|jj||jj y)zshow received dataN)r'r&writer(flushr+rs rrxz FormatRaw.rxUA :: KK  dmm , $ r-c|jr%|jj|j|jj||jj y)zshow transmitted dataN)r'r&r/r)r0r1s rtxz FormatRaw.tx\r3r-cy)z(do not) show control callsNr+namevalues rcontrolzFormatRaw.controlcs r-N)__name__ __module__ __qualname____doc__r,r2r5r;r7r-rr"r"Ls0#  r-r"c0eZdZdZdZddZdZdZdZy) FormatHexdumpax Create a hex dump of RX ad TX data, show when control lines are read or written. output example:: 000000.000 Q-RX flushInput 000002.469 RTS inactive 000002.773 RTS active 000003.001 TX 48 45 4C 4C 4F HELLO 000003.102 RX 48 45 4C 4C 4F HELLO c|tj|_||_||_d|_d|_d|_y)Nr$r%z)time start_timer&r'r(r) control_colorr*s rr,zFormatHexdump.__init__ws3))+  " " 'r-c|jjdj|||||jjy)Nz{:010.3f} {:4} {}{} )r&r/rr0)r+ timestamplabelr:value2s r write_linezFormatHexdump.write_lines7 188E5RXYZ r-cz|jr%|jj|j|rVt |D]G\}}|j t j |jz ddj||Iy|j t j |jz ddy)zshow received data as hex dumpRX{:04X} zN) r'r&r/r(r rJrCrDrr+rrrows rr2zFormatHexdump.rxs :: KK  dmm , &t} e  doo =tZEVEVW]E^`cd e OODIIK$//94 Kr-c|jr%|jj|jt |D]G\}}|j t j |jz ddj||Iy)z!show transmitted data as hex dumpTXrMN) r'r&r/r)r rJrCrDrrNs rr5zFormatHexdump.txsf :: KK  dmm ,"4= aKFC OODIIK$//94ARARSYAZ\_ ` ar-c|jr%|jj|j|j t j |j z ||y)zshow control callsN)r'r&r/rErJrCrDr8s rr;zFormatHexdump.controls@ :: KK  d00 1  doo5tUCr-N)r ) r<r=r>r?r,rJr2r5r;r7r-rrArAhs# (LaDr-rAcLeZdZdZfdZej jjdZdZ fdZ dfd Z e ej drfdZ e ej d rfd Zefd Zfd Zfd ZfdZdfd Zej j*jdZej j,jdZej j.jdZej j0j2fdZej j4j2fdZej j6j2fdZej j8j2fdZxZS)Serialzc Inherit the native Serial port implementation and wrap all the methods and attributes. cHtt| |i|d|_d|_y)NF)superrTr, formattershow_all)r+argskwargs __class__s rr,zSerial.__init__s% fd$d5f5 r-c||:tjjj||j |yyN)rrTport__set__from_url)r+r:s rr^z Serial.ports0   MM   & &tT]]5-A B r-ctj|}|jdk7r.tjdj |jt }d}tj} tj|jdjD]T\}}|dk(rt|dd}|dk(rd}#|d k(rt}/|d k(rd|_ : &$ , .r-ctt| }|jr+|jj ddj ||S)Nr~zin_waiting -> {})rVrT in_waitingrXrWr;r)r+rr[s rrzSerial.in_waitings; &$ * == NN " "6+=+D+DQ+G Hr-cb|jjddtt|y)Nrr0)rWr;rVrTr0rs rr0z Serial.flushs$ vw/ fd!#r-cb|jjddtt|y)Nr~reset_input_buffer)rWr;rVrTrrs rrzSerial.reset_input_buffers% v';< fd.0r-cb|jjddtt|y)Nrreset_output_buffer)rWr;rVrTrrs rrzSerial.reset_output_buffers% v'<= fd/1r-c|jjddj|tt||y)NBRKzsend_break {}s)rWr;rrVrT send_break)r+durationr[s rrzSerial.send_breaks2 u&6&=&=h&GH fd&x0r-c|jjd|rdndtjjj ||y)Nractiveinactive)rWr;rrTbreak_conditionr_r+levels rrzSerial.break_conditions4 u%hZH %%--dE:r-c|jjd|rdndtjjj ||y)NRTSrr)rWr;rrTrtsr_rs rrz Serial.rts4 u%hZH !!$.r-c|jjd|rdndtjjj ||y)NDTRrr)rWr;rrTdtrr_rs rrz Serial.dtrrr-cptt| }|jj d|rd|Sd|S)NCTSrr)rVrTctsrWr;r+rr[s rrz Serial.cts8fd' u%hH >HH r-cptt| }|jj d|rd|Sd|S)NDSRrr)rVrTdsrrWr;rs rrz Serial.dsr rr-cptt| }|jj d|rd|Sd|S)NRIrr)rVrTrirWr;rs rrz Serial.ri8fd& tXG =GG r-cptt| }|jj d|rd|Sd|S)NCDrr)rVrTcdrWr;rs rrz Serial.cdrr-)r )g?)r<r=r>r?r,rrTr^setterr`r/rzhasattrr|rpropertyrr0rrrrrrrgetterrrr __classcell__)r[s@rrTrTs   ]]CC3>-  v}}m, .v}}n- / $121 ]]""));*; ]]// ]]// ]]  ]]  ]]  ]]r-rT__main__zspy:///dev/ttyS0) __future__rrkrCrserial.serialutilrrg ImportError urllib.parseparserr objectr"rArTr<serr^printr7r-rrs.' '$ .    80DF0DfAV]]AH z ,C!CH #J}$#$sA-- A;:A;