major changes
diff --git a/objects/button_power_obj.c b/objects/button_power_obj.c
index 98916dc..d0b0001 100644
--- a/objects/button_power_obj.c
+++ b/objects/button_power_obj.c
@@ -1,12 +1,12 @@
 #include "interfaces/button.h"

+#include "gpio.h"

+#include "openbmc.h"

 

 /* ---------------------------------------------------------------------------------------------------- */

 static const gchar* dbus_object_path = "/org/openbmc/buttons/ButtonPower";

 static const gchar* dbus_name        = "org.openbmc.buttons.ButtonPower";

 

 static GDBusObjectManagerServer *manager = NULL;

-static Button *button = NULL;

-static const int gpio = 12;

 

 static gboolean

 on_is_on       (Button          *btn,

@@ -36,39 +36,44 @@
                  const gchar     *name,

                  gpointer         user_data)

 {

-  ObjectSkeleton *object;

-  guint n;

+	ObjectSkeleton *object;

+	g_print ("Acquired a message bus connection: %s\n",name);

+ 	cmdline *cmd = user_data;

+	if (cmd->argc < 2)

+	{

+		g_print("No objects created.  Put object name(s) on command line\n");

+		return;

+	}	

+  	manager = g_dbus_object_manager_server_new (dbus_object_path);

+  	int i=0;

+  	for (i=1;i<cmd->argc;i++)

+  	{

+		gchar *s;

+		s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]);

+		object = object_skeleton_new (s);

+		g_free (s);

 

-  g_print ("Acquired a message bus connection: %s\n",name);

+		Button* button = button_skeleton_new ();

+		object_skeleton_set_button (object, button);

+		g_object_unref (button);

 

-  manager = g_dbus_object_manager_server_new (dbus_object_path);

-

-  gchar *s;

-  s = g_strdup_printf ("%s/0",dbus_object_path);

-  object = object_skeleton_new (s);

-  g_free (s);

-

-  button = button_skeleton_new ();

-  object_skeleton_set_button (object, button);

-  g_object_unref (button);

-

-  //define method callbacks

-  g_signal_connect (button,

+		//define method callbacks

+		g_signal_connect (button,

                     "handle-is-on",

                     G_CALLBACK (on_is_on),

                     NULL); /* user_data */

-  g_signal_connect (button,

+		g_signal_connect (button,

                     "handle-sim-button-press",

                     G_CALLBACK (on_sim_button_press),

                     NULL); /* user_data */

 

- 

-  /* Export the object (@manager takes its own reference to @object) */

-  g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));

-  g_object_unref (object);

+		/* Export the object (@manager takes its own reference to @object) */

+		g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));

+		g_object_unref (object);

 

-  /* Export all objects */

-  g_dbus_object_manager_server_set_connection (manager, connection);

+	}

+	/* Export all objects */

+	g_dbus_object_manager_server_set_connection (manager, connection);

 }

 

 static void

diff --git a/objects/chassis_identify_obj.c b/objects/chassis_identify_obj.c
index 53cf893..e01225c 100644
--- a/objects/chassis_identify_obj.c
+++ b/objects/chassis_identify_obj.c
@@ -1,22 +1,27 @@
 #include "interfaces/led.h"

+#include "openbmc.h"

+#include "gpio.h"

 

 /* ---------------------------------------------------------------------------------------------------- */

 static const gchar* dbus_object_path = "/org/openbmc/leds/ChassisIdentify";

 static const gchar* dbus_name        = "org.openbmc.leds.ChassisIdentify";

 

 static GDBusObjectManagerServer *manager = NULL;

-//static Led *led = NULL;

-static uint gpio = 12;

+

+GPIO led_gpio = (GPIO){"IDENTIFY"};

 

 static gboolean

 on_set_on       (Led          *led,

                 GDBusMethodInvocation  *invocation,

                 gpointer                user_data)

 {

-  g_print("Turn on chassis identify led\n");

-  //TODO:  implement in hardware

-  led_complete_set_on(led,invocation);

-  return TRUE;

+	g_print("Turn on chassis identify led\n");

+	led_complete_set_on(led,invocation);

+	gpio_open(&led_gpio);

+	gpio_write(&led_gpio,1); 

+	gpio_close(&led_gpio);

+

+	return TRUE;

 

 }

 

@@ -25,10 +30,13 @@
                 GDBusMethodInvocation  *invocation,

                 gpointer                user_data)

 {

-  g_print("Turn off chassis identify led\n");

-  //TODO:  implement in hardware

-  led_complete_set_off(led,invocation);

-  return TRUE;

+	g_print("Turn off chassis identify led\n");

+	led_complete_set_off(led,invocation);

+	gpio_open(&led_gpio);

+	gpio_write(&led_gpio,0); 

+	gpio_close(&led_gpio);

+

+	return TRUE;

 }

 

 static void 

@@ -36,42 +44,50 @@
                  const gchar     *name,

                  gpointer         user_data)

 {

-  ObjectSkeleton *object;

-  Led *led;

-  guint n;

+	ObjectSkeleton *object;

 

-  g_print ("Acquired a message bus connection: %s\n",name);

+	g_print ("Acquired a message bus connection: %s\n",name);

+	cmdline *cmd = user_data;

+	if (cmd->argc < 2)

+	{

+		g_print("No objects created.  Put object name(s) on command line\n");

+		return;

+	}	

 

-  manager = g_dbus_object_manager_server_new (dbus_object_path);

+	manager = g_dbus_object_manager_server_new (dbus_object_path);

+	int i = 0;

+	for (i=1;i<cmd->argc;i++)

+  	{

+		gchar *s;

+		s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]);

+		object = object_skeleton_new (s);

+		g_free (s);

 

-  gchar *s;

-  s = g_strdup_printf ("%s/0",dbus_object_path);

-  object = object_skeleton_new (s);

-  g_free (s);

+		Led *led = led_skeleton_new ();

+		object_skeleton_set_led (object, led);

+		g_object_unref (led);

 

-  led = led_skeleton_new ();

-  object_skeleton_set_led (object, led);

-  g_object_unref (led);

-

-  //define method callbacks

-  g_signal_connect (led,

+		//define method callbacks

+		g_signal_connect (led,

                     "handle-set-on",

                     G_CALLBACK (on_set_on),

                     NULL); /* user_data */

-  g_signal_connect (led,

+		g_signal_connect (led,

                     "handle-set-off",

                     G_CALLBACK (on_set_off),

                     NULL);

 

-  led_set_color(led,0);

-  led_set_function(led,"CHASSIS_IDENTIFY");

+		led_set_color(led,0);

+		led_set_function(led,"CHASSIS_IDENTIFY");

  

-  /* Export the object (@manager takes its own reference to @object) */

-  g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));

-  g_object_unref (object);

+		/* Export the object (@manager takes its own reference to @object) */

+		g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));

+		g_object_unref (object);

+	}

+	/* Export all objects */

+ 	g_dbus_object_manager_server_set_connection (manager, connection);

+	gpio_init(connection,&led_gpio);

 

-  /* Export all objects */

-  g_dbus_object_manager_server_set_connection (manager, connection);

 }

 

 static void

diff --git a/objects/control_host_obj.c b/objects/control_host_obj.c
index fafcd31..5809576 100644
--- a/objects/control_host_obj.c
+++ b/objects/control_host_obj.c
@@ -6,7 +6,8 @@
 #include <sys/stat.h>

 #include <sys/mman.h>

 #include "interfaces/control_host.h"

-#include "objects/openbmc_utilities.h"

+#include "openbmc.h"

+#include "gpio.h"

 

 

 /* ---------------------------------------------------------------------------------------------------- */

@@ -14,7 +15,6 @@
 static const gchar* dbus_name        = "org.openbmc.control.Host";

 

 static GDBusObjectManagerServer *manager = NULL;

-static ControlHost *control_host = NULL;

 

 GPIO fsi_data     = (GPIO){ "FSI_DATA" };

 GPIO fsi_clk      = (GPIO){ "FSI_CLK" };

@@ -87,26 +87,34 @@
 {

 	ObjectSkeleton *object;

 	g_print ("Acquired a message bus connection: %s\n",name);

-	manager = g_dbus_object_manager_server_new (dbus_object_path);

+ 	cmdline *cmd = user_data;

+	if (cmd->argc < 2)

+	{

+		g_print("No objects created.  Put object name(s) on command line\n");

+		return;

+	}	

+  	manager = g_dbus_object_manager_server_new (dbus_object_path);

+  	int i=0;

+  	for (i=1;i<cmd->argc;i++)

+  	{

+		gchar *s;

+		s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]);

+		object = object_skeleton_new (s);

+		g_free (s);

+		ControlHost* control_host = control_host_skeleton_new ();

+		object_skeleton_set_control_host (object, control_host);

+		g_object_unref (control_host);

 

-	gchar *s;

-	s = g_strdup_printf ("%s/0",dbus_object_path);

-	object = object_skeleton_new (s);

-	g_free (s);

-	control_host = control_host_skeleton_new ();

-	object_skeleton_set_control_host (object, control_host);

-	g_object_unref (control_host);

-

-	//define method callbacks here

-	g_signal_connect (control_host,

+		//define method callbacks here

+		g_signal_connect (control_host,

                   "handle-boot",

                   G_CALLBACK (on_boot),

                   NULL); /* user_data */

 

-	/* Export the object (@manager takes its own reference to @object) */

-	g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));

-	g_object_unref (object);

-

+		/* Export the object (@manager takes its own reference to @object) */

+		g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));

+		g_object_unref (object);

+	}

 	/* Export all objects */

 	g_dbus_object_manager_server_set_connection (manager, connection);

 	

diff --git a/objects/flash_bios_obj.c b/objects/flash_bios_obj.c
index 3a4ae1f..f74ce90 100644
--- a/objects/flash_bios_obj.c
+++ b/objects/flash_bios_obj.c
@@ -1,12 +1,12 @@
 #include "interfaces/flash.h"

 #include "pflash/pflash.c"

+#include "openbmc.h"

 

 /* ---------------------------------------------------------------------------------------------------- */

 static const gchar* dbus_object_path = "/org/openbmc/flash/BIOS";

 static const gchar* dbus_name        = "org.openbmc.flash.BIOS";

 

 static GDBusObjectManagerServer *manager = NULL;

-static Flash *flash = NULL;

 

 static gboolean

 on_update_via_file (Flash          *f,

@@ -36,34 +36,40 @@
                  const gchar     *name,

                  gpointer         user_data)

 {

-  ObjectSkeleton *object;

-  guint n;

+	ObjectSkeleton *object;

+	g_print ("Acquired a message bus connection: %s\n",name);

+ 	cmdline *cmd = user_data;

+	if (cmd->argc < 2)

+	{

+		g_print("No objects created.  Put object name(s) on command line\n");

+		return;

+	}	

+  	manager = g_dbus_object_manager_server_new (dbus_object_path);

+  	int i=0;

+  	for (i=1;i<cmd->argc;i++)

+  	{

+		gchar *s;

+		s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]);

+		object = object_skeleton_new (s);

+		g_free (s);

 

-  g_print ("Acquired a message bus connection: %s\n",name);

+		Flash* flash = flash_skeleton_new ();

+		object_skeleton_set_flash (object, flash);

+ 		g_object_unref (flash);

 

-  manager = g_dbus_object_manager_server_new (dbus_object_path);

-

-  gchar *s;

-  s = g_strdup_printf ("%s/0",dbus_object_path);

-  object = object_skeleton_new (s);

-  g_free (s);

-

-  flash = flash_skeleton_new ();

-  object_skeleton_set_flash (object, flash);

-  g_object_unref (flash);

-

-  //define method callbacks here

-  g_signal_connect (flash,

+		//define method callbacks here

+		g_signal_connect (flash,

                     "handle-update-via-file",

                     G_CALLBACK (on_update_via_file),

                     NULL); /* user_data */

   

-  /* Export the object (@manager takes its own reference to @object) */

-  g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));

-  g_object_unref (object);

+		/* Export the object (@manager takes its own reference to @object) */

+		g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));

+  		g_object_unref (object);

+	}

 

-  /* Export all objects */

-  g_dbus_object_manager_server_set_connection (manager, connection);

+	/* Export all objects */

+	g_dbus_object_manager_server_set_connection (manager, connection);

 }

 

 static void

diff --git a/objects/power_control_obj.c b/objects/power_control_obj.c
index a290653..26006b4 100644
--- a/objects/power_control_obj.c
+++ b/objects/power_control_obj.c
@@ -7,7 +7,8 @@
 #include <sys/stat.h>

 #include <sys/mman.h>

 #include "interfaces/power_control.h"

-#include "objects/openbmc_utilities.h"

+#include "openbmc.h"

+#include "gpio.h"

 

 /* ---------------------------------------------------------------------------------------------------- */

 static const gchar* dbus_object_path = "/org/openbmc/control/Power";

@@ -17,7 +18,6 @@
 GPIO pgood        = (GPIO){ "PGOOD" };

 

 static GDBusObjectManagerServer *manager = NULL;

-static ControlPower *control_power = NULL;

 

 static gboolean

 on_set_power_state (ControlPower          *pwr,

@@ -69,32 +69,40 @@
 {

 	ObjectSkeleton *object;

 	g_print ("Acquired a message bus connection: %s\n",name);

+ 	cmdline *cmd = user_data;

+	if (cmd->argc < 2)

+	{

+		g_print("No objects created.  Put object name(s) on command line\n");

+		return;

+	}	

+  	manager = g_dbus_object_manager_server_new (dbus_object_path);

+  	int i=0;

+  	for (i=1;i<cmd->argc;i++)

+  	{

+		gchar *s;

+  		s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]);

+  		object = object_skeleton_new (s);

+  		g_free (s);

 

-	manager = g_dbus_object_manager_server_new (dbus_object_path);

-	gchar *s;

-  	s = g_strdup_printf ("%s/0",dbus_object_path);

-  	object = object_skeleton_new (s);

-  	g_free (s);

+		ControlPower* control_power = control_power_skeleton_new ();

+		object_skeleton_set_control_power (object, control_power);

+		g_object_unref (control_power);

 

-	control_power = control_power_skeleton_new ();

-	object_skeleton_set_control_power (object, control_power);

-	g_object_unref (control_power);

+		//define method callbacks here

+		g_signal_connect (control_power,

+        	            "handle-set-power-state",

+                	    G_CALLBACK (on_set_power_state),

+                	    NULL); /* user_data */

 

-	//define method callbacks here

-	g_signal_connect (control_power,

-                    "handle-set-power-state",

-                    G_CALLBACK (on_set_power_state),

-                    NULL); /* user_data */

+		g_signal_connect (control_power,

+                	    "handle-get-power-state",

+                	    G_CALLBACK (on_get_power_state),

+                	    NULL); /* user_data */

 

-	g_signal_connect (control_power,

-                    "handle-get-power-state",

-                    G_CALLBACK (on_get_power_state),

-                    NULL); /* user_data */

-

-	/* Export the object (@manager takes its own reference to @object) */

-	g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));

-	g_object_unref (object);

-

+		/* Export the object (@manager takes its own reference to @object) */

+		g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));

+		g_object_unref (object);

+	}

 	/* Export all objects */

 	g_dbus_object_manager_server_set_connection (manager, connection);

 

@@ -120,9 +128,10 @@
   g_print ("Lost the name %s\n", name);

 }

 

-static gboolean

-poll_pgood()

+static gboolean poll_pgood(gpointer user_data)

 {

+	ControlPower *control_power = object_get_control_power((Object*)user_data);

+

 	if (pgood.fd >= 0)

 	{

 		uint8_t gpio = gpio_read(&pgood);

diff --git a/objects/sensor_host_status_obj.c b/objects/sensor_host_status_obj.c
index 17085e4..df5c326 100644
--- a/objects/sensor_host_status_obj.c
+++ b/objects/sensor_host_status_obj.c
@@ -1,82 +1,95 @@
-#include "interfaces/sensor.h"

+#include "interfaces/sensor2.h"

+#include "openbmc.h"

+

 

 /* ---------------------------------------------------------------------------------------------------- */

+

 static const gchar* dbus_object_path = "/org/openbmc/sensors/HostStatus";

 static const gchar* dbus_name        = "org.openbmc.sensors.HostStatus";

+static const guint poll_interval = 3000;

+static guint heartbeat = 0;

 

 static GDBusObjectManagerServer *manager = NULL;

-static SensorIntegerSettable *sensor = NULL;

 

 static gboolean

-on_get_units    (SensorIntegerSettable  *sen,

+on_get_units    (SensorInteger  *sen,

                 GDBusMethodInvocation  *invocation,

                 gpointer                user_data)

 {

-  const gchar* val = sensor_integer_settable_get_units(sen);

-  sensor_integer_settable_complete_get_units(sen,invocation,val);

+  const gchar* val = sensor_integer_get_units(sen);

+  sensor_integer_complete_get_units(sen,invocation,val);

   return TRUE;

 }

 

 static gboolean

-on_get          (SensorIntegerSettable  *sen,

+on_get (SensorInteger                 *sen,

                 GDBusMethodInvocation  *invocation,

                 gpointer                user_data)

 {

-  guint val = sensor_integer_settable_get_value(sen);

-  sensor_integer_settable_complete_get_value(sen,invocation,val);

+  guint reading = sensor_integer_get_value(sen);

+  sensor_integer_complete_get_value(sen,invocation,reading);

   return TRUE;

 }

+

 static gboolean

-on_set          (SensorIntegerSettable  *sen,

+on_set_config (SensorInteger                 *sen,

                 GDBusMethodInvocation  *invocation,

-                guint                   value,

+		gchar**                  config,

                 gpointer                user_data)

 {

-  sensor_integer_settable_set_value(sen,value);

-  sensor_integer_settable_complete_set_value(sen,invocation);

-  sensor_integer_settable_emit_changed(sen,value);

+  sensor_integer_complete_set_config_data(sen,invocation);

   return TRUE;

 }

 

+

 static void 

 on_bus_acquired (GDBusConnection *connection,

                  const gchar     *name,

                  gpointer         user_data)

 {

-  ObjectSkeleton *object;

-  guint n;

+  	g_print ("Acquired a message bus connection: %s\n",name);

 

-  g_print ("Acquired a message bus connection: %s\n",name);

+  	cmdline *cmd = user_data;

+	if (cmd->argc < 2)

+	{

+		g_print("No objects created.  Put object name(s) on command line\n");

+		return;

+	}	

+  	manager = g_dbus_object_manager_server_new (dbus_object_path);

+  	int i=0;

+  	for (i=1;i<cmd->argc;i++)

+  	{

+		gchar *s;

+ 		s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]);

+		ObjectSkeleton *object = object_skeleton_new (s);

+		g_free (s);

 

-  manager = g_dbus_object_manager_server_new (dbus_object_path);

-

-  gchar *s;

-  s = g_strdup_printf ("%s/0",dbus_object_path);

-  object = object_skeleton_new (s);

-  g_free (s);

-

-  sensor = sensor_integer_settable_skeleton_new ();

-  object_skeleton_set_sensor_integer_settable (object, sensor);

-  g_object_unref (sensor);

-

-  //define method callbacks here

-  g_signal_connect (sensor,

+		SensorInteger *sensor = sensor_integer_skeleton_new ();

+  		object_skeleton_set_sensor_integer (object, sensor);

+  		g_object_unref (sensor);

+		

+  		// set units

+  		sensor_integer_set_units(sensor,"C");

+  		//define method callbacks here

+  		g_signal_connect (sensor,

                     "handle-get-value",

                     G_CALLBACK (on_get),

                     NULL); /* user_data */

-  g_signal_connect (sensor,

-                    "handle-set-value",

-                    G_CALLBACK (on_set),

-                    NULL); /* user_data */

-  g_signal_connect (sensor,

+  		g_signal_connect (sensor,

                     "handle-get-units",

                     G_CALLBACK (on_get_units),

                     NULL); /* user_data */

 

-  sensor_integer_settable_set_units(sensor,"");

-  /* Export the object (@manager takes its own reference to @object) */

-  g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));

-  g_object_unref (object);

+  		g_signal_connect (sensor,

+                    "handle-set-config-data",

+                    G_CALLBACK (on_set_config),

+                    NULL); /* user_data */

+ 

+

+  		/* Export the object (@manager takes its own reference to @object) */

+  		g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));

+  		g_object_unref (object);

+	}

 

   /* Export all objects */

   g_dbus_object_manager_server_set_connection (manager, connection);

@@ -98,13 +111,15 @@
   g_print ("Lost the name %s\n", name);

 }

 

+

 gint

 main (gint argc, gchar *argv[])

 {

   GMainLoop *loop;

-

+  cmdline cmd;

+  cmd.argc = argc;

+  cmd.argv = argv;

   guint id;

-  //g_type_init ();

   loop = g_main_loop_new (NULL, FALSE);

 

   id = g_bus_own_name (G_BUS_TYPE_SESSION,

@@ -114,8 +129,9 @@
                        on_bus_acquired,

                        on_name_acquired,

                        on_name_lost,

-                       loop,

+                       &cmd,

                        NULL);

+

   g_main_loop_run (loop);

   

   g_bus_unown_name (id);

diff --git a/objects/sensor_temperature_ambient_obj.c b/objects/sensor_temperature_ambient_obj.c
index 8a05fd2..b1271e9 100644
--- a/objects/sensor_temperature_ambient_obj.c
+++ b/objects/sensor_temperature_ambient_obj.c
@@ -1,23 +1,54 @@
-#include "interfaces/sensor.h"

-

+#include "interfaces/sensor2.h"

+#include "openbmc.h"

+#include "sensor_threshold.h"

 

 

 /* ---------------------------------------------------------------------------------------------------- */

-typedef enum { NORMAL,LOWER_CRITICAL,LOWER_WARNING,UPPER_WARNING,UPPER_CRITICAL } threshold_states;

-

 

 static const gchar* dbus_object_path = "/org/openbmc/sensors/Temperature/Ambient";

 static const gchar* dbus_name        = "org.openbmc.sensors.Temperature.Ambient";

-

-

+static const guint poll_interval = 3000;

+static guint heartbeat = 0;

 

 static GDBusObjectManagerServer *manager = NULL;

-static SensorInteger *sensor = NULL;

 

 static gchar* i2c_bus = "";

 static gchar* i2c_address = "";

-static gboolean thresholds_set = FALSE;

 

+static gboolean

+poll_sensor(gpointer user_data)

+{

+	SensorInteger *sensor = object_get_sensor_integer((Object*)user_data);

+	SensorIntegerThreshold *threshold = object_get_sensor_integer_threshold((Object*)user_data);

+

+ 	guint value = sensor_integer_get_value(sensor);

+	//TOOD:  Change to actually read sensor

+	value = value+1;

+

+	if (heartbeat > 10000)

+	{

+		heartbeat = 0;

+		g_print(">>> Send Heartbeat\n");

+		sensor_integer_emit_heartbeat(sensor);

+	}

+	else

+ 	{

+		heartbeat = heartbeat+poll_interval;

+	}

+

+    // End actually reading sensor

+    g_print("Polling sensor:  %d\n",value);

+

+    //if changed, set property and emit signal

+    if (value != sensor_integer_get_value(sensor))

+    {

+       g_print("Sensor changed\n");

+       sensor_integer_set_value(sensor,value);

+       sensor_integer_emit_changed(sensor,value);

+       check_thresholds(threshold,value);

+    }

+    return TRUE;

+}

 

 

 static gboolean

@@ -52,123 +83,71 @@
   return TRUE;

 }

 

-static gboolean

-on_set_thresholds (SensorInteger                 *sen,

-                   GDBusMethodInvocation  *invocation,

-		   guint                  lc,

-		   guint                  lw,

-		   guint                  uw,

-		   guint                  uc,

-                   gpointer               user_data)

-{

-  sensor_integer_set_threshold_lower_critical(sen,lc);

-  sensor_integer_set_threshold_lower_warning(sen,lw);

-  sensor_integer_set_threshold_upper_warning(sen,uw);

-  sensor_integer_set_threshold_upper_critical(sen,uc);

-  sensor_integer_complete_set_thresholds(sen,invocation);

-  thresholds_set = TRUE;

-  return TRUE;

-}

-

-static gboolean

-on_get_threshold_state (SensorInteger                 *sen,

-                   GDBusMethodInvocation  *invocation,

-                   gpointer               user_data)

-{

-  guint state = sensor_integer_get_threshold_state(sen);

-  sensor_integer_complete_get_threshold_state(sen,invocation,state);

-  return TRUE;

-}

-

-

-static gboolean

-check_thresholds()

-{

-  if (thresholds_set == TRUE) {

-  threshold_states state = NORMAL;

-  guint value = sensor_integer_get_value(sensor);

-

-  if (value < sensor_integer_get_threshold_lower_critical(sensor)) {

-    state = LOWER_CRITICAL;

-  }

-  else if(value < sensor_integer_get_threshold_lower_warning(sensor)) {

-    state = LOWER_WARNING;

-  }

-  else if(value > sensor_integer_get_threshold_upper_critical(sensor)) {

-    state = UPPER_CRITICAL;

-  }

-  else if(value > sensor_integer_get_threshold_upper_warning(sensor)) {

-    state = UPPER_WARNING;

-  }

-  // only emit signal if threshold state changes

-  if (state != sensor_integer_get_threshold_state(sensor))

-  {

-     sensor_integer_set_threshold_state(sensor,state);

-     if (state == LOWER_CRITICAL || state == UPPER_CRITICAL)

-     {

-       sensor_integer_emit_critical(sensor);

-       g_print("Critical\n");

-     }

-     else if (state == LOWER_WARNING || state == UPPER_WARNING)

-     {

-       sensor_integer_emit_warning(sensor);

-       g_print("Warning\n");

-     }

-  }

-  }

-}

 

 static void 

 on_bus_acquired (GDBusConnection *connection,

                  const gchar     *name,

                  gpointer         user_data)

 {

-  ObjectSkeleton *object;

-  guint n;

+  	g_print ("Acquired a message bus connection: %s\n",name);

 

-  g_print ("Acquired a message bus connection: %s\n",name);

+  	cmdline *cmd = user_data;

+	if (cmd->argc < 2)

+	{

+		g_print("No objects created.  Put object name(s) on command line\n");

+		return;

+	}	

+  	manager = g_dbus_object_manager_server_new (dbus_object_path);

+  	int i=0;

+  	for (i=1;i<cmd->argc;i++)

+  	{

+		gchar *s;

+ 		s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]);

+		ObjectSkeleton *object = object_skeleton_new (s);

+		g_free (s);

 

-  manager = g_dbus_object_manager_server_new (dbus_object_path);

+		SensorInteger *sensor = sensor_integer_skeleton_new ();

+  		object_skeleton_set_sensor_integer (object, sensor);

+  		g_object_unref (sensor);

+		

+		SensorIntegerThreshold *threshold = sensor_integer_threshold_skeleton_new();

+		object_skeleton_set_sensor_integer_threshold (object,threshold);

+		g_object_unref (threshold);

 

-  gchar *s;

-  s = g_strdup_printf ("%s/0",dbus_object_path);

-  object = object_skeleton_new (s);

-  g_free (s);

-

-  sensor = sensor_integer_skeleton_new ();

-  object_skeleton_set_sensor_integer (object, sensor);

-  g_object_unref (sensor);

-

-  sensor_integer_set_units(sensor,"C");

-  //define method callbacks here

-  g_signal_connect (sensor,

+  		// set units

+  		sensor_integer_set_units(sensor,"C");

+		sensor_integer_threshold_set_state(threshold,NOT_SET);

+  		//define method callbacks here

+  		g_signal_connect (sensor,

                     "handle-get-value",

                     G_CALLBACK (on_get),

                     NULL); /* user_data */

-  g_signal_connect (sensor,

+  		g_signal_connect (sensor,

                     "handle-get-units",

                     G_CALLBACK (on_get_units),

                     NULL); /* user_data */

 

-  g_signal_connect (sensor,

+  		g_signal_connect (sensor,

                     "handle-set-config-data",

                     G_CALLBACK (on_set_config),

                     NULL); /* user_data */

  

-  g_signal_connect (sensor,

-                    "handle-set-thresholds",

-                    G_CALLBACK (on_set_thresholds),

+  		g_signal_connect (threshold,

+                    "handle-set",

+                    G_CALLBACK (set_thresholds),

                     NULL); /* user_data */

 

-  g_signal_connect (sensor,

-                    "handle-get-threshold-state",

-                    G_CALLBACK (on_get_threshold_state),

+  		g_signal_connect (threshold,

+                    "handle-get-state",

+                    G_CALLBACK (get_threshold_state),

                     NULL); /* user_data */

 

+  		g_timeout_add(poll_interval, poll_sensor, object);

 

-  /* Export the object (@manager takes its own reference to @object) */

-  g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));

-  g_object_unref (object);

+  		/* Export the object (@manager takes its own reference to @object) */

+  		g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));

+  		g_object_unref (object);

+	}

 

   /* Export all objects */

   g_dbus_object_manager_server_set_connection (manager, connection);

@@ -190,35 +169,15 @@
   g_print ("Lost the name %s\n", name);

 }

 

-static gboolean

-poll_sensor()

-{

-    guint value = sensor_integer_get_value(sensor);

-    //TOOD:  Change to actually read sensor

-    value = value+1;

-    g_print("Polling sensor:  %d\n",value);

-

-    //if changed, set property and emit signal

-    if (value != sensor_integer_get_value(sensor))

-    {

-       g_print("Sensor changed\n");

-       sensor_integer_set_value(sensor,value);

-       sensor_integer_emit_changed(sensor,value);

-       if (thresholds_set == TRUE)

-       {

-         check_thresholds();

-       }

-    }

-    return TRUE;

-}

 

 gint

 main (gint argc, gchar *argv[])

 {

   GMainLoop *loop;

-

+  cmdline cmd;

+  cmd.argc = argc;

+  cmd.argv = argv;

   guint id;

-  //g_type_init ();

   loop = g_main_loop_new (NULL, FALSE);

 

   id = g_bus_own_name (G_BUS_TYPE_SESSION,

@@ -228,10 +187,9 @@
                        on_bus_acquired,

                        on_name_acquired,

                        on_name_lost,

-                       loop,

+                       &cmd,

                        NULL);

 

-  g_timeout_add(5000, poll_sensor, NULL);

   g_main_loop_run (loop);

   

   g_bus_unown_name (id);