diff options
author | Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com> | 2013-02-28 16:01:47 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2013-02-28 16:59:25 +0100 |
commit | 33e8cd25024397a70789627fc761624182f92ac6 (patch) | |
tree | 5f7786ba78bdb5ff8d68c3afd6fa6d90f3096186 | |
parent | 52bf43e4d81c0b5659679fed82d50f3f16f408a3 (diff) | |
download | neard-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.
-rw-r--r-- | doc/agent-api.txt | 6 | ||||
-rw-r--r-- | src/agent.c | 34 |
2 files changed, 34 insertions, 6 deletions
diff --git a/doc/agent-api.txt b/doc/agent-api.txt index e12b785..1500d81 100644 --- a/doc/agent-api.txt +++ b/doc/agent-api.txt @@ -70,6 +70,12 @@ Fields array{byte} EIR This is a proprietary extension blob used by some Nokia Bluetooth 2.0 devices. + array{byte} WSC + + This is a WiFi blob as described in WiFi Simple + Configuration Technical Specification v2.0.2.1-rev4. + (Annex L - Data Element Definitions) + string State Carrier power state. This is a hint for handover agent 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); |