Hello Gustavo,

Le 31/01/2011 21:51, Gustavo F. Padovan a écrit :
---
  plugins/bluetooth.c |   75 +++++++++++++++++++++++++++++++++++++++++++++++++++
  1 files changed, 75 insertions(+), 0 deletions(-)

diff --git a/plugins/bluetooth.c b/plugins/bluetooth.c
index dcf75e6..0b5a021 100644
--- a/plugins/bluetooth.c
+++ b/plugins/bluetooth.c
@@ -44,6 +44,43 @@ static GHashTable *adapter_address_hash = NULL;
  static GSList *server_list = NULL;
  static gint bluetooth_refcount;

+static const gchar *dun_record = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>  
 \
+<record>                                                                 \
+<attribute id=\"0x0001\">                                                      
\
+<sequence>                                                                     
  \
+<uuid value=\"0x1103\"/>                                                       
\
+</sequence>                                                                    
  \
+</attribute>                                                                   
  \
+                                                                               
\
+<attribute id=\"0x0004\">                                                      
\
+<sequence>                                                                     
  \
+<sequence>                                                               \
+<uuid value=\"0x0100\"/>                                               \
+</sequence>                                                              \
+<sequence>                                                               \
+<uuid value=\"0x0003\"/>                                               \
+<uint8 value=\"%u\" name=\"channel\"/>                                       \
+</sequence>                                                              \
+<sequence>                                                               \
+<uuid value=\"0x0008\"/>                                               \
+</sequence>                                                              \
+</sequence>                                                                    
  \
+</attribute>                                                                   
  \
+                                                                               
\
+<attribute id=\"0x0009\">                                                      
\
+<sequence>                                                                     
  \
+<sequence>                                                               \
+<uuid value=\"0x1103\"/>                                               \
+<uint16 value=\"0x0100\" name=\"version\"/>                          \
+</sequence>                                                              \
+</sequence>                                                                    
  \
+</attribute>                                                                   
  \
+                                                                               
\
+<attribute id=\"0x0100\">                                                      
\
+<text value=\"%s\" name=\"name\"/>                                           \
+</attribute>                                                                   
  \
+</record>";
+
Why do you set the SDP record in the generic bluetooth code ?
I think this should be moved to dun_gw code.

  struct server {
        guint16         service;
        gchar           *name;
@@ -451,12 +488,40 @@ static void new_connection(GIOChannel *io, gpointer 
user_data)
        DBG("%p", server);
  }

+static void add_record_cb(DBusPendingCall *call, gpointer user_data)
+{
+       struct server *server = user_data;
+       DBusMessage *reply = dbus_pending_call_steal_reply(call);
+       DBusError derr;
+       guint32 handle;
+
+       dbus_error_init(&derr);
+
+       if (dbus_set_error_from_message(&derr, reply)) {
+               ofono_error("Replied with an error: %s, %s",
+                                       derr.name, derr.message);
+               dbus_error_free(&derr);
+               server_stop(server);
+               goto done;
+       }
+
+       dbus_message_get_args(reply, NULL, DBUS_TYPE_UINT32,&handle,
+                                       DBUS_TYPE_INVALID);
+       server->handle = handle;
+
+       ofono_info("Registered: %s, handle: 0x%x", server->name, handle);
+
+done:
+       dbus_message_unref(reply);
+}
+
  static void server_start(gpointer data, gpointer user_data)
  {
        struct server *server = data;
        char *addr, *path = user_data;
        bdaddr_t baddr;
        GError *err = NULL;
+       gchar *xml;

        if (server->handle != 0)
                return;
@@ -478,6 +543,16 @@ static void server_start(gpointer data, gpointer user_data)
        }

        server->adapter = g_strdup(path);
+
+       xml = g_markup_printf_escaped(dun_record, server->channel,
+                                       server->name);
+
+       bluetooth_send_with_reply(path, BLUEZ_SERVICE_INTERFACE, "AddRecord",
+                                       add_record_cb, server, NULL, -1,
+                                       DBUS_TYPE_STRING,&xml,
+                                       DBUS_TYPE_INVALID);
+
+       g_free(xml);
  }

  static void adapter_properties_cb(DBusPendingCall *call, gpointer user_data)


--
Frederic Danis                            Open Source Technology Centre
frederic.da...@intel.com                              Intel Corporation

_______________________________________________
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono

Reply via email to