3 M]W @snddlZddlZddlmZGdddejZddZedkrjx*eeD]\Z Z Z e dj e e e qJWdS) N)list_ports_commoncs(eZdZdZfddZddZZS)SysFSz-Wrapper for easy sysfs access and device infocstt|j|tjj||_d|_tjjdj |jrrtjj dj |j|_ tjjtjj tjj |j d|_ n d|_ d|_ |j dkrtjjtjj|j |_n"|j dkrtjj|j |_nd|_|jdk rLt|j|jdd|_t|j|jdd|_|j|jd|_tjj|j|_|j|jd |_|j|jd |_|j|j d |_|j dkrb|jnJ|j d kr|j|_|j|j d |_n$|j dkr|j|_tjj|j |_dS)Nz/sys/class/tty/{}/device subsystem usb-serialusbZidVendorZ idProductserial manufacturerproduct interfaceZpnpidZamba)rr)superr__init__ospathbasenamenameZusb_device_pathexistsformatrealpathZ device_pathjoinrdirnameint read_lineZvidpidZ serial_numberlocationr r r Zapply_usb_info descriptionhwid)selfZdevice) __class__&/usr/lib/python3.6/list_ports_linux.pyrs:$       zSysFS.__init__cGsFy,ttjj|}|jj}WdQRX|Stk r@dSXdS)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)openrrrreadlinestripIOError)rargsfliner r r!r8s zSysFS.read_line)__name__ __module__ __qualname____doc__rr __classcell__r r )rr!rs %rcCsbtjd}|jtjd|jtjd|jtjd|jtjddddd|DDS) Nz /dev/ttyS*z /dev/ttyUSB*z /dev/ttyACM*z /dev/ttyAMA*z /dev/rfcomm*cSsg|]}|jdkr|qS)platform)r).0infor r r! Lszcomports..cSsg|] }t|qSr )r)r/dr r r!r1Ms)globextend)Zdevicesr r r!comportsFs r5__main__z {}: {} [{}])r3rZ serial.toolsrZ ListPortInforr5r)sortedZportZdescrprintrr r r r! s 6