Files
DP44/DataPRO/Modules/Hardware/AddEditHardware/Model/DASModule.cs
2026-04-17 14:55:32 -04:00

168 lines
5.7 KiB
C#

using System;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using DTS.Common.Base;
using DTS.Common.Enums.Hardware;
using DTS.Common.Interface.Hardware.AddEditHardware;
using DTS.Common.Utilities.Logging;
namespace HardwareList.Model
{
public class DASModule : BasePropertyChanged, IAddEditHardwareDASModule
{
public bool Disabled { get; set; } = false;
private SLICEBridgeTypes _sliceBridgeType = SLICEBridgeTypes.Bridge;
public SLICEBridgeTypes SLICEBridgeType
{
get => _sliceBridgeType;
set
{
SetProperty(ref _sliceBridgeType, value, "SLICEBridgeType");
SetImage();
}
}
private HardwareTypes _moduleType = HardwareTypes.UNDEFINED;
public HardwareTypes ModuleType
{
get => _moduleType;
set
{
SetProperty(ref _moduleType, value, "ModuleType");
SetImage();
}
}
private string _serialNumber = "";
public string SerialNumber
{
get => _serialNumber;
set => SetProperty(ref _serialNumber, value, "SerialNumber");
}
private ImageSource _dasImage = null;
public ImageSource DASImage
{
get => _dasImage;
set => SetProperty(ref _dasImage, value, "DASImage");
}
private static readonly SLICEBridgeTypes[] _availableNanoBridges = new SLICEBridgeTypes[]
{
SLICEBridgeTypes.Bridge,
SLICEBridgeTypes.IEPE
};
public SLICEBridgeTypes[] AvailableNanoBridges => _availableNanoBridges;
private static readonly SLICEBridgeTypes[] _availableMicroBridges = new SLICEBridgeTypes[]
{
SLICEBridgeTypes.Bridge,
SLICEBridgeTypes.IEPE,
SLICEBridgeTypes.ARS,
SLICEBridgeTypes.ACC
};
public SLICEBridgeTypes[] AvailableMicroBridges => _availableMicroBridges;
private static readonly HardwareTypes[] _availableRackModules = new HardwareTypes[]
{
HardwareTypes.UNDEFINED,
HardwareTypes.SIM,
HardwareTypes.TOM,
HardwareTypes.DIM
};
public HardwareTypes[] AvailableRACKModules => _availableRackModules;
/// <summary>
/// Uri for finding images using the application resources
/// </summary>
private static readonly Uri _baseUri = new Uri("pack://application:,,,/ResourceFile.xaml");
private void SetImage()
{
var fileName = string.Empty;
switch (ModuleType)
{
case HardwareTypes.SLICE_Bridge:
switch (SLICEBridgeType)
{
case SLICEBridgeTypes.ACC:
fileName = @"Assets/Hardware/SLICEACC_Side.png";
break;
case SLICEBridgeTypes.ARS:
fileName = @"Assets/Hardware/SLICEARS_Side.png";
break;
case SLICEBridgeTypes.Bridge:
fileName = @"Assets/Hardware/SLICEBridge_Side.png";
break;
case SLICEBridgeTypes.IEPE:
fileName = @"Assets/Hardware/SLICEIEPE_Side.png";
break;
}
break;
case HardwareTypes.TOM:
fileName = @"Assets/Hardware/TDAS_TOM_Front.jpg";
break;
case HardwareTypes.SIM:
fileName = @"Assets/Hardware/TDAS_SIM_Front.jpg";
break;
case HardwareTypes.DIM:
fileName = @"Assets/Hardware/TDAS_DIM_Front.jpg";
break;
default:
fileName = @"Assets/Hardware/TDAS_Rack_Cover.png";
break;
}
if (string.IsNullOrWhiteSpace(fileName))
{
DASImage = null;
return;
}
try
{
var image = new BitmapImage(new Uri(_baseUri, fileName));
image.Freeze();
DASImage = image;
}
catch (Exception ex)
{
APILogger.Log(
$"Failed to get image: {fileName} for type: {ModuleType.ToString()} exception: {ex.Message.ToString()}");
}
}
public IAddEditHardwareHardware OwningHardware { get; set; }
public string GetSerialNumberPrefix()
{
switch (ModuleType)
{
case HardwareTypes.DIM: return "DIM";
case HardwareTypes.SIM: return "SIM";
case HardwareTypes.SLICE_Bridge:
{
switch (SLICEBridgeType)
{
case SLICEBridgeTypes.ACC: return "AC";
case SLICEBridgeTypes.ARS: return "AR";
case SLICEBridgeTypes.Bridge: return "BR";
case SLICEBridgeTypes.IEPE: return "IEPE";
}
}
break;
case HardwareTypes.TOM:
return "TOM";
}
return string.Empty;
}
public DASModule()
{
}
}
}