Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r801cb7a69212006b2572a91456b6b36ac3232392 -rbe027f8c9bee75f07267f7a9ab5635bbb02df86e --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 801cb7a69212006b2572a91456b6b36ac3232392) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision be027f8c9bee75f07267f7a9ab5635bbb02df86e) @@ -24,6 +24,7 @@ #include "AlarmMgmt.h" #include "Common.h" #include "Heaters.h" +#include "ROPump.h" #include "TemperatureSensors.h" #include "SystemCommMessages.h" #include "PIControllers.h" @@ -56,6 +57,9 @@ #define HEATERS_POST_HEAT_UP_TIME_SECONDS 50U ///< The time that the heaters are heated up to reach to the target temperature during POST #define HEATERS_POST_TEMPERATURE_TOLERANCE 1U ///< Tolerance of the sensors to the target temperature during POST +#define MINIMUM_TARGET_TEMPERATURE 10U ///< Minimum allowed target temperature for the heaters +#define MAXIMUM_TARGET_TEMPERATURE 90U ///< Maximum allowed target temperature for the heaters + /// Heaters self test enums typedef enum heaters_self_test_states { @@ -112,6 +116,8 @@ static OVERRIDE_U32_T heatersDataPublishInterval = { HEATERS_DATA_PUBLISH_INTERVAL, HEATERS_DATA_PUBLISH_INTERVAL, 0, 0 }; ///< Heaters data publish time interval static U32 selfTestElapsedTime; ///< Self test elapsed time variable +static BOOL hasStartPrimaryHeaterRequested; ///< Start primary heater request flag +static BOOL hasStartTrimmerHeaterRequested; ///< Start trimmer heater request flag // private functions prototypes @@ -213,20 +219,19 @@ * the primary heaters state and sets the main primary heater duty cycle * @details * Inputs : mainPrimaryHeaterDutyCycle, primaryHeaterTargetTemperature, - * isPrimaryHeaterOn - * Outputs : isPrimaryHeaterOn + * hasStartPrimaryHeaterRequested + * Outputs : hasStartPrimaryHeaterRequested * @param none * @return status *************************************************************************/ BOOL startPrimaryHeater ( void ) { BOOL status = FALSE; - if ( primaryHeaterTargetTemperature != 0.0 ) + if ( primaryHeaterTargetTemperature >= MINIMUM_TARGET_TEMPERATURE && + primaryHeaterTargetTemperature <= MAXIMUM_TARGET_TEMPERATURE ) { - resetHeaterState ( PRIMARY_HEATER ); - setMainPrimaryHeaterPWM ( mainPrimaryHeaterDutyCycle ); - isPrimaryHeaterOn = TRUE; + hasStartPrimaryHeaterRequested = TRUE; status = TRUE; } @@ -239,20 +244,19 @@ * trimmer heater's state and sets the duty cycle of the trimmer heater * @details * Inputs : trimmerHeaterDutyCycle, trimmerHeaterTargetTemperature, - * isTrimmerHeaterOn - * Outputs : isTrimmerHeaterOn + * trimmerHeaterTargetTemperature + * Outputs : trimmerHeaterTargetTemperature * @param none * @return status *************************************************************************/ BOOL startTrimmerHeater ( void ) { BOOL status = FALSE; - if ( trimmerHeaterTargetTemperature != 0.0 ) + if ( trimmerHeaterTargetTemperature >= MINIMUM_TARGET_TEMPERATURE && + trimmerHeaterTargetTemperature <= MAXIMUM_TARGET_TEMPERATURE ) { - resetHeaterState ( TRIMMER_HEATER ); - setTrimmerHeaterPWM ( trimmerHeaterDutyCycle ); - isTrimmerHeaterOn = TRUE; + hasStartTrimmerHeaterRequested = TRUE; status = TRUE; } @@ -300,8 +304,12 @@ *************************************************************************/ void execHeatersMonitor ( void ) { - // TODO Decide the parts of this function - + // If the RO pump is not on, turn off the heaters + if ( ! isReverseOsmosisPumpOn() ) + { + stopPrimaryHeater(); + stopTrimmerHeater(); + } } /*********************************************************************//** @@ -517,8 +525,8 @@ * The handlePrimaryHeaterStateOff function handles the primary heaters at * off state * @details - * Inputs : isPrimaryHeaterOn - * Outputs : state (PRIMARY_HEATERS_EXEC_STATES_T) + * Inputs : hasStartPrimaryHeaterRequested, isPrimaryHeaterOn + * Outputs : state (PRIMARY_HEATERS_EXEC_STATES_T), isPrimaryHeaterOn * @param none * @return state (PRIMARY_HEATERS_EXEC_STATES_T) *************************************************************************/ @@ -543,8 +551,11 @@ #endif // TODO remove this code for testing - if ( isPrimaryHeaterOn ) + if ( hasStartPrimaryHeaterRequested ) { + resetHeaterState ( PRIMARY_HEATER ); + setMainPrimaryHeaterPWM ( mainPrimaryHeaterDutyCycle ); + isPrimaryHeaterOn = TRUE; state = PRIMARY_HEATERS_EXEC_STATE_CONTROL_TO_TARGET; } @@ -622,8 +633,8 @@ * The handleTrimmerHeaterStateOff function handles the trimmer heater at * off state * @details - * Inputs : isTrimmerHeaterOn - * Outputs : state (TRIMMER_HEATER_EXEC_STATES_T) + * Inputs : hasStartTrimmerHeaterRequested, isTrimmerHeaterOn + * Outputs : state (TRIMMER_HEATER_EXEC_STATES_T), isTrimmerHeaterOn * @param none * @return state (TRIMMER_HEATER_EXEC_STATES_T) *************************************************************************/ @@ -652,8 +663,11 @@ #endif // TODO remove this code for testing - if ( isTrimmerHeaterOn ) + if ( hasStartTrimmerHeaterRequested ) { + resetHeaterState ( TRIMMER_HEATER ); + isTrimmerHeaterOn = TRUE; + setTrimmerHeaterPWM ( trimmerHeaterDutyCycle ); state = TRIMMER_HEATER_EXEC_STATE_CONTROL_TO_TARGET; } Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -r0831cb6bf766fe461340b711f2ff14c3d797e10d -rbe027f8c9bee75f07267f7a9ab5635bbb02df86e --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 0831cb6bf766fe461340b711f2ff14c3d797e10d) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision be027f8c9bee75f07267f7a9ab5635bbb02df86e) @@ -240,6 +240,20 @@ /*********************************************************************//** * @brief + * The isROPumpOn function returns the status of RO pump + * @details + * Inputs : none + * Outputs : none + * @param none + * @return isROPumpOn + *************************************************************************/ +BOOL isReverseOsmosisPumpOn( void ) +{ + return isROPumpOn; +} + +/*********************************************************************//** + * @brief * The handleROPumpOffState function handles the ro pump off state \n * of the ro pump controller state machine. * @details Index: firmware/App/Controllers/ROPump.h =================================================================== diff -u -ra75923f40bea362b44fc082ce8eebde7bfa97c9a -rbe027f8c9bee75f07267f7a9ab5635bbb02df86e --- firmware/App/Controllers/ROPump.h (.../ROPump.h) (revision a75923f40bea362b44fc082ce8eebde7bfa97c9a) +++ firmware/App/Controllers/ROPump.h (.../ROPump.h) (revision be027f8c9bee75f07267f7a9ab5635bbb02df86e) @@ -41,6 +41,8 @@ BOOL setROPumpTargetPressure( U32 roPressure, PUMP_CONTROL_MODE_T mode ); void signalROPumpHardStop( void ); +BOOL isReverseOsmosisPumpOn( void ); + SELF_TEST_STATUS_T execROPumpTest( void ); DATA_GET_PROTOTYPE( U32, getTargetROPumpPressure ); Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -ra6930e0a28c615868a988a7d0e9bf7425a781af6 -rbe027f8c9bee75f07267f7a9ab5635bbb02df86e --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision a6930e0a28c615868a988a7d0e9bf7425a781af6) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision be027f8c9bee75f07267f7a9ab5635bbb02df86e) @@ -410,12 +410,17 @@ temperature = temperature + ( positiveTCInverserCoeffs [ i ] * pow(correctedVoltage, i) ); } } + else + { + //TODo Alarm + temperature = -1.0; + } if ( TCIndex == TEMPSENSORS_PRIMARY_HEATER_THERMO_COUPLE_TEMP_SENSOR ) { temperatureValues [ TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP ].data = temperature; } - else if ( TCIndex == TEMPSENSORS_TRIMMER_HEATER_THERMO_COUPLE_TEMP_SENSOR ) + else { temperatureValues [ TEMPSENSORS_TRIMMER_HEATER_INTERNAL_TEMP ].data = temperature; } Index: firmware/App/Services/Reservoirs.c =================================================================== diff -u -ra989988ebf68dde7ab74e237e668fbaeff968636 -rbe027f8c9bee75f07267f7a9ab5635bbb02df86e --- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision a989988ebf68dde7ab74e237e668fbaeff968636) +++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision be027f8c9bee75f07267f7a9ab5635bbb02df86e) @@ -23,6 +23,7 @@ #include "TaskGeneral.h" #include "Valves.h" #include "Reservoirs.h" +#include "Heaters.h" /** * @addtogroup Reservoirs @@ -250,7 +251,7 @@ BOOL startTrimmerHeaterCmd( void ) { BOOL result = FALSE; - // TODO + result = startTrimmerHeater(); return result; } @@ -265,8 +266,8 @@ *************************************************************************/ BOOL stopTrimmerHeaterCmd( void ) { - BOOL result = FALSE; - // TODO + BOOL result = TRUE; + stopTrimmerHeater(); return result; } Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -ra504d6899e709d7432af9c055db1bd1fe340d032 -rbe027f8c9bee75f07267f7a9ab5635bbb02df86e --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision a504d6899e709d7432af9c055db1bd1fe340d032) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision be027f8c9bee75f07267f7a9ab5635bbb02df86e) @@ -103,8 +103,8 @@ typedef struct { - U32 targetPrimaryHeaterTemp; - U32 targetTrimmerHeaterTemp; + F32 targetPrimaryHeaterTemp; + F32 targetTrimmerHeaterTemp; } TARGET_TEMPS_PAYLOAD_T; typedef struct @@ -707,8 +707,8 @@ result = TRUE; memcpy( &payload, message->payload, sizeof(TARGET_TEMPS_PAYLOAD_T) ); - setPrimaryHeaterTargetTemperature( (F32)payload.targetPrimaryHeaterTemp ); - setTrimmerHeaterTargetTemperature( (F32)payload.targetTrimmerHeaterTemp ); + setPrimaryHeaterTargetTemperature( payload.targetPrimaryHeaterTemp ); + setTrimmerHeaterTargetTemperature( payload.targetTrimmerHeaterTemp ); } sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_DG_2_HD, result ); } Fisheye: Tag be027f8c9bee75f07267f7a9ab5635bbb02df86e refers to a dead (removed) revision in file `results/.gitignore'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag be027f8c9bee75f07267f7a9ab5635bbb02df86e refers to a dead (removed) revision in file `results/StatusReport.csv'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag be027f8c9bee75f07267f7a9ab5635bbb02df86e refers to a dead (removed) revision in file `results/VectorCAST.log'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag be027f8c9bee75f07267f7a9ab5635bbb02df86e refers to a dead (removed) revision in file `results/cppcheck.log'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag be027f8c9bee75f07267f7a9ab5635bbb02df86e refers to a dead (removed) revision in file `results/cppcheckError.csv'. Fisheye: No comparison available. Pass `N' to diff?