110 lines
6.4 KiB
C#
110 lines
6.4 KiB
C#
using DTS.Common.Enums;
|
|
using DTS.Common.Enums.Sensors;
|
|
using DTS.Common.Interface.Sensors;
|
|
using DTS.Common.Settings;
|
|
using DTS.Slice.Users.UserSettings;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using DTS.Common.Classes.Sensors;
|
|
using DTS.Common.Storage;
|
|
|
|
namespace DTS.SensorDB
|
|
{
|
|
public class StreamOutputSettingDefaults : DTS.Common.Base.BasePropertyChanged, IStreamOutputSettingDefaults
|
|
{
|
|
private ISensorData _defaultStreamOutput;
|
|
private bool _useAdvancedUDPStreamProfiles;
|
|
|
|
public UDPStreamProfile Profile { get => _defaultStreamOutput.StreamOutUDPProfile; set => _defaultStreamOutput.StreamOutUDPProfile = value; }
|
|
public bool UseAdvancedUDPStreamProfiles
|
|
{
|
|
get => _useAdvancedUDPStreamProfiles;
|
|
set
|
|
{
|
|
SetProperty(ref _useAdvancedUDPStreamProfiles, value, "UseAdvancedUDPStreamProfiles");
|
|
OnPropertyChanged("AvailableStreamOutUDPProfiles");
|
|
if (!_useAdvancedUDPStreamProfiles && !AvailableStreamOutUDPProfiles.Contains(Profile))
|
|
{
|
|
//turned off advanced & current selection not in basic. set to first or default
|
|
Profile = AvailableStreamOutUDPProfiles.FirstOrDefault();
|
|
OnPropertyChanged("Profile");
|
|
}
|
|
}
|
|
}
|
|
public UDPStreamProfile[] AvailableStreamOutUDPProfiles => StreamOutputRecord.AvailableUDPStreamProfiles(DbOperations.GetConnectionDbVersion(), UseAdvancedUDPStreamProfiles);
|
|
public string UDPAddress { get => _defaultStreamOutput.StreamOutUDPAddress; set => _defaultStreamOutput.StreamOutUDPAddress = value; }
|
|
public ushort TimeChannelId { get => _defaultStreamOutput.StreamOutUDPTimeChannelId; set => _defaultStreamOutput.StreamOutUDPTimeChannelId = value; }
|
|
public ushort DataChannelId { get => _defaultStreamOutput.StreamOutUDPDataChannelId; set => _defaultStreamOutput.StreamOutUDPDataChannelId = value; }
|
|
public string TmNSConfig { get => _defaultStreamOutput.StreamOutUDPTmNSConfig; set => _defaultStreamOutput.StreamOutUDPTmNSConfig = value; }
|
|
public ushort IRIGTimeDataPacketIntervalMs { get => _defaultStreamOutput.StreamOutIRIGTimeDataPacketIntervalMs; set => _defaultStreamOutput.StreamOutIRIGTimeDataPacketIntervalMs = value; }
|
|
|
|
public bool Validate()
|
|
{
|
|
if (!UDPAddress.ToLower().StartsWith("udp") || !Uri.IsWellFormedUriString(UDPAddress, UriKind.Absolute))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if (!Common.Utils.Utils.IsTmNSString(TmNSConfig))
|
|
{
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public static void CommitChange(StreamOutputSettingDefaults settingDefaults, int userID)
|
|
{
|
|
Defaults.SetUserSetting(userID, PropertyEnums.PropertyIds.DefaultUDPStreamProfile, settingDefaults.Profile);
|
|
Defaults.SetUserSetting(userID, PropertyEnums.PropertyIds.DefaultUDPStreamAddress, settingDefaults.UDPAddress);
|
|
Defaults.SetUserSetting(userID, PropertyEnums.PropertyIds.DefaultUDPStreamTimeChannelId, settingDefaults.TimeChannelId);
|
|
Defaults.SetUserSetting(userID, PropertyEnums.PropertyIds.DefaultUDPStreamDataChannelId, settingDefaults.DataChannelId);
|
|
Defaults.SetUserSetting(userID, PropertyEnums.PropertyIds.DefaultUDPStreamTmNSConfig, settingDefaults.TmNSConfig);
|
|
Defaults.SetUserSetting(userID, PropertyEnums.PropertyIds.DefaultIRIGTimeDataPacketIntervalMs, settingDefaults.IRIGTimeDataPacketIntervalMs);
|
|
Defaults.SetUserSetting(userID, PropertyEnums.PropertyIds.DefaultUseAdvancedUDPStreamProfiles, settingDefaults.UseAdvancedUDPStreamProfiles);
|
|
}
|
|
|
|
public static StreamOutputSettingDefaults GetStreamOutputSettingsDefault(int userID)
|
|
{
|
|
var sd = new SensorData()
|
|
{
|
|
StreamOutUDPProfile = (UDPStreamProfile)Enum.Parse(typeof(UDPStreamProfile), Defaults.GetUserSettingValueString(userID, PropertyEnums.PropertyIds.DefaultUDPStreamProfile)),
|
|
StreamOutUDPAddress = Defaults.GetUserSettingValueString(userID, PropertyEnums.PropertyIds.DefaultUDPStreamAddress),
|
|
StreamOutUDPTimeChannelId = (ushort)Defaults.GetUserSettingValueInt(userID, PropertyEnums.PropertyIds.DefaultUDPStreamTimeChannelId),
|
|
StreamOutUDPDataChannelId = (ushort)Defaults.GetUserSettingValueInt(userID, PropertyEnums.PropertyIds.DefaultUDPStreamDataChannelId),
|
|
StreamOutUDPTmNSConfig = Defaults.GetUserSettingValueString(userID, PropertyEnums.PropertyIds.DefaultUDPStreamTmNSConfig),
|
|
StreamOutIRIGTimeDataPacketIntervalMs = (ushort)Defaults.GetUserSettingValueInt(userID, PropertyEnums.PropertyIds.DefaultIRIGTimeDataPacketIntervalMs),
|
|
StreamOutTMATSIntervalMs = StreamOutputRecord.DEFAULT_TMATS_INTERVAL_MS
|
|
};
|
|
var useAdvancedUDPStreamProfiles = Defaults.GetUserSettingValueBool(userID, PropertyEnums.PropertyIds.DefaultUseAdvancedUDPStreamProfiles);
|
|
return new StreamOutputSettingDefaults(sd, useAdvancedUDPStreamProfiles);
|
|
}
|
|
|
|
|
|
public static StreamOutputSettingDefaults GetStreamOutputSettingsDefault(string user)
|
|
{
|
|
var sd = SensorsCollection.SensorsList.GetSensorBySerialNumber(SensorConstants.TEST_SPECIFIC_STREAM_OUT_SERIAL);
|
|
|
|
return new StreamOutputSettingDefaults(sd, false);
|
|
}
|
|
|
|
private StreamOutputSettingDefaults(SensorData sd, bool useAdvancedUDPStreamProfiles)
|
|
{
|
|
_defaultStreamOutput = sd;
|
|
UseAdvancedUDPStreamProfiles = useAdvancedUDPStreamProfiles;
|
|
}
|
|
|
|
public static void RestoreDefaults(IStreamOutputSettingDefaults sensorDefaults)
|
|
{
|
|
sensorDefaults.DataChannelId = StreamOutputRecord.DEFAULT_UDP_DATA_CHANNEL_ID;
|
|
sensorDefaults.IRIGTimeDataPacketIntervalMs = StreamOutputRecord.DEFAULT_IRIG_TIME_DATA_PACKET_INTERVAL_MS;
|
|
sensorDefaults.Profile = StreamOutputRecord.DEFAULT_UDP_PROFILE;
|
|
sensorDefaults.TimeChannelId = StreamOutputRecord.DEFAULT_UDP_TIME_CHANNEL_ID;
|
|
sensorDefaults.TmNSConfig = StreamOutputRecord.DEFAULT_UDPTMNS_CONFIG;
|
|
sensorDefaults.UDPAddress = StreamOutputRecord.DEFAULT_UDP_ADDRESS;
|
|
}
|
|
}
|
|
}
|