Index: firmware/App/Services/Reservoirs.c =================================================================== diff -u -r55425a4c5370a6fa1faad61dc24fcd76b854d3ed -r6145c5d1a645646587fb077df3c61eef2354f744 --- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 55425a4c5370a6fa1faad61dc24fcd76b854d3ed) +++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 6145c5d1a645646587fb077df3c61eef2354f744) @@ -160,6 +160,54 @@ sendCommandResponseMsg( &cmdResponse ); } + +/*********************************************************************//** + * @brief + * The changeValveSettingCmd function changes valve settings according to + * the given setting ID. + * @details Inputs: none + * @details Outputs: Specified valve settings has been setup. + * @param valveSettingID ID of valve setting to change valves to + * @return none + *************************************************************************/ +void changeValveSettingCmd( VALVE_SETTING_ID_T valveSettingID ) +{ + DG_CMD_RESPONSE_T cmdResponse; + + cmdResponse.commandID = DG_CMD_VALVE_SETTING; + cmdResponse.rejected = TRUE; + cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_NONE; + + // valve setting command only valid in re-circulate mode + if ( DG_MODE_CIRC == getCurrentOperationMode() ) + { + switch ( valveSettingID ) + { + case VALVE_SETTING_R1_TO_R2: + cmdResponse.rejected = FALSE; + setValveState( VRO, VALVE_STATE_R1_C_TO_NO ); + setValveState( VRI, VALVE_STATE_R2_C_TO_NC ); + break; + + case VALVE_SETTING_R2_TO_R1: + cmdResponse.rejected = FALSE; + setValveState( VRO, VALVE_STATE_R2_C_TO_NC ); + setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); + break; + + default: + // invalid reservoir given - cmd will be NAK'd w/ false result. + cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_INVALID_PARAMETER; + break; + } + } + else + { + cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_INVALID_MODE; + } + + sendCommandResponseMsg( &cmdResponse ); +} /*********************************************************************//** * @brief