ó æ ”\c@sddlmZddlTddlZddlmZddlZddlZddl Z ej j ƒZ eƒZ dejfd„ƒYZdS(i(tbase(t*iĸĸĸĸN(tcommandst AudioPlugincBsđeZdZd„Zd„Zd„Zd„Zed„ƒZd„Z d„Z e dd e ƒd „ƒZ edƒed „ƒZe d d e ƒd „ƒZed ƒed„ƒZRS(sŪ Plugin for tuning audio cards powersaving options. Power management is supported per module, not device. From this reason, we take kernel module names as device names. cCsyt|_tƒ|_tƒ|_xQ|jjdƒjdƒD]4}|j|ƒ}|dkr=|jj |ƒq=q=WdS(Ntsoundscard*t snd_hda_inteltsnd_ac97_codec(RR( tTruet_devices_supportedtsett_assigned_devicest _free_devicest_hardware_inventoryt get_devicestmatch_sys_namet_device_module_nametadd(tselftdevicet module_name((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_audio.pyt _init_devicess   " cCst|_t|_dS(N(Rt_has_static_tuningtFalset_has_dynamic_tuning(Rtinstance((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_audio.pyt_instance_inits cCsdS(N((RR((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_audio.pyt_instance_cleanup#scCsy|jjSWndSXdS(N(tparenttdrivertNone(RR((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_audio.pyR&scCsidd6td6S(Nittimeouttreset_controller(R(tcls((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_audio.pyt_get_config_options,scCsd|S(Ns$/sys/module/%s/parameters/power_save((RR((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_audio.pyt _timeout_path3scCsd|S(Ns//sys/module/%s/parameters/power_save_controller((RR((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_audio.pyt_reset_controller_path6sRt per_devicecCszyt|ƒ}Wn#tk r5tjd|ƒdSX|dkrr|j|ƒ}|sntj|d|ƒn|SdSdS(Ns!timeout value '%s' is not integeris%d(tintt ValueErrortlogterrorRR"tcmdt write_to_file(RtvalueRtsimRtsys_file((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_audio.pyt _set_timeout9s  cCs>|j|ƒ}tj|d|ƒ}t|ƒdkr:|SdS(Ntno_errori(R"R)t read_filetlenR(RRtignore_missingR-R+((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_audio.pyt _get_timeoutHs RcCsQtj|ƒ}|j|ƒ}tjj|ƒrM|sItj||ƒn|SdS(N(R)tget_boolR#tostpathtexistsR*R(RR+RR,tvR-((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_audio.pyt_set_reset_controllerPscCsV|j|ƒ}tjj|ƒrRtj|ƒ}t|ƒdkrRtj|ƒSndS(Ni( R#R5R6R7R)R0R1R4R(RRR2R-R+((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_audio.pyt_get_reset_controllerZs (t__name__t __module__t__doc__RRRRt classmethodR!R"R#t command_setRR.t command_getRR3R9R:(((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_audio.pyR s       (tRt decoratorst tuned.logsttunedttuned.utils.commandsRR5tstructtglobtlogstgetR'R)tPluginR(((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_audio.pyts