Files
DP44/Common/DTS.CommonCore/Enums/ClockSource.cs
2026-04-17 14:55:32 -04:00

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[] {});
}
}
}