blob: 5e044f02179ff0ff07429fa35c2f86402d63439d [file] [log] [blame]
Norman James323ed972015-12-09 09:06:37 -06001#!/usr/bin/python -u
2
3import sys
4import os
5import gobject
6import dbus
7import dbus.service
8import dbus.mainloop.glib
9import Openbmc
10import Sensors
11
12DBUS_NAME = 'org.openbmc.Sensors'
13OBJ_PATH = '/org/openbmc/sensors'
14
15
16class SensorManager(Openbmc.DbusProperties,Openbmc.DbusObjectManager):
17 def __init__(self,bus,name):
18 Openbmc.DbusProperties.__init__(self)
19 Openbmc.DbusObjectManager.__init__(self)
20 dbus.service.Object.__init__(self,bus,name)
21 self.InterfacesAdded(name,self.properties)
22
23 @dbus.service.method(DBUS_NAME,
24 in_signature='ss', out_signature='')
25 def register(self,object_name,obj_path):
26 if (self.objects.has_key(obj_path) == False):
27 print "Register: "+object_name+" : "+obj_path
28 sensor = eval('Sensors.'+object_name+'(bus,obj_path)')
29 self.add(obj_path,sensor)
30
31 @dbus.service.method(DBUS_NAME,
32 in_signature='s', out_signature='')
33 def delete(self,obj_path):
34 if (self.objects.has_key(obj_path) == True):
35 print "Delete: "+obj_path
36 self.remove(obj_path)
37
38 def SensorChange(self,value,path=None):
39 if (self.objects.has_key(path)):
40 self.objects[path].setValue(value)
41 else:
42 print "ERROR: Sensor not found: "+path
43
44if __name__ == '__main__':
45 dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
46 bus = Openbmc.getDBus()
47 name = dbus.service.BusName(DBUS_NAME,bus)
48 root_sensor = SensorManager(bus,OBJ_PATH)
49
50
51 ## instantiate non-polling sensors
52 ## these don't need to be in seperate process
53 ## TODO: this should not be hardcoded
54
55 obj_path = OBJ_PATH+"/host/HostStatus"
56 root_sensor.add(obj_path,Sensors.HostStatusSensor(bus,obj_path))
57 obj_path = OBJ_PATH+"/host/BootProgress"
58 root_sensor.add(obj_path,Sensors.BootProgressSensor(bus,obj_path))
59 obj_path = OBJ_PATH+"/host/OccStatus"
60 root_sensor.add(obj_path,Sensors.OccStatusSensor(bus,obj_path))
61 obj_path = OBJ_PATH+"/host/BootCount"
62 root_sensor.add(obj_path,Sensors.BootCountSensor(bus,obj_path))
63 obj_path = OBJ_PATH+"/host/OperatingSystemStatus"
64 root_sensor.add(obj_path,Sensors.OperatingSystemStatusSensor(bus,obj_path))
65
66 mainloop = gobject.MainLoop()
67 print "Starting sensor manager"
68 mainloop.run()
69