Skip to content

Commit f49e684

Browse files
authored
[Tizen] Fix Matter devices BLE scan after changes in 92f8cd0 (#33708)
* Fix typo introduced in 92f8cd0 * Case insensitive comparison for service UUID
1 parent 00aa101 commit f49e684

File tree

2 files changed

+16
-38
lines changed

2 files changed

+16
-38
lines changed

src/platform/Tizen/BLEManagerImpl.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1404,7 +1404,7 @@ void BLEManagerImpl::InitiateScan(BleScanState scanType)
14041404
}
14051405

14061406
/* Send StartChipScan Request to Scanner Class */
1407-
strcpy(data.service_uuid, Ble::CHIP_BLE_DESC_SHORT_UUID_STR);
1407+
strcpy(data.service_uuid, Ble::CHIP_BLE_SERVICE_SHORT_UUID_STR);
14081408
err = mDeviceScanner->StartChipScan(kNewConnectionScanTimeout, ScanFilterType::kServiceData, data);
14091409
VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(DeviceLayer, "Failed to start BLE scan"));
14101410

src/platform/Tizen/ChipDeviceScanner.cpp

+15-37
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
#include <cstdint>
2727
#include <cstring>
28+
#include <strings.h>
2829
#include <utility>
2930

3031
#include <bluetooth.h>
@@ -55,31 +56,16 @@ std::unique_ptr<ChipDeviceScanner> ChipDeviceScanner::Create(ChipDeviceScannerDe
5556
return std::make_unique<ChipDeviceScanner>(delegate);
5657
}
5758

58-
static void __CleanupServiceData(bt_adapter_le_service_data_s * dataList, size_t count)
59+
static void __PrintLEScanData(const bt_adapter_le_service_data_s & data)
5960
{
60-
VerifyOrReturn(dataList != nullptr);
61-
VerifyOrReturn(count != 0);
62-
63-
for (size_t i = 0; i < count; i++)
64-
{
65-
g_free(dataList[i].service_uuid);
66-
g_free(dataList[i].service_data);
67-
}
68-
g_free(dataList);
69-
}
70-
71-
static void __PrintLEScanData(bt_adapter_le_service_data_s * dataList, size_t idx)
72-
{
73-
VerifyOrReturn(dataList != nullptr);
74-
7561
// Print Service UUID in the Service Data
7662
ChipLogDetail(DeviceLayer, "======Service UUID========");
77-
ChipLogDetail(DeviceLayer, "Service UUID::[%s]", dataList[idx].service_uuid);
63+
ChipLogDetail(DeviceLayer, "Service UUID::[%s]", data.service_uuid);
7864

7965
// Print Service Data
8066
ChipLogDetail(DeviceLayer, "======Service Data========");
81-
ChipLogDetail(DeviceLayer, "Service Data Length::[%d]", dataList[idx].service_data_len);
82-
ChipLogByteSpan(DeviceLayer, ByteSpan(reinterpret_cast<uint8_t *>(dataList[idx].service_data), dataList[idx].service_data_len));
67+
ChipLogDetail(DeviceLayer, "Service Data Length::[%d]", data.service_data_len);
68+
ChipLogByteSpan(DeviceLayer, ByteSpan(reinterpret_cast<uint8_t *>(data.service_data), data.service_data_len));
8369
}
8470

8571
static bool __IsChipThingDevice(bt_adapter_le_device_scan_result_info_s * info,
@@ -91,25 +77,22 @@ static bool __IsChipThingDevice(bt_adapter_le_device_scan_result_info_s * info,
9177
bt_adapter_le_service_data_s * dataList = nullptr;
9278
bool isChipDevice = false;
9379

94-
ChipLogProgress(DeviceLayer, "Is [%s] ChipThingDevice ?: Check now", info->remote_address);
95-
9680
if (bt_adapter_le_get_scan_result_service_data_list(info, BT_ADAPTER_LE_PACKET_ADVERTISING, &dataList, &count) == BT_ERROR_NONE)
9781
{
9882
for (int i = 0; i < count; i++)
9983
{
100-
if (g_strcmp0(dataList[i].service_uuid, chip::Ble::CHIP_BLE_CHAR_1_UUID_STR) == 0 ||
101-
g_strcmp0(dataList[i].service_uuid, chip::Ble::CHIP_BLE_SERVICE_SHORT_UUID_STR) == 0)
84+
if (strcasecmp(dataList[i].service_uuid, chip::Ble::CHIP_BLE_SERVICE_LONG_UUID_STR) == 0 ||
85+
strcasecmp(dataList[i].service_uuid, chip::Ble::CHIP_BLE_SERVICE_SHORT_UUID_STR) == 0)
10286
{
103-
ChipLogProgress(DeviceLayer, "CHIP Thing Device Found! [Service Data UUID] = %s", dataList[i].service_uuid);
104-
// Print full Service Data
105-
__PrintLEScanData(dataList, i);
87+
__PrintLEScanData(dataList[i]);
10688
memcpy(&aDeviceInfo, dataList[i].service_data, dataList[i].service_data_len);
10789
isChipDevice = true;
10890
break;
10991
}
11092
}
11193
}
112-
__CleanupServiceData(dataList, count);
94+
95+
bt_adapter_le_free_service_data_list(dataList, count);
11396
return isChipDevice;
11497
}
11598

@@ -120,17 +103,12 @@ void ChipDeviceScanner::LeScanResultCb(int result, bt_adapter_le_device_scan_res
120103
auto self = reinterpret_cast<ChipDeviceScanner *>(userData);
121104
chip::Ble::ChipBLEDeviceIdentificationInfo deviceInfo;
122105

123-
ChipLogProgress(DeviceLayer, "LE Device Reported!! remote addr [%s]", info->remote_address);
106+
ChipLogProgress(DeviceLayer, "LE device reported: %s", info->remote_address);
107+
VerifyOrReturn(__IsChipThingDevice(info, deviceInfo),
108+
ChipLogDetail(Ble, "Device %s does not look like a CHIP device", info->remote_address));
124109

125-
if (__IsChipThingDevice(info, deviceInfo))
126-
{
127-
// Looks like a CHIP Thing Device: Service UUID matched
128-
ChipLogProgress(DeviceLayer, "Looks Like Got a CHIP Thing Device: Process further");
129-
// Report probable CHIP Thing Device to BLEMgrImp class
130-
self->mDelegate->OnChipDeviceScanned(info, deviceInfo);
131-
}
132-
else
133-
ChipLogProgress(DeviceLayer, "Does not Look like a CHIP Device, Skip.....");
110+
// Report probable CHIP device to BLEMgrImp class
111+
self->mDelegate->OnChipDeviceScanned(info, deviceInfo);
134112
}
135113

136114
gboolean ChipDeviceScanner::TimerExpiredCb(gpointer userData)

0 commit comments

Comments
 (0)