lots of changes
diff --git a/bin/sensor_manager.py b/bin/sensor_manager.py
index cb0904e..bcf3fd8 100644
--- a/bin/sensor_manager.py
+++ b/bin/sensor_manager.py
@@ -13,12 +13,12 @@
import Openbmc
DBUS_NAME = 'org.openbmc.managers.Sensors'
-OBJ_NAME = '/org/openbmc/managers/Sensors/'+sys.argv[1]
+OBJ_NAME = '/org/openbmc/managers/Sensors'
class SensorManager(dbus.service.Object):
def __init__(self,bus,name):
dbus.service.Object.__init__(self,bus,name)
- bus.add_signal_receiver(self.UpdateSensor,
+ bus.add_signal_receiver(self.SensorChangedHandler,
dbus_interface = 'org.openbmc.SensorValue',
signal_name = 'Changed', path_keyword='path')
bus.add_signal_receiver(self.NormalThreshold,
@@ -32,16 +32,46 @@
signal_name = 'Critical', path_keyword='path')
self.sensor_cache = {}
+
+ @dbus.service.method(DBUS_NAME,
+ in_signature='', out_signature='a{sv}')
+ def getSensorsAll(self):
+ return self.sensor_cache;
+
+ @dbus.service.method(DBUS_NAME,
+ in_signature='y', out_signature='v')
+ def getSensorFromId(self,ipmi_id):
+ intf_sys = Openbmc.getManagerInterface(bus,"System")
+ obj_info = intf_sys.getObjFromIpmi(ipmi_id)
+ intf_name = str(obj_info[0])
+ obj_name = str(obj_info[1])
+ return self.getSensor(obj_name)
+
+ @dbus.service.method(DBUS_NAME,
+ in_signature='yv', out_signature='')
+ def setSensorFromId(self,ipmi_id,value):
+ intf_sys = Openbmc.getManagerInterface(bus,"System")
+ obj_info = intf_sys.getObjFromIpmi(ipmi_id)
+ obj = bus.get_object(obj_info[0],obj_info[1])
+ intf = dbus.Interface(obj,"org.openbmc.SensorValue")
+ intf.setValue(value)
+ return None
+
+
@dbus.service.method(DBUS_NAME,
in_signature='s', out_signature='v')
def getSensor(self,path):
- val = None
+ val = 0
if (self.sensor_cache.has_key(path) == True):
val = self.sensor_cache[path]['value']
+ else:
+ # TODO: error handling
+ print "Unknown sensor at: "+path
return val
-
- def UpdateSensor(self,value,units,path = None):
+
+ ## Signal handlers
+ def SensorChangedHandler(self,value,units,path = None):
self.initSensorEntry(path)
self.sensor_cache[path]['value'] = value
self.sensor_cache[path]['units'] = units