54 void clearErrorCode();
56 void airControllerNotifyCommandOutputMismatch(
bool conditionFlag,
bool commanded,
bool sensed);
57 void airControllerNotifyCommandSensorMismatch(
bool conditionFlag);
59 void displacementNotifySensorReportsInvalidCommand(
bool conditionFlag);
60 void displacementNotifySensorReportsCommunicationTimeoutError(
bool conditionFlag);
61 void displacementNotifySensorReportsDataLengthError(
bool conditionFlag);
62 void displacementNotifySensorReportsNumberOfParametersError(
bool conditionFlag);
63 void displacementNotifySensorReportsParameterError(
bool conditionFlag);
64 void displacementNotifySensorReportsCommunicationError(
bool conditionFlag);
65 void displacementNotifySensorReportsIDNumberError(
bool conditionFlag);
66 void displacementNotifySensorReportsExpansionLineError(
bool conditionFlag);
67 void displacementNotifySensorReportsWriteControlError(
bool conditionFlag);
68 void displacementNotifyResponseTimeoutError(
bool conditionFlag);
69 void displacementNotifyInvalidLength(
bool conditionFlag);
70 void displacementNotifyInvalidResponse(
bool conditionFlag);
71 void displacementNotifyUnknownCommand(
bool conditionFlag);
72 void displacementNotifyUnknownProblem(
bool conditionFlag);
74 void inclinometerNotifyResponseTimeout(
bool conditionFlag);
75 void inclinometerNotifyInvalidCRC(
bool conditionFlag);
76 void inclinometerNotifyUnknownAddress(
bool conditionFlag);
77 void inclinometerNotifyUnknownFunction(
bool conditionFlag);
78 void inclinometerNotifyInvalidLength(
bool conditionFlag);
79 void inclinometerNotifySensorReportsIllegalDataAddress(
bool conditionFlag);
80 void inclinometerNotifySensorReportsIllegalFunction(
bool conditionFlag);
81 void inclinometerNotifyUnknownProblem(
bool conditionFlag);
83 void interlockNotifyHeartbeatStateOutputMismatch(
bool conditionFlag);
84 void interlockNotifyAuxPowerNetworksOff(
bool conditionFlag);
85 void interlockNotifyThermalEquipmentOff(
bool conditionFlag);
86 void interlockNotifyAirSupplyOff(
bool conditionFlag);
87 void interlockNotifyCabinetDoorOpen(
bool conditionFlag);
88 void interlockNotifyTMAMotionStop(
bool conditionFlag);
89 void interlockNotifyGISHeartbeatLost(
bool conditionFlag);
91 void forceControllerNotifySafetyLimit(
bool conditionFlag);
92 void forceControllerNotifyXMomentLimit(
bool conditionFlag, std::string failed);
93 void forceControllerNotifyYMomentLimit(
bool conditionFlag, std::string failed);
94 void forceControllerNotifyZMomentLimit(
bool conditionFlag, std::string failed);
95 void forceControllerNotifyNearNeighborCheck(
bool conditionFlag, std::string failed,
float nominalZ,
96 float nominalZWarning);
97 void forceControllerNotifyMagnitudeLimit(
bool conditionFlag,
float globalForce);
98 void forceControllerNotifyFarNeighborCheck(
bool conditionFlag, std::string failed);
99 void forceControllerNotifyElevationForceClipping(
bool conditionFlag);
100 void forceControllerNotifyAzimuthForceClipping(
bool conditionFlag);
101 void forceControllerNotifyThermalForceClipping(
bool conditionFlag);
102 void forceControllerNotifyBalanceForceClipping(
bool conditionFlag);
103 void forceControllerNotifyAccelerationForceClipping(
bool conditionFlag);
104 void forceControllerNotifyActiveOpticNetForceCheck(
bool conditionFlag);
105 void forceControllerNotifyActiveOpticForceClipping(
bool conditionFlag);
106 void forceControllerNotifyStaticForceClipping(
bool conditionFlag);
107 void forceControllerNotifyOffsetForceClipping(
bool conditionFlag);
108 void forceControllerNotifyVelocityForceClipping(
bool conditionFlag);
109 void forceControllerNotifyForceClipping(
bool conditionFlag);
110 void forceControllerNotifyMeasuredXForceLimit(
int actuatorId,
float xForce,
bool conditionFlag);
111 void forceControllerNotifyMeasuredYForceLimit(
int actuatorId,
float yForce,
bool conditionFlag);
112 void forceControllerNotifyMeasuredZForceLimit(
int actuatorId,
float zForce,
bool conditionFlag);
114 void positionControllerNotifyLimitLow(
int hp,
bool conditionFlag);
115 void positionControllerNotifyLimitHigh(
int hp,
bool conditionFlag);
116 void positionControllerNotifyUnstable(
int hp, int32_t unstableCount, int32_t deltaEncoder);
117 void positionControllerHighTension(
int hp,
float weightSupportedPercent);
119 void cellLightNotifyOutputMismatch(
bool conditionFlag,
bool commanded,
bool sensed);
120 void cellLightNotifySensorMismatch(
bool conditionFlag,
bool commanded,
bool sensed);
122 void powerControllerNotifyPowerNetworkAOutputMismatch(
bool conditionFlag);
123 void powerControllerNotifyPowerNetworkBOutputMismatch(
bool conditionFlag);
124 void powerControllerNotifyPowerNetworkCOutputMismatch(
bool conditionFlag);
125 void powerControllerNotifyPowerNetworkDOutputMismatch(
bool conditionFlag);
126 void powerControllerNotifyAuxPowerNetworkAOutputMismatch(
bool conditionFlag);
127 void powerControllerNotifyAuxPowerNetworkBOutputMismatch(
bool conditionFlag);
128 void powerControllerNotifyAuxPowerNetworkCOutputMismatch(
bool conditionFlag);
129 void powerControllerNotifyAuxPowerNetworkDOutputMismatch(
bool conditionFlag);
131 void raiseOperationTimeout(
bool conditionFlag);
133 void lowerOperationTimeout(
bool conditionFlag);
135 void ilcCommunicationTimeout(
bool conditionFlag);
136 void modbusIRQTimeout(uint32_t timeout, uint32_t irqs);
138 void forceActuatorFollowingError(
int actuatorId,
int actuatorDataIndex,
bool countingWarning,
139 bool immediateFault);
141 void hardpointActuatorBreakawayFault(
int actuatorDataIndex,
bool conditionFlag);
162 void hardpointActuatorFollowingError(
int hp,
double fePercent);
164 void tmaAzimuthTimeout(
double currentTimeout);
165 void tmaElevationTimeout(
double currentTimeout);
166 void tmaInclinometerDeviation(
double currentDeviation);
180 States::Type
checkSafety(States::Type preferredNextState);
183 template <
typename... Args>
184 void _updateOverride(
FaultCodes::Type faultCode,
bool enabledFlag,
bool conditionFlag,
185 std::string errorReport, Args &&...args) {
186 bool faultConditionExists = enabledFlag && conditionFlag;
187 if (faultConditionExists && _errorCodeData->errorCode == FaultCodes::NoFault) {
188 _errorCodeData->errorCode = faultCode;
189 _errorCodeData->errorReport = fmt::format(errorReport, args...);
197 MTM1M3_logevent_errorCodeC *_errorCodeData;
199 std::list<int> _ilcCommunicationTimeoutData;
200 std::list<int> _forceActuatorFollowingErrorData[FA_COUNT];
201 std::list<int> _hardpointActuatorMeasuredForceData[HP_COUNT];
202 std::list<int> _hardpointActuatorAirPressureData[HP_COUNT];
203 bool _hardpointLimitLowTriggered[HP_COUNT];
204 bool _hardpointLimitHighTriggered[HP_COUNT];
205 bool _hardpointMeasuredForceWarning[HP_COUNT];
206 int _hardpointFeViolations[HP_COUNT];