Index: firmware/App/Services/TDInterface.c =================================================================== diff -u -r322747d530c1b8205be257557e53dcfe9caad50a -r724b64673b719eaac10b0c9dd839ad9675274911 --- firmware/App/Services/TDInterface.c (.../TDInterface.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) +++ firmware/App/Services/TDInterface.c (.../TDInterface.c) (revision 724b64673b719eaac10b0c9dd839ad9675274911) @@ -20,6 +20,7 @@ #include "MessagePayloads.h" #include "ModeGenDialysate.h" #include "ModeInitPOST.h" +#include "ModePreGenDialysate.h" #include "ModeStandby.h" #include "OperationModes.h" #include "PersistentAlarm.h" @@ -323,6 +324,49 @@ /*********************************************************************//** * @brief + * The handlePreGenDialysateRequestMsg function handles a pre gen dailysate + * delivery request from TD to perform required self test and priming process. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return TRUE if message is sucessfully parsed, FALSE if not. + *************************************************************************/ +BOOL handlePreGenDialysateRequestMsg( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + if ( message->hdr.payloadLen == sizeof( PRE_GEN_DIALYSATE_REQ_PAYLOAD_T ) ) + { + PRE_GEN_DIALYSATE_REQ_PAYLOAD_T startPreGenRequest; + DD_OP_MODE_T ddMode = getCurrentOperationMode(); + + memcpy( &startPreGenRequest, message->payload, sizeof( PRE_GEN_DIALYSATE_REQ_PAYLOAD_T ) ); + + // Process the pre-gen dialysate delivery request message + if ( ( DD_MODE_STAN == ddMode ) && ( TRUE == startPreGenRequest.start ) ) + { + // start dialysate generation + result = requestDDPreGenStart(); + } + else if ( DD_MODE_PREG == ddMode ) + { + //TODO : handle transition to post treatment after states defined. + if ( FALSE == startPreGenRequest.start ) + { + // stop dialysate generation by transitioning to standby mode + requestNewOperationMode( DD_MODE_STAN ); + } + result = TRUE; + } + } + + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_DD_2_TD, result ); + + return result; +} + +/*********************************************************************//** + * @brief * The handleDialysateDeliveryRequestMsg function handles a dailysate * delivery request from TD and updates dialysate flowrate, UF rate, * dialysate temperature, dialyzer bypass and concentrate types ( acid @@ -344,7 +388,7 @@ memcpy( &startTxRequest, message->payload, sizeof( DIALYSATE_DELIVERY_REQ_PAYLOAD_T ) ); // Process the dialysate delivery request message - if ( ( DD_MODE_STAN == ddMode ) && ( TRUE == startTxRequest.start ) ) + if ( ( DD_MODE_PREG == ddMode ) && ( TRUE == startTxRequest.start ) ) { // Set dialysate flow rate, UF rate and dialysate temperature setTDDialysateFlowrate( startTxRequest.dialRate ); @@ -356,12 +400,13 @@ setTDDialyzerBypass( startTxRequest.bypassDialyzer ); // start dialysate generation - result = requestDDStart(); + result = requestDDGenDialStart(); } else if ( DD_MODE_GEND == ddMode ) { if ( FALSE == startTxRequest.start ) { + //TODO: Transition to post treatment and then standby. // stop dialysate generation by transitioning to standby mode requestNewOperationMode( DD_MODE_STAN ); }