Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r1fa3d19e3ca08af7cedbf481265989830dba2627 -r35f1db1a4e254a69234e50082d0cce0122e6a84c --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 1fa3d19e3ca08af7cedbf481265989830dba2627) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 35f1db1a4e254a69234e50082d0cce0122e6a84c) @@ -23,6 +23,7 @@ #include "Messaging.h" #include "ModePreTreat.h" #include "OperationModes.h" +#include "PinchValve.h" #include "StatePreTxRecirculate.h" #include "SyringePump.h" #include "TaskGeneral.h" @@ -54,6 +55,8 @@ static U32 preTreatmentStateBroadcastTimerCtr; ///< Pre-Treatment state data broadcast timer counter. static OVERRIDE_U32_T preTreatmentStatePublishInterval; ///< Pre-Treatment state data publication interval override. +static BOOL resumePreTxAlarmResponseRequest; ///< Flag indicates user has requested PreTx resume. + // ********** private function prototypes ********** static void setPreTreatStateTransition( void ); ///< Configure actuators and variables for Pre-Treatment state transitions. @@ -143,11 +146,11 @@ break; case TD_PRE_TREATMENT_SELF_TEST_DRY_STATE: - // currentPreTreatmentState = handleSelfTestDryState(); + currentPreTreatmentState = handleSelfTestDryState(); break; case TD_PRE_TREATMENT_PRIME_STATE: - // currentPreTreatmentState = handlePrimeState(); + currentPreTreatmentState = handlePrimeState(); break; case TD_PRE_TREATMENT_CONFIRM_RX_STATE: @@ -283,8 +286,7 @@ state = TD_PRE_TREATMENT_TUBING_SET_INSTALL_STATE; } - // TODO: Transition to Prime state on completion when implemented - // state = TD_PRE_TREATMENT_PRIME_STATE; + state = TD_PRE_TREATMENT_PRIME_STATE; return state; } @@ -293,17 +295,21 @@ * @brief * The handlePrimeState function executes the Prime state of * pre-treatment mode. - * @details \b Inputs: TODO fill up if any - * @details \b Outputs: TODO fill up if any + * @details \b Inputs: none + * @details \b Outputs: none * @return next Pre-Treatment mode state. *************************************************************************/ static TD_PRE_TREATMENT_MODE_STATE_T handlePrimeState( void ) { TD_PRE_TREATMENT_MODE_STATE_T state = TD_PRE_TREATMENT_PRIME_STATE; - // TODO: Transition to Recirculate state on completion when implemented - // state = TD_PRE_TREATMENT_RECIRCULATE_STATE; + execPrime(); + if ( PRIME_COMPLETE_STATE == getCurrentPrimeState() ) + { + state = TD_PRE_TREATMENT_RECIRCULATE_STATE; + } + return state; } @@ -501,6 +507,7 @@ break; case ALARM_ACTION_RESUME: + resumePreTxAlarmResponseRequest = TRUE; if ( TD_PRE_TREATMENT_RECIRCULATE_STATE == currentPreTreatmentState ) { signalResumePreTxRecirculate(); @@ -515,6 +522,17 @@ /*********************************************************************//** * @brief + * The signalPreTxResumeRequest function signals that user wants to resume. + * @details \b Inputs: resumePreTxAlarmResponseRequest + * @details \b Outputs: none + * @return TRUE if resume has been requested, FALSE if not + *************************************************************************/ +BOOL signalPreTxResumeRequest( void ) +{ + return resumePreTxAlarmResponseRequest; +} + +/*********************************************************************//** * The publishPreTreatmentStates function publishes the current * Pre-Treatment state and associated sub-state data to the UI. * @details \b Inputs: currentPreTreatmentState, preTreatmentStatePublishInterval Index: firmware/App/Modes/ModePreTreat.h =================================================================== diff -u -raaf0b2d7a81e5ff2d97e0e5b42e6cf7f1ca8fd7f -r35f1db1a4e254a69234e50082d0cce0122e6a84c --- firmware/App/Modes/ModePreTreat.h (.../ModePreTreat.h) (revision aaf0b2d7a81e5ff2d97e0e5b42e6cf7f1ca8fd7f) +++ firmware/App/Modes/ModePreTreat.h (.../ModePreTreat.h) (revision 35f1db1a4e254a69234e50082d0cce0122e6a84c) @@ -8,7 +8,7 @@ * @file ModePreTreat.h * * @author (last) Vijay Pamula -* @date (last) 12-Jun-2026 +* @date (last) 30-Jul-2026 * * @author (original) Dara Navaei * @date (original) 25-Sep-2025 Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -raaf0b2d7a81e5ff2d97e0e5b42e6cf7f1ca8fd7f -r35f1db1a4e254a69234e50082d0cce0122e6a84c --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision aaf0b2d7a81e5ff2d97e0e5b42e6cf7f1ca8fd7f) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 35f1db1a4e254a69234e50082d0cce0122e6a84c) @@ -8,7 +8,7 @@ * @file ModeStandby.c * * @author (last) Vijay Pamula -* @date (last) 07-Jul-2026 +* @date (last) 27-Jul-2026 * * @author (original) Sean Nash * @date (original) 01-Aug-2024 Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -rd94c5324fc18b9fda9d8f0b5efcf6f60a52f3f7a -r35f1db1a4e254a69234e50082d0cce0122e6a84c --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision d94c5324fc18b9fda9d8f0b5efcf6f60a52f3f7a) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 35f1db1a4e254a69234e50082d0cce0122e6a84c) @@ -202,6 +202,11 @@ SW_FAULT_ID_INVALID_MESSAGE_PAYLOAD_LENGTH = 171, SW_FAULT_ID_TD_BP_DRIVER_STATE = 172, SW_FAULT_ID_TD_BP_MODULE_STATE = 173, + SW_FAULT_ID_MODE_PRE_TX_PRIME_INVALID_STATE = 174, + SW_FAULT_ID_PID_CTRL_INVALID_CONTROLLER1 = 175, + SW_FAULT_ID_PID_CTRL_INVALID_CONTROLLER3 = 176, + SW_FAULT_ID_PID_CTRL_INVALID_CONTROLLER4 = 177, + SW_FAULT_ID_PID_CTRL_INVALID_SIGNAL = 178, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/FpgaTD.c =================================================================== diff -u -r2ea11baee3995194df04f348b4f5b5107869f760 -r35f1db1a4e254a69234e50082d0cce0122e6a84c --- firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision 2ea11baee3995194df04f348b4f5b5107869f760) +++ firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision 35f1db1a4e254a69234e50082d0cce0122e6a84c) @@ -71,6 +71,9 @@ #define FPGA_H18_BUBBLE_STATUS_MASK 0x0002 ///< Bit mask for venous air bubble detector input status. #define FPGA_H18_BUBBLE_SELF_TEST_CMD 0x08 ///< Bit for venous air bubble detector self-test command. +#define FPGA_NIBP_CMD_MASK 0x0F ///< Bit mask for NIBP command bits +#define FPGA_NIBP_CMD_RDY 0x10 ///< NIBP command ready pulse bit + /// Control bits to run syringe pump in reverse direction // TODO - move to syringe pump controller unit when implemented. static const U08 SYRINGE_PUMP_CONTROL_RUN_REVERSE = SYRINGE_PUMP_CONTROL_SLEEP_OFF | SYRINGE_PUMP_CONTROL_NOT_RESET | @@ -169,6 +172,18 @@ U32 baroTemperature; ///< Reg 372. Baro temperature value in counts. U08 baroReadCount; ///< Reg 376. Baro read count. U08 baroErrorCount; ///< Reg 377. Baro error count. + U08 notUsed; ///< Reg 378. Not used + U08 h10DacRdByte2; ///< Reg 379. H10 Syringe pump DAC Read Byte 2. + U08 h10DacRdByte3; ///< Reg 380. H10 Syringe pump DAC Read Byte 3. + U08 h10DacRdByte4; ///< Reg 381. H10 Syringe pump DAC Read Byte 4. + U08 h10DacRdByte5; ///< Reg 382. H10 Syringe pump DAC Read Byte 5. + U08 h10DacRdByte6; ///< Reg 383. H10 Syringe pump DAC Read Byte 6. + U08 nibpCtlStatus; ///< Reg 384. NIBP control status register. + U08 nibpStatusResp; ///< Reg 385. NIBP response status register. + S16 cuffPressure; ///< Reg 386. NIBP cuff pressure in mmHg. + U16 bpSystolic; ///< Reg 388. Systolic BP in mmHg. + U16 bpDiastolic; ///< Reg 390. Diastolic BP in mmHg. + U16 bpHr; ///< Reg 392. Heart rate in BPM. } FPGA_SENSORS_T; /// Record structure for FPGA continuous priority writes. @@ -196,8 +211,9 @@ U08 h10Control; ///< Reg 33. H10 Syringe pump control register. U32 h10Speed; ///< Reg 34. H10 Syringe pump time between step toggle (1/2 step period). U16 h10DACData; ///< Reg 38. H10 Syringe pump DAC data (12 bits). - U16 h10DACControl; ///< Reg 40. H10 Syringe pump ADC and DAC control register. - U16 h12Period; ///< Reg 42. H12 Air pump time period for each count in PWM register. + U08 h10DACControl; ///< Reg 40. H10 Syringe pump ADC and DAC control register. + U16 nibpCtl; ///< Reg 41. NIBP control register. + U16 nibpInflate; ///< Reg 42. NIBP inflate pressure register. U32 h5SetSpeed; ///< Reg 44. H5 ejector motor set speed. U16 h1CmdHeader; ///< Reg 48. H1 Magellan command header. U16 h1InputWord1; ///< Reg 50. H1 Magellan input word 1. @@ -977,21 +993,6 @@ /*********************************************************************//** * @brief - * The setH12AirPumpMotorPWMCntTime function sets the air pump motor PWM count - * time in increments of 10 nS. The PWM period will then be 255 x given - * value x 10 nS. - * @details \b Inputs: fpgaActuatorSetPoints.h12Period - * @details \b Outputs: fpgaActuatorSetPoints.h12Period - * @param tenNS The time associated with each PWM count in power level setting. - * @return none - *************************************************************************/ -void setH12AirPumpMotorPWMCntTime( U16 tenNS ) -{ - fpgaActuatorSetPoints.h12Period = tenNS; -} - -/*********************************************************************//** - * @brief * The H18BubbleDetected function determines whether H18 bubble detector * sensor is currently detecting a bubble. * @details \b Inputs: fpgaSensorReadings @@ -1591,7 +1592,119 @@ } /*********************************************************************//** +* @brief +* The setNIBPCommand function sets the FPGA NIBP command bits and pulses +* the command ready bit to notify the FPGA that a new NIBP command is +* available. +* @details \b Inputs: none +* @details \b Outputs: fpgaActuatorSetPoints +* @param command Blood pressure command to send to the FPGA. +* @return none +*************************************************************************/ +void setNIBPCommand( U08 command ) +{ + fpgaActuatorSetPoints.nibpCtl &= ~FPGA_NIBP_CMD_MASK; + fpgaActuatorSetPoints.nibpCtl |= ( (U16)command & FPGA_NIBP_CMD_MASK ); + if ( 0 == command ) + { + fpgaActuatorSetPoints.nibpCtl &= ~FPGA_NIBP_CMD_RDY; + } + else + { + fpgaActuatorSetPoints.nibpCtl |= FPGA_NIBP_CMD_RDY; + } +} + +/*********************************************************************//** +* @brief +* The setNIBPInflatePressure function sets the initial NIBP cuff inflate +* pressure register. +* @details \b Inputs: none +* @details \b Outputs: fpgaActuatorSetPoints.nibpInflate +* @param pressure Initial cuff inflation pressure in mmHg. +* @return none +*************************************************************************/ +void setNIBPInflatePressure( U16 pressure ) +{ + fpgaActuatorSetPoints.nibpInflate = pressure; +} + +/********************************************************************//** * @brief + * The getNIBPControlStatus function returns the FPGA NIBP control status. + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return FPGA NIBP control status register. + ***************************************************************************/ +U08 getNIBPControlStatus( void ) +{ + return fpgaSensorReadings.nibpCtlStatus; +} + +/*********************************************************************//** + * @brief + * The getNIBPStatusResponse function returns the FPGA NIBP response status. + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return FPGA NIBP response status register. + ***************************************************************************/ +U08 getNIBPStatusResponse( void ) +{ + return fpgaSensorReadings.nibpStatusResp; +} + +/*********************************************************************//** +* @brief +* The getNIBPCuffPressure function returns the FPGA NIBP cuff pressure. +* @details \b Inputs: fpgaSensorReadings +* @details \b Outputs: none +* @return NIBP cuff pressure in mmHg. +*************************************************************************/ +S16 getNIBPCuffPressure( void ) +{ + return fpgaSensorReadings.cuffPressure; +} + +/*********************************************************************//** +* @brief +* The getNIBPSystolicPressure function returns the FPGA systolic blood +* pressure measurement. +* @details \b Inputs: fpgaSensorReadings +* @details \b Outputs: none +* @return Systolic blood pressure in mmHg. +*************************************************************************/ +U16 getNIBPSystolicPressure( void ) +{ + return fpgaSensorReadings.bpSystolic; +} + +/*********************************************************************//** +* @brief +* The getNIBPDiastolicPressure function returns the FPGA diastolic blood +* pressure measurement. +* @details \b Inputs: fpgaSensorReadings +* @details \b Outputs: none +* @return Diastolic blood pressure in mmHg. +*************************************************************************/ +U16 getNIBPDiastolicPressure( void ) +{ + return fpgaSensorReadings.bpDiastolic; +} + +/*********************************************************************//** +* @brief +* The getNIBPHeartRate function returns the FPGA heart rate measurement. +* @details \b Inputs: fpgaSensorReadings +* @details \b Outputs: none +* @return Heart rate in BPM. +*************************************************************************/ +U16 getNIBPHeartRate( void ) +{ + return fpgaSensorReadings.bpHr; +} + +/*********************************************************************//** + * @brief * The setH1CmdHeader function sets the H1 Magellan command header. * @details \b Inputs: fpgaActuatorSetPoints * @details \b Outputs: none Index: firmware/App/Services/FpgaTD.h =================================================================== diff -u -r9b1c4a9731b66bc4aab3fb1d02b0ab608efa9598 -r35f1db1a4e254a69234e50082d0cce0122e6a84c --- firmware/App/Services/FpgaTD.h (.../FpgaTD.h) (revision 9b1c4a9731b66bc4aab3fb1d02b0ab608efa9598) +++ firmware/App/Services/FpgaTD.h (.../FpgaTD.h) (revision 35f1db1a4e254a69234e50082d0cce0122e6a84c) @@ -128,7 +128,6 @@ U16 getH12AirPumpMotorRPM( void ); void setH12AirPumpMotorPowerLevel( U08 power ); -void setH12AirPumpMotorPWMCntTime( U16 tenNS ); void setH19Control( U08 controlBits ); U08 getH19Control( void ); @@ -149,9 +148,18 @@ U16 getFPGAInletFan1TogglePeriod( void ); BOOL getH9FrontDoorClosedStatus( void ); -U32 getFPGAEjectorRetractOpticalSensor( void ); -U32 getFPGAEjectorEngageOpticalSensor( void ); +U32 getFPGAEjectorRetractOpticalSensor( void ); +U32 getFPGAEjectorEngageOpticalSensor( void ); +void setNIBPCommand( U08 command ); +void setNIBPInflatePressure( U16 pressure ); +U08 getNIBPControlStatus( void ); +U08 getNIBPStatusResponse( void ); +S16 getNIBPCuffPressure( void ); +U16 getNIBPSystolicPressure( void ); +U16 getNIBPDiastolicPressure( void ); +U16 getNIBPHeartRate( void ); + void setFPGASyringePumpControlFlags( U08 bitFlags ); void setFPGASyringePumpADCandDACControlFlags( U08 bitFlags ); void setFPGASyringePumpDACOutputLevel( U16 counts ); Index: firmware/App/Services/Messaging.c =================================================================== diff -u -raaf0b2d7a81e5ff2d97e0e5b42e6cf7f1ca8fd7f -r35f1db1a4e254a69234e50082d0cce0122e6a84c --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision aaf0b2d7a81e5ff2d97e0e5b42e6cf7f1ca8fd7f) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 35f1db1a4e254a69234e50082d0cce0122e6a84c) @@ -7,8 +7,8 @@ * * @file Messaging.c * -* @author (last) Vijay Pamula -* @date (last) 14-Jul-2026 +* @author (last) suresh +* @date (last) 05-Aug-2026 * * @author (original) Sean Nash * @date (original) 01-Aug-2024 @@ -21,6 +21,7 @@ #include "AirTrap.h" #include "AlarmMgmt.h" #include "BloodFlow.h" +#include "BPModule.h" #include "Bubbles.h" #include "Buttons.h" #include "Compatible.h" @@ -31,6 +32,7 @@ #include "FpgaTD.h" #include "LevelSensors.h" #include "Messaging.h" +#include "ModeInitPOST.h" #include "ModePreTreat.h" #include "ModeStandby.h" #include "ModeTreatment.h" @@ -111,6 +113,7 @@ { MSG_ID_FW_VERSIONS_REQUEST, &handleVersionRequestMessage }, { MSG_ID_UI_CHECK_IN, &handleUICheckIn }, { MSG_ID_DD_OP_MODE_DATA, &setDDOpMode }, + { MSG_ID_UI_VERSION_INFO_RESPONSE, &handleUIVersionResponse }, { MSG_ID_DD_GEN_DIALYSATE_MODE_DATA, &setDialysateData }, { MSG_ID_DD_PRESSURES_DATA, &setDialysatePressure }, { MSG_ID_UI_TREATMENT_PARAMS_TO_VALIDATE, &validateAndSetTreatmentParameters }, @@ -135,8 +138,10 @@ { MSG_ID_UI_ADJUST_DISPOSABLES_CONFIRM_REQUEST, &handleAutoLoadRequest }, { MSG_ID_UI_SETUP_TUBING_SET_CONNECTIONS_CONFIRM_REQUEST, &handleSetupTubingSetConnectionConfirmRequest }, { MSG_ID_UI_ADJUST_DISPOSABLES_REMOVAL_CONFIRM_REQUEST, &handleAutoEjectRequest }, + { MSG_ID_UI_BLOOD_PRESSURE_REQUEST, &bpModuleHandleVitalsRequest }, { MSG_ID_FFU_SIGNAL_TD_UPDATE_AVAILABLE, &handleUpdateAvailable }, { MSG_ID_UI_FLUID_BOLUS_REQUEST, &handleFluidBolusRequest }, + { MSG_ID_UI_GENERIC_CONFIRMATION_RESULT_RESPONSE, &handleUIConfirmationResponse }, { MSG_ID_TD_SOFTWARE_RESET_REQUEST, &testTDSoftwareResetRequest }, { MSG_ID_TD_BUBBLE_OVERRIDE_REQUEST, &testBubbleDetectOverride }, { MSG_ID_TD_BUBBLE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testBubblesDataPublishIntervalOverride }, @@ -242,7 +247,6 @@ static MsgFuncPtr getMsgHandler( U16 msgID ); static BOOL sendTestAckResponseMsg( MSG_ID_T msgID, BOOL ack ); -static BOOL sendAckResponseMsg( MSG_ID_T msgID, COMM_BUFFER_T buffer, BOOL ack ); /*********************************************************************//** * @brief @@ -401,7 +405,7 @@ * @param ack TRUE to ACK, FALSE to NAK * @return TRUE if response message successfully queued for transmit, FALSE if not *************************************************************************/ -static BOOL sendAckResponseMsg( MSG_ID_T msgID, COMM_BUFFER_T buffer, BOOL ack ) +BOOL sendAckResponseMsg( MSG_ID_T msgID, COMM_BUFFER_T buffer, BOOL ack ) { BOOL result; MESSAGE_T msg; @@ -528,7 +532,31 @@ return result; } +/*********************************************************************//** + * @brief + * The handleUIVersionResponse function handles a response to request for + * UI version information. + * @details Inputs: none + * @details Outputs: none + * @param message a pointer to the message to handle. + * @return none + *************************************************************************/ +BOOL handleUIVersionResponse( MESSAGE_T *message ) +{ + BOOL result = TRUE; + // Get UI version data and have it recorded + if ( sizeof(UI_VERSIONS_T) == message->hdr.payloadLen ) + { + UI_VERSIONS_T uiVersion; + + memcpy( &uiVersion, &message->payload[ 0 ], sizeof(UI_VERSIONS_T) ); + signalUIVersion( uiVersion ); + } + + return result; +} + // *********************************************************************** // ***************** Message Sending Helper Functions ******************** // *********************************************************************** @@ -573,36 +601,54 @@ /*********************************************************************//** * @brief - * The sendOffButtonMsgToUI function constructs an off button msg to the UI - * and queues the msg for transmit on the appropriate CAN channel. - * @details \b Message \b Sent: MSG_ID_OFF_BUTTON_PRESS_REQUEST + * The sendUIVersionRequest function constructs a UI version request msg + * to the UI and queues the msg for transmit on the appropriate CAN channel. + * @details \b Message \b Sent: MSG_ID_TD_UI_VERSION_INFO_REQUEST * @details \b Inputs: none - * @details \b Outputs: Off button msg constructed and queued. - * @param prompt 0=prompt user to confirm, 1=cancel prompt, 2=reject user off request + * @details \b Outputs: none * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ -BOOL sendOffButtonMsgToUI( U08 prompt ) +BOOL sendUIVersionRequest( void ) { BOOL result; MESSAGE_T msg; - UI_OFF_BUTTON_RESPONSE_PAYLOAD_T cmd; - cmd.userRequest = prompt; - // Create a message record blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_OFF_BUTTON_PRESS_REQUEST; - msg.hdr.payloadLen = sizeof( UI_OFF_BUTTON_RESPONSE_PAYLOAD_T ); + msg.hdr.msgID = MSG_ID_TD_UI_VERSION_INFO_REQUEST; + msg.hdr.payloadLen = 0; - memcpy( &msg.payload, &cmd, sizeof( UI_OFF_BUTTON_RESPONSE_PAYLOAD_T ) ); - // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_TD_2_UI, ACK_REQUIRED ); return result; } +/*********************************************************************//** + * @brief + * The sendRequestForDDResendAlarms function sends out the TD request for + * 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 + *************************************************************************/ +BOOL sendRequestForDDResendAlarms( void ) +{ + BOOL result; + MESSAGE_T msg; + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_TD_DD_ALARMS_REQUEST; + msg.hdr.payloadLen = 0; + + // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_TD_2_DD, ACK_REQUIRED ); + + return result; +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ @@ -742,6 +788,45 @@ /*********************************************************************//** * @brief + * The sendPOSTTestResult function sends the result of a single TD POST + * test to the UI. + * @details \b Message \b Sent: MSG_ID_TD_POST_SINGLE_TEST_RESULT + * @details \b Inputs: none + * @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. + * @return TRUE if message successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendPOSTTestResult( TD_POST_STATE_T test, BOOL passed ) +{ + U08 payload[ sizeof( BOOL ) + sizeof( U32 ) ]; + U32 testID = (U32)test; + + memcpy( payload, &passed, sizeof( BOOL ) ); + memcpy( &payload[ sizeof( BOOL ) ], &testID, sizeof( U32 ) ); + + // Use the generic send helper for transmission. + return sendMessage( MSG_ID_TD_POST_SINGLE_TEST_RESULT, COMM_BUFFER_OUT_CAN_TD_BROADCAST, payload, sizeof( payload ) ); +} + +/*********************************************************************//** + * @brief + * The sendPOSTFinalResult function sends the overall TD POST result + * and queues the message for transmit on the appropriate CAN channel. + * @details \b Message \b Sent: MSG_ID_TD_POST_FINAL_TEST_RESULT + * @details \b Inputs: none + * @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 + *************************************************************************/ +BOOL sendPOSTFinalResult( BOOL passed ) +{ + // Use the generic send helper for transmission. + return sendMessage( MSG_ID_TD_POST_FINAL_TEST_RESULT, COMM_BUFFER_OUT_CAN_TD_BROADCAST, (U08 *)&passed, sizeof( BOOL ) ); +} + +/*********************************************************************//** + * @brief * The testTDSoftwareResetRequest function handles a request to reset the * TD firmware processor. * @note If reset is successful, this function will not return. Index: firmware/App/TDCommon.h =================================================================== diff -u -r5f10e218e2e3c3aba36196996bcaf960340adc26 -r35f1db1a4e254a69234e50082d0cce0122e6a84c --- firmware/App/TDCommon.h (.../TDCommon.h) (revision 5f10e218e2e3c3aba36196996bcaf960340adc26) +++ firmware/App/TDCommon.h (.../TDCommon.h) (revision 35f1db1a4e254a69234e50082d0cce0122e6a84c) @@ -27,7 +27,6 @@ #define TD_VERSION_MICRO 0 #define TD_VERSION_BUILD 116 - // ********** development build switches ********** #ifndef _RELEASE_ Index: firmware/App/Tasks/TaskGeneral.c =================================================================== diff -u -r4f7855d894ddf2b62e7225050b5137d01862dd4b -r35f1db1a4e254a69234e50082d0cce0122e6a84c --- firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 4f7855d894ddf2b62e7225050b5137d01862dd4b) +++ firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 35f1db1a4e254a69234e50082d0cce0122e6a84c) @@ -22,6 +22,7 @@ #include "Ejector.h" #include "Messaging.h" #include "OperationModes.h" +#include "PinchValve.h" #include "Pressures.h" #include "Switches.h" #include "SystemCommTD.h" @@ -113,6 +114,7 @@ // Control pinch valves execValvesController(); + execPinchValveFunction(); // Control ejector execEjectorController();