174 lines
6.7 KiB
C#
174 lines
6.7 KiB
C#
using System.ComponentModel;
|
|
using DTS.Common.Converters;
|
|
using DTS.Common.Utils;
|
|
using Xceed.Wpf.Toolkit.PropertyGrid.Attributes;
|
|
|
|
namespace DTS.Common
|
|
{
|
|
[TypeConverter(typeof(EnumDescriptionTypeConverter))]
|
|
public enum ClockSyncProfile : byte
|
|
{
|
|
[Description("ClockSyncProfile_None")]
|
|
None = 0,
|
|
[Description("ClockSyncProfile_Manual")]
|
|
Manual,
|
|
[Description("ClockSyncProfile_Slave_E2E")]
|
|
Slave_E2E,
|
|
[Description("ClockSyncProfile_Master_E2E")]
|
|
Master_E2E,
|
|
[Description("ClockSyncProfile_Auto_E2E")]
|
|
Auto_E2E,
|
|
[Description("ClockSyncProfile_Master_E2E_IRIG")]
|
|
Master_E2E_IRIG,
|
|
[Description("ClockSyncProfile_Master_E2E_IRIG_EXT_PPS")]
|
|
Master_E2E_IRIG_EXT_PPS,
|
|
[Description("ClockSyncProfile_Master_E2E_GPS")]
|
|
Master_E2E_GPS,
|
|
[Description("ClockSyncProfile_Master_E2E_GPS_EXT_PPS")]
|
|
Master_E2E_GPS_EXT_PPS,
|
|
[Description("ClockSyncProfile_Master_E2E_EXT_PPS")]
|
|
Master_E2E_EXT_PPS,
|
|
//[Description("ClockSyncProfile_Slave_P2P")]
|
|
//Slave_P2P = 12,
|
|
//[Description("ClockSyncProfile_Master_P2P")]
|
|
//Master_P2P,
|
|
//[Description("ClockSyncProfile_Auto_P2P")]
|
|
//Auto_P2P,
|
|
//[Description("ClockSyncProfile_Master_P2P_IRIG")]
|
|
//Master_P2P_IRIG,
|
|
//[Description("ClockSyncProfile_Master_P2P_IRIG_EXT_PPS")]
|
|
//Master_P2P_IRIG_EXT_PPS,
|
|
//[Description("ClockSyncProfile_Master_P2P_GPS")]
|
|
//Master_P2P_GPS,
|
|
//[Description("ClockSyncProfile_Master_P2P_GPS_EXT_PPS")]
|
|
//Master_P2P_GPS_EXT_PPS,
|
|
//[Description("ClockSyncProfile_Master_P2P_EXT_PPS")]
|
|
//Master_P2P_EXT_PPS,
|
|
[Description("ClockSyncProfile_IRIG")]
|
|
IRIG = 21,
|
|
[Description("ClockSyncProfile_IRIG_EXT_PPS")]
|
|
IRIG_EXT_PPS,
|
|
[Description("ClockSyncProfile_GPS")]
|
|
GPS,
|
|
[Description("ClockSyncProfile_GPS_EXT_PPS")]
|
|
GPS_EXT_PPS,
|
|
[Description("ClockSyncProfile_EXT_PPS")]
|
|
EXT_PPS,
|
|
//1PPS Out Profiles
|
|
[Description("ClockSyncProfile_Slave_E2E_PPS_OUT")]
|
|
Slave_E2E_PPS_OUT,
|
|
[Description("ClockSyncProfile_Master_E2E_PPS_OUT")]
|
|
Master_E2E_PPS_OUT,
|
|
[Description("ClockSyncProfile_IRIG_Master_E2E_PPS_OUT")]
|
|
IRIG_Master_E2E_PPS_OUT,
|
|
[Description("ClockSyncProfile_IRIG_PPS_OUT")]
|
|
IRIG_PPS_OUT = 32,
|
|
//Combinations that are possible in UI, but no device supports
|
|
[Description("ClockSyncProfile_PPS_OUT")]
|
|
PPS_OUT = 245,
|
|
[Description("ClockSyncProfile_GPS_PPS_OUT")]
|
|
GPS_PPS_OUT,
|
|
[Description("ClockSyncProfile_GPS_Master_E2E_PPS_OUT")]
|
|
GPS_Master_E2E_PPS_OUT,
|
|
[Description("ClockSyncProfile_GPS_EXT_PPS_PPS_OUT")]
|
|
GPS_EXT_PPS_PPS_OUT,
|
|
[Description("ClockSyncProfile_GPS_EXT_PPS_Master_E2E_PPS_OUT")]
|
|
GPS_EXT_PPS_Master_E2E_PPS_OUT,
|
|
[Description("ClockSyncProfile_EXT_PPS_PPS_OUT")]
|
|
EXT_PPS_PPS_OUT,
|
|
[Description("ClockSyncProfile_EXT_PPS_Master_E2E_PPS_OUT")]
|
|
EXT_PPS_Master_E2E_PPS_OUT,
|
|
[Description("ClockSyncProfile_IRIG_EXT_PPS_PPS_OUT")]
|
|
IRIG_EXT_PPS_PPS_OUT,
|
|
[Description("ClockSyncProfile_IRIG_EXT_PPS_Master_E2E_PPS_OUT")]
|
|
IRIG_EXT_PPS_Master_E2E_PPS_OUT,
|
|
[Description("ClockSyncProfile_Slave_E2E_Master_E2E_OUT")]
|
|
Slave_E2E_Master_E2E_OUT,
|
|
[Description("ClockSyncProfile_Slave_E2E_Master_E2E_PPS_OUT")]
|
|
Slave_E2E_Master_E2E_PPS_OUT,
|
|
}
|
|
|
|
[TypeConverter(typeof(EnumDescriptionTypeConverter))]
|
|
public enum InputClockSource : byte
|
|
{
|
|
[Description("InputClockSource_None")]
|
|
None = 0,
|
|
[Description("InputClockSource_PTP")]
|
|
PTP = (1 << 0),
|
|
[Description("InputClockSource_IRIG")]
|
|
IRIG = (1 << 1),
|
|
[Description("InputClockSource_GPS")]
|
|
GPS = (1 << 2),
|
|
[Description("InputClockSource_1PPS")]
|
|
OnePPS = (1 << 3),
|
|
[Description("InputClockSource_PTP_1PPS")]
|
|
PTP_OnePPS = (1 << 0) | (1 << 3),
|
|
[Description("InputClockSource_IRIG_1PPS")]
|
|
IRIG_OnePPS = (1 << 1) | (1 << 3),
|
|
[Description("InputClockSource_GPS_1PPS")]
|
|
GPS_OnePPS = (1 << 2) | (1 << 3),
|
|
}
|
|
|
|
[TypeConverter(typeof(EnumDescriptionTypeConverter))]
|
|
public enum OutputClockSource : byte
|
|
{
|
|
[Description("OutputClockSource_None")]
|
|
None = 0,
|
|
[Description("OutputClockSource_PTP")] // not a real setting. for UI purposes only.
|
|
PTP = 255,
|
|
[Description("OutputClockSource_PTP_OnePPS")] // not a real setting. for UI purposes only.
|
|
PTP_OnePPS = 254,
|
|
[Description("OutputClockSource_PTPMaster_E2E")]
|
|
PTPMasterE2E = (1 << 0),
|
|
[Description("OutputClockSource_PTPMaster_P2P")]
|
|
PTPMasterP2P = (1 << 0) | (1 << 2),
|
|
[Description("OutputClockSource_PTPBoundary_E2E")]
|
|
PTPBoundaryE2E = (1 << 1),
|
|
[Description("OutputClockSource_PTPBoundary_P2P")]
|
|
PTPBoundaryP2P = (1 << 1) | (1 << 2),
|
|
[Description("OutputClockSource_OnePPS")]
|
|
OnePPS = (1 << 3),
|
|
[Description("OutputClockSource_PTPMaster_E2E_OnePPS")]
|
|
PTPMasterE2E_OnePPS = (1 << 0) | (1 << 3),
|
|
[Description("OutputClockSource_PTPMaster_P2P_OnePPS")]
|
|
PTPMasterP2P_OnePPS = (1 << 0) | (1 << 2) | (1 << 3),
|
|
[Description("OutputClockSource_PTPBoundary_E2E_OnePPS")]
|
|
PTPBoundaryE2E_OnePPS = (1 << 1) | (1 << 3),
|
|
[Description("OutputClockSource_PTPBoundary_P2P_OnePPS")]
|
|
PTPBoundaryP2P_OnePPS = (1 << 1) | (1 << 2) | (1 << 3)
|
|
}
|
|
|
|
public class MasterClockSyncProfileItemsSource : ProfileSourceItemsSource
|
|
{
|
|
public override ItemCollection GetValues()
|
|
{
|
|
return FromProfiles(Constants.MasterProfiles);
|
|
}
|
|
}
|
|
|
|
public class SlaveClockSyncProfileItemsSource : ProfileSourceItemsSource
|
|
{
|
|
public override ItemCollection GetValues()
|
|
{
|
|
return FromProfiles(Constants.SlaveProfiles);
|
|
}
|
|
}
|
|
|
|
public abstract class ProfileSourceItemsSource : IItemsSource
|
|
{
|
|
protected ItemCollection FromProfiles(ClockSyncProfile[] profiles)
|
|
{
|
|
var values = new ItemCollection();
|
|
foreach (var profile in profiles)
|
|
{
|
|
values.Add(profile, Strings.Strings.ResourceManager.GetString(profile.GetEnumDescription()));
|
|
}
|
|
return values;
|
|
}
|
|
public virtual ItemCollection GetValues()
|
|
{
|
|
return FromProfiles(new ClockSyncProfile[] {});
|
|
}
|
|
}
|
|
}
|