[maemo-commits] [maemo-commits] r8514 - projects/haf/branches/hildon-fm/1.x/hildon-fm

From: www-data at stage.maemo.org www-data at stage.maemo.org
Date: Thu Nov 30 18:29:01 EET 2006
Author: marivoll
Date: 2006-11-30 18:29:00 +0200 (Thu, 30 Nov 2006)
New Revision: 8514

Modified:
   projects/haf/branches/hildon-fm/1.x/hildon-fm/hildon-file-system-settings.c
Log:
	* hildon-fm/hildon-file-system-settings.c
	(hildon_file_system_settings_get_property,
	hildon_file_system_settings_class_init): Added "bonding-changed"
	property.
	(hildon_file_system_settings_setup_dbus): Catch bonding signals
	from Bluez.
	(hildon_file_system_settings_handle_dbus_signal): Handle them.


Modified: projects/haf/branches/hildon-fm/1.x/hildon-fm/hildon-file-system-settings.c
===================================================================
--- projects/haf/branches/hildon-fm/1.x/hildon-fm/hildon-file-system-settings.c	2006-11-30 16:22:03 UTC (rev 8513)
+++ projects/haf/branches/hildon-fm/1.x/hildon-fm/hildon-file-system-settings.c	2006-11-30 16:29:00 UTC (rev 8514)
@@ -62,7 +62,8 @@
   PROP_MMC_USED,
   PROP_MMC_CORRUPTED,
   PROP_INTERNAL_MMC_CORRUPTED,
-  PROP_IAP_CONNECTED
+  PROP_IAP_CONNECTED,
+  PROP_BONDING_CHANGED
 };
 
 #define PRIVATE(obj) HILDON_FILE_SYSTEM_SETTINGS(obj)->priv
@@ -83,6 +84,14 @@
 #define ICD_MATCH_RULE "type='signal',interface='" ICD_DBUS_INTERFACE \
                        "',member='" ICD_STATUS_CHANGED_SIG "'"
 
+#define BT_BONDING_CREATED_RULE "type='signal',"                 \
+                                "interface='org.bluez.Adapter'," \
+                                "member='BondingCreated'"
+
+#define BT_BONDING_REMOVED_RULE "type='signal',"                 \
+                                "interface='org.bluez.Adapter'," \
+                                "member='BondingRemoved'"
+
 /* For getting and tracking the Bluetooth name
  */
 #define BTNAME_SERVICE                  "org.bluez"
@@ -163,6 +172,9 @@
     case PROP_IAP_CONNECTED:
       g_value_set_boolean(value, priv->iap_connected);
       break;
+    case PROP_BONDING_CHANGED:
+      g_value_set_boolean(value, TRUE);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -370,18 +382,25 @@
   g_assert(HILDON_IS_FILE_SYSTEM_SETTINGS(data));
 
   if (dbus_message_is_signal(msg, MCE_SIGNAL_IF, MCE_DEVICE_MODE_SIG))
-  {
-    set_flight_mode_from_message(HILDON_FILE_SYSTEM_SETTINGS(data), msg);
-  }
+    {
+      set_flight_mode_from_message(HILDON_FILE_SYSTEM_SETTINGS(data), msg);
+    }
   else if (dbus_message_is_signal(msg, BTNAME_SIGNAL_IF, BTNAME_SIG_CHANGED))
-  {
-    set_bt_name_from_message(HILDON_FILE_SYSTEM_SETTINGS(data), msg);
-  }
+    {
+      set_bt_name_from_message(HILDON_FILE_SYSTEM_SETTINGS(data), msg);
+    }
+  else if (dbus_message_is_signal(msg, "org.bluez.Adapter", "BondingCreated")
+	   || dbus_message_is_signal(msg, "org.bluez.Adapter",
+				     "BondingRemoved"))
+    {
+      fprintf (stderr, "BONDING CHANGED\n");
+      g_object_notify (data, "bonding-changed");
+    }
   else if (dbus_message_is_signal (msg, ICD_DBUS_INTERFACE,
 				   ICD_STATUS_CHANGED_SIG))
-  {
-    set_icd_status_from_message (HILDON_FILE_SYSTEM_SETTINGS (data), msg);
-  }
+    {
+      set_icd_status_from_message (HILDON_FILE_SYSTEM_SETTINGS (data), msg);
+    }
 				   
   return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
 }
@@ -529,6 +548,22 @@
       dbus_error_free (&error);
     }
 
+  dbus_error_init (&error);
+  dbus_bus_add_match (conn, BT_BONDING_CREATED_RULE, &error);
+  if (dbus_error_is_set(&error))
+    {
+      ULOG_ERR_F("dbus_bus_add_match failed: %s\n", error.message);
+      dbus_error_free (&error);
+    }
+
+  dbus_error_init (&error);
+  dbus_bus_add_match (conn, BT_BONDING_REMOVED_RULE, &error);
+  if (dbus_error_is_set(&error))
+    {
+      ULOG_ERR_F("dbus_bus_add_match failed: %s\n", error.message);
+      dbus_error_free (&error);
+    }
+
   if (!dbus_connection_add_filter(conn,
       hildon_file_system_settings_handle_dbus_signal, self, NULL))
   {
@@ -658,6 +693,10 @@
     g_param_spec_boolean("iap-connected", "IAP Connected",
 	                 "Whether or not we have a internet connection",
 			 FALSE, G_PARAM_READABLE));
+  g_object_class_install_property(object_class, PROP_BONDING_CHANGED,
+    g_param_spec_boolean("bonding-changed", "Bluetooth bondings changed",
+	                 "Hack: only used for notify signals...",
+			 FALSE, G_PARAM_READABLE));
 }
 
 static gboolean delayed_init(gpointer data)


More information about the maemo-commits mailing list