public class ScheduledRecordingSettings
private IEnumerable<ScheduledRecordingSetting> _scheduledRecordingSettings;
public ScheduledRecordingSetting this[string name] =>
_scheduledRecordingSettings.First(cdfm => cdfm.Name == name)
public class ScheduledRecordingSetting
public string Name { get; }
public IEnumerable<DeviceFamilySetting> DeviceFamilySettings { get; }
public class DeviceFamilySetting
public DeviceFamilyKind DeviceFamilyKind { get; }
public IEnumerable<RecordingSetting> RecordingSettings { get; }
public class RecordingSetting
public string RecordingSchedule {get;}
public RecordingState? RecordingState { get; }
public RecordingScopes? RecordingScopes { get; }
public CalmRecording CalmRecording { get; }
public AlarmRecording AlarmRecording { get; }
public class CalmRecording
public RecordingMode? RecordingMode { get; }
public string Stream { get; }
public string Quality { get; }
public RecordingDuration PreAlarmDuration { get;}
public class AlarmRecording
public RecordingMode? RecordingMode { get; }
public MotionAlarm? MotionAlarm { get; }
public string Stream { get; }
public string Quality { get; }
public RecordingDuration PostAlarmDuration { get; }
public enum RecordingState
public abstract class Time
public virtual uint Hours { get; private set; }
public byte Minutes { get; private set; }
public byte Seconds { get; private set; }
public class RecordingDuration : Time
public override uint Hours { get; private set; }
public enum RecordingMode
[Description("Continuous")] Continuous,
[Description("Pre-Alarm")] PreAlarm,
public enum RecordingScopes
[Description("Audio Recording")] Audio = 1,
[Description("MetaDate Recording")] Metadata = 2,
public abstract class DeviceFamily
public abstract IEnumerable<string> SupportedStreams { get; }
public class DeviceFamily2 : DeviceFamily
public override IEnumerable<string> SupportedStreams => new List<string> { "Stream 2", "Stream 2" };
public enum DeviceFamilyKind
[Description("Device Family 1")] One,
[Description("Device Family 2")] Two,
public static class Factory
public static class CameraMetadataManager
private static IDictionary<string, DeviceFamilyKind> CamereraDeviceFamilyMapping = new Dictionary<string, DeviceFamilyKind>()
{"Camera A", DeviceFamilyKind.One},
{"Camera B", DeviceFamilyKind.Two},
{"Camera C", DeviceFamilyKind.One},
public static DeviceFamilyKind GetDeviceFamilyByCam(string camName)
return CamereraDeviceFamilyMapping[camName];
public class RangeAttribute : Attribute
public RangeAttribute(int min, int max) {}
public class DescriptionAttribute : Attribute
public DescriptionAttribute(string s) {}