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()
+
diff --git a/bin/sensor_management2.py b/bin/sensor_management2.py
new file mode 100644
index 0000000..e897410
--- /dev/null
+++ b/bin/sensor_management2.py
@@ -0,0 +1,111 @@
+#!/usr/bin/env python
+
+
+import gobject
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+import xml.etree.ElementTree as ET
+import System
+
+DBUS_NAME = 'org.openbmc.managers.Sensors'
+OBJ_NAME = '/org/openbmc/managers/Sensors'
+
+NORMAL   = 0
+LOWER_WARNING  = 1
+LOWER_CRITICAL = 2
+UPPER_WARNING  = 3
+UPPER_CRITICAL = 4
+
+
+sensor_config = System.BarreleyeSensors()
+
+## finds objects held by Dbus ObjectManager
+def get_interface(bus_name):
+	obj_name = "/"+bus_name.replace('.','/')
+	obj = bus.get_object(bus_name, obj_name)
+	
+	#Find object in object manager and retrieve interface name
+	manager = dbus.Interface(obj,'org.freedesktop.DBus.ObjectManager')
+	objects = manager.GetManagedObjects()
+	obj_path = None
+	interface = None
+
+	for o in objects:
+		for intf in objects[o].keys():
+			if (intf.find('Sensor') > 0):
+				interface = intf
+				obj_path = o
+
+	if (interface == None):
+		raise Exception("Unable to find sensor: "+obj_path)	
+	
+	return [obj_path, interface]
+
+
+class SensorManagement(dbus.service.Object):
+	def __init__(self,bus,name):
+		dbus.service.Object.__init__(self,bus,name)
+		self.sensor_cache = {}
+		for bus_name in bus.list_names():
+			if (bus_name.find('org.openbmc.sensors')==0):
+				self.request_name(bus_name,"",bus_name)
+
+		bus.add_signal_receiver(self.request_name,
+			dbus_interface = 'org.freedesktop.DBus', 
+					signal_name = "NameOwnerChanged")
+
+
+	def request_name(self, bus_name, a, b):
+		if (len(b) > 0 and bus_name.find('org.openbmc.sensors') == 0):
+			if (sensor_config.has_key(bus_name) == True):
+				try:
+					print "Loading: "+bus_name
+					obj_info = get_interface(bus_name)
+					obj = bus.get_object(bus_name,obj_info[0])
+					intf = dbus.Interface(obj,obj_info[1])
+					intf.setThresholds(sensor_config[bus_name]['lower_critical'],
+						sensor_config[bus_name]['lower_warning'],
+						sensor_config[bus_name]['upper_warning'],
+						sensor_config[bus_name]['upper_critical'])
+					if (sensor_config[bus_name].has_key('parameters')):
+						intf.setConfigData(sensor_config[bus_name]['parameters'])
+	
+				except dbus.exceptions.DBusException, e:
+					# TODO: not sure what to do if can't find other services
+					print "Unable to find dependent services: ",e
+			else:
+				print "Sensor found on bus but no config: "+bus_name
+		if (len(b) == 0  and bus_name.find('org.openbmc') ==0):
+			print "Sensor stopped: "+bus_name
+
+	@dbus.service.method(DBUS_NAME,
+		in_signature='s', out_signature='a{ss}')
+	def getAllSensors(self,obj_name):
+		return None
+		
+	@dbus.service.method(DBUS_NAME,
+		in_signature='s', out_signature='i')
+	def getSensorValue(self,obj_name):
+		sensor = self.sensor_cache[obj_name]
+		return sensor.get_value()
+
+	@dbus.service.signal(DBUS_NAME)
+	def CriticalThreshold(self, obj):
+		print "Critical: "+obj
+
+	@dbus.service.signal(DBUS_NAME)
+	def WarningThreshold(self, obj):
+		print "Warning: "+obj
+
+
+if __name__ == '__main__':
+    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+    bus = dbus.SessionBus()
+    name = dbus.service.BusName(DBUS_NAME,bus)
+    obj = SensorManagement(bus,OBJ_NAME)
+    mainloop = gobject.MainLoop()
+    
+    print "Running SensorManagerService"
+    mainloop.run()
+