initialize method Null safety
Connect to the Onvif device and retrieve its capabilities
Implementation
Future<void> initialize() async {
loggy.info('initializing ...');
final datetime = await deviceManagement.getSystemDateAndTime();
_timeDelta = datetime.utcDateTime != null
? datetime.utcDateTime!.difference(DateTime.now().toUtc())
: const Duration(seconds: 0);
try {
final serviceList = await deviceManagement.getServices(true);
serviceMap.addAll(
{for (var service in serviceList) service.nameSpace: service.xAddr});
if (serviceMap.containsKey('http://www.onvif.org/ver10/media/wsdl')) {
_media = Media(
onvif: this,
uri: _serviceUriOfHost(
serviceMap['http://www.onvif.org/ver10/media/wsdl']!));
}
if (serviceMap.containsKey('http://www.onvif.org/ver20/ptz/wsdl')) {
_ptz = Ptz(
onvif: this,
uri: _serviceUriOfHost(
serviceMap['http://www.onvif.org/ver20/ptz/wsdl']!));
}
} catch (error) {
loggy.warning('GetServices command not supported');
} finally {
final capabilities = await deviceManagement.getCapabilities();
if (capabilities.media?.xaddr != null) {
_media = Media(
onvif: this, uri: _serviceUriOfHost(capabilities.media!.xaddr));
}
if (capabilities.ptz?.xAddr != null) {
_ptz =
Ptz(onvif: this, uri: _serviceUriOfHost(capabilities.ptz!.xAddr));
}
}
loggy.info('initialization complete');
}