o
    •Û_-  ã                   @   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 	¡ Z
G dd„ dejƒZdS )é   )Úbase)Ú
exceptionsé    N)Úcommandsc                       sT   e Zd ZdZ‡ fdd„Zedd„ ƒZdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Z‡  ZS )ÚEeePCSHEPluginzh
	Plugin for tuning FSB (front side bus) speed on Asus EEE PCs with SHE (Super Hybrid Engine) support.
	c                    sT   t ƒ | _d| _tj | j¡sd| _tj | j¡st d¡‚tt	| ƒj
|i |¤Ž d S )Nz!/sys/devices/platform/eeepc/cpufvz%/sys/devices/platform/eeepc-wmi/cpufvz)Plugin is not supported on your hardware.)r   Ú_cmdÚ_control_fileÚosÚpathÚisfiler   ÚNotSupportedPluginExceptionÚsuperr   Ú__init__)ÚselfÚargsÚkwargs©Ú	__class__© ú@/usr/lib/python3/dist-packages/tuned/plugins/plugin_eeepc_she.pyr      s   
zEeePCSHEPlugin.__init__c                 C   s   dddddœS )Ng333333ã?gš™™™™™Ù?é   r   )Úload_threshold_normalÚload_threshold_powersaveÚshe_powersaveÚ
she_normalr   )r   r   r   r   Ú_get_config_options   s
   üz"EeePCSHEPlugin._get_config_optionsc                 C   s&   d|_ d|_d |_| j dd ¡|_d S )NFTÚload)Ú_has_static_tuningÚ_has_dynamic_tuningÚ	_she_modeÚ_monitors_repositoryÚcreateÚ_load_monitor©r   Úinstancer   r   r   Ú_instance_init    s   zEeePCSHEPlugin._instance_initc                 C   s&   |j d ur| j |j ¡ d |_ d S d S )N)r"   r    Údeleter#   r   r   r   Ú_instance_cleanup&   s   

þz EeePCSHEPlugin._instance_cleanupc                 C   sN   |j  ¡ d }||jd kr|  |d¡ d S ||jd kr%|  |d¡ d S d S )NÚsystemr   Ú	powersaver   Únormal)r"   Úget_loadÚoptionsÚ_set_she_mode)r   r$   Údevicer   r   r   r   Ú_instance_update_dynamic+   s   ÿz'EeePCSHEPlugin._instance_update_dynamicc                 C   s   |   |d¡ d S )Nr*   )r-   )r   r$   r.   r   r   r   Ú_instance_unapply_dynamic2   s   z(EeePCSHEPlugin._instance_unapply_dynamicc                 C   sP   t |jd|  ƒ}|j|kr&t d||f ¡ | j | jd| ¡ || _d S d S )Nzshe_%sznew eeepc_she mode %s (%d) z%s)Úintr,   r   ÚlogÚinfor   Úwrite_to_filer   )r   r$   Únew_modeÚnew_mode_numericr   r   r   r-   6   s   

ýzEeePCSHEPlugin._set_she_mode)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úclassmethodr   r%   r'   r/   r0   r-   Ú__classcell__r   r   r   r   r   	   s    	
r   )Ú r   r   Ú
tuned.logsÚtunedÚtuned.utils.commandsr   r	   ÚlogsÚgetr2   ÚPluginr   r   r   r   r   Ú<module>   s    
