Support for internal API to identify internal bonding 03/206903/4
authorSudipto Bal <sudipto.bal@samsung.com>
Mon, 3 Jun 2019 11:51:10 +0000 (17:21 +0530)
committerSudipto Bal <sudipto.bal@samsung.com>
Mon, 3 Jun 2019 11:51:10 +0000 (17:21 +0530)
Change-Id: Ic22690a7422a0c2d74a766e0a8c47890ba83d99a
Signed-off-by: Sudipto Bal <sudipto.bal@samsung.com>
bt-api/bt-event-handler.c
bt-service-adaptation/services/device/bt-service-bonded-device.c
bt-service-adaptation/services/device/bt-service-core-device.c
include/bluetooth-api.h

index a0daa4a..39cb654 100644 (file)
@@ -613,34 +613,41 @@ void __bt_adapter_event_filter(GDBusConnection *connection,
                const char *address =  NULL;
                const char *name =  NULL;
                const char *str_passkey = NULL;
+               bool incoming = false;
 
                bluetooth_authentication_request_info_t auth_info;
                memset(&auth_info, 0x00, sizeof(bluetooth_authentication_request_info_t));
 
-               g_variant_get(parameters, "(i&s&s&s)", &result, &address, &name, &str_passkey);
+               g_variant_get(parameters, "(b&s&s&s)", &incoming, &address, &name, &str_passkey);
 
                g_strlcpy(auth_info.device_name.name, name,
                        BLUETOOTH_DEVICE_NAME_LENGTH_MAX + 1);
                _bt_convert_addr_string_to_type(auth_info.device_address.addr,
                        address);
                g_strlcpy(auth_info.str_passkey, str_passkey, strlen(str_passkey)+1);
+               auth_info.incoming = incoming;
 
+               BT_INFO("BLUETOOTH_EVENT_KEYBOARD_PASSKEY_DISPLAY");
                _bt_common_event_cb(BLUETOOTH_EVENT_KEYBOARD_PASSKEY_DISPLAY,
                        result, &auth_info,
                        event_info->cb, event_info->user_data);
        } else if (strcasecmp(signal_name, BT_PIN_REQ_RECEIVED) == 0) {
                const char *address =  NULL;
                const char *name =  NULL;
+               bool incoming = false;
 
                bluetooth_authentication_request_info_t auth_info;
                memset(&auth_info, 0x00, sizeof(bluetooth_authentication_request_info_t));
 
-               g_variant_get(parameters, "(i&s&s)", &result, &address, &name);
+               g_variant_get(parameters, "(b&s&s)", &incoming, &address, &name);
 
                g_strlcpy(auth_info.device_name.name, name,
                        BLUETOOTH_DEVICE_NAME_LENGTH_MAX + 1);
                _bt_convert_addr_string_to_type(auth_info.device_address.addr,
                        address);
+               auth_info.incoming = incoming;
+
+               BT_INFO("BLUETOOTH_EVENT_PIN_REQUEST");
 
                _bt_common_event_cb(BLUETOOTH_EVENT_PIN_REQUEST,
                        result, &auth_info,
@@ -648,16 +655,20 @@ void __bt_adapter_event_filter(GDBusConnection *connection,
        } else if (strcasecmp(signal_name, BT_PASSKEY_REQ_RECEIVED) == 0) {
                const char *address = NULL;
                const char *name =  NULL;
+               bool incoming = false;
 
                bluetooth_authentication_request_info_t auth_info;
                memset(&auth_info, 0x00, sizeof(bluetooth_authentication_request_info_t));
 
-               g_variant_get(parameters, "(i&s&s)", &result, &address, &name);
+               g_variant_get(parameters, "(b&s&s)", &incoming, &address, &name);
 
                g_strlcpy(auth_info.device_name.name, name,
                        BLUETOOTH_DEVICE_NAME_LENGTH_MAX + 1);
                _bt_convert_addr_string_to_type(auth_info.device_address.addr,
                        address);
+               auth_info.incoming = incoming;
+
+               BT_INFO("BLUETOOTH_EVENT_PASSKEY_REQUEST");
 
                _bt_common_event_cb(BLUETOOTH_EVENT_PASSKEY_REQUEST,
                        result, &auth_info,
@@ -666,17 +677,21 @@ void __bt_adapter_event_filter(GDBusConnection *connection,
                const char *address =  NULL;
                const char *name =  NULL;
                const char *str_passkey = NULL;
+               bool incoming = false;
 
                bluetooth_authentication_request_info_t auth_info;
                memset(&auth_info, 0x00, sizeof(bluetooth_authentication_request_info_t));
 
-               g_variant_get(parameters, "(i&s&s&s)", &result, &address, &name, &str_passkey);
+               g_variant_get(parameters, "(b&s&s&s)", &incoming, &address, &name, &str_passkey);
 
                g_strlcpy(auth_info.device_name.name, name,
                        BLUETOOTH_DEVICE_NAME_LENGTH_MAX + 1);
                _bt_convert_addr_string_to_type(auth_info.device_address.addr,
                        address);
                g_strlcpy(auth_info.str_passkey, str_passkey, strlen(str_passkey)+1);
+               auth_info.incoming = incoming;
+
+               BT_INFO("BLUETOOTH_EVENT_PASSKEY_CONFIRM_REQUEST");
 
                _bt_common_event_cb(BLUETOOTH_EVENT_PASSKEY_CONFIRM_REQUEST,
                        result, &auth_info,
index 5c859fd..795ed52 100644 (file)
@@ -536,6 +536,7 @@ int _bt_get_bonded_device_info(bluetooth_device_address_t *dev_addr)
        }
 
        _bt_convert_addr_type_to_string(address, dev_addr->addr);
+
        rem_info = _bt_service_get_remote_dev_info(address);
        if (!rem_info) {
                BT_ERR("Bonded device not found in the list, return error");
index abd1bb8..d896869 100644 (file)
@@ -1123,6 +1123,7 @@ static void __bt_device_pin_request_callback(remote_device_t* pin_req_event)
        GVariant *param;
        char address[BT_ADDRESS_STRING_SIZE];
        char pin_code[BLUETOOTH_PIN_CODE_MAX_LENGTH + 1];
+       bool incoming = false;
        BT_DBG("+");
 
        _bt_convert_addr_type_to_string(address, pin_req_event->address.addr);
@@ -1159,7 +1160,11 @@ static void __bt_device_pin_request_callback(remote_device_t* pin_req_event)
                device_accept_pin_request(&pin_req_event->address, str_passkey);
 
                BT_DBG("Send BLUETOOTH_EVENT_KEYBOARD_PASSKEY_DISPLAY");
-               param = g_variant_new("(isss)", BLUETOOTH_ERROR_NONE, address, pin_req_event->name, str_passkey);
+
+               if(trigger_bond_info == NULL)
+                       incoming = true;
+
+               param = g_variant_new("(bsss)", incoming, address, pin_req_event->name, str_passkey);
                _bt_send_event(BT_ADAPTER_EVENT,
                                BLUETOOTH_EVENT_KEYBOARD_PASSKEY_DISPLAY, param);
                BT_DBG("Key board pairing in process");
@@ -1174,7 +1179,11 @@ static void __bt_device_pin_request_callback(remote_device_t* pin_req_event)
                        trigger_pairing_info->is_ssp = FALSE;
 
                        BT_DBG("Send BLUETOOTH_EVENT_PIN_REQUEST");
-                       param = g_variant_new("(iss)", BLUETOOTH_ERROR_NONE, address, pin_req_event->name);
+
+                       if(trigger_bond_info == NULL)
+                               incoming = true;
+
+                       param = g_variant_new("(bss)", incoming, address, pin_req_event->name);
                        _bt_send_event(BT_ADAPTER_EVENT,
                                        BLUETOOTH_EVENT_PIN_REQUEST, param);
                }
@@ -1192,7 +1201,8 @@ static void __bt_device_ssp_passkey_entry_callback(remote_device_t* dev_info)
        gchar address[BT_ADDRESS_STR_LEN];
        char *p_addr;
        gchar *name;
-       int result = BLUETOOTH_ERROR_NONE;
+       bool incoming = false;
+
        BT_DBG("+");
 
        _bt_convert_addr_type_to_string(address, dev_info->address.addr);
@@ -1217,7 +1227,10 @@ static void __bt_device_ssp_passkey_entry_callback(remote_device_t* dev_info)
        trigger_pairing_info->addr = g_strdup(address);
        trigger_pairing_info->is_ssp = TRUE;
 
-       param = g_variant_new("(iss)", result, p_addr, name);
+       if(trigger_bond_info == NULL)
+               incoming = true;
+
+       param = g_variant_new("(bss)", incoming, p_addr, name);
        _bt_send_event(BT_ADAPTER_EVENT,
                        BLUETOOTH_EVENT_PASSKEY_REQUEST, param);
        BT_DBG("-");
@@ -1230,7 +1243,7 @@ static void __bt_device_ssp_passkey_confirmation_callback(event_dev_passkey_t *d
        char *p_addr;
        gchar *name;
        char str_passkey[7];
-       int result = BLUETOOTH_ERROR_NONE;
+       bool incoming = false; /*Stores if bonding request is incoming(true) or outgoing(false) */
        BT_DBG("+");
 
        _bt_convert_addr_type_to_string(address, dev_info->device_info.address.addr);
@@ -1258,7 +1271,11 @@ static void __bt_device_ssp_passkey_confirmation_callback(event_dev_passkey_t *d
        BT_DBG("Send BLUETOOTH_EVENT_PASSKEY_CONFIRMATION");
        snprintf(str_passkey, sizeof(str_passkey), "%.6d", dev_info->pass_key);
 
-       param = g_variant_new("(isss)", result, p_addr, name, str_passkey);
+       /*Storing if bond is incoming or outgoing*/
+       if(trigger_bond_info == NULL)
+               incoming = true;
+
+       param = g_variant_new("(bsss)", incoming, p_addr, name, str_passkey);
        _bt_send_event(BT_ADAPTER_EVENT,
                        BLUETOOTH_EVENT_PASSKEY_CONFIRM_REQUEST, param);
        BT_DBG("-");
@@ -1271,7 +1288,7 @@ static void __bt_device_ssp_passkey_display_callback(event_dev_passkey_t *dev_in
        char *p_addr;
        gchar *name;
        char str_passkey[7];
-       int result = BLUETOOTH_ERROR_NONE;
+       bool incoming = false;
        BT_DBG("+");
 
        _bt_convert_addr_type_to_string(address, dev_info->device_info.address.addr);
@@ -1299,7 +1316,11 @@ static void __bt_device_ssp_passkey_display_callback(event_dev_passkey_t *dev_in
        BT_DBG("Send BLUETOOTH_EVENT_KEYBOARD_PASSKEY_DISPLAY");
        snprintf(str_passkey, sizeof(str_passkey), "%06d", dev_info->pass_key);
 
-       param = g_variant_new("(isss)", result, p_addr, name, str_passkey);
+       if(trigger_bond_info == NULL)
+               incoming = true;
+
+        param = g_variant_new("(bsss)", incoming, p_addr, name, str_passkey);
+
        if (passkey_watcher) {
                BT_INFO("Send passkey to %s", passkey_watcher);
                _bt_send_event_to_dest(passkey_watcher, BT_ADAPTER_EVENT,
index f7ee242..40ff4e9 100644 (file)
@@ -1280,6 +1280,7 @@ typedef struct {
        bluetooth_device_address_t device_address;  /**< remote device address */
        bluetooth_device_name_t device_name;        /**< device name */
        char str_passkey[BLUETOOTH_DEVICE_PASSKEY_LENGTH_MAX]; /**< pass-key string */
+       bool incoming; /**< stores if bonding request is incoming */
 } bluetooth_authentication_request_info_t;
 
 /**