Index: firmware/App/Controllers/Valves.h =================================================================== diff -u -r0f9838d6b8606a6a9853ccb6157e4c25d70ddd02 -r876a1cdab00a28265349cec424f77709a101db5c --- firmware/App/Controllers/Valves.h (.../Valves.h) (revision 0f9838d6b8606a6a9853ccb6157e4c25d70ddd02) +++ firmware/App/Controllers/Valves.h (.../Valves.h) (revision 876a1cdab00a28265349cec424f77709a101db5c) @@ -68,7 +68,6 @@ S16 posB; ///< Calculated Position B U32 pwm; ///< Valve PWM in the bypass mode U32 airTrapValve; ///< Air trap valve status - } HD_VALVE_DATA_T; #pragma pack(pop) @@ -104,23 +103,18 @@ OPN_CLS_STATE_T getValveAirTrapStatus( void ); BOOL testSetValvesDataPublishInterval( U32 value ); - BOOL testResetValvesDataPublishInterval( void ); BOOL testSetValvesPositionOverride( U32 valve, U32 position ); - BOOL testResetValvesPositionOverride( U32 valve ); BOOL testSetValvePWMOverride( U32 valve, U32 pwm, U32 direction ); - BOOL testResetValvePWMOverride( U32 valve ); BOOL testSetValvesCurrentOverride( U32 valve, F32 current ); - BOOL testResetValvesCurrentOverride( U32 valve ); BOOL testSetValvesPositionCountOverride( U32 valve, U32 count ); - BOOL testResetValvesPositionCountOverride( U32 valve ); /**@}*/ Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -ra6587c2ba0a40bdf12b5fdcf2ba8dec0cd958cfa -r876a1cdab00a28265349cec424f77709a101db5c --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision a6587c2ba0a40bdf12b5fdcf2ba8dec0cd958cfa) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 876a1cdab00a28265349cec424f77709a101db5c) @@ -48,7 +48,7 @@ // ********** private definitions ********** #define DISINFECTS_DATA_PUB_INTERVAL ( 1 * MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Disinfects data publish interval in counts. -#define DISINFECTS_TIME_INTERVAL_S ( 2 * SECONDS_IN_A_DAY ) ///< HD/DG 2-day service interval in seconds. +#define DISINFECTS_TIME_INTERVAL_S ( 3 * SECONDS_IN_A_DAY ) ///< HD/DG 2-day service interval in seconds. #define FLUSH_TIME_INTERVAL_S ( 30 * SEC_PER_MIN * MS_PER_SECOND ) ///< Flush time interval in seconds. #define MAX_ALLOWED_RO_FILTER_TEMP_FOR_TX_C 44.0F ///< Maximum allowed temperature to start a treatment in C. @@ -1204,29 +1204,27 @@ U32 lastChemFlushCompleteDate = data.dgUsageInfo.lastChemDisFlushCompleteDateEpoch; U32 lastHeatCompleteDate = data.dgUsageInfo.lastHeatDisCompleteDateEpoch; U32 lastFlushCompleteDate = data.dgUsageInfo.lastBasicFlushCompleteDateEpoch; + U32 lastHeatCoolCompleteDate = data.dgUsageInfo.lastHeatActiveCoolCompleteDateEpoch; U32 lastStartTxTimeDate = usageRecord.txLastStartTimeEpoch; // Last Treatment Start < Last Heat Disinfect Complete or Last Treatment Start < Last Chem Disinfect Complete so it means at least a heat disinfect // or a chemical disinfect has been done since the last treatment BOOL hasDisBeenDone = ( ( ( lastStartTxTimeDate < lastChemCompleteDate ) || ( lastStartTxTimeDate < lastHeatCompleteDate ) ) ? TRUE : FALSE ); - // Last Chem Disinfect Complete < Current Time – Chem Disinfect Interval, so the chemical disinfect that has been done has not been expired - BOOL isChemDisValid = ( lastChemCompleteDate < ( getRTCTimestamp() - DISINFECTS_TIME_INTERVAL_S ) ? TRUE : FALSE ); - // Last Heat Disinfect Complete < Current Time – Heat Disinfect Interval, so the heat disinfect that has been done has not been expired BOOL isHeatDisValid = ( lastHeatCompleteDate < ( getRTCTimestamp() - DISINFECTS_TIME_INTERVAL_S ) ? TRUE : FALSE ); // Last Chem Flush Complete < Last Chem Disinfect Start, so after running a chemical disinfect, a chemical disinfect flush has been done BOOL isChemFlushComplete = ( lastChemFlushCompleteDate > lastChemCompleteDate ? TRUE : FALSE ); // If either of the basic flush, heat disinfect, or chemical disinfect flush have been done within the interval, it means the filters have been flushed - BOOL isBasicFlushValid = ( lastFlushCompleteDate < ( getRTCTimestamp() - FLUSH_TIME_INTERVAL_S ) ? TRUE : TRUE ); - BOOL isHeatDisFlushValid = ( lastHeatCompleteDate < ( getRTCTimestamp() - FLUSH_TIME_INTERVAL_S ) ? TRUE : TRUE ); - BOOL isChemFlushValid = ( lastChemFlushCompleteDate < ( getRTCTimestamp() - FLUSH_TIME_INTERVAL_S ) ? TRUE : TRUE ); - BOOL isFlushValid = ( isBasicFlushValid || isHeatDisFlushValid || isChemFlushValid ); + BOOL isBasicFlushValid = ( lastFlushCompleteDate < ( getRTCTimestamp() - FLUSH_TIME_INTERVAL_S ) ? TRUE : TRUE ); + BOOL isChemFlushValid = ( lastChemFlushCompleteDate < ( getRTCTimestamp() - FLUSH_TIME_INTERVAL_S ) ? TRUE : TRUE ); + BOOL isHeatDisCoolFlushValid = ( lastHeatCoolCompleteDate < ( getRTCTimestamp() - FLUSH_TIME_INTERVAL_S ) ? TRUE : TRUE ); + BOOL isFlushValid = ( isBasicFlushValid || isChemFlushValid || isHeatDisCoolFlushValid ); // If all of the above conditions are true, it means we can start a treatment - if ( ( TRUE == hasDisBeenDone ) && ( TRUE == isChemDisValid ) && ( TRUE == isHeatDisValid ) && ( TRUE == isChemFlushComplete ) && ( TRUE == isFlushValid ) ) + if ( ( TRUE == hasDisBeenDone ) && ( TRUE == isHeatDisValid ) && ( TRUE == isChemFlushComplete ) && ( TRUE == isFlushValid ) ) { status = TRUE; } Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r4c8fb9738f785e8c786e8323d7327aa11d18ceb9 -r876a1cdab00a28265349cec424f77709a101db5c --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 4c8fb9738f785e8c786e8323d7327aa11d18ceb9) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 876a1cdab00a28265349cec424f77709a101db5c) @@ -1723,6 +1723,19 @@ case MSG_ID_HD_BATTERY_COMM_STATUS_OVERRIDE: handleBatteryI2CStatusOverrideRequest( message ); break; + + case MSG_ID_HD_DIAL_IN_PUMP_HARD_STOP: + handleDialInPumpHardStopRequest( message ); + break; + + case MSG_ID_HD_DIAL_OUT_PUMP_HARD_STOP: + handleDialOutPumpHardStopRequest( message ); + break; + + case MSG_ID_HD_BLOOD_PUMP_HARD_STOP: + handleBloodPumpHardStopRequest( message ); + break; + // The default cannot be reached in VectorCAST since the cases are run in a for loop default: // Unrecognized message ID received - ignore Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rf5acc080328cb274ba2b3d21dac452d118078b8a -r876a1cdab00a28265349cec424f77709a101db5c --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision f5acc080328cb274ba2b3d21dac452d118078b8a) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 876a1cdab00a28265349cec424f77709a101db5c) @@ -7998,4 +7998,73 @@ sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); } +/*********************************************************************//** + * @brief + * The handleDialInPumpHardStopRequest function handles a + * request to stop the dial in pump. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleDialInPumpHardStopRequest( MESSAGE_T * message ) +{ + BOOL result = FALSE; + + // Verify payload length + if ( 0 == message->hdr.payloadLen ) + { + signalDialInPumpHardStop(); + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleDialOutPumpHardStopRequest function handles a + * request to stop the dial out pump. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleDialOutPumpHardStopRequest( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + // Verify payload length + if ( 0 == message->hdr.payloadLen ) + { + signalDialOutPumpHardStop(); + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleBloodPumpHardStopRequest function handles a + * request to stop the blood pump. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleBloodPumpHardStopRequest( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + // Verify payload length + if ( 0 == message->hdr.payloadLen ) + { + signalBloodPumpHardStop(); + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + /**@}*/ Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -ra6587c2ba0a40bdf12b5fdcf2ba8dec0cd958cfa -r876a1cdab00a28265349cec424f77709a101db5c --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision a6587c2ba0a40bdf12b5fdcf2ba8dec0cd958cfa) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 876a1cdab00a28265349cec424f77709a101db5c) @@ -885,6 +885,15 @@ // MSG_ID_HD_BATTERY_COMM_STATUS_OVERRIDE void handleBatteryI2CStatusOverrideRequest( MESSAGE_T *message ); +// MSG_ID_HD_DIAL_IN_PUMP_HARD_STOP +void handleDialInPumpHardStopRequest( MESSAGE_T * message ); + +// MSG_ID_HD_DIAL_OUT_PUMP_HARD_STOP +void handleDialOutPumpHardStopRequest( MESSAGE_T *message ); + +// MSG_ID_HD_BLOOD_PUMP_HARD_STOP +void handleBloodPumpHardStopRequest( MESSAGE_T *message ); + /**@}*/ #endif