diff options
author | injun.yang <injun.yang@samsung.com> | 2018-05-17 18:33:56 +0900 |
---|---|---|
committer | injun.yang <injun.yang@samsung.com> | 2018-05-18 13:17:22 +0900 |
commit | 2e0ca45fe8cb4c7f6691164877fc8be655fdf1a5 (patch) | |
tree | 1748aa0928439ae8b15adaafd31ce05fdf1c4da9 | |
parent | fd8e51badb18555cc2ff5980844af5cef087e43c (diff) | |
download | bluez-2e0ca45fe8cb4c7f6691164877fc8be655fdf1a5.tar.gz bluez-2e0ca45fe8cb4c7f6691164877fc8be655fdf1a5.tar.bz2 bluez-2e0ca45fe8cb4c7f6691164877fc8be655fdf1a5.zip |
Fix : Address is wrong in GATT Callback
[Problem] Address is wrong in GATT read/write callback
[Cause & Measure] Bluez pass IDA instead of first RPA.
If rpa existed then pass it into GATT read/write callback.
[Checking Method] GATT read/write in server
Change-Id: Id26144ca307572ae9ff6839a033f986f21285cb9
-rw-r--r-- | src/gatt-database.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/gatt-database.c b/src/gatt-database.c index 9d8511fa..88b5953a 100644 --- a/src/gatt-database.c +++ b/src/gatt-database.c @@ -2145,9 +2145,13 @@ static void read_setup_cb(DBusMessageIter *iter, void *user_data) #ifdef TIZEN_FEATURE_BLUEZ_MODIFY char dst_addr[18] = { 0 }; char *addr_value = dst_addr; - const bdaddr_t *bdaddr = device_get_address(op->device); - ba2str(bdaddr, dst_addr); + if (device_get_rpa_exist(op->device) == true) { + ba2str(device_get_rpa(op->device), dst_addr); + } else { + ba2str(device_get_address(op->device), dst_addr); + } + dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &addr_value); dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT32, &op->id); dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT16, &op->offset); @@ -2198,9 +2202,13 @@ static void write_setup_cb(DBusMessageIter *iter, void *user_data) char dst_addr[18] = { 0 }; char *addr_value = dst_addr; gboolean response_needed = TRUE; - const bdaddr_t *bdaddr = device_get_address(op->device); - ba2str(bdaddr, dst_addr); + if (device_get_rpa_exist(op->device) == true) { + ba2str(device_get_rpa(op->device), dst_addr); + } else { + ba2str(device_get_address(op->device), dst_addr); + } + dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &addr_value); dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT32, &op->id); dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT16, &op->offset); |