using DTS.Common.Classes.Sensors;
using DTS.Common.Enums;
using DTS.Common.Enums.Sensors;
using DTS.Common.Interface.Sensors;
using DTS.Slice.Users.UserSettings;
using System;
using System.IO.Ports;
namespace DTS.SensorDB
{
public sealed class UartSettingDefaults : DTS.Common.Base.BasePropertyChanged, IUartSettingDefaults
{
private ISensorData _defaultUart;
public uint BaudRate { get => _defaultUart.UartBaudRate; set => _defaultUart.UartBaudRate = value; }
public uint DataBits { get => _defaultUart.UartDataBits; set => _defaultUart.UartDataBits = value; }
public StopBits StopBits { get => _defaultUart.UartStopBits; set => _defaultUart.UartStopBits = value; }
private static StopBits[] _stopBits = new StopBits[] { StopBits.None, StopBits.One, StopBits.OnePointFive, StopBits.Two };
public StopBits[] AvailableStopBits { get => _stopBits; }
public Parity Parity { get => _defaultUart.UartParity; set => _defaultUart.UartParity = value; }
private static Parity[] _parities = new Parity[] { Parity.None, Parity.Odd, Parity.Even, Parity.Mark, Parity.Space };
public Parity[] AvailableParities { get => _parities; }
//FB 30486 Hardcode FlowControl to NONE for UART sensor type
public Handshake FlowControl { get => Handshake.None; }
private static Handshake[] _flowControls = new Handshake[] { Handshake.None };
public Handshake[] AvailableFlowControls { get => _flowControls; }
public UartDataFormat DataFormat { get => _defaultUart.UartDataFormat; set => _defaultUart.UartDataFormat = value; }
private static UartDataFormat[] _dataFormats = new UartDataFormat[] { UartDataFormat.Binary, UartDataFormat.PlainText, UartDataFormat.NMEA };
public UartDataFormat[] AvailableDataFormats { get => _dataFormats; }
public bool Validate()
{
return true;
}
public static void CommitChange(UartSettingDefaults settingDefaults, int userID)
{
TestSetupDefaults.SetUserSetting(userID, PropertyEnums.PropertyIds.DefaultUARTBaudRate, settingDefaults.BaudRate);
TestSetupDefaults.SetUserSetting(userID, PropertyEnums.PropertyIds.DefaultUARTDataBits, settingDefaults.DataBits);
TestSetupDefaults.SetUserSetting(userID, PropertyEnums.PropertyIds.DefaultUARTStopBits, settingDefaults.StopBits);
TestSetupDefaults.SetUserSetting(userID, PropertyEnums.PropertyIds.DefaultUARTParity, settingDefaults.Parity);
TestSetupDefaults.SetUserSetting(userID, PropertyEnums.PropertyIds.DefaultUARTFlowControl, settingDefaults.FlowControl);
TestSetupDefaults.SetUserSetting(userID, PropertyEnums.PropertyIds.DefaultUARTDataFormat, settingDefaults.DataFormat);
}
public static UartSettingDefaults GetUartSettingsDefault(int userID)
{
var sd = new SensorData()
{
UartBaudRate = (uint)TestSetupDefaults.GetUserSettingValueInt(userID, PropertyEnums.PropertyIds.DefaultUARTBaudRate),
UartDataBits = (uint)TestSetupDefaults.GetUserSettingValueInt(userID, PropertyEnums.PropertyIds.DefaultUARTDataBits),
UartStopBits = (StopBits)Enum.Parse(typeof(StopBits), TestSetupDefaults.GetUserSettingValueString(userID, PropertyEnums.PropertyIds.DefaultUARTStopBits)),
UartParity = (Parity)Enum.Parse(typeof(Parity), TestSetupDefaults.GetUserSettingValueString(userID, PropertyEnums.PropertyIds.DefaultUARTParity)),
//FB 30486 Hardcode FlowControl to NONE for UART sensor type
UartDataFormat = (UartDataFormat)Enum.Parse(typeof(UartDataFormat), TestSetupDefaults.GetUserSettingValueString(userID, PropertyEnums.PropertyIds.DefaultUARTDataFormat))
};
return new UartSettingDefaults(sd);
}
private UartSettingDefaults(ISensorData defaultUart)
{
_defaultUart = defaultUart;
}
///
/// restores digital input settings to defaults
///
///
public static void RestoreDefaults(IUartSettingDefaults sensorDefaults)
{
sensorDefaults.BaudRate = Common.Constant.EmbeddedSensors.BAUD_RATE_DEFAULT;
sensorDefaults.DataBits = UARTRecord.UART_DATABITS_DEFAULT;
sensorDefaults.DataFormat = UARTRecord.UART_DATAFORMAT_DEFAULT;
sensorDefaults.Parity = UARTRecord.UART_PARITY_DEFAULT;
sensorDefaults.StopBits = UARTRecord.UART_STOPBITS_DEFAULT;
}
}
}