initialize method
Connect to the Onvif device and retrieve its capabilities
Implementation
Future<void> initialize() async {
loggy.info('initializing ...');
Media1? media1;
Media2? media2;
soap.Transport.timeDelta = await getTimeDelta();
try {
final serviceList = await deviceManagement.getServices();
serviceMap.addAll(
{for (var service in serviceList) service.nameSpace: service.xAddr});
if (serviceMap.containsKey(soap.Xmlns.trt)) {
media1 = Media1(
transport: transport,
uri: _serviceUriOfHost(serviceMap[soap.Xmlns.trt]!));
}
if (serviceMap.containsKey(soap.Xmlns.tr2)) {
media2 = Media2(
transport: transport,
uri: _serviceUriOfHost(serviceMap[soap.Xmlns.tr2]!));
}
_media = Media(
transport: transport,
media1: media1,
media2: media2,
);
if (serviceMap.containsKey('http://www.onvif.org/ver20/ptz/wsdl')) {
_ptz = Ptz(
transport: transport,
uri: _serviceUriOfHost(
serviceMap['http://www.onvif.org/ver20/ptz/wsdl']!));
}
} catch (error) {
loggy.warning('GetServices command not supported');
final capabilities = await deviceManagement.getCapabilities();
if (capabilities.media?.xAddr != null) {
_media = Media(
transport: transport,
media1: Media1(
transport: transport,
uri: _serviceUriOfHost(capabilities.media!.xAddr)),
);
}
if (capabilities.ptz?.xAddr != null) {
_ptz = Ptz(
transport: transport,
uri: _serviceUriOfHost(capabilities.ptz!.xAddr));
}
}
loggy.info('initialization complete');
}