new objects
diff --git a/bin/gpio_manager.py b/bin/gpio_manager.py
new file mode 100644
index 0000000..e0a264e
--- /dev/null
+++ b/bin/gpio_manager.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+
+import gobject
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+import System
+
+DBUS_NAME = 'org.openbmc.managers.Gpios'
+OBJ_NAME = '/org/openbmc/managers/Gpios'
+
+gpio_config = System.BarreleyeGpios()
+gpio_dev = '/sys/class/gpio'
+
+class GpioManager(dbus.service.Object):
+ def __init__(self,bus,name):
+ dbus.service.Object.__init__(self,bus,name)
+ bus = dbus.SessionBus()
+ self.gpio_locks = {}
+
+
+ @dbus.service.method(DBUS_NAME,
+ in_signature='s', out_signature='sis')
+ def init(self,name):
+ gpio_path = ''
+ if (gpio_config.has_key(name) == False):
+ # TODO: Error handling
+ print "ERROR: "+name+" not found in GPIO config table"
+ else:
+ gpio_num = gpio_config[name]['gpio_num']
+ print "GPIO Lookup: "+name+" = "+str(gpio_num)
+
+ return [gpio_dev, gpio_num, gpio_config[name]['direction']]
+
+ @dbus.service.method(DBUS_NAME,
+ in_signature='s', out_signature='')
+ def open(self,name):
+ gpio_num = gpio_config[name]['gpio_num']
+ self.gpio_locks[gpio_num] = 1
+
+ @dbus.service.method(DBUS_NAME,
+ in_signature='s', out_signature='')
+ def close(self,name):
+ # unexport?
+ gpio_num = gpio_config[name]['gpio_num']
+ self.gpio_locks[gpio_num] = 0
+
+
+ ## Signal handler
+
+
+if __name__ == '__main__':
+ dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+ bus = dbus.SessionBus()
+ name = dbus.service.BusName(DBUS_NAME, bus)
+ obj = GpioManager(bus, OBJ_NAME)
+ mainloop = gobject.MainLoop()
+
+ print "Running GpioManager"
+ mainloop.run()
+