Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -r026197c08dc426a0a79c9a958d20578d52a9fee3 -r8b97a7e50a19f1c243559ad77c69b6a9e6ad067a --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 026197c08dc426a0a79c9a958d20578d52a9fee3) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 8b97a7e50a19f1c243559ad77c69b6a9e6ad067a) @@ -20,13 +20,13 @@ #include "AlarmLamp.h" //#include "BloodFlow.h" -#include "Buttons.h" +//#include "Buttons.h" #include "Compatible.h" #include "CpldInterface.h" #include "Ejector.h" //#include "Fans.h" #include "FpgaTD.h" -#include "Integrity.h" +//#include "Integrity.h" #include "Messaging.h" #include "ModeInitPOST.h" //#include "NVDataMgmt.h" @@ -144,13 +144,13 @@ U32 execInitAndPOSTMode( void ) { SELF_TEST_STATUS_T testStatus = SELF_TEST_STATUS_IN_PROGRESS; - BOOL stop = isStopButtonPressed(); +// BOOL stop = isStopButtonPressed(); +// +// if ( TRUE == stop ) +// { +// // Ignore stop button in this mode. +// } - if ( TRUE == stop ) - { - // Ignore stop button in this mode. - } - // Execute current POST state *Note - these switch cases must be in same order as enum HD_POST_States switch ( postState ) { @@ -159,7 +159,7 @@ break; case POST_STATE_FW_INTEGRITY: - testStatus = execIntegrityTest(); +// testStatus = execIntegrityTest(); postState = handlePOSTStatus( testStatus ); break; @@ -168,91 +168,78 @@ // can query their corresponding calibration values successfully case POST_STATE_NVDATAMGMT: // testStatus = execNVDataMgmtSelfTest(); - // TODO: Restore NVDataMgmt POST execution when NVDataMgmt self-test is available. - // Temporarily pass this POST state so the POST sequence can continue. - testStatus = SELF_TEST_STATUS_PASSED; postState = handlePOSTStatus( testStatus ); break; case POST_STATE_WATCHDOG: // testStatus = execWatchdogTest(); - // TODO: Restore Watchdog POST execution when DVT hardware support is available. - // Temporarily pass this POST state so the POST sequence can continue. - testStatus = SELF_TEST_STATUS_PASSED; postState = handlePOSTStatus( testStatus ); break; case POST_STATE_SAFETY_SHUTDOWN: // testStatus = execSafetyShutdownTest(); - // TODO: Restore Safety Shutdown POST execution when DVT hardware support is available. - // Temporarily pass this POST state so the POST sequence can continue. - testStatus = SELF_TEST_STATUS_PASSED; postState = handlePOSTStatus( testStatus ); break; case POST_STATE_BLOOD_FLOW: // testStatus = execBloodFlowTest(); - // TODO: Restore Blood Flow POST execution when Blood Flow self-test is available. - // Temporarily pass this POST state so the POST sequence can continue. - testStatus = SELF_TEST_STATUS_PASSED; postState = handlePOSTStatus( testStatus ); // sendUIRequestPOSTFinalResult(); // request UI POST final result here so we have it before UI test below break; case POST_STATE_VALVES: // testStatus = execValvesSelfTest(); - // TODO: Restore Valves POST execution when Valves self-test is available. - // Temporarily pass this POST state so the POST sequence can continue. - testStatus = SELF_TEST_STATUS_PASSED; postState = handlePOSTStatus( testStatus ); break; case POST_STATE_SYRINGE_PUMP: // testStatus = execSyringePumpSelfTest(); - // TODO: Restore Syringe Pump POST execution when Syringe Pump self-test is available. - // Temporarily pass this POST state so the POST sequence can continue. - testStatus = SELF_TEST_STATUS_PASSED; postState = handlePOSTStatus( testStatus ); break; - case POST_STATE_PRESSURE: -// testStatus = execPressureSelfTest(); - // TODO: Restore Pressure POST execution when Pressure self-test is available. - // Temporarily pass this POST state so the POST sequence can continue. - testStatus = SELF_TEST_STATUS_PASSED; + case POST_STATE_PRES_OCCL: +// testStatus = execPresOcclSelfTest(); postState = handlePOSTStatus( testStatus ); break; case POST_STATE_ALARM_AUDIO: - testStatus = execAlarmAudioSelfTest(); +#ifndef _RELEASE_ +// if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_ALARM_AUDIO ) != SW_CONFIG_ENABLE_VALUE ) +#endif +// { +// testStatus = execAlarmAudioSelfTest(); +// } +#ifndef _RELEASE_ +// else + { + testStatus = SELF_TEST_STATUS_PASSED; + } +#endif postState = handlePOSTStatus( testStatus ); break; case POST_STATE_ALARM_LAMP: - testStatus = execAlarmLampTest(); +// testStatus = execAlarmLampTest(); postState = handlePOSTStatus( testStatus ); break; case POST_STATE_TEMPERATURES: // testStatus = execTemperaturesSelfTest(); - // TODO: Restore Temperatures POST execution when Temperatures self-test is available. - // Temporarily pass this POST state so the POST sequence can continue. - testStatus = SELF_TEST_STATUS_PASSED; postState = handlePOSTStatus( testStatus ); break; case POST_STATE_STUCK_BUTTON: - testStatus = execStuckButtonTest(); +// testStatus = execStuckButtonTest(); postState = handlePOSTStatus( testStatus ); break; case POST_STATE_UI_POST: - testStatus = execUITest(); +// testStatus = execUITest(); postState = handlePOSTStatus( testStatus ); break; case POST_STATE_FW_COMPATIBILITY: - testStatus = execFWCompatibilityTest(); +// testStatus = execFWCompatibilityTest(); postState = handlePOSTStatus( testStatus ); break; @@ -263,7 +250,7 @@ // Should be last POST (and last POST test must be a test that completes in a single call) case POST_STATE_FPGA: - testStatus = execFPGATest(); +// testStatus = execFPGATest(); handlePOSTStatus( testStatus ); // Ignoring return value because last test if ( TRUE == tempPOSTPassed ) { @@ -458,7 +445,7 @@ if ( testStatus == SELF_TEST_STATUS_PASSED ) { // Broadcast passed POST result - sendPOSTTestResult( (TD_POST_STATE_T)( (int)postState ), TRUE ); +// sendPOSTTestResult( (HD_POST_STATE_T)((int)postState), TRUE ); // Move on to next POST test result = (TD_POST_STATE_T)((int)postState + 1); } @@ -467,8 +454,8 @@ // At least one POST has failed tempPOSTPassed = FALSE; // Broadcast failed POST results - sendPOSTTestResult( (TD_POST_STATE_T)( (int)postState ), FALSE ); - sendPOSTFinalResult( FALSE ); +// sendPOSTTestResult( (HD_POST_STATE_T)((int)postState), FALSE ); +// sendPOSTFinalResult( FALSE ); // Test that failed should have triggered a fault which will request fault mode, so should POST state machine should never see FAILED state and will fault if it does result = POST_STATE_FAILED; } @@ -500,21 +487,21 @@ setSystemREG1_SYSECR( getSystemREG1_SYSECR() ); // clear reset bit(s) after logging event so subsequent resets can be properly identified as not being power-on resets. setCrcREG_PSA_SIGREGL1( 0 ); // clear preserved power-on reset bit. - sendUIVersionRequest(); // request UI to send us its version - needed for compatibility check +// sendUIVersionRequest(); // request UI to send us its version - needed for compatibility check - if ( TRUE == isDDCommunicating() ) - { - sendRequestForDDResendAlarms(); // request DD to re-send any active alarms that may have been triggered before we came up - } +// if ( TRUE == isDGCommunicating() ) +// { +// sendRequestForDGResendAlarms(); // request DG to re-send any active alarms that may have been triggered before we came up +// } // Send the startup event - SEND_EVENT_WITH_2_U32_DATA( TD_EVENT_STARTUP, systemREG1->DEV, 0x12345678 ) // log startup event w/ device ID bits - SEND_EVENT_WITH_2_U32_DATA( TD_EVENT_STARTUP, resetReason, systemREG1->GBLSTAT ) // log startup event w/ reset reason(s) bits +// SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_STARTUP, systemREG1->DEV, 0x12345678 ) // log startup event w/ device ID bits +// SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_STARTUP, resetReason, systemREG1->GBLSTAT ) // log startup event w/ reset reason(s) bits // Send the first submode change event. It is the mode Init and it does not start from a previous // mode previous and current are both published as Init - SEND_EVENT_WITH_2_U32_DATA( TD_EVENT_OP_MODE_CHANGE, MODE_INIT, MODE_INIT ) - state = POST_STATE_FW_INTEGRITY; +// SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_OP_MODE_CHANGE, MODE_INIT, MODE_INIT ) + state = POST_STATE_COMPLETED; //POST_STATE_FW_INTEGRITY; startPOSTDelayCounter = 0; } @@ -524,19 +511,19 @@ /*********************************************************************//** * @brief * The execFWCompatibilityTest function executes the firmware compatibility test. - * @details \b Inputs: uiVersion + * @details \b Inputs: none * @details \b Outputs: none * @return in progress, passed, or failed *************************************************************************/ static SELF_TEST_STATUS_T execFWCompatibilityTest( void ) { SELF_TEST_STATUS_T result = SELF_TEST_STATUS_PASSED; - if ( uiVersion.compatibility != SW_COMPATIBILITY_REV ) - { - result = SELF_TEST_STATUS_FAILED; - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_UI_COMPATIBILITY_ERROR, uiVersion.compatibility, SW_COMPATIBILITY_REV ) - } +// if ( uiVersion.compatibility != SW_COMPATIBILITY_REV ) +// { +// result = SELF_TEST_STATUS_FAILED; +// SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_UI_COMPATIBILITY_ERROR, uiVersion.compatibility, SW_COMPATIBILITY_REV ) +// } return result; } @@ -553,28 +540,24 @@ SELF_TEST_STATUS_T result = SELF_TEST_STATUS_IN_PROGRESS; // UI should have sent POST results before we start this test - if ( TRUE == uiPOSTResultReceived ) - { - if ( TRUE == uiPOSTPassed ) +// if ( TRUE == uiPOSTResultReceived ) +// { +// if ( TRUE == uiPOSTPassed ) { result = SELF_TEST_STATUS_PASSED; } - else - { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_TD_UI_POST_TIMEOUT, 0 ) - result = SELF_TEST_STATUS_FAILED; - } - } - // If UI had not already sent POST results before we started, allow finite period for UI to send. - else if ( ++waitForUIPostTimerCtr > POST_UI_MAX_WAIT_TIME ) - { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_TD_UI_POST_TIMEOUT, 1 ) - result = SELF_TEST_STATUS_FAILED; - } - else - { - // do nothing - } +// else +// { +// SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_UI_POST_TIMEOUT, 0 ) +// result = SELF_TEST_STATUS_FAILED; +// } +// } +// // If UI had not already sent POST results before we started, allow finite period for UI to send. +// else if ( ++waitForUIPostTimerCtr > POST_UI_MAX_WAIT_TIME ) +// { +// SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_UI_POST_TIMEOUT, 1 ) +// result = SELF_TEST_STATUS_FAILED; +// } return result; } Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -rbaec590e57965acc167c510875127addf4ac34dd -r8b97a7e50a19f1c243559ad77c69b6a9e6ad067a --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision baec590e57965acc167c510875127addf4ac34dd) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 8b97a7e50a19f1c243559ad77c69b6a9e6ad067a) @@ -151,7 +151,8 @@ newMode = arbitrateModeRequest(); // Will return current mode if no pending requests #ifndef TEST_UI_ONLY - // Verify mode transition is legal unless tester working with system TODO - restore check when all modes are implemented + // Verify mode transition is legal unless tester working with system + //TODO - restore check when all modes are implemented // if ( ( isTestingActivated() != TRUE ) && ( getTestConfigStatus( TEST_CONFIG_RECOVER_TREATMENT ) != TRUE ) ) { newMode = MODE_TRANSITION_TABLE[ currentMode ][ newMode ]; @@ -161,7 +162,8 @@ // Is requested new mode valid and legal at this time? if ( newMode >= MODE_NLEG ) { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_ILLEGAL_MODE_TRANSITION_REQUESTED, newMode ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, + SW_FAULT_ID_OP_MODES_ILLEGAL_MODE_TRANSITION_REQUESTED, newMode ) newMode = currentMode; } @@ -176,7 +178,8 @@ if ( MODE_TREA == lastMode ) { // If the last mode is treatment but the new mode is not treatment - // it means the treatment is done. Get the elapsed time since the beginning of the treatment and convert it to hours to be written + // it means the treatment is done. Get the elapsed time since the + // beginning of the treatment and convert it to hours to be written U32 txElapsedTimeMS = calcTimeSince( getTreatmentStartTimeStamp() ); F32 txElapsedTimeHrs = (F32)txElapsedTimeMS / ( (F32)( MIN_PER_HOUR * SEC_PER_MIN * MS_PER_SECOND ) ); @@ -222,15 +225,18 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_STATE, currentMode ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, + SW_FAULT_ID_OP_MODES_INVALID_MODE_STATE, + currentMode ) currentMode = MODE_FAUL; currentSubMode = 0; break; } // End switch #ifndef _VECTORCAST_ // Send operation status event when appropriate - if ( ( priorSubMode != currentSubMode ) || ( priorSubState != currentSubState ) || ( prior4thLevelState != current4thLevelState ) ) + if ( ( priorSubMode != currentSubMode ) || ( priorSubState != currentSubState ) + || ( prior4thLevelState != current4thLevelState ) ) #endif { sendOperationStatusEvent(); @@ -338,7 +344,9 @@ // signalAlarmActionToPostTreatmentMode( action ); // break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_SIGNAL_ACTION, currentMode ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, + SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_SIGNAL_ACTION, + currentMode ) break; } } @@ -467,7 +475,6 @@ U32 pendingIndex = 0; CONFIRMATION_REQUEST_STATUS_T status = CONFIRMATION_REQUEST_STATUS_PENDING; U32 i; - GENERIC_CONFIRMATION_REQUEST_T cmd; memset( &cmd, 0, sizeof( GENERIC_CONFIRMATION_REQUEST_T ) ); @@ -556,14 +563,16 @@ /*********************************************************************//** * @brief * The addConfirmationRequest function sends a confirmation request to UI - * @details \b Inputs: confirmRequests[] + * @details \b Inputs: confirmRequests[], MSG_ID_TD_UI_GENERIC_CONFIRMATION_REQUEST * @details \b Outputs: confirmRequests[] new added. * @param requestID ID of confirmation being requested * @param requestType Type of confirmation being requested (open, close, reject) * @param rejectReason Reason for reject if type is reject * @return request ID - will be non-zero if added *************************************************************************/ -GENERIC_CONFIRM_ID_T addConfirmationRequest( GENERIC_CONFIRM_ID_T requestID, GENERIC_CONFIRM_COMMAND_T requestType, U32 rejectReason ) +GENERIC_CONFIRM_ID_T addConfirmationRequest( GENERIC_CONFIRM_ID_T requestID, + GENERIC_CONFIRM_COMMAND_T requestType, + U32 rejectReason ) { U32 i; BOOL confirmAlreadyPending = FALSE; Index: firmware/App/Monitors/Buttons.c =================================================================== diff -u -r62a953813104dd3e3c462c6a771dbb90f5e28722 -r8b97a7e50a19f1c243559ad77c69b6a9e6ad067a --- firmware/App/Monitors/Buttons.c (.../Buttons.c) (revision 62a953813104dd3e3c462c6a771dbb90f5e28722) +++ firmware/App/Monitors/Buttons.c (.../Buttons.c) (revision 8b97a7e50a19f1c243559ad77c69b6a9e6ad067a) @@ -62,7 +62,7 @@ static OVERRIDE_U32_T dataOffButtonState; ///< Current off button state (overrideable). static BUTTON_STATE_T prevOffButtonState; ///< Previous state of off button. -static BOOL offRequestAwaitingUserConfirmation; ///< Flag indicates whether a power off request is pending user confirmation. +static BOOL offRequestAwaitingUserConfirmation; ///< Flag indicates whether a power off request is pending user confirmation. static volatile U32 offRequestPendingTimer; ///< Timer counter for pending power off request. static volatile BOOL offButtonPressPending; ///< Flag indicates whether a confirmed power off request is pending execution. static volatile U32 offRequestPulseCount; ///< Power off sequence step counter. @@ -367,7 +367,6 @@ } else if ( CONFIRMATION_REQUEST_STATUS_ACCEPTED == responseStatus ) { - if ( TRUE == isCurrentOpModeOkToTurnOff() ) { POWER_OFF_WARNING_DATA_T data; @@ -438,7 +437,7 @@ if ( getStopButtonState() == BUTTON_STATE_PRESSED ) { stopButtonPressPending = TRUE; -// stopButtonPendingTimer = getMSTimerCount(); + stopButtonPendingTimer = getMSTimerCount(); // Log stop button press SEND_EVENT_WITH_2_U32_DATA( TD_EVENT_BUTTON, BUTTON_STOP, BUTTON_STATE_PRESSED ) } Index: firmware/App/Services/CpldInterface.c =================================================================== diff -u -r056bb7c3e42a6c56e10ff75f69aa1d7b9e5c8af8 -r8b97a7e50a19f1c243559ad77c69b6a9e6ad067a --- firmware/App/Services/CpldInterface.c (.../CpldInterface.c) (revision 056bb7c3e42a6c56e10ff75f69aa1d7b9e5c8af8) +++ firmware/App/Services/CpldInterface.c (.../CpldInterface.c) (revision 8b97a7e50a19f1c243559ad77c69b6a9e6ad067a) @@ -285,7 +285,7 @@ * @details \b Alarm: ALARM_ID_HD_SAFETY_SHUTDOWN_POST_TEST_FAILED if self-test fails. * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if self-test state is invalid. * @details \b Inputs: safetyShutdownSelfTestState - * @details \b Outputs: safetyShutdownSelfTestState + * @details \b Outputs: safetyShutdownSelfTestState, safetyShutdownSelfTestStatus * @return in progress, passed, or failed *************************************************************************/ SELF_TEST_STATUS_T execSafetyShutdownTest( void ) Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r689ec9d4574754ba13d0b630eed4eef0eeb79760 -r8b97a7e50a19f1c243559ad77c69b6a9e6ad067a --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 689ec9d4574754ba13d0b630eed4eef0eeb79760) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 8b97a7e50a19f1c243559ad77c69b6a9e6ad067a) @@ -532,7 +532,7 @@ * The handleUIVersionResponse function handles a response to request for * UI version information. * @details Inputs: none - * @details Outputs: message handled + * @details Outputs: none * @param message a pointer to the message to handle. * @return none *************************************************************************/ @@ -622,7 +622,7 @@ /*********************************************************************//** * @brief * The sendRequestForDDResendAlarms function sends out the TD request for - * DG re-send all active alarms. + * DD re-send all active alarms. * @details \b Inputs: none * @details \b Outputs: DD alarms re-send request msg constructed and queued * @return TRUE if msg successfully queued for transmit, FALSE if not @@ -785,7 +785,7 @@ * @brief * The sendPOSTTestResult function sends the result of a single TD POST * test to the UI. - * @details \b Inputs: none + * @details \b Inputs: MSG_ID_TD_POST_SINGLE_TEST_RESULT * @details \b Outputs: TD POST test result msg queued for CAN transmit. * @param test ID of the TD POST test. * @param passed TRUE if POST test passed, FALSE if POST test failed. @@ -807,7 +807,7 @@ * @brief * The sendPOSTFinalResult function sends the overall TD POST result * and queues the message for transmit on the appropriate CAN channel. - * @details \b Inputs: none + * @details \b Inputs: MSG_ID_TD_POST_FINAL_TEST_RESULT * @details \b Outputs: TD POST final result msg queued for CAN transmit. * @param passed TRUE if all TD POST tests passed, FALSE otherwise. * @return TRUE if message successfully queued for transmit, FALSE if not Index: firmware/App/Services/Messaging.h =================================================================== diff -u -r689ec9d4574754ba13d0b630eed4eef0eeb79760 -r8b97a7e50a19f1c243559ad77c69b6a9e6ad067a --- firmware/App/Services/Messaging.h (.../Messaging.h) (revision 689ec9d4574754ba13d0b630eed4eef0eeb79760) +++ firmware/App/Services/Messaging.h (.../Messaging.h) (revision 8b97a7e50a19f1c243559ad77c69b6a9e6ad067a) @@ -140,11 +140,11 @@ BOOL sendPOSTFinalResult( BOOL passed ); BOOL sendUIVersionRequest( void ); BOOL sendRequestForDDResendAlarms( void ); +BOOL sendAckResponseMsg( MSG_ID_T msgID, COMM_BUFFER_T buffer, BOOL ack ); BOOL testSetTestConfiguration( MESSAGE_T *message ); BOOL testGetTestConfiguration( MESSAGE_T *message ); BOOL testResetAllTestConfigurations( MESSAGE_T *message ); -BOOL sendAckResponseMsg( MSG_ID_T msgID, COMM_BUFFER_T buffer, BOOL ack ); /**@}*/ Index: firmware/App/Services/SystemCommTD.c =================================================================== diff -u -r38c9625b3c32f4bcddeafdac78c45a6d842840dd -r8b97a7e50a19f1c243559ad77c69b6a9e6ad067a --- firmware/App/Services/SystemCommTD.c (.../SystemCommTD.c) (revision 38c9625b3c32f4bcddeafdac78c45a6d842840dd) +++ firmware/App/Services/SystemCommTD.c (.../SystemCommTD.c) (revision 8b97a7e50a19f1c243559ad77c69b6a9e6ad067a) @@ -24,7 +24,6 @@ #include "Comm.h" #include "Interrupts.h" #include "Messaging.h" -#include "MessageSupport.h" #include "OperationModes.h" #include "SystemCommTD.h" #include "Timers.h" Index: firmware/App/Services/SystemCommTD.h =================================================================== diff -u -r9fcd1ad071bcce7a592833367c103e235e49654f -r8b97a7e50a19f1c243559ad77c69b6a9e6ad067a --- firmware/App/Services/SystemCommTD.h (.../SystemCommTD.h) (revision 9fcd1ad071bcce7a592833367c103e235e49654f) +++ firmware/App/Services/SystemCommTD.h (.../SystemCommTD.h) (revision 8b97a7e50a19f1c243559ad77c69b6a9e6ad067a) @@ -19,7 +19,6 @@ #define __SYSTEM_COMM_TD_H__ #include "TDCommon.h" -#include "TDDefs.h" #include "CommBuffers.h" #include "MsgQueues.h" #include "SystemComm.h"