/// <summary> /// Creates features tree. Initializes checked state; sets up mandatory features. /// </summary> /// <returns>"Canonical" features tree</returns> public static FeaturesSet CreateFeaturesSet() { FeaturesSet featuresSet = new FeaturesSet(); FeatureNode security = CreateSecurityNode(); featuresSet.Nodes.Add(security); FeatureNode discovery = CreateDiscoveryNode(); featuresSet.Nodes.Add(discovery); FeatureNode deviceService = CreateDeviceServiceNode(); featuresSet.Nodes.Add(deviceService); FeatureNode events = new FeatureNode() { Name = "Events", Feature = Feature.EventsService }; featuresSet.Nodes.Add(events); { FeatureNode eventSeek = new FeatureNode() { Name = "EventSeek", Feature = Feature.EventSeek }; events.Nodes.Add(eventSeek); } FeatureNode media = CreateMediaServiceNode(); featuresSet.Nodes.Add(media); FeatureNode ptz = CreatePTZNode(); featuresSet.Nodes.Add(ptz); FeatureNode io = new FeatureNode() { Name = "IO", Feature = Feature.DeviceIoService }; featuresSet.Nodes.Add(io); io.Nodes.Add(new FeatureNode() { Name = "RelayOutput", Feature = Feature.RelayOutputs }); io.Nodes.Add(new FeatureNode() { Name = "DigitalInputs", Feature = Feature.DigitalInputs }); FeatureNode imaging = new FeatureNode() { Name = "Imaging", Feature = Feature.ImagingService }; featuresSet.Nodes.Add(imaging); FeatureNode analytics = new FeatureNode() { Name = "Analytics", Feature = Feature.AnalyticsService }; featuresSet.Nodes.Add(analytics); FeatureNode doorControl = CreateDoorControlServiceNode(); featuresSet.Nodes.Add(doorControl); FeatureNode pacs = CreatePacsServiceNode(); featuresSet.Nodes.Add(pacs); return(featuresSet); }
/// <summary> /// Creates features tree. Initializes checked state; sets up mandatory features. /// </summary> /// <returns>"Canonical" features tree</returns> public static FeaturesSet CreateFeaturesSet() { FeaturesSet featuresSet = new FeaturesSet(); FeatureNode security = new FeatureNode() { Name = "Security", Feature = Feature.Security, State = FeatureState.Undefined, Status = FeatureStatus.Group }; featuresSet.Nodes.Add(security); security.Nodes.Add(new FeatureNode() { Name = "WSU", Feature = Feature.WSU }); security.Nodes.Add(new FeatureNode() { Name = "Digest", Feature = Feature.Digest }); FeatureNode discovery = new FeatureNode() { Name = "Discovery", Feature = Feature.Discovery, State = FeatureState.Undefined, Status = FeatureStatus.Group }; featuresSet.Nodes.Add(discovery); discovery.Nodes.Add(new FeatureNode() { Name = "BYE", Feature = Feature.BYE }); /******************************************/ FeatureNode deviceService = new FeatureNode() { Name = "DeviceService", Feature = Feature.DeviceService, State = FeatureState.Undefined, Status = FeatureStatus.Group }; featuresSet.Nodes.Add(deviceService); FeatureNode capabilities = new FeatureNode() { Name = "Capabilities", Feature = Feature.Capabilities, State = FeatureState.Undefined, Status = FeatureStatus.Group }; deviceService.Nodes.Add(capabilities); capabilities.Nodes.Add(new FeatureNode() { Name = "GetCapabilities", Feature = Feature.GetCapabilities }); capabilities.Nodes.Add(new FeatureNode() { Name = "GetServices", Feature = Feature.GetServices }); FeatureNode network = new FeatureNode() { Name = "Network", Feature = Feature.Network, State = FeatureState.Undefined, Status = FeatureStatus.Group }; deviceService.Nodes.Add(network); network.Nodes.Add(new FeatureNode() { Name = "ZeroConfiguration", Feature = Feature.ZeroConfiguration }); network.Nodes.Add(new FeatureNode() { Name = "NTP", Feature = Feature.NTP }); network.Nodes.Add(new FeatureNode() { Name = "IPv6", Feature = Feature.IPv6 }); network.Nodes.Add(new FeatureNode() { Name = "DynamicDNS", Feature = Feature.DynamicDNS }); network.Nodes.Add(new FeatureNode() { Name = "IPFilter", Feature = Feature.IPFilter }); FeatureNode system = new FeatureNode() { Name = "System", Feature = Feature.System, State = FeatureState.Undefined, Status = FeatureStatus.Group }; deviceService.Nodes.Add(system); FeatureNode systemLog = new FeatureNode() { Name = "SystemLog", Feature = Feature.SystemLogging }; system.Nodes.Add(systemLog); FeatureNode deviceIo = new FeatureNode() { Name = "DeviceIo", Feature = Feature.DeviceIO, State = FeatureState.Undefined, Status = FeatureStatus.Group }; deviceService.Nodes.Add(deviceIo); FeatureNode deviceIoRelayOutputs = new FeatureNode() { Name = "DeviceIoRelayOutputs", Feature = Feature.DeviceIORelayOutputs }; deviceIo.Nodes.Add(deviceIoRelayOutputs); { FeatureNode deviceIoRelayOutputsBistable = new FeatureNode() { Name = "DeviceIoRelayOutputsBistable", Feature = Feature.DeviceIORelayOutputsBistable }; FeatureNode deviceIoRelayOutputsBistableOpen = new FeatureNode() { Name = "DeviceIoRelayOutputsBistableOpen", Feature = Feature.DeviceIORelayOutputsBistableOpen }; FeatureNode deviceIoRelayOutputsBistableClosed = new FeatureNode() { Name = "DeviceIoRelayOutputsBistableClosed", Feature = Feature.DeviceIORelayOutputsBistableClosed }; deviceIoRelayOutputsBistable.Nodes.Add(deviceIoRelayOutputsBistableOpen); deviceIoRelayOutputsBistable.Nodes.Add(deviceIoRelayOutputsBistableClosed); deviceIoRelayOutputs.Nodes.Add(deviceIoRelayOutputsBistable); } { FeatureNode deviceIoRelayOutputsMonostable = new FeatureNode() { Name = "DeviceIoRelayOutputsMonostable", Feature = Feature.DeviceIORelayOutputsMonostable }; FeatureNode deviceIoRelayOutputsMonostableOpen = new FeatureNode() { Name = "DeviceIoRelayOutputsMonostableOpen", Feature = Feature.DeviceIORelayOutputsMonostableOpen }; FeatureNode deviceIoRelayOutputsMonostableClosed = new FeatureNode() { Name = "DeviceIoRelayOutputsMonostableClosed", Feature = Feature.DeviceIORelayOutputsMonostableClosed }; deviceIoRelayOutputsMonostable.Nodes.Add(deviceIoRelayOutputsMonostableOpen); deviceIoRelayOutputsMonostable.Nodes.Add(deviceIoRelayOutputsMonostableClosed); deviceIoRelayOutputs.Nodes.Add(deviceIoRelayOutputsMonostable); } FeatureNode events = new FeatureNode() { Name = "Events", Feature = Feature.EventsService }; featuresSet.Nodes.Add(events); FeatureNode media = new FeatureNode() { Name = "Media", Feature = Feature.MediaService }; featuresSet.Nodes.Add(media); FeatureNode video = new FeatureNode() { Name = "VideoCodec", Feature = Feature.Video, State = FeatureState.Undefined, Status = FeatureStatus.Group }; media.Nodes.Add(video); video.Nodes.Add(new FeatureNode() { Name = "JPEG", Feature = Feature.JPEG }); video.Nodes.Add(new FeatureNode() { Name = "H264", Feature = Feature.H264 }); video.Nodes.Add(new FeatureNode() { Name = "MPEG4", Feature = Feature.MPEG4 }); FeatureNode audio = new FeatureNode() { Name = "Audio", Feature = Feature.Audio }; media.Nodes.Add(audio); audio.Nodes.Add(new FeatureNode() { Name = "G711", Feature = Feature.G711 }); audio.Nodes.Add(new FeatureNode() { Name = "G726", Feature = Feature.G726 }); audio.Nodes.Add(new FeatureNode() { Name = "AAC", Feature = Feature.AAC }); FeatureNode backchannel = new FeatureNode() { Name = "Backchannel", Feature = Feature.AudioOutput }; media.Nodes.Add(backchannel); backchannel.Nodes.Add(new FeatureNode() { Name = "BackchannelG711", Feature = Feature.AudioOutputG711 }); backchannel.Nodes.Add(new FeatureNode() { Name = "BackchannelG726", Feature = Feature.AudioOutputG726 }); backchannel.Nodes.Add(new FeatureNode() { Name = "BackchannelAAC", Feature = Feature.AudioOutputAAC }); FeatureNode rtss = new FeatureNode() { Name = "RTSS", Feature = Feature.RTSS, State = FeatureState.Undefined, Status = FeatureStatus.Group }; media.Nodes.Add(rtss); rtss.Nodes.Add(new FeatureNode() { Name = "RTPUDP", Feature = Feature.RTPUDP }); rtss.Nodes.Add(new FeatureNode() { Name = "RTPRTSPHTTP", Feature = Feature.RTPRTSPHTTP }); rtss.Nodes.Add(new FeatureNode() { Name = "RTPRTSPTCP", Feature = Feature.RTPRTSPTCP }); rtss.Nodes.Add(new FeatureNode() { Name = "RTPMulticastUDP", Feature = Feature.RTPMulticastUDP }); rtss.Nodes.Add(new FeatureNode() { Name = "SnapshotURI", Feature = Feature.SnapshotUri }); FeatureNode ptz = new FeatureNode() { Name = "PTZ", Feature = Feature.PTZService }; featuresSet.Nodes.Add(ptz); FeatureNode ptzAbsolute = new FeatureNode() { Name = "PTZAbsolute", Feature = Feature.PTZAbsolute }; ptzAbsolute.Nodes.Add(new FeatureNode() { Name = "PanTiltMovement", Feature = Feature.PTZAbsolutePanTilt }); ptzAbsolute.Nodes.Add(new FeatureNode() { Name = "ZoomMovement", Feature = Feature.PTZAbsoluteZoom }); FeatureNode ptzRelative = new FeatureNode() { Name = "PTZRelative", Feature = Feature.PTZRelative }; ptzRelative.Nodes.Add(new FeatureNode() { Name = "PanTiltMovement", Feature = Feature.PTZRelativePanTilt }); ptzRelative.Nodes.Add(new FeatureNode() { Name = "ZoomMovement", Feature = Feature.PTZRelativeZoom }); FeatureNode ptzContinious = new FeatureNode() { Name = "PTZContinuous", Feature = Feature.PTZContinious }; ptzContinious.Nodes.Add(new FeatureNode() { Name = "PanTiltSpeedConfiguration", Feature = Feature.PTZContinuousPanTilt }); ptzContinious.Nodes.Add(new FeatureNode() { Name = "ZoomSpeedConfiguration", Feature = Feature.PTZContinuousZoom }); FeatureNode ptzPresets = new FeatureNode() { Name = "PTZPresets", Feature = Feature.PTZPresets }; FeatureNode ptzHome = new FeatureNode() { Name = "PTZHome", Feature = Feature.PTZHome }; ptzHome.Nodes.Add(new FeatureNode() { Name = "ConfigurableHomePosition", Feature = Feature.PTZConfigurableHome }); ptzHome.Nodes.Add(new FeatureNode() { Name = "FixedHomePosition", Feature = Feature.PTZFixedHome }); FeatureNode ptzAuxiliary = new FeatureNode() { Name = "PTZAuxiliary", Feature = Feature.PTZAuxiliary }; FeatureNode ptzSpeed = new FeatureNode() { Name = "PTZSpeed", Feature = Feature.PTZSpeed }; ptzSpeed.Nodes.Add(new FeatureNode() { Name = "PanTiltSpeed", Feature = Feature.PTZSpeedPanTilt }); ptzSpeed.Nodes.Add(new FeatureNode() { Name = "ZoomSpeed", Feature = Feature.PTZSpeedZoom }); ptz.Nodes.AddRange(new FeatureNode[] { ptzAbsolute, ptzRelative, ptzContinious, ptzPresets, ptzHome, ptzAuxiliary, ptzSpeed }); FeatureNode io = new FeatureNode() { Name = "IO", Feature = Feature.DeviceIoService }; featuresSet.Nodes.Add(io); io.Nodes.Add(new FeatureNode() { Name = "RelayOutput", Feature = Feature.RelayOutputs }); FeatureNode imaging = new FeatureNode() { Name = "Imaging", Feature = Feature.ImagingService }; featuresSet.Nodes.Add(imaging); FeatureNode analytics = new FeatureNode() { Name = "Analytics", Feature = Feature.AnalyticsService }; featuresSet.Nodes.Add(analytics); FeatureNode recording = new FeatureNode() { Name = "Recording", Feature = Feature.RecordingControlService }; featuresSet.Nodes.Add(recording); FeatureNode dynamicRecording = new FeatureNode() { Name = "DynamicRecording", Feature = Feature.DynamicRecording }; recording.Nodes.Add(dynamicRecording); FeatureNode search = new FeatureNode() { Name = "Search", Feature = Feature.RecordingSearchService }; featuresSet.Nodes.Add(search); FeatureNode metadataSearch = new FeatureNode() { Name = "MetadataSearch", Feature = Feature.MetadataSearch }; search.Nodes.Add(metadataSearch); FeatureNode replay = new FeatureNode() { Name = "Replay", Feature = Feature.ReplayService }; featuresSet.Nodes.Add(replay); FeatureNode reverseReplay = new FeatureNode() { Name = "ReverseReplay", Feature = Feature.ReverseReplay }; replay.Nodes.Add(reverseReplay); return(featuresSet); }
/// <summary> /// Creates features tree. Initializes checked state; sets up mandatory features. /// </summary> /// <returns>"Canonical" features tree</returns> public static FeaturesSet CreateFeaturesSet() { FeaturesSet featuresSet = new FeaturesSet(); FeatureNode security = new FeatureNode() { Name = "Security", Feature = Feature.Security, State = FeatureState.Undefined, Status = FeatureStatus.Group }; featuresSet.Nodes.Add(security); security.Nodes.Add(new FeatureNode() { Name = "WSU", Feature = Feature.WSU }); security.Nodes.Add(new FeatureNode() { Name = "Digest", Feature = Feature.Digest }); FeatureNode discovery = new FeatureNode() { Name = "Discovery", Feature = Feature.Discovery, State = FeatureState.Undefined, Status = FeatureStatus.Group }; featuresSet.Nodes.Add(discovery); //[14.05.2013] AKS: Added new node with two new features according ticket #224 var types = new FeatureNode() { Name = "Types", Feature = Feature.DiscoveryTypes, State = FeatureState.Undefined, Status = FeatureStatus.Group }; types.Nodes.Add(new FeatureNode() { Name = "tds:Device", Feature = Feature.DiscoveryTypesTdsDevice }); types.Nodes.Add(new FeatureNode() { Name = "dn:NetworkVideoTransmitter", Feature = Feature.DiscoveryTypesDnNetworkVideoTransmitter }); discovery.Nodes.Add(new FeatureNode() { Name = "BYE", Feature = Feature.BYE }); discovery.Nodes.Add(types); FeatureNode deviceService = new FeatureNode() { Name = "DeviceService", Feature = Feature.DeviceService, State = FeatureState.Undefined, Status = FeatureStatus.Group }; featuresSet.Nodes.Add(deviceService); FeatureNode capabilities = new FeatureNode() { Name = "Capabilities", Feature = Feature.Capabilities, State = FeatureState.Undefined, Status = FeatureStatus.Group }; deviceService.Nodes.Add(capabilities); capabilities.Nodes.Add(new FeatureNode() { Name = "GetCapabilities", Feature = Feature.GetCapabilities }); capabilities.Nodes.Add(new FeatureNode() { Name = "GetServices", Feature = Feature.GetServices }); FeatureNode network = new FeatureNode() { Name = "Network", Feature = Feature.Network, State = FeatureState.Undefined, Status = FeatureStatus.Group }; deviceService.Nodes.Add(network); network.Nodes.Add(new FeatureNode() { Name = "ZeroConfiguration", Feature = Feature.ZeroConfiguration }); network.Nodes.Add(new FeatureNode() { Name = "NTP", Feature = Feature.NTP }); network.Nodes.Add(new FeatureNode() { Name = "IPv6", Feature = Feature.IPv6 }); network.Nodes.Add(new FeatureNode() { Name = "DHCPv6", Feature = Feature.DHCPv6 }); network.Nodes.Add(new FeatureNode() { Name = "DynamicDNS", Feature = Feature.DynamicDNS }); network.Nodes.Add(new FeatureNode() { Name = "IPFilter", Feature = Feature.IPFilter }); { FeatureNode system = new FeatureNode() { Name = "System", Feature = Feature.System, State = FeatureState.Undefined, Status = FeatureStatus.Group }; deviceService.Nodes.Add(system); var systemLog = new FeatureNode() { Name = "SystemLog", Feature = Feature.SystemLogging }; var httpSystemLog = new FeatureNode() { Name = "HTTPSystemLog", Feature = Feature.HttpSystemLogging }; var httpFirmwareUpgrade = new FeatureNode() { Name = "HTTPFirmwareUpgrade", Feature = Feature.HttpFirmwareUpgrade }; var httpSupportInformation = new FeatureNode() { Name = "HTTPSupportInformation", Feature = Feature.HttpSupportInformation }; var httpSystemBackup = new FeatureNode() { Name = "HTTPSystemBackup", Feature = Feature.HttpSystemBackup }; system.Nodes.Add(systemLog); system.Nodes.Add(httpSystemLog); system.Nodes.Add(httpFirmwareUpgrade); system.Nodes.Add(httpSupportInformation); system.Nodes.Add(httpSystemBackup); } { var deviceServiceSecurity = new FeatureNode() { Name = "Security", Feature = Feature.DeviceServiceSecurity, Status = FeatureStatus.Group }; deviceService.Nodes.Add(deviceServiceSecurity); deviceServiceSecurity.Nodes.Add(new FeatureNode() { Name = "Default Access Policy", Feature = Feature.DefaultAccessPolicy }); deviceServiceSecurity.Nodes.Add(new FeatureNode() { Name = "Maximum Users", Feature = Feature.MaxUsers }); deviceServiceSecurity.Nodes.Add(new FeatureNode() { Name = "Remote User Handling", Feature = Feature.RemoteUserHandling }); deviceServiceSecurity.Nodes.Add(new FeatureNode() { Name = "Maximum Username Length", Feature = Feature.MaximumUsernameLength }); deviceServiceSecurity.Nodes.Add(new FeatureNode() { Name = "Maximum Password Length", Feature = Feature.MaximumPasswordLength }); } FeatureNode deviceIo = new FeatureNode() { Name = "DeviceIo", Feature = Feature.DeviceIO, State = FeatureState.Undefined, Status = FeatureStatus.Group }; deviceService.Nodes.Add(deviceIo); FeatureNode deviceIoRelayOutputs = new FeatureNode() { Name = "DeviceIoRelayOutputs", Feature = Feature.DeviceIORelayOutputs }; deviceIo.Nodes.Add(deviceIoRelayOutputs); { FeatureNode deviceIoRelayOutputsBistable = new FeatureNode() { Name = "DeviceIoRelayOutputsBistable", Feature = Feature.DeviceIORelayOutputsBistable }; FeatureNode deviceIoRelayOutputsBistableOpen = new FeatureNode() { Name = "DeviceIoRelayOutputsBistableOpen", Feature = Feature.DeviceIORelayOutputsBistableOpen }; FeatureNode deviceIoRelayOutputsBistableClosed = new FeatureNode() { Name = "DeviceIoRelayOutputsBistableClosed", Feature = Feature.DeviceIORelayOutputsBistableClosed }; deviceIoRelayOutputsBistable.Nodes.Add(deviceIoRelayOutputsBistableOpen); deviceIoRelayOutputsBistable.Nodes.Add(deviceIoRelayOutputsBistableClosed); deviceIoRelayOutputs.Nodes.Add(deviceIoRelayOutputsBistable); } { FeatureNode deviceIoRelayOutputsMonostable = new FeatureNode() { Name = "DeviceIoRelayOutputsMonostable", Feature = Feature.DeviceIORelayOutputsMonostable }; FeatureNode deviceIoRelayOutputsMonostableOpen = new FeatureNode() { Name = "DeviceIoRelayOutputsMonostableOpen", Feature = Feature.DeviceIORelayOutputsMonostableOpen }; FeatureNode deviceIoRelayOutputsMonostableClosed = new FeatureNode() { Name = "DeviceIoRelayOutputsMonostableClosed", Feature = Feature.DeviceIORelayOutputsMonostableClosed }; deviceIoRelayOutputsMonostable.Nodes.Add(deviceIoRelayOutputsMonostableOpen); deviceIoRelayOutputsMonostable.Nodes.Add(deviceIoRelayOutputsMonostableClosed); deviceIoRelayOutputs.Nodes.Add(deviceIoRelayOutputsMonostable); } { var monitoringEvents = new FeatureNode() { Name = "Monitoring Events", Feature = Feature.MonitoringEvents, Status = FeatureStatus.Group }; featuresSet.Nodes.Add(monitoringEvents); monitoringEvents.Nodes.Add(new FeatureNode() { Name = "Monitoring/ProcessorUsage", Feature = Feature.MonitoringProcessorUsageEvent }); monitoringEvents.Nodes.Add(new FeatureNode() { Name = "Monitoring/OperatingTime/LastReset", Feature = Feature.MonitoringOperatingTimeLastResetEvent }); monitoringEvents.Nodes.Add(new FeatureNode() { Name = "Monitoring/OperatingTime/LastReboot", Feature = Feature.MonitoringOperatingTimeLastRebootEvent }); monitoringEvents.Nodes.Add(new FeatureNode() { Name = "Monitoring/OperatingTime/LastClockSynchronization", Feature = Feature.MonitoringOperatingTimeLastClockSynchronizationEvent }); monitoringEvents.Nodes.Add(new FeatureNode() { Name = "Monitoring/Backup/Last", Feature = Feature.MonitoringBackupLastEvent }); monitoringEvents.Nodes.Add(new FeatureNode() { Name = "Device/HardwareFailure/FanFailure", Feature = Feature.DeviceHardwareFailureFanFailureEvent }); monitoringEvents.Nodes.Add(new FeatureNode() { Name = "DeviceHardware/FailurePower/SupplyFailure", Feature = Feature.DeviceHardwareFailurePowerSupplyFailureEvent }); monitoringEvents.Nodes.Add(new FeatureNode() { Name = "Device/HardwareFailure/StorageFailure", Feature = Feature.DeviceHardwareFailureStorageFailureEvent }); monitoringEvents.Nodes.Add(new FeatureNode() { Name = "Device/HardwareFailure/TemperatureCritical", Feature = Feature.DeviceHardwareFailureTemperatureCriticalEvent }); } { FeatureNode events = new FeatureNode() { Name = "Events", Feature = Feature.EventsService }; featuresSet.Nodes.Add(events); events.Nodes.Add(new FeatureNode() { Name = "Persistent Notification Storage", Feature = Feature.PersistentNotificationStorage }); events.Nodes.Add(new FeatureNode() { Name = "WS Basic Notification", Feature = Feature.WSBasicNotification }); var getServiceCapabilities = new FeatureNode() { Name = "EventServiceCapabilities", DisplayName = "Get Service Capabilities", Feature = Feature.EventsServiceCapabilities, State = FeatureState.Undefined, Status = FeatureStatus.Group }; getServiceCapabilities.Nodes.Add(new FeatureNode() { Name = "MaxPullPoints", Feature = Feature.MaxPullPoints }); events.Nodes.Add(getServiceCapabilities); } FeatureNode media = new FeatureNode() { Name = "Media", Feature = Feature.MediaService }; featuresSet.Nodes.Add(media); FeatureNode video = new FeatureNode() { Name = "VideoCodec", Feature = Feature.Video, State = FeatureState.Undefined, Status = FeatureStatus.Group }; media.Nodes.Add(video); video.Nodes.Add(new FeatureNode() { Name = "JPEG", Feature = Feature.JPEG }); video.Nodes.Add(new FeatureNode() { Name = "H264", Feature = Feature.H264 }); video.Nodes.Add(new FeatureNode() { Name = "MPEG4", Feature = Feature.MPEG4 }); FeatureNode audio = new FeatureNode() { Name = "Audio", Feature = Feature.Audio }; media.Nodes.Add(audio); audio.Nodes.Add(new FeatureNode() { Name = "G711", Feature = Feature.G711 }); audio.Nodes.Add(new FeatureNode() { Name = "G726", Feature = Feature.G726 }); audio.Nodes.Add(new FeatureNode() { Name = "AAC", Feature = Feature.AAC }); FeatureNode backchannel = new FeatureNode() { Name = "Backchannel", Feature = Feature.AudioOutput }; media.Nodes.Add(backchannel); backchannel.Nodes.Add(new FeatureNode() { Name = "BackchannelG711", Feature = Feature.AudioOutputG711 }); backchannel.Nodes.Add(new FeatureNode() { Name = "BackchannelG726", Feature = Feature.AudioOutputG726 }); backchannel.Nodes.Add(new FeatureNode() { Name = "BackchannelAAC", Feature = Feature.AudioOutputAAC }); { FeatureNode rtss = new FeatureNode() { Name = "RTSS", Feature = Feature.RTSS, State = FeatureState.Undefined, Status = FeatureStatus.Feature }; media.Nodes.Add(rtss); rtss.Nodes.Add(new FeatureNode() { Name = "RTPUDP", Feature = Feature.RTPUDP }); rtss.Nodes.Add(new FeatureNode() { Name = "RTPRTSPHTTP", Feature = Feature.RTPRTSPHTTP }); rtss.Nodes.Add(new FeatureNode() { Name = "RTPRTSPTCP", Feature = Feature.RTPRTSPTCP }); rtss.Nodes.Add(new FeatureNode() { Name = "RTPMulticastUDP", Feature = Feature.RTPMulticastUDP }); media.Nodes.Add(new FeatureNode() { Name = "SnapshotURI", Feature = Feature.SnapshotUri }); } { FeatureNode ptz = new FeatureNode() { Name = "PTZ", Feature = Feature.PTZService }; featuresSet.Nodes.Add(ptz); FeatureNode ptzAbsolute = new FeatureNode() { Name = "PTZAbsolute", Feature = Feature.PTZAbsolute }; ptzAbsolute.Nodes.Add(new FeatureNode() { Name = "PanTiltMovement", Feature = Feature.PTZAbsolutePanTilt }); ptzAbsolute.Nodes.Add(new FeatureNode() { Name = "ZoomMovement", Feature = Feature.PTZAbsoluteZoom }); FeatureNode ptzRelative = new FeatureNode() { Name = "PTZRelative", Feature = Feature.PTZRelative }; ptzRelative.Nodes.Add(new FeatureNode() { Name = "PanTiltMovement", Feature = Feature.PTZRelativePanTilt }); ptzRelative.Nodes.Add(new FeatureNode() { Name = "ZoomMovement", Feature = Feature.PTZRelativeZoom }); FeatureNode ptzContinious = new FeatureNode() { Name = "PTZContinuous", Feature = Feature.PTZContinious }; ptzContinious.Nodes.Add(new FeatureNode() { Name = "PanTiltSpeedConfiguration", Feature = Feature.PTZContinuousPanTilt }); ptzContinious.Nodes.Add(new FeatureNode() { Name = "ZoomSpeedConfiguration", Feature = Feature.PTZContinuousZoom }); FeatureNode ptzPresets = new FeatureNode() { Name = "PTZPresets", Feature = Feature.PTZPresets }; FeatureNode ptzHome = new FeatureNode() { Name = "PTZHome", Feature = Feature.PTZHome }; ptzHome.Nodes.Add(new FeatureNode() { Name = "ConfigurableHomePosition", Feature = Feature.PTZConfigurableHome }); ptzHome.Nodes.Add(new FeatureNode() { Name = "FixedHomePosition", Feature = Feature.PTZFixedHome }); FeatureNode ptzAuxiliary = new FeatureNode() { Name = "PTZAuxiliary", Feature = Feature.PTZAuxiliary }; FeatureNode ptzSpeed = new FeatureNode() { Name = "PTZSpeed", Feature = Feature.PTZSpeed }; ptzSpeed.Nodes.Add(new FeatureNode() { Name = "PanTiltSpeed", Feature = Feature.PTZSpeedPanTilt }); ptzSpeed.Nodes.Add(new FeatureNode() { Name = "ZoomSpeed", Feature = Feature.PTZSpeedZoom }); ptz.Nodes.AddRange(new FeatureNode[] { ptzAbsolute, ptzRelative, ptzContinious, ptzPresets, ptzHome, ptzAuxiliary, ptzSpeed }); } { FeatureNode io = new FeatureNode() { Name = "IO", Feature = Feature.DeviceIoService }; featuresSet.Nodes.Add(io); io.Nodes.Add(new FeatureNode() { Name = "RelayOutput", Feature = Feature.RelayOutputs }); io.Nodes.Add(new FeatureNode() { Name = "DigitalInputs", Feature = Feature.DigitalInputs }); } { FeatureNode imaging = new FeatureNode() { Name = "Imaging", Feature = Feature.ImagingService }; featuresSet.Nodes.Add(imaging); imaging.Nodes.Add(new FeatureNode() { Name = "IrCutfilter Configuration", Feature = Feature.IrCutfilterConfiguration }); } { FeatureNode analytics = new FeatureNode() { Name = "Analytics", Feature = Feature.AnalyticsService }; featuresSet.Nodes.Add(analytics); } { FeatureNode recording = new FeatureNode() { Name = "Recording", Feature = Feature.RecordingControlService }; featuresSet.Nodes.Add(recording); FeatureNode dynamicRecording = new FeatureNode() { Name = "DynamicRecordings", Feature = Feature.DynamicRecordings }; recording.Nodes.Add(dynamicRecording); FeatureNode dynamicTracks = new FeatureNode() { Name = "DynamicTracks", Feature = Feature.DynamicTracks }; recording.Nodes.Add(dynamicTracks); FeatureNode audioRecording = new FeatureNode() { Name = "AudioRecording", Feature = Feature.AudioRecording }; recording.Nodes.Add(audioRecording); recording.Nodes.Add(new FeatureNode() { Name = "RecordingOptions", Feature = Feature.RecordingOptions }); recording.Nodes.Add(new FeatureNode() { Name = "DeleteTrackDataEvent", Feature = Feature.RecordingConfigDeleteTrackDataEvent }); recording.Nodes.Add(new FeatureNode() { Name = "MetadataRecording", Feature = Feature.MetadataRecording }); } { FeatureNode search = new FeatureNode() { Name = "Search", Feature = Feature.RecordingSearchService }; featuresSet.Nodes.Add(search); FeatureNode metadataSearch = new FeatureNode() { Name = "MetadataSearch", Feature = Feature.MetadataSearch }; search.Nodes.Add(metadataSearch); FeatureNode ptzSearch = new FeatureNode() { Name = "PTZPositionSearch", Feature = Feature.PTZPositionSearch }; search.Nodes.Add(ptzSearch); } FeatureNode doorControl = new FeatureNode() { Name = "DoorControl", Feature = Feature.DoorControlService }; FeatureNode doorEntityNode = CreateDoorEntityNode(); FeatureNode eventNode = CreateDoorEventsNode(); doorControl.Nodes.Add(doorEntityNode); doorControl.Nodes.Add(eventNode); featuresSet.Nodes.Add(doorControl); FeatureNode pacs = CreatePacsServiceNode(); featuresSet.Nodes.Add(pacs); { FeatureNode replay = new FeatureNode() { Name = "Replay", Feature = Feature.ReplayService }; featuresSet.Nodes.Add(replay); replay.Nodes.Add(new FeatureNode() { Name = "ReverseReplay", Feature = Feature.ReverseReplay }); replay.Nodes.Add(new FeatureNode() { Name = "ReplayRTPRTSPTCP", Feature = Feature.ReplayServiceRTPRTSPTCP }); } { FeatureNode receiver = new FeatureNode() { Name = "Receiver", Feature = Feature.ReceiverService }; featuresSet.Nodes.Add(receiver); } featuresSet.Nodes.Add(CreateAdvancedSecurityNode()); featuresSet.Nodes.Add(CreateCredentialNode()); featuresSet.Nodes.Add(CreateAccessRulesNode()); featuresSet.Nodes.Add(CreateScheduleNode()); return(featuresSet); }