summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRavi kumar Veeramally <ravikumar.veeramally@linux.intel.com>2013-02-28 16:01:47 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2013-02-28 16:59:25 +0100
commit33e8cd25024397a70789627fc761624182f92ac6 (patch)
tree5f7786ba78bdb5ff8d68c3afd6fa6d90f3096186 /src
parent52bf43e4d81c0b5659679fed82d50f3f16f408a3 (diff)
downloadneard-33e8cd25024397a70789627fc761624182f92ac6.tar.gz
neard-33e8cd25024397a70789627fc761624182f92ac6.tar.bz2
neard-33e8cd25024397a70789627fc761624182f92ac6.zip
agent: Add WSC field to handover agent API
WiFi out of band data is added to PushOOB request. Field name is WSC. OOB data format is following the WiFi simple configuration technical specification.
Diffstat (limited to 'src')
-rw-r--r--src/agent.c34
1 files changed, 28 insertions, 6 deletions
diff --git a/src/agent.c b/src/agent.c
index b7a1521..9ab9a9d 100644
--- a/src/agent.c
+++ b/src/agent.c
@@ -332,6 +332,19 @@ static struct carrier_data *parse_reply(DBusMessage *reply)
memcpy(c_data->data, oob_data, size);
c_data->size = size;
c_data->type = BT_MIME_V2_1;
+ } else if (strcasecmp(key, "WSC") == 0) {
+ int size;
+ void *oob_data;
+
+ if (var != DBUS_TYPE_ARRAY)
+ goto failed;
+
+ dbus_message_iter_recurse(&value, &array);
+ dbus_message_iter_get_fixed_array(&array, &oob_data,
+ &size);
+ memcpy(c_data->data, oob_data, size);
+ c_data->size = size;
+ c_data->type = WIFI_WSC_MIME;
}
dbus_message_iter_next(&data);
@@ -354,11 +367,11 @@ static const char *cps2string[] = {
"activating",
};
-static void prepare_bt_data(DBusMessage *message, struct carrier_data *data)
+static void prepare_data(DBusMessage *message, struct carrier_data *data)
{
DBusMessageIter iter;
DBusMessageIter dict;
- char *name;
+ char *name = NULL;
DBG("data %p", data);
@@ -369,10 +382,19 @@ static void prepare_bt_data(DBusMessage *message, struct carrier_data *data)
if (data != NULL) {
void *pdata = data->data;
- if (data->type == BT_MIME_V2_1)
+ switch (data->type) {
+ case BT_MIME_V2_1:
name = "EIR";
- else
+ break;
+
+ case BT_MIME_V2_0:
name = "nokia.com:bt";
+ break;
+
+ case WIFI_WSC_MIME:
+ name = "WSC";
+ break;
+ }
near_dbus_dict_append_fixed_array(&dict, name, DBUS_TYPE_BYTE,
&pdata, data->size);
@@ -409,7 +431,7 @@ struct carrier_data *__near_agent_handover_request_data(
if (message == NULL)
return NULL;
- prepare_bt_data(message, data);
+ prepare_data(message, data);
dbus_error_init(&error);
@@ -455,7 +477,7 @@ int __near_agent_handover_push_data(enum ho_agent_carrier carrier,
if (message == NULL)
return -ENOMEM;
- prepare_bt_data(message, data);
+ prepare_data(message, data);
dbus_error_init(&error);