Major upgrade
This commit is contained in:
148
Source/Program/DataDef/UutInfo.cs
Normal file
148
Source/Program/DataDef/UutInfo.cs
Normal file
@@ -0,0 +1,148 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user