a à$YKã@slddlZddlZddlmZGdd„dejƒZd dd„ZedkrheeƒƒD]\Z Z Z e d   e e e ¡ƒqJdS) éN)Úlist_ports_commoncs(eZdZdZ‡fdd„Zdd„Z‡ZS)ÚSysFSz-Wrapper for easy sysfs access and device infocs@tt|ƒ |¡|dur6tj |¡r6tj |¡}d}nd}tj |¡|_d|_ tj  d  |j¡¡rœtj d  |j¡¡|_ tj tj tj  |j d¡¡¡|_n d|_ d|_|jdkrÄtj |j ¡|_n|jdkrØ|j |_nd|_|jdurÂtj |j¡|_ zt| |j d¡ƒ}Wnty(d}Yn0t| |j d ¡d ƒ|_t| |j d ¡d ƒ|_| |j d ¡|_|dkr‚tj |j¡|_ntj |j ¡|_| |j d ¡|_| |j d¡|_| |j d¡|_|jdvrØ| ¡nJ|jdkrþ|j|_| |j d¡|_n$|jdkr"|j|_tj |j ¡|_|r<|jd  |¡7_dS)NTFz/sys/class/tty/{}/deviceÚ subsystemú usb-serialÚusbZbNumInterfaceséZidVendoréZ idProductÚserialÚ manufacturerÚproductÚ interface)rrZpnpÚidZambaz LINK={})ÚsuperrÚ__init__ÚosÚpathÚislinkÚrealpathÚbasenameÚnameZusb_device_pathÚexistsÚformatZ device_pathÚjoinrÚdirnameZusb_interface_pathÚintÚ read_lineÚ ValueErrorZvidÚpidZ serial_numberÚlocationr r r Zapply_usb_infoÚ descriptionÚhwid)ÚselfZdeviceZis_linkZnum_if©Ú __class__©úA/usr/lib/python3.9/site-packages/serial/tools/list_ports_linux.pyrsT $          zSysFS.__init__cGs\zBttjj|Žƒ}| ¡ ¡}Wdƒn1s40Y|WStyVYdS0dS)z³ Helper function to read a single line from a file. One or more parameters are allowed, they are joined with os.path.join. Returns None on errors.. N)ÚopenrrrÚreadlineÚstripÚIOError)r!ÚargsÚfÚliner$r$r%rLs * zSysFS.read_line)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrÚ __classcell__r$r$r"r%rs 9rFcCs†t d¡}| t d¡¡| t d¡¡| t d¡¡| t d¡¡| t d¡¡|rn| t |¡¡dd„d d„|DƒDƒS) Nz /dev/ttyS*z /dev/ttyUSB*z /dev/ttyACM*z /dev/ttyAMA*z /dev/rfcomm*z /dev/ttyAP*cSsg|]}|jdkr|‘qS)Úplatform)r)Ú.0Úinfor$r$r%Ú cs þzcomports..cSsg|] }t|ƒ‘qSr$)r)r3Údr$r$r%r5dó)ÚglobÚextendrZ list_links)Z include_linksZdevicesr$r$r%ÚcomportsZs  ÿr:Ú__main__z {}: {} [{}])F)r8rZ serial.toolsrZ ListPortInforr:r-ÚsortedÚportZdescr Úprintrr$r$r$r%Ú s J