mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-07-20 07:41:03 +10:00
Improve USB disconnection handling and add payload length validation for USB frames
This commit is contained in:
committed by
just-stuff-tm
parent
3542adad1d
commit
3cec3dc233
@@ -105,8 +105,12 @@ class MainActivity : FlutterActivity() {
|
|||||||
"connect" -> handleUsbConnect(call, result)
|
"connect" -> handleUsbConnect(call, result)
|
||||||
"write" -> handleUsbWrite(call, result)
|
"write" -> handleUsbWrite(call, result)
|
||||||
"disconnect" -> {
|
"disconnect" -> {
|
||||||
closeUsbConnection()
|
usbIoExecutor.execute {
|
||||||
result.success(null)
|
closeUsbConnection()
|
||||||
|
mainHandler.post {
|
||||||
|
result.success(null)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else -> result.notImplemented()
|
else -> result.notImplemented()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,13 @@ const int usbSerialHeaderLength = 3;
|
|||||||
const int usbSerialMaxPayloadLength = 172;
|
const int usbSerialMaxPayloadLength = 172;
|
||||||
|
|
||||||
Uint8List wrapUsbSerialTxFrame(Uint8List payload) {
|
Uint8List wrapUsbSerialTxFrame(Uint8List payload) {
|
||||||
|
if (payload.length > usbSerialMaxPayloadLength) {
|
||||||
|
throw ArgumentError.value(
|
||||||
|
payload.length,
|
||||||
|
'payload.length',
|
||||||
|
'USB serial payload exceeds $usbSerialMaxPayloadLength bytes',
|
||||||
|
);
|
||||||
|
}
|
||||||
final packet = Uint8List(usbSerialHeaderLength + payload.length);
|
final packet = Uint8List(usbSerialHeaderLength + payload.length);
|
||||||
packet[0] = usbSerialTxFrameStart;
|
packet[0] = usbSerialTxFrameStart;
|
||||||
packet[1] = payload.length & 0xff;
|
packet[1] = payload.length & 0xff;
|
||||||
|
|||||||
Reference in New Issue
Block a user