Files
2025-10-24 15:18:11 -07:00

149 lines
4.8 KiB
C#

/*-------------------------------------------------------------------------
// UNCLASSIFIED
/*-------------------------------------------------------------------------
RAYTHEON PROPRIETARY: THIS DOCUMENT CONTAINS DATA OR INFORMATION
PROPRIETARY TO RAYTHEON COMPANY AND IS RESTRICTED TO USE ONLY BY PERSONS
AUTHORIZED BY RAYTHEON COMPANY IN WRITING TO USE IT. DISCLOSURE TO
UNAUTHORIZED PERSONS WOULD LIKELY CAUSE SUBSTANTIAL COMPETITIVE HARM TO
RAYTHEON COMPANY'S BUSINESS POSITION. NEITHER SAID DOCUMENT NOR ITS
CONTENTS SHALL BE FURNISHED OR DISCLOSED TO OR COPIED OR USED BY PERSONS
OUTSIDE RAYTHEON COMPANY WITHOUT THE EXPRESS WRITTEN APPROVAL OF RAYTHEON
COMPANY.
THIS PROPRIETARY NOTICE IS NOT APPLICABLE IF DELIVERED TO THE U.S.
GOVERNMENT.
UNPUBLISHED WORK - COPYRIGHT RAYTHEON COMPANY.
-------------------------------------------------------------------------*/
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.XPath;
namespace ProgramLib
{
/// <summary>
/// Store UUT information
/// </summary>
internal class UutInfo
{
public enum UniversalCable
{
W1,
W2,
NOT_SET
}
public enum BuildLevel
{
GMA,
AUR,
SELF_TEST,
NOT_SET
}
public enum SacrificialCable
{
W3,
W4,
NOT_SET
}
// class variables
public string PartNumber { get; private set; }
public string SerialNumber { get; private set; }
public BuildLevel UutBuildLevel { get; set; }
public UniversalCable UniversalCableId { get; set; }
public SacrificialCable SacrificialCableId { get; set; }
public Dictionary<string, List<UutTestMessageDataFieldInfo>> UutTestMessageDict { get; set; }
public string UutTestMessageConfigFilePath { get; private set; }
/// <summary>
/// The constructor
/// </summary>
public UutInfo(string partNumber, string serialNumber)
{
PartNumber = partNumber;
SerialNumber = serialNumber;
UutBuildLevel = BuildLevel.NOT_SET;
UniversalCableId = UniversalCable.NOT_SET;
SacrificialCableId = SacrificialCable.NOT_SET;
UutTestMessageDict = new Dictionary<string, List<UutTestMessageDataFieldInfo>>(StringComparer.OrdinalIgnoreCase);
}
/// <summary>
/// Initialize
/// </summary>
public void Initialize()
{
ParseUutTestMessagesConfig();
}
/// <summary>
/// Parse UUT Test Messages Config
/// </summary>
private void ParseUutTestMessagesConfig()
{
string configFileName = Program.Instance().ProgramGeneralConfig.ReadValue(ProgramGeneralConfigIni.GENERAL.ToString(), ProgramGeneralConfigIni.UUT_TEST_MESSAGES_CONFIG_FILE_NAME.ToString());
UutTestMessageConfigFilePath = Path.Combine(Program.Instance().FileAndFolderManager.GetFolder(FileAndFolderManager.Folders.CONFIG), configFileName);
if (File.Exists(UutTestMessageConfigFilePath))
{
XPathDocument document = new XPathDocument(UutTestMessageConfigFilePath);
XPathNavigator nav = document.CreateNavigator();
// move to root node
nav.MoveToRoot();
// move to 1st and 2nd level node
if (nav.MoveToFirstChild() && nav.MoveToFirstChild())
{
string messageName;
do
{
messageName = nav.GetAttribute("name", String.Empty);
// move to 3rd level node
if (nav.MoveToFirstChild())
{
UutTestMessageDict[messageName] = ProcessUutTestMessageData(nav);
nav.MoveToParent();
}
} while (nav.MoveToNext());
}
}
}
/// <summary>
/// Process uut test message data
/// </summary>
static List<UutTestMessageDataFieldInfo> ProcessUutTestMessageData(XPathNavigator nav)
{
List<UutTestMessageDataFieldInfo> messageDataFieldList = new List<UutTestMessageDataFieldInfo>();
UutTestMessageDataFieldInfo messageDataField;
do
{
messageDataField = new UutTestMessageDataFieldInfo();
messageDataField.Name = nav.GetAttribute("name", String.Empty);
if (Int32.TryParse(nav.GetAttribute("byte_count", String.Empty), out int byteCount))
{
messageDataField.ByteCount = byteCount;
}
messageDataField.Type = nav.GetAttribute("type", String.Empty);
messageDataField.Value = nav.GetAttribute("value", String.Empty);
messageDataFieldList.Add(messageDataField);
} while (nav.MoveToNext());
return messageDataFieldList;
}
}
}