Major upgrade

This commit is contained in:
Duc
2025-10-24 15:18:11 -07:00
parent fd85735c93
commit ce583d1664
478 changed files with 237518 additions and 47610 deletions

View File

@@ -0,0 +1,45 @@
/*-------------------------------------------------------------------------
// 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.
-------------------------------------------------------------------------*/
namespace ProgramLib
{
/// <summary>
/// Define all complex data types here for COE messaging
/// </summary>
internal static class Coe
{
// got this from SW\Algorithms\ngsri\MissionManager\Algorithm\MissionManagerTypes.hpp
// repo: https://tfs.rms.ray.com/LWS/NGSRI/_git/MissileKit2.NGSRI
public enum MmgrState
{
INIT, // Initialization including Power-on Bit
COOL_DOWN, // TODO: Remove as this will be covered by PBit test
CALIBRATION,
ACQUISITION,
PRELAUNCH,
COMMIT,
LAUNCH,
MIDCOURSE,
TERMINAL,
ENDGAME, // Final nominal state
SELF_DESTRUCT, // Off-nominal state to abort the mission post-launch
NOT_SET // this must be last
};
}
}

View File

@@ -1,4 +1,21 @@
using Raytheon.Instruments.PowerSupply;
/*-------------------------------------------------------------------------
// 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 Raytheon.Instruments.PowerSupply;
namespace ProgramLib
{
@@ -8,7 +25,7 @@ namespace ProgramLib
internal class PowerSupplyData
{
public double Voltage { get; set; }
public double Current { get; set; }
public double Current { get; set; }
public PowerSupplyModuleInfo PowerSupplyModuleInfo { get; set; }
public bool Initialized { get; set; }

View File

@@ -1,4 +1,22 @@
using System.Collections.Generic;
/*-------------------------------------------------------------------------
// 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.Collections.Generic;
using System.Linq;
using Raytheon.Instruments.PowerSupply;
namespace ProgramLib
@@ -9,7 +27,7 @@ namespace ProgramLib
internal class PowerSupplySharedData
{
private object syncObj = new object();
private Dictionary<string,object> syncObjDict = new Dictionary<string, object>();
private Dictionary<string, object> syncObjDict = new Dictionary<string, object>();
private Dictionary<string, PowerSupplyData> _powerSupplyDataDict = new Dictionary<string, PowerSupplyData>();
/// <summary>
@@ -65,6 +83,21 @@ namespace ProgramLib
}
}
/// <summary>
/// Get all power modules
/// </summary>
public List<string> GetAllPowerModules()
{
List<string> powerModuleList = new List<string>();
lock (syncObj)
{
powerModuleList = _powerSupplyDataDict.Keys.ToList();
}
return powerModuleList;
}
/// <summary>
/// Set each power supply data to uninialized
/// </summary>

View File

@@ -0,0 +1,45 @@
/*-------------------------------------------------------------------------
// 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;
namespace ProgramLib
{
/// <summary>
/// Store test information
/// </summary>
internal class TestInfo
{
// class variables
public string TestType { get; set; }
public string TestOperator { get; set; }
public string TestName { get; set; }
public DateTime TestStartDateTime { get; set; }
/// <summary>
/// The constructor
/// </summary>
public TestInfo(string testType, string testName, string testOperator = "DefaultTestOperator", DateTime testStartTime = default)
{
TestType = testType;
TestName = testName;
TestOperator = testOperator;
TestStartDateTime = testStartTime;
}
}
}

View File

@@ -0,0 +1,79 @@
/*-------------------------------------------------------------------------
// 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.Runtime.InteropServices;
namespace ProgramLib
{
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct UartHandshakeMessage
{
public byte Id { get; set; }
public UInt64 Pattern1 { get; set; }
public UInt64 Pattern2 { get; set; }
public byte Checksum { get; set; }
public UartHandshakeMessage(UInt64 pattern1, UInt64 pattern2)
{
Id = 0x0C;
Pattern1 = pattern1;
Pattern2 = pattern2;
Checksum = 0;
}
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct UartAckNackMessage
{
public byte Id { get; set; }
public byte AckId { get; set; }
public byte Ack { get; set; }
public byte Checksum { get; set; }
public UartAckNackMessage(byte ackId, byte ack)
{
Id = 0x03;
AckId = ackId;
Ack = ack;
Checksum = 0;
}
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct UartPbitResultMessage
{
public byte Id { get; set; }
public byte PbitFinalResult { get; set; }
public UInt16 PbitAggregate { get; set; }
public Int16 GspTemp { get; set; }
public UInt32 LifetimeTime { get; set; }
public byte LifetimeCount { get; set; }
public byte Checksum { get; set; }
public UartPbitResultMessage()
{
Id = 0xC0;
PbitFinalResult = 0;
PbitAggregate = 0;
GspTemp = 0;
LifetimeTime = 0;
LifetimeCount = 0;
Checksum = 0;
}
}
}

View 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;
}
}
}

View File

@@ -0,0 +1,34 @@
/*-------------------------------------------------------------------------
// 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.
-------------------------------------------------------------------------*/
namespace ProgramLib
{
/// <summary>
/// Definition for a UUT Test Message Data Field
/// </summary>
internal class UutTestMessageDataFieldInfo
{
public UutTestMessageDataFieldInfo()
{
}
public string Name { get; set; }
public int ByteCount { get; set; }
public string Type { get; set; }
public string Value { get; set; }
}
}