#!/usr/bin/env python import gobject import dbus import dbus.service import dbus.mainloop.glib from obmc.dbuslib.bindings import get_dbus, DbusProperties, DbusObjectManager DBUS_NAME = 'org.openbmc.control.Fans' OBJ_PATH = '/org/openbmc/control/fans' IFACE_NAME = 'org.openbmc.control.Fans' FAN_BUS = 'org.openbmc.Sensors' FAN_OBJS = [ '/org/openbmc/sensors/speed/fan0', '/org/openbmc/sensors/speed/fan1', '/org/openbmc/sensors/speed/fan2', '/org/openbmc/sensors/speed/fan3', '/org/openbmc/sensors/speed/fan4', '/org/openbmc/sensors/speed/fan5', ] FAN_IFACE = 'org.openbmc.SensorValue' class FanControl(DbusProperties, DbusObjectManager): def __init__(self, bus, name): super(FanControl, self).__init__( conn=bus, object_path=name) self.Set(IFACE_NAME, "floor", 250) self.Set(IFACE_NAME, "ceiling", 255) self.fan_intf = [] ## create interface proxies to all fans for fan in FAN_OBJS: print "Initializing fan: "+fan obj = bus.get_object(FAN_BUS, fan, introspect=False) self.fan_intf.append(dbus.Interface(obj, FAN_IFACE)) @dbus.service.method(DBUS_NAME, in_signature='', out_signature='') def setMax(self): print "Setting fans to max" for intf in self.fan_intf: intf.setValue(dbus.UInt32(255)) if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = get_dbus() fan_control = FanControl(bus, OBJ_PATH) mainloop = gobject.MainLoop() print "Starting fan control" fan_control.setMax() fan_control.unmask_signals() name = dbus.service.BusName(DBUS_NAME, bus) mainloop.run() # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4