diff --git a/android/src/main/java/cz/dronetag/flutter_opendroneid/Pigeon.java b/android/src/main/java/cz/dronetag/flutter_opendroneid/Pigeon.java index 7dd778f..3d0b020 100644 --- a/android/src/main/java/cz/dronetag/flutter_opendroneid/Pigeon.java +++ b/android/src/main/java/cz/dronetag/flutter_opendroneid/Pigeon.java @@ -658,7 +658,7 @@ protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) { public interface PayloadApi { @NonNull - ODIDPayload getPayload(@NonNull byte[] rawData, @NonNull MessageSource source, @NonNull String macAddress, @NonNull Long rssi, @NonNull Long receivedTimestamp); + ODIDPayload buildPayload(@NonNull byte[] rawData, @NonNull MessageSource source, @NonNull String macAddress, @NonNull Long rssi, @NonNull Long receivedTimestamp); /** The codec used by PayloadApi. */ static @NonNull MessageCodec getCodec() { @@ -669,7 +669,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable PayloadApi { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_opendroneid.PayloadApi.getPayload", getCodec()); + binaryMessenger, "dev.flutter.pigeon.flutter_opendroneid.PayloadApi.buildPayload", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -681,7 +681,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable PayloadApi Number rssiArg = (Number) args.get(3); Number receivedTimestampArg = (Number) args.get(4); try { - ODIDPayload output = api.getPayload(rawDataArg, sourceArg, macAddressArg, (rssiArg == null) ? null : rssiArg.longValue(), (receivedTimestampArg == null) ? null : receivedTimestampArg.longValue()); + ODIDPayload output = api.buildPayload(rawDataArg, sourceArg, macAddressArg, (rssiArg == null) ? null : rssiArg.longValue(), (receivedTimestampArg == null) ? null : receivedTimestampArg.longValue()); wrapped.add(0, output); } catch (Throwable exception) { diff --git a/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/BluetoothScanner.kt b/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/BluetoothScanner.kt index 6ee3b00..11f3665 100644 --- a/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/BluetoothScanner.kt +++ b/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/BluetoothScanner.kt @@ -18,6 +18,12 @@ class BluetoothScanner( odidPayloadStreamHandler: StreamHandler, private val bluetoothStateHandler: StreamHandler, ) : ODIDScanner(odidPayloadStreamHandler) { + + companion object { + const val BT_OFFSET = 6 + const val MAX_BLE_ADV_SIZE = 31 + } + private val TAG: String = BluetoothScanner::class.java.getSimpleName() private val bluetoothAdapter = BluetoothAdapter.getDefaultAdapter() diff --git a/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/ODIDScanner.kt b/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/ODIDScanner.kt index 8f776b6..b7d5dbe 100644 --- a/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/ODIDScanner.kt +++ b/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/ODIDScanner.kt @@ -4,7 +4,7 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -/// Contains common functinality for ODID scanners +/// Contains common functinality for ODID scanners. /// Derived scanners should use receiveData method that takes raw data and metadata /// and sends it to stream /// Creates [ODIDPayload] instances implementing Pigeon PayloadAPI @@ -14,10 +14,6 @@ abstract class ODIDScanner( companion object { const val MAX_MESSAGE_SIZE = 25 - const val BT_OFFSET = 6 - const val MAX_BLE_ADV_SIZE = 31 - const val WIFI_BEACON_OFFSET = 5 - const val WIFI_NAN_OFFSET = 1 } var isScanning = false @@ -38,7 +34,7 @@ abstract class ODIDScanner( abstract fun onAdapterStateReceived() - override fun getPayload(rawData: ByteArray, source: Pigeon.MessageSource, macAddress: String, rssi: Long, receivedTimestamp: Long): Pigeon.ODIDPayload { + override fun buildPayload(rawData: ByteArray, source: Pigeon.MessageSource, macAddress: String, rssi: Long, receivedTimestamp: Long): Pigeon.ODIDPayload { val builder = Pigeon.ODIDPayload.Builder() builder.setRawData(rawData) @@ -54,7 +50,7 @@ abstract class ODIDScanner( fun receiveData( data: ByteArray, macAddress: String, source: Pigeon.MessageSource, rssi: Long = 0 ) { - val payload = getPayload( + val payload = buildPayload( data, source, macAddress, rssi, System.currentTimeMillis() ) diff --git a/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/WifiNaNScanner.kt b/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/WifiNaNScanner.kt index 34561c9..ea85e04 100644 --- a/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/WifiNaNScanner.kt +++ b/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/WifiNaNScanner.kt @@ -32,6 +32,11 @@ class WifiNaNScanner ( private val wifiAwareManager: WifiAwareManager?, private val context: Context ) : ODIDScanner(odidPayloadStreamHandler) { + + companion object { + const val WIFI_NAN_OFFSET = 1 + } + private val TAG: String = WifiNaNScanner::class.java.getSimpleName() private val wifiScanEnabled = true private var wifiAwareSupported = true diff --git a/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/WifiScanner.kt b/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/WifiScanner.kt index 8d38044..d13bf8e 100644 --- a/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/WifiScanner.kt +++ b/android/src/main/kotlin/cz/dronetag/flutter_opendroneid/scanner/WifiScanner.kt @@ -25,6 +25,11 @@ class WifiScanner ( private val wifiManager: WifiManager?, private val context: Context ) : ODIDScanner(odidPayloadStreamHandler) { + + companion object { + const val WIFI_BEACON_OFFSET = 5 + } + private val TAG: String = WifiScanner::class.java.getSimpleName() private val CIDLen = 3 private val DRICID = intArrayOf(0xFA, 0x0B, 0xBC) diff --git a/ios/Classes/Scanner/BluetoothScanner.swift b/ios/Classes/Scanner/BluetoothScanner.swift index 39f6f0a..c392f2e 100644 --- a/ios/Classes/Scanner/BluetoothScanner.swift +++ b/ios/Classes/Scanner/BluetoothScanner.swift @@ -95,7 +95,7 @@ class BluetoothScanner: NSObject, CBCentralManagerDelegate, DTGPayloadApi { ) } - func getPayloadRawData(_ rawData: FlutterStandardTypedData, source: DTGMessageSource, macAddress: String, rssi: NSNumber, receivedTimestamp: NSNumber, error: AutoreleasingUnsafeMutablePointer) -> DTGODIDPayload? { + func buildPayloadRawData(_ rawData: FlutterStandardTypedData, source: DTGMessageSource, macAddress: String, rssi: NSNumber, receivedTimestamp: NSNumber, error: AutoreleasingUnsafeMutablePointer) -> DTGODIDPayload? { return DTGODIDPayload.make(withRawData: rawData, receivedTimestamp: receivedTimestamp, macAddress: macAddress, rssi: rssi, source: source) } @@ -106,7 +106,7 @@ class BluetoothScanner: NSObject, CBCentralManagerDelegate, DTGPayloadApi { } var err: FlutterError? let systimestamp = Int(Date().timeIntervalSince1970 * 1000) - let payload = getPayloadRawData(data, source: DTGMessageSource.bluetoothLegacy, macAddress: peripheral.identifier.uuidString, rssi: RSSI.intValue as NSNumber, receivedTimestamp: systimestamp as NSNumber, error: &err) + let payload = buildPayloadRawData(data, source: DTGMessageSource.bluetoothLegacy, macAddress: peripheral.identifier.uuidString, rssi: RSSI.intValue as NSNumber, receivedTimestamp: systimestamp as NSNumber, error: &err) odidPayloadStreamHandler.send(payload!.toList() as Any) } diff --git a/ios/Classes/pigeon.h b/ios/Classes/pigeon.h index 9165fa6..6cfb743 100644 --- a/ios/Classes/pigeon.h +++ b/ios/Classes/pigeon.h @@ -87,7 +87,7 @@ NSObject *DTGPayloadApiGetCodec(void); @protocol DTGPayloadApi /// @return `nil` only when `error != nil`. -- (nullable DTGODIDPayload *)getPayloadRawData:(FlutterStandardTypedData *)rawData source:(DTGMessageSource)source macAddress:(NSString *)macAddress rssi:(NSNumber *)rssi receivedTimestamp:(NSNumber *)receivedTimestamp error:(FlutterError *_Nullable *_Nonnull)error; +- (nullable DTGODIDPayload *)buildPayloadRawData:(FlutterStandardTypedData *)rawData source:(DTGMessageSource)source macAddress:(NSString *)macAddress rssi:(NSNumber *)rssi receivedTimestamp:(NSNumber *)receivedTimestamp error:(FlutterError *_Nullable *_Nonnull)error; @end extern void DTGPayloadApiSetup(id binaryMessenger, NSObject *_Nullable api); diff --git a/ios/Classes/pigeon.m b/ios/Classes/pigeon.m index 1fb85a7..f7350ff 100644 --- a/ios/Classes/pigeon.m +++ b/ios/Classes/pigeon.m @@ -337,11 +337,11 @@ void DTGPayloadApiSetup(id binaryMessenger, NSObject binaryMessenger, NSObject source; + pigeon.MessageSource get packSource => source; - bool operatorIDSet() { - return operatorIdMessage != null && - operatorIdMessage!.operatorID != OPERATOR_ID_NOT_SET; - } + bool get operatorIDSet => + operatorIdMessage != null && + operatorIdMessage!.operatorID != OPERATOR_ID_NOT_SET; - bool operatorIDValid() { + bool get operatorIDValid { final validCharacters = RegExp(r'^[a-zA-Z0-9]+$'); return operatorIdMessage != null && operatorIdMessage!.operatorID.length == 16 && validCharacters.hasMatch(operatorIdMessage!.operatorID); } - bool systemDataValid() { - return systemDataMessage != null && - systemDataMessage?.operatorLocation != null && - systemDataMessage!.operatorLocation!.latitude != INV_LAT && - systemDataMessage?.operatorLocation!.longitude != INV_LON && - systemDataMessage!.operatorLocation!.latitude <= MAX_LAT && - systemDataMessage!.operatorLocation!.latitude >= MIN_LAT && - systemDataMessage!.operatorLocation!.longitude <= MAX_LON && - systemDataMessage!.operatorLocation!.longitude >= MIN_LON; - } + bool get systemDataValid => + systemDataMessage != null && + systemDataMessage?.operatorLocation != null && + systemDataMessage!.operatorLocation!.latitude != INV_LAT && + systemDataMessage?.operatorLocation!.longitude != INV_LON && + systemDataMessage!.operatorLocation!.latitude <= MAX_LAT && + systemDataMessage!.operatorLocation!.latitude >= MIN_LAT && + systemDataMessage!.operatorLocation!.longitude <= MAX_LON && + systemDataMessage!.operatorLocation!.longitude >= MIN_LON; - bool locationValid() { - return locationMessage != null && - locationMessage?.location != null && - locationMessage!.location!.latitude != INV_LAT && - locationMessage!.location!.longitude != INV_LON && - locationMessage!.location!.latitude <= MAX_LAT && - locationMessage!.location!.longitude <= MAX_LON && - locationMessage!.location!.latitude >= MIN_LAT && - locationMessage!.location!.longitude >= MIN_LON; - } + bool get locationValid => + locationMessage != null && + locationMessage?.location != null && + locationMessage!.location!.latitude != INV_LAT && + locationMessage!.location!.longitude != INV_LON && + locationMessage!.location!.latitude <= MAX_LAT && + locationMessage!.location!.longitude <= MAX_LON && + locationMessage!.location!.latitude >= MIN_LAT && + locationMessage!.location!.longitude >= MIN_LON; } diff --git a/lib/pigeon.dart b/lib/pigeon.dart index fb640c3..05bb9b7 100644 --- a/lib/pigeon.dart +++ b/lib/pigeon.dart @@ -426,9 +426,9 @@ class PayloadApi { static const MessageCodec codec = _PayloadApiCodec(); - Future getPayload(Uint8List arg_rawData, MessageSource arg_source, String arg_macAddress, int arg_rssi, int arg_receivedTimestamp) async { + Future buildPayload(Uint8List arg_rawData, MessageSource arg_source, String arg_macAddress, int arg_rssi, int arg_receivedTimestamp) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_opendroneid.PayloadApi.getPayload', codec, + 'dev.flutter.pigeon.flutter_opendroneid.PayloadApi.buildPayload', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_rawData, arg_source.index, arg_macAddress, arg_rssi, arg_receivedTimestamp]) as List?; diff --git a/pigeon/schema.dart b/pigeon/schema.dart index bb37b13..007a4d9 100644 --- a/pigeon/schema.dart +++ b/pigeon/schema.dart @@ -85,6 +85,6 @@ abstract class Api { // ODIDPayload is not generated until used in API @HostApi() abstract class PayloadApi { - ODIDPayload getPayload(Uint8List rawData, MessageSource source, + ODIDPayload buildPayload(Uint8List rawData, MessageSource source, String macAddress, int rssi, int receivedTimestamp); }