blob: 2e7b9683d0a6d75f8222f1c4a00903688d7b80bb [file] [log] [blame]
Brad Bishop056b26e2016-08-25 23:01:47 -04001#!/usr/bin/env python
Norman James0ca72fb2015-11-10 10:39:36 -06002
Norman James0ca72fb2015-11-10 10:39:36 -06003import gobject
4import dbus
5import dbus.service
6import dbus.mainloop.glib
Brad Bishop84e73b52016-05-12 15:57:52 -04007from obmc.dbuslib.bindings import get_dbus, DbusProperties, DbusObjectManager
Norman James0ca72fb2015-11-10 10:39:36 -06008
9DBUS_NAME = 'org.openbmc.control.Fans'
10OBJ_PATH = '/org/openbmc/control/fans'
11IFACE_NAME = 'org.openbmc.control.Fans'
12
Norman James323ed972015-12-09 09:06:37 -060013FAN_BUS = 'org.openbmc.Sensors'
Norman James0ca72fb2015-11-10 10:39:36 -060014FAN_OBJS = [
Brad Bishop056b26e2016-08-25 23:01:47 -040015 '/org/openbmc/sensors/speed/fan0',
16 '/org/openbmc/sensors/speed/fan1',
17 '/org/openbmc/sensors/speed/fan2',
18 '/org/openbmc/sensors/speed/fan3',
19 '/org/openbmc/sensors/speed/fan4',
20 '/org/openbmc/sensors/speed/fan5',
Norman James0ca72fb2015-11-10 10:39:36 -060021]
22FAN_IFACE = 'org.openbmc.SensorValue'
23
Brad Bishop056b26e2016-08-25 23:01:47 -040024
25class FanControl(DbusProperties, DbusObjectManager):
26 def __init__(self, bus, name):
Brad Bishopf47f5fa2016-09-08 22:29:01 -040027 super(FanControl, self).__init__(
28 conn=bus,
29 object_path=name)
Brad Bishop056b26e2016-08-25 23:01:47 -040030 self.Set(IFACE_NAME, "floor", 250)
31 self.Set(IFACE_NAME, "ceiling", 255)
32 self.fan_intf = []
33 ## create interface proxies to all fans
34 for fan in FAN_OBJS:
35 print "Initializing fan: "+fan
36 obj = bus.get_object(FAN_BUS, fan, introspect=False)
37 self.fan_intf.append(dbus.Interface(obj, FAN_IFACE))
38
39 @dbus.service.method(DBUS_NAME, in_signature='', out_signature='')
40 def setMax(self):
41 print "Setting fans to max"
42 for intf in self.fan_intf:
43 intf.setValue(dbus.UInt32(255))
44
Norman James0ca72fb2015-11-10 10:39:36 -060045
46if __name__ == '__main__':
Brad Bishop056b26e2016-08-25 23:01:47 -040047 dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
48 bus = get_dbus()
49 fan_control = FanControl(bus, OBJ_PATH)
50 mainloop = gobject.MainLoop()
Brad Bishopf0f3efe2016-06-29 23:20:24 -040051
Brad Bishop056b26e2016-08-25 23:01:47 -040052 print "Starting fan control"
53 fan_control.setMax()
Norman James0ca72fb2015-11-10 10:39:36 -060054
Brad Bishop056b26e2016-08-25 23:01:47 -040055 fan_control.unmask_signals()
56 name = dbus.service.BusName(DBUS_NAME, bus)
57 mainloop.run()
Brad Bishop53066752016-09-21 08:48:04 -040058
59# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4