added virtual sensors
diff --git a/bin/Openbmc.py b/bin/Openbmc.py
index 485525c..f086898 100755
--- a/bin/Openbmc.py
+++ b/bin/Openbmc.py
@@ -74,10 +74,12 @@
tmp_path = path
if (path == ""):
tmp_path="/"
+
obj = bus.get_object(bus_name,tmp_path)
introspect_iface = dbus.Interface(obj,"org.freedesktop.DBus.Introspectable")
tree = ET.ElementTree(ET.fromstring(introspect_iface.Introspect()))
root = tree.getroot()
+
parent = True
for node in root.iter('node'):
for intf in node.iter('interface'):
diff --git a/bin/sensors_virtual_p8.py b/bin/sensors_virtual_p8.py
new file mode 100755
index 0000000..d8bf1ef
--- /dev/null
+++ b/bin/sensors_virtual_p8.py
@@ -0,0 +1,170 @@
+#!/usr/bin/env python
+
+import sys
+#from gi.repository import GObject
+import gobject
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+import Openbmc
+
+SENSOR_INTERFACE = 'org.openbmc.SensorValue'
+DBUS_NAME = 'org.openbmc.sensor.Power8Virtual'
+OBJ_NAME = '/org/openbmc/sensor/virtual/'
+
+class BootProgress(dbus.service.Object):
+ def __init__(self,bus,name):
+ self.object_name = "BootProgress"
+ self.value = 0
+ self.units = ""
+ dbus.service.Object.__init__(self,bus,name+self.object_name)
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='v', out_signature='')
+ def setValue(self,value):
+ if (value != self.value):
+ self.value=value
+ self.Changed()
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='', out_signature='v')
+ def getValue(self):
+ return self.value;
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='', out_signature='s')
+ def getUnits(self):
+ return self.units;
+
+ @dbus.service.signal(SENSOR_INTERFACE,signature='vs')
+ def Changed(self,value,units):
+ pass
+
+class HostStatus(dbus.service.Object):
+ def __init__(self,bus,name):
+ self.object_name = "HostStatus"
+ self.value = 0
+ self.units = ""
+ dbus.service.Object.__init__(self,bus,name+self.object_name)
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='v', out_signature='')
+ def setValue(self,value):
+ if (value != self.value):
+ self.value=value
+ self.Changed(self.value,self.units)
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='', out_signature='v')
+ def getValue(self):
+ return self.value;
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='', out_signature='s')
+ def getUnits(self):
+ return self.units;
+
+ @dbus.service.signal(SENSOR_INTERFACE,signature='vs')
+ def Changed(self,value,units):
+ pass
+
+class OsStatus(dbus.service.Object):
+ def __init__(self,bus,name):
+ self.object_name = "OperatingSystemStatus"
+ self.value = 0
+ self.units = ""
+ dbus.service.Object.__init__(self,bus,name+self.object_name)
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='v', out_signature='')
+ def setValue(self,value):
+ if (value != self.value):
+ self.value=value
+ self.Changed(self.value,self.units)
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='', out_signature='v')
+ def getValue(self):
+ return self.value;
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='', out_signature='s')
+ def getUnits(self):
+ return self.units;
+
+ @dbus.service.signal(SENSOR_INTERFACE,signature='vs')
+ def Changed(self,value,units):
+ pass
+
+class BootCount(dbus.service.Object):
+ def __init__(self,bus,name):
+ self.object_name = "BootCount"
+ self.value = 0
+ self.units = ""
+ dbus.service.Object.__init__(self,bus,name+self.object_name)
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='v', out_signature='')
+ def setValue(self,value):
+ if (value != self.value):
+ self.value=value
+ self.Changed(self.value,self.units)
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='', out_signature='v')
+ def getValue(self):
+ return self.value;
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='', out_signature='s')
+ def getUnits(self):
+ return self.units;
+
+ @dbus.service.signal(SENSOR_INTERFACE,signature='vs')
+ def Changed(self,value,units):
+ pass
+
+
+class OccStatus(dbus.service.Object):
+ def __init__(self,bus,name):
+ self.object_name = "OccStatus"
+ self.value = 0
+ self.units = ""
+ dbus.service.Object.__init__(self,bus,name+self.object_name)
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='v', out_signature='')
+ def setValue(self,value):
+ if (value != self.value):
+ self.value=value
+ self.Changed(self.value,self.units)
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='', out_signature='v')
+ def getValue(self):
+ return self.value;
+
+ @dbus.service.method(SENSOR_INTERFACE,
+ in_signature='', out_signature='s')
+ def getUnits(self):
+ return self.units;
+
+ @dbus.service.signal(SENSOR_INTERFACE,signature='vs')
+ def Changed(self,value,units):
+ pass
+
+
+if __name__ == '__main__':
+ dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+ bus = Openbmc.getDBus()
+ name = dbus.service.BusName(DBUS_NAME,bus)
+ boot_progress = BootProgress(bus,OBJ_NAME)
+ host_status = HostStatus(bus,OBJ_NAME)
+ os_status = OsStatus(bus,OBJ_NAME)
+ boot_count = BootCount(bus,OBJ_NAME)
+ occ_status = OccStatus(bus,OBJ_NAME)
+ mainloop = gobject.MainLoop()
+
+ print "Starting virtual sensors"
+ mainloop.run()
+