Rename filterMfdList to manufacturerDataFilters and replace mfd with msd

This commit is contained in:
Rohit Sangwan
2024-10-03 11:48:19 +05:30
parent b77d0aaeb4
commit e4b6bd74ba
4 changed files with 18 additions and 18 deletions
@@ -77,10 +77,10 @@ class UniversalBleFilterUtil {
val filters = scanFilter.withManufacturerData.filterNotNull()
if (filters.isEmpty()) return true
if (manufacturerDataList.isEmpty()) return false
return manufacturerDataList.any { mfd ->
return manufacturerDataList.any { msd ->
filters.any { filter ->
mfd.companyIdentifier == filter.companyIdentifier &&
isDataMatching(filter.data, mfd.data, filter.mask)
msd.companyIdentifier == filter.companyIdentifier &&
isDataMatching(filter.data, msd.data, filter.mask)
}
}
}
+10 -10
View File
@@ -53,31 +53,31 @@ class UniversalBleFilterUtil {
ScanFilter scanFilter,
BleDevice device,
) {
final filterMfdList = scanFilter.withManufacturerData;
if (filterMfdList.isEmpty) return true;
final manufacturerDataFilters = scanFilter.withManufacturerData;
if (manufacturerDataFilters.isEmpty) return true;
List<ManufacturerData> manufacturerDataList = device.manufacturerDataList;
if (manufacturerDataList.isEmpty) return false;
return manufacturerDataList.any((deviceMfd) => filterMfdList.any(
(filterMfd) => _isManufacturerDataMatch(filterMfd, deviceMfd),
return manufacturerDataList.any((deviceMsd) => manufacturerDataFilters.any(
(filterMsd) => _isManufacturerDataMatch(filterMsd, deviceMsd),
));
}
bool _isManufacturerDataMatch(
ManufacturerDataFilter filterMfd,
ManufacturerData deviceMfd,
ManufacturerDataFilter filterMsd,
ManufacturerData deviceMsd,
) {
if (filterMfd.companyIdentifier != deviceMfd.companyId) return false;
if (filterMsd.companyIdentifier != deviceMsd.companyId) return false;
Uint8List? filterPayload = filterMfd.payload;
Uint8List devicePayload = deviceMfd.payload;
Uint8List? filterPayload = filterMsd.payload;
Uint8List devicePayload = deviceMsd.payload;
if (filterPayload == null || filterPayload.isEmpty) return true;
if (devicePayload.isEmpty) return false;
if (filterPayload.length > devicePayload.length) return false;
Uint8List? filterMask = filterMfd.mask;
Uint8List? filterMask = filterMsd.mask;
if (filterMask != null && filterMask.length == filterPayload.length) {
for (int i = 0; i < filterPayload.length; i++) {
+3 -3
View File
@@ -101,17 +101,17 @@ namespace universal_ble
for (const auto &value : *manufacturerDataList)
{
const auto &deviceMfData = std::any_cast<const UniversalManufacturerData &>(
const auto &deviceManufacturerData = std::any_cast<const UniversalManufacturerData &>(
std::get<flutter::CustomEncodableValue>(value));
if (deviceMfData.company_identifier() != filter.company_identifier())
if (deviceManufacturerData.company_identifier() != filter.company_identifier())
continue;
// If no data filter, all data matches
if (data_filter == nullptr)
return true;
const auto &deviceData = deviceMfData.data();
const auto &deviceData = deviceManufacturerData.data();
if (deviceData.size() < data_filter->size())
continue;
+2 -2
View File
@@ -753,9 +753,9 @@ namespace universal_ble
flutter::EncodableList manufacturerDataEncodableList = flutter::EncodableList();
if (args.Advertisement() != nullptr)
{
for (BluetoothLEManufacturerData mfd : args.Advertisement().ManufacturerData())
for (BluetoothLEManufacturerData msd : args.Advertisement().ManufacturerData())
{
UniversalManufacturerData universalManufacturerData = UniversalManufacturerData(static_cast<int64_t>(mfd.CompanyId()), to_bytevc(mfd.Data()));
UniversalManufacturerData universalManufacturerData = UniversalManufacturerData(static_cast<int64_t>(msd.CompanyId()), to_bytevc(msd.Data()));
manufacturerDataEncodableList.push_back(flutter::CustomEncodableValue(universalManufacturerData));
}
}