149 lines
4.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|