initialize method Null safety

Future<void> initialize()

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');
}