OSDN Git Service

android: Add support for notify variant in SSP request event
authorSzymon Janc <szymon.janc@gmail.com>
Thu, 31 Oct 2013 02:55:52 +0000 (02:55 +0000)
committerJohan Hedberg <johan.hedberg@intel.com>
Thu, 31 Oct 2013 08:50:38 +0000 (10:50 +0200)
android/adapter.c

index 1eb3b9c..23ad974 100644 (file)
@@ -329,6 +329,26 @@ static void user_passkey_request_callback(uint16_t index, uint16_t length,
        send_ssp_request(&ev->addr.bdaddr, HAL_SSP_VARIANT_ENTRY, 0);
 }
 
+static void user_passkey_notify_callback(uint16_t index, uint16_t length,
+                                       const void *param, void *user_data)
+{
+       const struct mgmt_ev_passkey_notify *ev = param;
+       char dst[18];
+
+       if (length < sizeof(*ev)) {
+               error("Too small passkey notify event");
+               return;
+       }
+
+       ba2str(&ev->addr.bdaddr, dst);
+       DBG("%s entered %u", dst, ev->entered);
+
+       /* HAL seems to not support entered characters */
+       if (!ev->entered)
+               send_ssp_request(&ev->addr.bdaddr, HAL_SSP_VARIANT_NOTIF,
+                                                               ev->passkey);
+}
+
 static void register_mgmt_handlers(void)
 {
        mgmt_register(adapter->mgmt, MGMT_EV_NEW_SETTINGS, adapter->index,
@@ -355,6 +375,10 @@ static void register_mgmt_handlers(void)
        mgmt_register(adapter->mgmt, MGMT_EV_USER_PASSKEY_REQUEST,
                                adapter->index, user_passkey_request_callback,
                                NULL, NULL);
+
+       mgmt_register(adapter->mgmt, MGMT_EV_PASSKEY_NOTIFY, adapter->index,
+                               user_passkey_notify_callback, NULL, NULL);
+
 }
 
 static void load_link_keys_complete(uint8_t status, uint16_t length,