add sensor changed event
diff --git a/objects/hwmons_barreleye.c b/objects/hwmons_barreleye.c
index af25986..9f26070 100644
--- a/objects/hwmons_barreleye.c
+++ b/objects/hwmons_barreleye.c
@@ -12,9 +12,11 @@
 static GDBusObjectManagerServer *manager = NULL;

 

 typedef struct {

-  gchar* filename;

-  gchar* name;

+  const gchar* filename;

+  const gchar* name;

   int poll_interval;

+  const gchar* units;

+  int scale;

   int fd;

 } HWMON;

 

@@ -23,13 +25,13 @@
 // TODO: Don't hardcode

 //Hardcoded for barreleye

 HWMON hwmons[NUM_HWMONS] = { 

-	(HWMON){"/sys/class/hwmon/hwmon0/temp1_input","temperature/ambient",3000},

-	(HWMON){"/sys/class/hwmon/hwmon1/pwm1","speed/fan0",30000},

-	(HWMON){"/sys/class/hwmon/hwmon1/pwm2","speed/fan1",30000},

-	(HWMON){"/sys/class/hwmon/hwmon1/pwm3","speed/fan2",30000},

-	(HWMON){"/sys/class/hwmon/hwmon2/pwm1","speed/fan3",30000},

-	(HWMON){"/sys/class/hwmon/hwmon2/pwm2","speed/fan4",30000},

-	(HWMON){"/sys/class/hwmon/hwmon2/pwm3","speed/fan5",30000},

+	(HWMON){"/sys/class/hwmon/hwmon0/temp1_input","temperature/ambient",3000,"C",1000},

+	(HWMON){"/sys/class/hwmon/hwmon1/pwm1","speed/fan0",30000,"",1},

+	(HWMON){"/sys/class/hwmon/hwmon1/pwm2","speed/fan1",30000,"",1},

+	(HWMON){"/sys/class/hwmon/hwmon1/pwm3","speed/fan2",30000,"",1},

+	(HWMON){"/sys/class/hwmon/hwmon2/pwm1","speed/fan3",30000,"",1},

+	(HWMON){"/sys/class/hwmon/hwmon2/pwm2","speed/fan4",30000,"",1},

+	(HWMON){"/sys/class/hwmon/hwmon2/pwm3","speed/fan5",30000,"",1},

 };

 

 // Gets the gpio device path from gpio manager object

@@ -86,10 +88,33 @@
 		{

 			g_print("ERROR: Unable to read value: %s\n",filename);

 		} else {

-			guint32 value = atoi(buf);

-			//g_print("%s = %d\n",filename,value);

+			guint32 scale = hwmon_get_scale(hwmon);

+			if (scale == 0)

+			{

+				g_print("ERROR: Invalid scale value of 0\n");

+				scale = 1;

+				

+			}

+			guint32 value = atoi(buf)/scale;

 			GVariant* v = NEW_VARIANT_U(value);

-			sensor_value_set_value(sensor,v);

+			GVariant* old_value = sensor_value_get_value(sensor);

+			bool do_set = false;

+			if (old_value == NULL)

+			{

+				do_set = true;

+			}

+			else

+			{

+				if (GET_VARIANT_U(old_value) != value) { do_set = true; }

+			}

+			if (do_set)

+			{

+				g_print("Sensor changed: %s,%d\n",filename,value);

+				GVariant* v = NEW_VARIANT_U(value);

+				const gchar* units = sensor_value_get_units(sensor);

+				sensor_value_set_value(sensor,v);

+				sensor_value_emit_changed(sensor,v,units);

+			}

 		}

 		close(fd);

 	} else {

@@ -139,8 +164,6 @@
 	int i = 0;

 	for (i=0;i<NUM_HWMONS;i++)

   	{

-		//hwmon_init(connection,&hwmons[i]);

-

 		gchar *s;

 		s = g_strdup_printf ("%s/%s",dbus_object_path,hwmons[i].name);

 		object = object_skeleton_new (s);

@@ -159,6 +182,8 @@
 		g_object_unref (mapper);

 

 		hwmon_set_sysfs_path(hwmon,hwmons[i].filename);

+		hwmon_set_scale(hwmon,hwmons[i].scale);

+		sensor_value_set_units(sensor,hwmons[i].units);

 

 		//define method callbacks here

 		g_signal_connect (sensor,