
    g_                         d dl mZ d dlZd dlZd dlmZ  G d dej                        Zd	dZe	dk(  r* e
 e             D ]  Z edj                  e              yy)
    )absolute_importN)list_ports_commonc                   (     e Zd ZdZ fdZd Z xZS )SysFSz-Wrapper for easy sysfs access and device infoc                 t   t         t        |   |       |At        j                  j                  |      r"t        j                  j                  |      }d}nd}d | _        t        j                  j                  dj                  | j                              rt        j                  j                  dj                  | j                              | _        t        j                  j                  t        j                  j                  t        j                  j                  | j                  d                  | _        nd | _        d | _        | j                  dk(  r/t        j                  j                  | j                        | _        n(| j                  dk(  r| j                  | _        nd | _        | j                   t        j                  j                  | j                         | _        	 t#        | j%                  | j                  d            }t#        | j%                  | j                  d	      d
      | _        t#        | j%                  | j                  d      d
      | _        | j%                  | j                  d      | _        |dkD  r/t        j                  j                  | j                         | _        n.t        j                  j                  | j                        | _        | j%                  | j                  d      | _        | j%                  | j                  d      | _        | j%                  | j                   d      | _        | j                  dv r| j7                          n| j                  dk(  r3| j                  | _        | j%                  | j                  d      | _        nN| j                  dk(  r?| j                  | _        t        j                  j                  | j                        | _        |r%| xj:                  dj                  |      z  c_        y y # t&        $ r d}Y !w xY w)NTFz/sys/class/tty/{}/device	subsystem
usb-serialusbbNumInterfaces   idVendor   	idProductserialmanufacturerproduct	interface)r
   r	   pnpidambaz LINK={})superr   __init__ospathislinkrealpathusb_device_pathexistsformatnamedevice_pathbasenamejoinr   dirnameusb_interface_pathint	read_line
ValueErrorvidpidserial_numberlocationr   r   r   apply_usb_infodescriptionhwid)selfdeviceis_linknum_if	__class__s       ?/usr/lib/python3/dist-packages/serial/tools/list_ports_linux.pyr   zSysFS.__init__   s   eT#F+"''.."8WW%%f-FGG#77>>4;;DIIFG!ww//0J0Q0QRVR[R[0\]DWW--bgg.>.>rww||DL\L\^i?j.klDN#D!DN>>\)&(ggood6F6F&GD#^^u$&*&6&6D#&*D#"".#%77??43J3J#KD T^^D,@,@BRST 4>>$*>*>
KRPDH4>>$*>*>LbQDH!%0D0Dh!ODz " 0 01H1H I " 0 01E1E F $t/C/C^ TD>>$*>*>	JDL!^^D,C,C[QDN>>22!^^u$#yyDt'7'7>DI^^v%#yyD(()9)9:DIII**622I 3  s   0%P( (P76P7c                     	 t        t        j                  j                  |       5 }|j	                         j                         }ddd       |S # 1 sw Y   S xY w# t        $ r Y yw xY w)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)openr   r   r#   readlinestripIOError)r0   argsflines       r5   r'   zSysFS.read_lineM   s]    	bggllD)* ,azz|))+,K,K 		s.   %A A	A AA A 	A)(A))__name__
__module____qualname____doc__r   r'   __classcell__)r4   s   @r5   r   r      s    763p    r   c                    t        j                   d      }|j                  t        j                   d             |j                  t        j                   d             |j                  t        j                   d             |j                  t        j                   d             |j                  t        j                   d             |j                  t        j                   d             | r$|j                  t        j                  |             |D cg c]  }t	        |       c}D cg c]  }|j
                  dk7  r| c}S c c}w c c}w )	Nz
/dev/ttyS*z/dev/ttyUSB*z/dev/ttyXRUSB*z/dev/ttyACM*z/dev/ttyAMA*z/dev/rfcomm*z/dev/ttyAP*platform)globextendr   
list_linksr   r   )include_linksdevicesdinfos       r5   comportsrM   [   s    ii%GNN499^,-NN499-./NN499^,-NN499^,-NN499^,-NN499]+,(33G<=+23aq3-~~+  - -3-s   E
/E__main__z{0}: {0.subsystem})F)
__future__r   rF   r   serial.toolsr   ListPortInfor   rM   r>   sortedrL   printr    rC   r5   <module>rU      sg    '  	 *F** FR-  zxz" 1"))$/01 rC   