;ς
\΅a@c           @   sS  d  k  Z  d   Z e  i d d d d d d d  Z d	   Z e  i d
  Z d   Z e  i d d d  Z d   Z e  i d d d d d d d d  Z	 d   Z
 e  i d d d d  Z d   Z e  i d d d  d! d" d#  Z d$   Z e  i d% d& d'  Z d(   Z e  i d) d* d+ d, d-  Z d.   Z d/   Z d  S(0   Nc         C   s?   d } x  |  | d j o | d } q	 Wt d |  |  Sd  S(   Ni    s    i   s   0x(   s   is   strs   eval(   s   strs   i(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys   _hexstring2int   s
     s"   .*If#=(?P<interface_number>\s*\S*)s+   \s*Alt=(?P<alternate_setting_number>\s*\S*)s'   \s*#EPs=(?P<number_of_endpoints>\s*\S*)sK   \s*Cls=(?P<interface_class_number>[^(]*)\((?P<interface_class_name>[^)]*)\)s%   \s*Sub=(?P<interface_subclass>\s*\S*)s&   \s*Prot=(?P<interface_protocol>\s*\S*)s+   \s*Driver=(?P<interface_driver_name>\s*\S*)c         C   s¦   t  i |   i   } h  d t | d  <d t | d  <d t | d  <d t | d  | d f <d t | d  <d t | d  <d	 | d	 <Sd  S(
   Ns   interface_numbers   alternate_setting_numbers   number_of_endpointss   interface_classs   interface_class_numbers   interface_class_names   interface_subclasss   interface_protocols   interface_driver_name(   s&   _parse_interface_descriptor_line_regexs   searchs   lines	   groupdicts   m_dicts   ints   _hexstring2int(   s   lines   m_dict(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys    _parse_interface_descriptor_line   s    s   S:\s*(?P<key>\S*)=(?P<value>.*)c         C   s.   t  i |   i   } h  | d | d <Sd  S(   Ns   keys   value(   s#   _parse_string_descriptor_line_regexs   searchs   lines	   groupdicts   m_dict(   s   lines   m_dict(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys   _parse_string_descriptor_line$   s    s   .*Vendor=(?P<vendor_id>\s*\S*)s    \s*ProdID=(?P<product_id>\s*\S*)s@   \s*Rev=(?P<product_revision_a>[^.]*).(?P<product_revision_b>\S*)c         C   sf   t  i |   i   } h  d t | d  <d t | d  <d t | d  t | d  f <Sd  S(   Ns	   vendor_ids
   product_ids   product_revisions   product_revision_as   product_revision_b(   s   _parse_product_id_line_regexs   searchs   lines	   groupdicts   m_dicts   _hexstring2int(   s   lines   m_dict(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys   _parse_product_id_line-   s    s   .*Bus=(?P<bus_number>\s*\S*)s   \s*Lev=(?P<level>\s*\S*)s(   \s*Prnt=(?P<parent_device_number>\s*\S*)s*   \s*Port=(?P<parent_connection_port>\s*\S*)s    \s*Cnt=(?P<sibling_count>\s*\S*)s!   \s*Dev#=(?P<device_number>\s*\S*)s   \s*Spd=(?P<device_speed>\s*\S*)s    \s*MxCh=(?P<max_children>\s*\S*)c         C   s΅   t  i |   i   } h  d t | d  <d t | d  <d t | d  <d t | d  <d t | d  <d t | d  <d t | d  <d t | d  <Sd  S(	   Ns
   bus_numbers   levels   parent_device_numbers   parent_connection_ports   sibling_counts   device_numbers   device_speeds   max_children(   s   _parse_topology_line_regexs   searchs   lines	   groupdicts   m_dicts   ints   float(   s   lines   m_dict(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys   _parse_topology_line@   s    sH   .*Ad=(?P<endpoint_address_number>[^(]*)\((?P<endpoint_address_char>\S)\)sC   \s*Atr=(?P<attributes_number>[^(]*)\((?P<attributes_string>[^)]*)\)s,   \s*MxPS=(?P<endpoint_max_packet_size>\s*\S*)s   \s*Ivl=(?P<interval>\s*\S*)msc         C   s}   t  i |   i   } h  d t | d  | d f <d t | d  | d f <d t | d  <d t | d  <Sd  S(	   Ns   endpoint_addresss   endpoint_address_numbers   endpoint_address_chars
   attributess   attributes_numbers   attributes_strings   endpoint_max_packet_sizes   interval(   s   _parse_endpoint_line_regexs   searchs   lines	   groupdicts   m_dicts   int(   s   lines   m_dict(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys   _parse_endpoint_lineS   s    sH   .*Ver=(?P<device_usb_version_a>\s*\S*)\.(?P<device_usb_version_b>\s*\S*)sE   \s*Cls=(?P<device_class_number>[^(]*)\((?P<device_class_name>[^)]*)\)s"   \s*Sub=(?P<device_subclass>\s*\S*)s#   \s*Prot=(?P<device_protocol>\s*\S*)s4   \s*MxPS=(?P<default_endpoint_max_packet_size>\s*\S*)s&   \s*#Cfgs=(?P<number_of_configs>\s*\S*)c         C   s©   t  i |   i   } h  d t | d  t | d  f <d t | d  | d f <d t | d  <d t | d  <d	 t | d	  <d
 t | d
  <Sd  S(   Ns   device_usb_versions   device_usb_version_as   device_usb_version_bs   device_classs   device_class_numbers   device_class_names   device_subclasss   device_protocols    default_endpoint_max_packet_sizes   number_of_configs(   s#   _parse_device_descriptor_line_regexs   searchs   lines	   groupdicts   m_dicts   _hexstring2ints   int(   s   lines   m_dict(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys   _parse_device_descriptor_linef   s    sd   .*Alloc=(?P<allocation_a>[^/]*)/(?P<allocation_b>\s*\S*)\s*us\s*\((?P<allocation_percent>\s*\S*)%\),s(   \s*#Int=(?P<number_of_interupts>\s*\S*),s2   \s*#Iso=(?P<number_of_isochronous_requests>\s*\S*)c         C   ss   t  i |   i   } h  d t | d  t | d  t | d  f <d t | d  <d t | d  <Sd  S(   Ns
   allocations   allocation_as   allocation_bs   allocation_percents   number_of_interuptss   number_of_isochronous_requests(   s   _parse_bandwidth_line_regexs   searchs   lines	   groupdicts   m_dicts   ints   _hexstring2int(   s   lines   m_dict(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys   _parse_bandwidth_linex   s    s   C:(?P<active>.)s(   \s*#Ifs=(?P<number_of_interfaces>\s*\S*)s(   \s*Cfg#=(?P<configuration_number>\s*\S*)s   \s*Atr=(?P<attributes>\s*\S*)s    \s*MxPwr=(?P<max_power>\s*\S*)mAc         C   s|   t  i |   i   } h  d | d d j <d t | d  <d t | d  <d t | d  <d t | d  <Sd  S(   Ns   actives   *s   number_of_interfacess   configuration_numbers
   attributess	   max_power(   s   _parse_config_line_regexs   searchs   lines	   groupdicts   m_dicts   ints   _hexstring2int(   s   lines   m_dict(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys   _parse_config_line   s    c    	      C   sο  t  d  i   } g  } g  }  | d  } | d  } | | | d  } t | |  | | | d  } | | | | d  } t } x`t |  oR|   d j o@ t |    } | i h  d g  < g  | d <| i |  q |   d	 j o | i t |     q |   d
 j o | i t |     q |   d j o | i t |     q |   d j o | i t |     q |   d j o | d i | |   q |   d j o |   q t d |    q W| |  f Sd  S(   Ns   /proc/bus/usb/devicesc         C   s   |  d d Sd  S(   Ni    (   s   lines(   s   lines(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys	   line_type   s    c         C   s   |  i d  Sd  S(   Ni    (   s   liness   pop(   s   lines(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys   pop_line   s    c         C   s7   |   d j o t d |    n t |    } d  S(   Ns   Es!   Scaning endpoint, found '%s' line(   s	   line_types
   ValueErrors   _parse_endpoint_lines   pop_lines   endpoint(   s   liness	   line_types   pop_lines   endpoint(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys   scan_endpoint    s    c         C   s   |   d j o t d |    n t |    } g  | d <|  | d <| i |  x, t | d  D] } | d i |    qe W| Sd  S(   Ns   Is"   Scaning interface, found '%s' lines	   endpointss   devices   number_of_endpoints(   s	   line_types
   ValueErrors    _parse_interface_descriptor_lines   pop_lines	   interfaces   devices
   interfacess   appends   ranges   is   scan_endpoint(   s   devices   liness
   interfacess	   line_types   pop_lines   scan_endpoints   is	   interface(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys   scan_interface¦   s    

 c         C   ss   |   d j o t d |    n t |    } g  | d <x/ t | d  D] } | d i | |    qN Wd  S(   Ns   Cs   Scaning config, found '%s' lines
   interfacess   number_of_interfaces(
   s	   line_types
   ValueErrors   _parse_config_lines   pop_lines   configs   ranges   is   appends   scan_interfaces   device(   s   devices   liness	   line_types   pop_lines   scan_interfaces   is   config(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys   scan_config΅   s    
 s   Ts   configss   Bs   Ds   Ps   Ss   Cs   Is'   Expecting Topology line 'T', found '%s'(   s   opens	   readliness   liness   devicess
   interfacess	   line_types   pop_lines   scan_endpoints   Nones   scan_interfaces   scan_configs   devices   lens   _parse_topology_lines   updates   appends   _parse_bandwidth_lines   _parse_device_descriptor_lines   _parse_product_id_lines   _parse_string_descriptor_lines
   ValueError(	   s
   interfacess   liness   scan_interfaces   pop_lines   scan_configs   scan_endpoints	   line_types   devicess   device(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys   scan_usb_devices   s<     
(   s   res   _hexstring2ints   compiles&   _parse_interface_descriptor_line_regexs    _parse_interface_descriptor_lines#   _parse_string_descriptor_line_regexs   _parse_string_descriptor_lines   _parse_product_id_line_regexs   _parse_product_id_lines   _parse_topology_line_regexs   _parse_topology_lines   _parse_endpoint_line_regexs   _parse_endpoint_lines#   _parse_device_descriptor_line_regexs   _parse_device_descriptor_lines   _parse_bandwidth_line_regexs   _parse_bandwidth_lines   _parse_config_line_regexs   _parse_config_lines   scan_usb_devices(   s   _parse_bandwidth_line_regexs   _parse_product_id_line_regexs#   _parse_device_descriptor_line_regexs   _parse_string_descriptor_lines   _parse_device_descriptor_lines   _parse_config_line_regexs   _parse_topology_lines   scan_usb_devicess    _parse_interface_descriptor_lines#   _parse_string_descriptor_line_regexs   _parse_endpoint_line_regexs   _parse_config_lines   res   _hexstring2ints   _parse_topology_line_regexs   _parse_bandwidth_lines   _parse_endpoint_lines   _parse_product_id_lines&   _parse_interface_descriptor_line_regex(    (    s2   /data/usr-share/printconf/util/scan_usb_devices.pys   ?   s$   		'					+
		#			
