lots of changes
diff --git a/bin/Openbmc.py b/bin/Openbmc.py
index cb2746a..87c5ae6 100755
--- a/bin/Openbmc.py
+++ b/bin/Openbmc.py
@@ -103,8 +103,55 @@
parent = False
+class DbusProperties(dbus.service.Object):
+ def __init__(self):
+ dbus.service.Object.__init__(self)
+ self.properties = {}
-class DbusProperty:
+ @dbus.service.method(dbus.PROPERTIES_IFACE,
+ in_signature='ss', out_signature='v')
+ def Get(self, interface_name, property_name):
+ d = self.GetAll(interface_name)
+ try:
+ v = d[property_name]
+ return v
+ except:
+ raise dbus.exceptions.DBusException(
+ "org.freedesktop.UnknownPropery: "+property_name)
+
+ @dbus.service.method(dbus.PROPERTIES_IFACE,
+ in_signature='s', out_signature='a{sv}')
+ def GetAll(self, interface_name):
+ try:
+ d = self.properties[interface_name]
+ return d
+ except:
+ raise dbus.exceptions.DBusException(
+ "org.freedesktop.UnknownInterface: "+interface_name)
+
+ @dbus.service.method(dbus.PROPERTIES_IFACE,
+ in_signature='ssv')
+ def Set(self, interface_name, property_name, new_value):
+ if (self.properties.has_key(interface_name) == False):
+ self.properties[interface_name] = {}
+ try:
+ old_value = self.properties[interface_name][property_name]
+ if (old_value != new_value):
+ self.properties[interface_name][property_name] = new_value
+ self.PropertiesChanged(interface_name,{ property_name: new_value }, [])
+
+ except:
+ self.properties[interface_name][property_name] = new_value
+
+ @dbus.service.signal(dbus.PROPERTIES_IFACE,
+ signature='sa{sv}as')
+ def PropertiesChanged(self, interface_name, changed_properties,
+ invalidated_properties):
+ pass
+
+
+
+class DbusVariable:
def __init__(self,name,value):
self.name = str(name)
self.dbusType = str(type(value)).split("'")[1]