lots of changes
diff --git a/bin/chassis_control.py b/bin/chassis_control.py
index c319527..ccea354 100644
--- a/bin/chassis_control.py
+++ b/bin/chassis_control.py
@@ -15,10 +15,15 @@
class ChassisControlObject(dbus.service.Object):
def __init__(self,bus,name):
self.dbus_objects = { }
+
+ ## load utilized objects
self.dbus_busses = {
- 'org.openbmc.control.Power' : [ { 'name' : 'PowerControl1' , 'intf' : 'org.openbmc.control.Power' } ],
- 'org.openbmc.leds.ChassisIdentify' : [ { 'name' : 'ChassisIdentify1', 'intf' : 'org.openbmc.control.Chassis' } ],
- 'org.openbmc.control.Host' : [ { 'name' : 'HostControl1', 'intf' : 'org.openbmc.control.Host' } ]
+ 'org.openbmc.control.Power' :
+ [ { 'name' : 'PowerControl1' , 'intf' : 'org.openbmc.control.Power' } ],
+ 'org.openbmc.leds.ChassisIdentify' :
+ [ { 'name' : 'ChassisIdentify1', 'intf' : 'org.openbmc.control.Chassis' } ],
+ 'org.openbmc.control.Host' :
+ [ { 'name' : 'HostControl1', 'intf' : 'org.openbmc.control.Host' } ]
}
self.power_sequence = 0
dbus.service.Object.__init__(self,bus,name)
@@ -26,12 +31,16 @@
try:
for bus_name in self.dbus_busses.keys():
self.request_name(bus_name,"",bus_name)
- bus.add_signal_receiver(self.request_name,
- dbus_interface = 'org.freedesktop.DBus',
- signal_name = "NameOwnerChanged")
- except dbus.exceptions.DBusException, e:
- # TODO: not sure what to do if can't find other services
- print e
+
+ except:
+ ## its ok if this fails. hotplug will detect too
+ print "Warning: One of processes not started yet."
+ pass
+
+ ## add signal handler to detect when new objects show up on dbus
+ bus.add_signal_receiver(self.request_name,
+ dbus_interface = 'org.freedesktop.DBus',
+ signal_name = "NameOwnerChanged")
bus.add_signal_receiver(self.power_button_signal_handler,
dbus_interface = "org.openbmc.Button", signal_name = "ButtonPressed",
@@ -45,12 +54,13 @@
def request_name(self, bus_name, a, b):
# bus added
if (len(b) > 0 ):
+ ## if bus in required list for this object, then save a pointer to interface
+ ## for method calls
if (self.dbus_busses.has_key(bus_name)):
obj_path = "/"+bus_name.replace('.','/')
for objs in self.dbus_busses[bus_name]:
inst_name = objs['name']
obj = bus.get_object(bus_name,obj_path+"/"+inst_name)
- print "Interface: "+inst_name+","+objs['intf']
self.dbus_objects[inst_name] = dbus.Interface(obj, objs['intf'])