+static void
+get_default_adapter_cb (DBusConnection *conn,
+ DBusMessage *message)
+{
+ DBusMessageIter iter;
+ gchar* path = NULL;
+ DBusError error;
+ DBusMessage *msg, *adapterMsg;
+
+ dbus_message_iter_init (message, &iter);
+ dbus_message_iter_get_basic (&iter, &path);
+
+ if (!path)
+ return;
+
+ adapterMsg = dbus_message_new_method_call ("org.bluez", path,
+ "org.bluez.Adapter",
+ "GetProperties");
+
+ dbus_error_init (&error);
+ msg = dbus_connection_send_with_reply_and_block (conn, adapterMsg, -1, &error);
+ if (msg) {
+ g_debug ("Getting the properties");
+ get_properties_cb (msg);
+ dbus_message_unref (msg);
+ }
+ dbus_message_unref (adapterMsg);
+}
+
+void
+modest_maemo_utils_get_device_name (void)
+{
+ static DBusConnection *conn = NULL;
+ DBusMessage *request;
+ DBusError error;
+ DBusMessage *msg;
+
+ dbus_error_init (&error);
+ if (!conn) {
+ conn = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
+ if (!conn) {
+ g_printerr ("modest: cannot get on the dbus: %s: %s\n",
+ error.name, error.message);
+ dbus_error_free (&error);
+ return;
+ }
+ }
+
+ /* Get the default adapter */
+ request = dbus_message_new_method_call ("org.bluez", "/" ,
+ "org.bluez.Manager",
+ "DefaultAdapter");
+
+ msg = dbus_connection_send_with_reply_and_block (conn, request, -1, &error);
+ if (msg) {
+ g_debug ("Getting the default adapter");
+ get_default_adapter_cb (conn, msg);
+ dbus_message_unref (msg);
+ }
+ dbus_message_unref (request);
+}
+