Implementation
Future<void> probe() async {
loggy.debug('init');
await RawDatagramSocket.bind(broadcastAddress, broadcastPort);
final rawDatagramSocket = await RawDatagramSocket.bind(
InternetAddress.anyIPv4, 0,
reuseAddress: false, reusePort: false);
rawDatagramSocket.listen((RawSocketEvent rawSocketEvent) {
var datagram = rawDatagramSocket.receive();
if (datagram == null) return;
String messageReceived = String.fromCharCodes(datagram.data);
loggy.debug('RESPONSE ADDRESS:\n${datagram.address}');
loggy.debug('RESPONSE:\n$messageReceived');
var envelope = Envelope.fromXml(messageReceived);
if (envelope.body.probeMatches == null) return;
onvifDevices.addAll(envelope.body.probeMatches!.probeMatches);
});
start(rawDatagramSocket);
await finish(rawDatagramSocket);
}