ó
æ”\c           @   st   d  d l  m Z d  d l  m Z d d l Z d d l m Z d d l Z e j j	 ƒ  Z
 d e j f d „  ƒ  YZ d S(   i   (   t   base(   t
   exceptionsiÿÿÿÿN(   t   commandst   EeePCSHEPluginc           B   sS   e  Z d  Z d „  Z e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(   sh   
	Plugin for tuning FSB (front side bus) speed on Asus EEE PCs with SHE (Super Hybrid Engine) support.
	c         O   sz   t  ƒ  |  _ d |  _ t j j |  j ƒ s6 d |  _ n  t j j |  j ƒ s] t j d ƒ ‚ n  t t	 |  ƒ j
 | | Ž  d  S(   Ns!   /sys/devices/platform/eeepc/cpufvs%   /sys/devices/platform/eeepc-wmi/cpufvs)   Plugin is not supported on your hardware.(   R   t   _cmdt   _control_filet   ost   patht   isfileR   t   NotSupportedPluginExceptiont   superR   t   __init__(   t   selft   argst   kwargs(    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_eeepc_she.pyR      s    	c         C   s    i d d 6d d 6d d 6d d 6S(	   Ng333333ã?t   load_threshold_normalgš™™™™™Ù?t   load_threshold_powersavei   t   she_powersavei   t
   she_normal(    (   R   (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_eeepc_she.pyt   _get_config_options   s
    c         C   s7   t  | _ t | _ d  | _ |  j j d d  ƒ | _ d  S(   Nt   load(	   t   Falset   _has_static_tuningt   Truet   _has_dynamic_tuningt   Nonet	   _she_modet   _monitors_repositoryt   createt   _load_monitor(   R   t   instance(    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_eeepc_she.pyt   _instance_init    s    			c         C   s2   | j  d  k	 r. |  j j | j  ƒ d  | _  n  d  S(   N(   R   R   R   t   delete(   R   R   (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_eeepc_she.pyt   _instance_cleanup&   s    c         C   sc   | j  j ƒ  d } | | j d k r9 |  j | d ƒ n& | | j d k r_ |  j | d ƒ n  d  S(   Nt   systemR   t	   powersaveR   t   normal(   R   t   get_loadt   optionst   _set_she_mode(   R   R   t   deviceR   (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_eeepc_she.pyt   _instance_update_dynamic+   s
    c         C   s   |  j  | d ƒ d  S(   NR$   (   R'   (   R   R   R(   (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_eeepc_she.pyt   _instance_unapply_dynamic2   s    c         C   sg   t  | j d | ƒ } | j | k rc t j d | | f ƒ |  j j |  j d | ƒ | |  _ n  d  S(   Ns   she_%ss   new eeepc_she mode %s (%d) s   %s(   t   intR&   R   t   logt   infoR   t   write_to_fileR   (   R   R   t   new_modet   new_mode_numeric(    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_eeepc_she.pyR'   6   s
    (   t   __name__t
   __module__t   __doc__R   t   classmethodR   R   R!   R)   R*   R'   (    (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_eeepc_she.pyR   	   s   							(   t    R    R   t
   tuned.logst   tunedt   tuned.utils.commandsR   R   t   logst   getR,   t   PluginR   (    (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_eeepc_she.pyt   <module>   s   