Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r4fdc3246f14c8b3b04724d39803530f60b6caac8 -r8059b3b67364c3593091a23266f33186430ffe26 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 4fdc3246f14c8b3b04724d39803530f60b6caac8) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 8059b3b67364c3593091a23266f33186430ffe26) @@ -20,6 +20,7 @@ #include "etpwm.h" #include "AlarmMgmt.h" +#include "DGDefs.h" #include "Heaters.h" #include "ROPump.h" #include "PIControllers.h" @@ -180,34 +181,20 @@ /*********************************************************************//** * @brief - * The setPrimaryHeaterTargetTemperature function sets the primary heater - * target temperature. + * The setHeatersTargetTemperature function sets the heaters' target temperature. * @details Inputs: none - * @details Outputs: primaryHeaterTargetTemperature - * @param targetTemp target temperature for the primary heater + * @details Outputs: primaryHeaterTargetTemperature, trimmerHeaterTargetTemperature + * @param targetTempPtr pointer to target temperature data record * @return none *************************************************************************/ -void setPrimaryHeaterTargetTemperature( F32 targetTemp ) +void setHeatersTargetTemperature( TARGET_TEMPS_PAYLOAD_T *targetTempPtr ) { - primaryHeaterTargetTemperature = targetTemp; + primaryHeaterTargetTemperature = targetTempPtr->targetPrimaryHeaterTemp; + trimmerHeaterTargetTemperature = targetTempPtr->targetTrimmerHeaterTemp; } /*********************************************************************//** * @brief - * The setTrimmerHeaterTargetTemperature function sets the trimmer heater - * target temperature. - * @details Inputs: none - * @details Outputs: trimmerHeaterTargetTemperature - * @param targetTemp target temperature for the trimmer heater - * @return none - *************************************************************************/ -void setTrimmerHeaterTargetTemperature( F32 targetTemp ) -{ - trimmerHeaterTargetTemperature = targetTemp; -} - -/*********************************************************************//** - * @brief * The startPrimaryHeater function starts the primary heaters. It resets * the primary heaters state and sets the main primary heater duty cycle. * @details Inputs: primaryHeaterTargetTemperature @@ -231,29 +218,6 @@ /*********************************************************************//** * @brief - * The startTrimmerHeater function starts the trimmer heater. It resets the - * trimmer heater's state and sets the duty cycle of the trimmer heater. - * @details Inputs: trimmerHeaterTargetTemperature - * @details Outputs: hasStartTrimmerHeaterRequested - * @return status - *************************************************************************/ -BOOL startTrimmerHeater( void ) -{ - BOOL status = FALSE; - - if ( ( trimmerHeaterTargetTemperature >= MINIMUM_TARGET_TEMPERATURE ) && ( trimmerHeaterTargetTemperature <= MAXIMUM_TARGET_TEMPERATURE ) ) - { -#ifndef DISABLE_HEATERS_AND_TEMPS - hasStartTrimmerHeaterRequested = TRUE; -#endif - status = TRUE; - } - - return status; -} - -/*********************************************************************//** - * @brief * The stopPrimaryHeater function stops the primary heater. * @details Inputs: none * @details Outputs: Primary heater stops @@ -284,6 +248,46 @@ /*********************************************************************//** * @brief + * The handleTrimmerHeaterCmd handles a start trimmer heater command from the HD. + * It resets the trimmer heater's state and sets the duty cycle of the trimmer heater. + * @details Inputs: none + * @details Outputs: process command and send back response + * @param heaterCmdPtr pointer to heater command data record + * @return status + *************************************************************************/ +void handleTrimmerHeaterCmd( TRIMMER_HEATER_CMD_T *heaterCmdPtr ) +{ + DG_CMD_RESPONSE_T cmdResponse; + + cmdResponse.commandID = DG_CMD_START_TRIMMER_HEATER; + cmdResponse.rejected = TRUE; + cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_NONE; + + if ( TRUE == heaterCmdPtr->startHeater ) + { + if ( ( MINIMUM_TARGET_TEMPERATURE <= heaterCmdPtr->targetTemp ) && ( heaterCmdPtr->targetTemp <= MAXIMUM_TARGET_TEMPERATURE ) ) + { + cmdResponse.rejected = FALSE; + #ifndef DISABLE_HEATERS_AND_TEMPS + hasStartTrimmerHeaterRequested = TRUE; + #endif + } + else + { + cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_INVALID_PARAMETER; + } + } + else + { + cmdResponse.rejected = FALSE; + stopTrimmerHeater(); + } + + sendCommandResponseMsg( &cmdResponse ); +} + +/*********************************************************************//** + * @brief * The execHeatersMonitor function turns off the heaters when RO pump is not on. * @details Inputs: none * @details Outputs: Turns off the heaters when RO pump is not on Index: firmware/App/Controllers/Heaters.h =================================================================== diff -u -r54f45c387430e440ab4607451fc84dea61f273f1 -r8059b3b67364c3593091a23266f33186430ffe26 --- firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision 54f45c387430e440ab4607451fc84dea61f273f1) +++ firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision 8059b3b67364c3593091a23266f33186430ffe26) @@ -28,17 +28,35 @@ * @{ */ +#pragma pack(push,1) + +/// Target temperature data structure. +typedef struct +{ + F32 targetPrimaryHeaterTemp; ///< Primary heater set temperature target + F32 targetTrimmerHeaterTemp; ///< Trimmer heater set temperature target +} TARGET_TEMPS_PAYLOAD_T; + +/// Trimmer heater command data structure. +typedef struct +{ + BOOL startHeater; ///< Flag indicates start or stop heater + F32 targetTemp; ///< Target temperature for heater +} TRIMMER_HEATER_CMD_T; + +#pragma pack(pop) + void initHeaters( void ); -void setPrimaryHeaterTargetTemperature( F32 targetTemp ); -void setTrimmerHeaterTargetTemperature( F32 targetTemp ); +void setHeatersTargetTemperature( TARGET_TEMPS_PAYLOAD_T *targetTempPtr ); BOOL startPrimaryHeater( void ); -BOOL startTrimmerHeater( void ); void stopPrimaryHeater( void ); void stopTrimmerHeater( void ); +void handleTrimmerHeaterCmd( TRIMMER_HEATER_CMD_T *heaterCmdPtr ); // handle trimmer heater control command from HD + void execHeatersMonitor( void ); SELF_TEST_STATUS_T execHeatersSelfTest( void ); Index: firmware/App/Services/MessagePayloads.h =================================================================== diff -u -rf7292cd3376119210980f14e8bdb0ec5e0cf5df5 -r8059b3b67364c3593091a23266f33186430ffe26 --- firmware/App/Services/MessagePayloads.h (.../MessagePayloads.h) (revision f7292cd3376119210980f14e8bdb0ec5e0cf5df5) +++ firmware/App/Services/MessagePayloads.h (.../MessagePayloads.h) (revision 8059b3b67364c3593091a23266f33186430ffe26) @@ -84,13 +84,6 @@ U32 drainToVolumeMl; ///< Volume target to drain to } RESERVOIR_DATA_T; -/// Target temperature payload struct. -typedef struct -{ - F32 targetPrimaryHeaterTemp; ///< Primary heater set temperature target - F32 targetTrimmerHeaterTemp; ///< Trimmer heater set temperature target -} TARGET_TEMPS_PAYLOAD_T; - /// Heaters data struct. typedef struct { Index: firmware/App/Services/Reservoirs.c =================================================================== diff -u -r32c86bcbc3218d65b0858a0a01ded49a70af7880 -r8059b3b67364c3593091a23266f33186430ffe26 --- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 32c86bcbc3218d65b0858a0a01ded49a70af7880) +++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 8059b3b67364c3593091a23266f33186430ffe26) @@ -17,7 +17,6 @@ #include // for memcpy() -#include "Heaters.h" #include "LoadCell.h" #include "ModeRecirculate.h" #include "OperationModes.h" @@ -301,56 +300,7 @@ sendCommandResponseMsg( &cmdResponse ); } - -/*********************************************************************//** - * @brief - * The startTrimmerHeaterCmd function handles a start trimmer heater command - * from the HD. - * @details Inputs: none - * @details Outputs: start trimmer heater - * @return none - *************************************************************************/ -void startTrimmerHeaterCmd( void ) -{ - DG_CMD_RESPONSE_T cmdResponse; - cmdResponse.commandID = DG_CMD_START_TRIMMER_HEATER; - cmdResponse.rejected = TRUE; - cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_NONE; - - if ( TRUE == startTrimmerHeater() ) - { - cmdResponse.rejected = FALSE; - } - else - { - cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_INVALID_PARAMETER; - } - - sendCommandResponseMsg( &cmdResponse ); -} - -/*********************************************************************//** - * @brief - * The stopTrimmerHeaterCmd function handles a stop trimmer heater command - * from the HD. - * @details Inputs: none - * @details Outputs: stop trimmer heater - * @return none - *************************************************************************/ -void stopTrimmerHeaterCmd( void ) -{ - DG_CMD_RESPONSE_T cmdResponse; - - cmdResponse.commandID = DG_CMD_STOP_TRIMMER_HEATER; - cmdResponse.rejected = FALSE; - cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_NONE; - - stopTrimmerHeater(); - - sendCommandResponseMsg( &cmdResponse ); -} - /*********************************************************************//** * @brief * The getInactiveReservoir function gets the inactive reservoir. Index: firmware/App/Services/Reservoirs.h =================================================================== diff -u -rb549c9d87eb01cf1afee74e9fc1e41b3731bdca4 -r8059b3b67364c3593091a23266f33186430ffe26 --- firmware/App/Services/Reservoirs.h (.../Reservoirs.h) (revision b549c9d87eb01cf1afee74e9fc1e41b3731bdca4) +++ firmware/App/Services/Reservoirs.h (.../Reservoirs.h) (revision 8059b3b67364c3593091a23266f33186430ffe26) @@ -67,8 +67,6 @@ void stopFillCmd( void ); // handle stop fill command from HD void startDrainCmd( DRAIN_CMD_T drainCmd ); // handle drain command from HD void stopDrainCmd( void ); // handle stop drain command from HD -void startTrimmerHeaterCmd( void ); // handle start trimmer heater control command from HD -void stopTrimmerHeaterCmd( void ); // handle stop trimmer heater control command from HD RESERVOIR_ID_T getInactiveReservoir( void ); BOOL hasTargetFillVolumeBeenReached( RESERVOIR_ID_T reservoirId ); Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rb549c9d87eb01cf1afee74e9fc1e41b3731bdca4 -r8059b3b67364c3593091a23266f33186430ffe26 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision b549c9d87eb01cf1afee74e9fc1e41b3731bdca4) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 8059b3b67364c3593091a23266f33186430ffe26) @@ -790,8 +790,7 @@ result = TRUE; memcpy( &payload, message->payload, sizeof( TARGET_TEMPS_PAYLOAD_T ) ); - setPrimaryHeaterTargetTemperature( payload.targetPrimaryHeaterTemp ); - setTrimmerHeaterTargetTemperature( payload.targetTrimmerHeaterTemp ); + setHeatersTargetTemperature( &payload ); } sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_DG_2_HD, result ); } @@ -1031,21 +1030,13 @@ { BOOL result = FALSE; - if ( message->hdr.payloadLen == sizeof( U32 ) ) + if ( message->hdr.payloadLen == sizeof( TRIMMER_HEATER_CMD_T ) ) { - BOOL startingHeater; + TRIMMER_HEATER_CMD_T heaterCmd; result = TRUE; - memcpy( &startingHeater, message->payload, sizeof( U32 ) ); - - if ( TRUE == startingHeater ) - { - startTrimmerHeaterCmd(); - } - else - { - stopTrimmerHeaterCmd(); - } + memcpy( &heaterCmd, message->payload, sizeof( TRIMMER_HEATER_CMD_T ) ); + handleTrimmerHeaterCmd( &heaterCmd ); } sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_DG_2_HD, result );