// Android only: binding the process to the USB (NCM) Ethernet link to the Orin. // See MainActivity.kt for why Android needs telling. import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; class UsbLink extends ChangeNotifier { static const _ch = MethodChannel('yukart/net'); bool supported = Platform.isAndroid; bool up = false; bool bound = false; UsbLink() { if (!supported) return; _ch.setMethodCallHandler((call) async { if (call.method == 'ethernet') { final a = Map.from(call.arguments as Map); up = a['up'] == true; bound = a['bound'] == true; notifyListeners(); } }); } /// Bind only when the target is on the USB link; a workstation over WiFi must stay reachable. Future bindFor(Uri target) async { if (!supported) return; final want = target.host.startsWith('192.168.55.'); await _ch.invokeMethod('bindEthernet', want); } }