Index: firmware/App/Services/Reservoirs.c =================================================================== diff -u -rdd7fad816b77aee7febdc79785eb74102b844370 -rf401094683b7f3b082c41493f1a217c28a331e5c --- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision dd7fad816b77aee7febdc79785eb74102b844370) +++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision f401094683b7f3b082c41493f1a217c28a331e5c) @@ -41,7 +41,7 @@ #define MAX_FILL_VOLUME_ML MAX_RESERVOIR_VOLUME_ML ///> Maximum fill volume in mL. #define DEFAULT_DRAIN_VOLUME_ML 100 ///> Default drain volume in mL. #define MAX_DRAIN_VOLUME_ML MAX_RESERVOIR_VOLUME_ML ///> Maximum drain volume in mL. -#define MIN_DRAIN_VOLUME_ML 100 ///> Minimum drain volume in mL. +#define MIN_DRAIN_VOLUME_ML 0 ///> Minimum drain volume in mL. #define MAX_RESERVOIR_WEIGHT 10000 ///> Maximum reservoir weight in grams. @@ -111,60 +111,67 @@ /*********************************************************************//** * @brief - * The setActiveReservoir function sets the given reservoir as active + * The setActiveReservoirCmd function sets the given reservoir as active * (meaning HD will be drawing from this reservoir). * @details Inputs: none * @details Outputs: Specified reservoir is set as active. * @param resID ID of reservoir to set as active - * @return TRUE if set active reservoir command successful, FALSE if not. + * @return none *************************************************************************/ -BOOL setActiveReservoirCmd( RESERVOIR_ID_T resID ) -{ - BOOL result = FALSE; +void setActiveReservoirCmd( RESERVOIR_ID_T resID ) +{ + BOOL rejected = TRUE; + CMD_REQUEST_REJECT_REASON_CODE_T rejectCode = CMD_REQUEST_REJECT_REASON_NONE; // switch reservoir command only valid in re-circulate mode if ( DG_MODE_CIRC == getCurrentOperationMode() ) { switch ( resID ) { case RESERVOIR_1: - activeReservoir.data = (U32)resID; - result = TRUE; + activeReservoir.data = (U32)resID; + rejected = FALSE; setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); setValveState( VRD, VALVE_STATE_R2_C_TO_NO ); setValveState( VRO, VALVE_STATE_R1_C_TO_NO ); setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); break; case RESERVOIR_2: - activeReservoir.data = (U32)resID; - result = TRUE; + activeReservoir.data = (U32)resID; + rejected = FALSE; setValveState( VRF, VALVE_STATE_R1_C_TO_NC ); // TODO - valve states are reversed for the two reservoirs for now - revert back when load cells are fixed. setValveState( VRD, VALVE_STATE_R1_C_TO_NC ); setValveState( VRO, VALVE_STATE_R2_C_TO_NC ); setValveState( VRI, VALVE_STATE_R2_C_TO_NC ); break; default: - // invalid reservoir given - cmd will be NAK'd w/ false result. + // invalid reservoir given - cmd will be NAK'd w/ false result. + rejectCode = CMD_REQUEST_REJECT_REASON_INVALID_PARAMETER; break; } + } + else + { + rejectCode = CMD_REQUEST_REJECT_REASON_INVALID_MODE; } - - return result; + + sendCommandResponseMsg( rejected, rejectCode ); } /*********************************************************************//** * @brief - * The startFill function handles a fill command from the HD. + * The startFillCmd function handles a fill command from the HD. * @details Inputs: none * @details Outputs: move to fill mode * @param fillToVolMl Target volume (in mL) to fill reservoir to - * @return TRUE if fill command successful, FALSE if not. + * @return none *************************************************************************/ -BOOL startFillCmd( U32 fillToVolMl ) +void startFillCmd( U32 fillToVolMl ) { - BOOL result = FALSE; + BOOL rejected = TRUE; + CMD_REQUEST_REJECT_REASON_CODE_T rejectCode = CMD_REQUEST_REJECT_REASON_NONE; // fill command only valid in re-circulate mode if ( ( DG_MODE_CIRC == getCurrentOperationMode() ) && @@ -175,46 +182,60 @@ { fillVolumeTargetMl.data = fillToVolMl; requestNewOperationMode( DG_MODE_FILL ); - result = TRUE; + rejected = FALSE; + } + else + { + rejectCode = CMD_REQUEST_REJECT_REASON_INVALID_PARAMETER; } + } + else + { + rejectCode = CMD_REQUEST_REJECT_REASON_INVALID_MODE; } - - return result; + + sendCommandResponseMsg( rejected, rejectCode ); } /*********************************************************************//** * @brief - * The stopFill function handles a stop fill command from the HD. + * The stopFillCmd function handles a stop fill command from the HD. * @details Inputs: none - * @details Outputs: move to standby mode - * @return TRUE if stop fill command successful, FALSE if not. + * @details Outputs: move to re-circulate mode + * @return none *************************************************************************/ -BOOL stopFillCmd( void ) +void stopFillCmd( void ) { - BOOL result = FALSE; + BOOL rejected = TRUE; + CMD_REQUEST_REJECT_REASON_CODE_T rejectCode = CMD_REQUEST_REJECT_REASON_NONE; // stop fill command only valid in fill mode if ( DG_MODE_FILL == getCurrentOperationMode() ) { fillVolumeTargetMl.data = 0; requestNewOperationMode( DG_MODE_CIRC ); - result = TRUE; + rejected = FALSE; + } + else + { + rejectCode = CMD_REQUEST_REJECT_REASON_INVALID_MODE; } - return result; + sendCommandResponseMsg( rejected, rejectCode ); } /*********************************************************************//** * @brief - * The startDrain function handles a drain command from the HD. + * The startDrainCmd function handles a drain command from the HD. * @details Inputs: none * @details Outputs: Start draining in re-circulate mode - * @param drainToVolMl Target volume (in mL) to drain reservoir to - * @return TRUE if drain command successful, FALSE if not. + * @param drainCmd drain command data record + * @return none *************************************************************************/ -BOOL startDrainCmd( DRAIN_CMD_T drainCmd ) +void startDrainCmd( DRAIN_CMD_T drainCmd ) { - BOOL result = FALSE; + BOOL rejected = TRUE; + CMD_REQUEST_REJECT_REASON_CODE_T rejectCode = CMD_REQUEST_REJECT_REASON_NONE; // drain command only valid in re-circulate mode if ( DG_MODE_CIRC == getCurrentOperationMode() ) @@ -225,67 +246,89 @@ drainVolumeTargetMl.data = drainCmd.targetVolume; tareLoadCellRequest = drainCmd.tareLoadCell; requestNewOperationMode( DG_MODE_DRAI ); - result = TRUE; + rejected = FALSE; + } + else + { + rejectCode = CMD_REQUEST_REJECT_REASON_INVALID_PARAMETER; } + } + else + { + rejectCode = CMD_REQUEST_REJECT_REASON_INVALID_MODE; } - return result; + sendCommandResponseMsg( rejected, rejectCode ); } /*********************************************************************//** * @brief - * The stopDrain function handles a stop drain command from the HD. + * The stopDrainCmd function handles a stop drain command from the HD. * @details Inputs: none - * @details Outputs: move to standby mode - * @return TRUE if stop drain command successful, FALSE if not. + * @details Outputs: move to re-circulate mode + * @return none *************************************************************************/ -BOOL stopDrainCmd( void ) +void stopDrainCmd( void ) { - BOOL result = FALSE; + BOOL rejected = TRUE; + CMD_REQUEST_REJECT_REASON_CODE_T rejectCode = CMD_REQUEST_REJECT_REASON_NONE; // stop drain command only valid in drain mode if ( DG_MODE_DRAI == getCurrentOperationMode() ) { drainVolumeTargetMl.data = 0; requestNewOperationMode( DG_MODE_CIRC ); - result = TRUE; + rejected = FALSE; } + else + { + rejectCode = CMD_REQUEST_REJECT_REASON_INVALID_MODE; + } - return result; + sendCommandResponseMsg( rejected, rejectCode ); } /*********************************************************************//** * @brief - * The startTrimmerHeater function handles a start trimmer heater command + * The startTrimmerHeaterCmd function handles a start trimmer heater command * from the HD. * @details Inputs: none * @details Outputs: start trimmer heater - * @return TRUE if stop drain command successful, FALSE if not. + * @return none *************************************************************************/ -BOOL startTrimmerHeaterCmd( void ) +void startTrimmerHeaterCmd( void ) { - BOOL result = FALSE; + BOOL rejected = TRUE; + CMD_REQUEST_REJECT_REASON_CODE_T rejectCode = CMD_REQUEST_REJECT_REASON_NONE; + + if ( TRUE == startTrimmerHeater() ) + { + rejected == FALSE; + } + else + { + rejectCode = CMD_REQUEST_REJECT_REASON_INVALID_PARAMETER; + } - result = startTrimmerHeater(); - - return result; + sendCommandResponseMsg( rejected, rejectCode ); } /*********************************************************************//** * @brief - * The stopTrimmerHeater function handles a stop trimmer heater command + * The stopTrimmerHeaterCmd function handles a stop trimmer heater command * from the HD. * @details Inputs: none * @details Outputs: stop trimmer heater - * @return TRUE if stop drain command successful, FALSE if not. + * @return none *************************************************************************/ -BOOL stopTrimmerHeaterCmd( void ) +void stopTrimmerHeaterCmd( void ) { - BOOL result = TRUE; + BOOL rejected = FALSE; + CMD_REQUEST_REJECT_REASON_CODE_T rejectCode = CMD_REQUEST_REJECT_REASON_NONE; stopTrimmerHeater(); - return result; + sendCommandResponseMsg( rejected, rejectCode ); } /*********************************************************************//**