refactored with SensorValue base class
diff --git a/bin/sensors_virtual_p8.py b/bin/sensors_virtual_p8.py
index 1488256..55aa149 100755
--- a/bin/sensors_virtual_p8.py
+++ b/bin/sensors_virtual_p8.py
@@ -9,7 +9,7 @@
import Openbmc
DBUS_NAME = 'org.openbmc.sensor.Power8Virtual'
-OBJ_NAME = '/org/openbmc/sensor/virtual/'
+OBJ_PATH = '/org/openbmc/sensor/virtual/'
class SensorValue(Openbmc.DbusProperties):
IFACE_NAME = 'org.openbmc.SensorValue'
@@ -48,58 +48,55 @@
def Changed(self,value,units):
pass
-
-
-
-
-class BootProgress(SensorValue):
+class VirtualSensor(SensorValue):
def __init__(self,bus,name):
SensorValue.__init__(self)
- self.object_name = "BootProgress"
- dbus.service.Object.__init__(self,bus,name+self.object_name)
+ dbus.service.Object.__init__(self,bus,name)
-class HostStatus(SensorValue):
+HS_IFACE = 'org.openbmc.HostStatus'
+class HostStatusSensor(SensorValue):
def __init__(self,bus,name):
SensorValue.__init__(self)
- self.object_name = "HostStatus"
- dbus.service.Object.__init__(self,bus,name+self.object_name)
+ dbus.service.Object.__init__(self,bus,name)
-class OsStatus(SensorValue):
- def __init__(self,bus,name):
- SensorValue.__init__(self)
- self.object_name = "OperatingSystemStatus"
- dbus.service.Object.__init__(self,bus,name+self.object_name)
-
-class BootCount(SensorValue):
- def __init__(self,bus,name):
- SensorValue.__init__(self)
- self.object_name = "BootCount"
- dbus.service.Object.__init__(self,bus,name+self.object_name)
-
-class OccStatus(SensorValue):
- def __init__(self,bus,name):
- SensorValue.__init__(self)
- self.object_name = "OccStatus"
- dbus.service.Object.__init__(self,bus,name+self.object_name)
+ ##override setValue method
+ @dbus.service.method(SensorValue.IFACE_NAME,
+ in_signature='v', out_signature='')
+ def setValue(self,value):
+ SensorValue.setValue(self,value)
+ if (value == "BOOTED"):
+ self.Booted()
+
+ @dbus.service.signal(HS_IFACE,signature='')
+ def Booted(self):
+ 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()
-
- boot_progress.setValue("INACTIVE")
- host_status.setValue("OFF")
- os_status.setValue("OFF")
- boot_count.setValue(0)
- occ_status.setValue(0)
+
+ sensors = {
+ 'BootProgress' : None,
+ 'OperatingSystemStatus' : None,
+ 'BootCount' : None,
+ 'OccStatus' : None,
+ }
+ dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+ bus = Openbmc.getDBus()
+ name = dbus.service.BusName(DBUS_NAME,bus)
+ for instance in sensors.keys():
+ sensors[instance]= VirtualSensor(bus,OBJ_PATH+instance)
- print "Starting virtual sensors"
- mainloop.run()
+ sensors['HostStatus'] = HostStatusSensor(bus,OBJ_PATH+"HostStatus")
+ mainloop = gobject.MainLoop()
+
+ ## Initialize sensors
+ sensors['BootProgress'].setValue("INACTIVE")
+ sensors['HostStatus'].setValue("OFF")
+ sensors['OperatingSystemStatus'].setValue("OFF")
+ sensors['BootCount'].setValue(0)
+ sensors['OccStatus'].setValue(0)
+
+ print "Starting virtual sensors"
+ mainloop.run()