\c@sddlmZddlTddlZddlmZddlZddlZddl Z ej j Z eZ dejfdYZdS(i(tbase(t*iN(tcommandst AudioPlugincBseZdZdZdZdZdZedZdZ dZ e dd e d Z eded Ze d d e d Zed edZRS(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|jjdjdD]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