HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/lib/python3/dist-packages/serial/urlhandler/__pycache__/protocol_socket.cpython-38.pyc
U

=Y27�@sddlZddlZddlZddlZddlZzddlZWn ek
rTddlmZYnXddl	m
Z
mZmZm
Z
mZmZejejejejd�ZdZGdd�de
�Zedk�r
ddlZed�Zej�d	�e��ej�d
�e�d�e��ej�d�e�d���e��dS)
�N)�
SerialBase�SerialException�to_bytes�portNotOpenError�writeTimeoutError�Timeout)�debug�infoZwarning�error�c@s�eZdZdZdZdd�Zdd�Zdd�Zd	d
�Ze	dd��Z
d*dd�Zdd�Zdd�Z
dd�Zd+dd�Zdd�Zdd�Zdd�Ze	dd ��Ze	d!d"��Ze	d#d$��Ze	d%d&��Zd'd(�Zd)S),�Serialz-Serial port implementation for plain sockets.)�2�K�n����i,iXi�ii`	i�i�%iKi�i�i�c
Cs�d|_|jdkrtd��|jr&td��ztj|�|j�td�|_	Wn:t
k
r|}zd|_	td�|j|���W5d}~XYnX|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)�loggerZ_portr�is_open�socketZcreate_connection�from_urlZportstr�POLL_TIMEOUT�_socket�	Exception�formatZsetblocking�_reconfigure_portZ_dsrdtr�_update_dtr_stateZ_rtscts�_update_rts_state�reset_input_buffer�reset_output_buffer)�self�msg�r#�C/usr/lib/python3/dist-packages/serial/urlhandler/protocol_socket.py�open1s&
$zSerial.opencCs(|jdkrtd��|jr$|j�d�dS)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)rrrr	�r!r#r#r$rOs
zSerial._reconfigure_portcCsP|jrL|jr<z|j�tj�|j��WnYnXd|_d|_t�d�dS)z
Close portNFg333333�?)rrZshutdownrZ	SHUT_RDWR�close�time�sleepr&r#r#r$r'YszSerial.closec
Cs�t�|�}|jdkr$td�|j���z�t�|jd���D]T\}}|dkr~t�	�t�
d�|_|j�t
|d�|j�d�q8td�|���q8d|jkr�d	ks�ntd
��Wn0tk
r�}ztd�|���W5d}~XYnX|j|jfS)
z(extract host and port from an URL stringrzexpected a string in the form "socket://<host>:<port>[?logging={debug|info|warning|error}]": not starting with socket:// ({!r})T�loggingzpySerial.socketrzenabled loggingzunknown option: {!r}izport not in range 0...65535z_expected a string in the form "socket://<host>:<port>[?logging={debug|info|warning|error}]": {}N)�urlparseZurlsplitZschemerrZparse_qsZquery�itemsr*ZbasicConfigZ	getLoggerrZsetLevel�
LOGGER_LEVELSr�
ValueErrorZportZhostname)r!Zurl�partsZoption�values�er#r#r$rhs0

����zSerial.from_urlcCs,|js
t�t�|jgggd�\}}}t|�S)z9Return the number of bytes currently in the input buffer.r)rr�selectr�len)r!ZlrZlwZlxr#r#r$�
in_waiting�szSerial.in_waiting�c
Cs>|js
t�t�}t|j�}t|�|k�r6zVt�|jggg|���\}}}|sRW�q6|j�	|t|��}|srt
d��|�|�Wn�tk
r�}z0|j
t
jt
jt
jt
jt
jfkr�t
d�|���W5d}~XYn\tjtjfk
�r&}z4|dt
jt
jt
jt
jt
jfk�rt
d�|���W5d}~XYnX|��r�q6qt|�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 disconnected�read failed: {}Nr)rr�	bytearrayrZ_timeoutr3r2r�	time_left�recvr�extend�OSError�errno�EAGAIN�EALREADY�EWOULDBLOCK�EINPROGRESS�EINTRrr
r�expired�bytes)r!�size�readr�ready�_Zbufr1r#r#r$rE�s,
" zSerial.readc

Cs�|js
t�t|�}t|�}}t|j�}|dk�r�z�|j�|�}|jrL|WS|j	s�|�
�r^t�t�g|jgg|�
��\}}}|s�t�n6|�
�dks�t�t�g|jggd�\}}}|s�td��||d�}||8}Wn�tk
r��Yn�tk
�r8}	z2|	jtjtjtjtjtjfk�r(td�|	���W5d}	~	XYnVtjk
�r�}	z4|	dtjtjtjtjtjfk�r|td�|	���W5d}	~	XYnX|js(|�
�r(t�q(|t|�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.
        rNzwrite failed (select)zwrite failed: {})rrrr3rZ_write_timeoutr�sendZis_non_blockingZis_infiniterBrr2r8�AssertionErrorrr;r<r=r>r?r@rArr
)
r!�data�dZtx_lenZlengthr�nrGrFr1r#r#r$�write�sB

 " zSerial.writec
Cs�|js
t�d}|r�t�|jgggd�\}}}z|j�d�Wqtk
r�}z0|jtjtjtj	tj
tjfkrztd�
|���W5d}~XYqtjtjfk
r�}z2|dtjtjtj	tj
tjfkr�td�
|���W5d}~XYqXqdS)z9Clear input buffer, discarding all that is in the buffer.Trir6N)rrr2rr9r;r<r=r>r?r@rArrr
r)r!rFrGr1r#r#r$r�s zSerial.reset_input_buffercCs |js
t�|jr|j�d�dS)zs        Clear output buffer, aborting the current output and
        discarding all that is in the buffer.
        zignored reset_output_bufferN�rrrr	r&r#r#r$r szSerial.reset_output_buffer��?cCs&|js
t�|jr"|j�d�|��dS)za        Send break condition. Timed, returns to idle state after given
        duration.
        zignored send_break({!r})N)rrrr	r)r!Zdurationr#r#r$�
send_breakszSerial.send_breakcCs|jr|j�d�|j��dS)zJSet break: Controls TXD. When active, to transmitting is
        possible.z!ignored _update_break_state({!r})N)rr	rZ_break_stater&r#r#r$�_update_break_stateszSerial._update_break_statecCs|jr|j�d�|j��dS)z)Set terminal status line: Request To Sendzignored _update_rts_state({!r})N)rr	rZ
_rts_stater&r#r#r$r"szSerial._update_rts_statecCs|jr|j�d�|j��dS)z-Set terminal status line: Data Terminal Readyzignored _update_dtr_state({!r})N)rr	rZ
_dtr_stater&r#r#r$r'szSerial._update_dtr_statecCs |js
t�|jr|j�d�dS)z(Read terminal status line: Clear To Sendzreturning dummy for ctsTrNr&r#r#r$�cts,s
z
Serial.ctscCs |js
t�|jr|j�d�dS)z)Read terminal status line: Data Set Readyzreturning dummy for dsrTrNr&r#r#r$�dsr5s
z
Serial.dsrcCs |js
t�|jr|j�d�dS)z)Read terminal status line: Ring Indicatorzreturning dummy for riFrNr&r#r#r$�ri>s
z	Serial.ricCs |js
t�|jr|j�d�dS)z)Read terminal status line: Carrier Detectzreturning dummy for cd)TrNr&r#r#r$�cdGs
z	Serial.cdcCs
|j��S)z@Get the file handle of the underlying socket for use with select)r�filenor&r#r#r$rVSsz
Serial.filenoN)r5)rO)�__name__�
__module__�__qualname__�__doc__Z	BAUDRATESr%rr'r�propertyr4rErMrr rPrQrrrRrSrTrUrVr#r#r#r$r+s2


)5






r�__main__zsocket://localhost:7000z{}
z	write...
shello
z	read: {}
) r<r*r2rr(r+�ImportErrorZurllib.parse�parseZserial.serialutilrrrrrr�DEBUG�INFOZWARNINGZERRORr-rrrW�sys�s�stdoutrMr�flushrEr'r#r#r#r$�<module>s6 �1