Add service-data in advertisements (#207)
* Add service-data in advertisements * Fix windows serviceData parsing * Resolve Ai comments * Resolve Ai comments and validate service data * Cleanup and Update changelog
This commit is contained in:
@@ -174,6 +174,7 @@ data class UniversalBleScanResult (
|
||||
val isPaired: Boolean? = null,
|
||||
val rssi: Long? = null,
|
||||
val manufacturerDataList: List<UniversalManufacturerData>? = null,
|
||||
val serviceData: Map<String, ByteArray>? = null,
|
||||
val services: List<String>? = null,
|
||||
val timestamp: Long? = null
|
||||
)
|
||||
@@ -185,9 +186,10 @@ data class UniversalBleScanResult (
|
||||
val isPaired = pigeonVar_list[2] as Boolean?
|
||||
val rssi = pigeonVar_list[3] as Long?
|
||||
val manufacturerDataList = pigeonVar_list[4] as List<UniversalManufacturerData>?
|
||||
val services = pigeonVar_list[5] as List<String>?
|
||||
val timestamp = pigeonVar_list[6] as Long?
|
||||
return UniversalBleScanResult(deviceId, name, isPaired, rssi, manufacturerDataList, services, timestamp)
|
||||
val serviceData = pigeonVar_list[5] as Map<String, ByteArray>?
|
||||
val services = pigeonVar_list[6] as List<String>?
|
||||
val timestamp = pigeonVar_list[7] as Long?
|
||||
return UniversalBleScanResult(deviceId, name, isPaired, rssi, manufacturerDataList, serviceData, services, timestamp)
|
||||
}
|
||||
}
|
||||
fun toList(): List<Any?> {
|
||||
@@ -197,6 +199,7 @@ data class UniversalBleScanResult (
|
||||
isPaired,
|
||||
rssi,
|
||||
manufacturerDataList,
|
||||
serviceData,
|
||||
services,
|
||||
timestamp,
|
||||
)
|
||||
|
||||
@@ -133,6 +133,11 @@ val ScanResult.manufacturerDataList: List<UniversalManufacturerData>
|
||||
} ?: emptyList()
|
||||
}
|
||||
|
||||
val ScanResult.serviceData: Map<String, ByteArray>
|
||||
get() {
|
||||
return scanRecord?.serviceData?.mapKeys { it.key.uuid.toString() } ?: emptyMap()
|
||||
}
|
||||
|
||||
fun <T> SparseArray<T>.toList(): List<Pair<Int, T>> {
|
||||
return (0 until size).map { index ->
|
||||
keyAt(index) to valueAt(index)
|
||||
|
||||
@@ -844,6 +844,7 @@ class UniversalBlePlugin : UniversalBlePlatformChannel, BluetoothGattCallback(),
|
||||
deviceId = it.address,
|
||||
isPaired = it.bondState == BOND_BONDED,
|
||||
manufacturerDataList = null,
|
||||
serviceData = null,
|
||||
rssi = null,
|
||||
timestamp = System.currentTimeMillis()
|
||||
)
|
||||
@@ -1100,6 +1101,7 @@ class UniversalBlePlugin : UniversalBlePlatformChannel, BluetoothGattCallback(),
|
||||
|
||||
val name = result.device.name
|
||||
val manufacturerDataList = result.manufacturerDataList
|
||||
val serviceData = result.serviceData
|
||||
|
||||
if (!universalBleFilterUtil.filterDevice(
|
||||
name,
|
||||
@@ -1116,6 +1118,7 @@ class UniversalBlePlugin : UniversalBlePlatformChannel, BluetoothGattCallback(),
|
||||
deviceId = result.device.address,
|
||||
isPaired = result.device.bondState == BOND_BONDED,
|
||||
manufacturerDataList = manufacturerDataList,
|
||||
serviceData = serviceData,
|
||||
rssi = result.rssi.toLong(),
|
||||
services = serviceUuids.map { it.toString() }.toList(),
|
||||
timestamp = System.currentTimeMillis()
|
||||
|
||||
Reference in New Issue
Block a user