1
0
Fork 0

wifi_power_level

This commit is contained in:
Jan Kaluza 2012-04-24 09:20:38 +02:00
parent 075a97e30a
commit 32d9a9d201
2 changed files with 47 additions and 9 deletions

View file

@ -4,6 +4,7 @@ import tuned.monitors
import tuned.utils.commands
import os
import struct
import glob
log = tuned.logs.get()
@ -37,16 +38,53 @@ class WirelessPlugin(tuned.plugins.Plugin):
# COMMANDS:
def _set_wifi_power_level(self, power_level):
try:
lines = open("/proc/net/wireless").readlines()
except (OSError,IOError) as e:
log.error("Error reading wifi devices from /proc/net/wireless: %s" % (e))
return None
ifaces = []
for line in lines:
if line.find("|") != -1:
continue
try:
ifaces.append(line[:line.find(":")])
except IndexError:
pass
if len(ifaces) == 0:
log.info("No wifi interfaces found")
return None
# TODO: set old_value properly. Is there "get_power"? I don't have wifi here
old_value = "5"
for iface in ifaces:
tuned.utils.commands.execute(["iwpriv", iface, "set_power", power_level])
for sys_file in glob.glob("/sys/bus/pci/devices/*/power_level"):
tuned.utils.commands.write_to_file(sys_file, power_level)
return old_value
def _apply_wifi_power_level(self):
self._revert_wifi_power_level()
if len(self._options["wifi_power_level"]) == 0:
return False
old_value = self._set_wifi_power_level(self._options["wifi_power_level"])
if old_value:
storage = tuned.utils.storage.Storage.get_instance()
storage.data["wireless"]["wifi_power_level"] = old_value
storage.save()
return True
def _revert_wifi_power_level(self):
#storage = tuned.utils.storage.Storage.get_instance()
#if storage.data["cpu"].has_key("cpu_governor"):
#tuned.utils.commands.execute(["cpupower", "frequency-set", "-g", storage.data["cpu"]["cpu_governor"]])
#del storage.data["cpu"]["cpu_governor"]
storage = tuned.utils.storage.Storage.get_instance()
if storage.data["wireless"].has_key("wifi_power_level"):
self._set_wifi_power_level(storage.data["wireless"]["wifi_power_level"])
del storage.data["wireless"]["wifi_power_level"]

View file

@ -26,7 +26,7 @@ from subprocess import *
log = tuned.logs.get()
def _write_to_file(f, data):
def write_to_file(f, data):
log.debug("Writing to file: %s < %s" % (f, data))
try:
fd = open(f, "w")
@ -35,7 +35,7 @@ def _write_to_file(f, data):
except (OSError,IOError) as e:
log.error("Writing to file %s error: %s" % (f, e))
def _read_file(f):
def read_file(f):
old_value = ""
try:
f = open(f, "r")
@ -56,7 +56,7 @@ def revert_file(key, subkey, f):
return
old_value = storage.data[key][subkey]
_write_to_file(f, old_value)
write_to_file(f, old_value)
del storage.data[key][subkey]
@ -66,11 +66,11 @@ def set_file(key, subkey, f, data):
log.error("Storage file does not contain item with key %s" % (key))
return
old_value = _read_file(f)
old_value = read_file(f)
storage.data[key][subkey] = old_value
storage.save()
_write_to_file(f, data)
write_to_file(f, data)
def execute(args):
out = ""