Index: firmware/App/Services/Messaging.c =================================================================== diff -u -re08f4a03a3528ab2835cbd379187e08a58cea62e -r008d18e14db9f73782072e42a71ff364915c5f83 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision e08f4a03a3528ab2835cbd379187e08a58cea62e) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 008d18e14db9f73782072e42a71ff364915c5f83) @@ -124,6 +124,7 @@ { MSG_ID_DD_TESTER_LOGIN_REQUEST, &handleTesterLogInRequest }, { MSG_ID_DD_SOFTWARE_RESET_REQUEST, &handleDDSoftwareResetRequest }, { MSG_ID_TD_OP_MODE_DATA, &handleSetTDOperationMode }, + { MSG_ID_TD_DD_COMMAND_REQUEST, &handleTDCommandRequest }, { MSG_ID_FFU_SIGNAL_DD_UPDATE_AVAILABLE, &handleUpdateAvailable }, { MSG_ID_UI_DD_NVM_GET_RECORD_REQUEST, &handleDDGetNVRecord }, { MSG_ID_UI_DD_NVM_SET_SYSTEM_RECORD_REQUEST, &handleDDSetNVSystemRecord }, Index: firmware/App/Services/TDInterface.c =================================================================== diff -u -re08f4a03a3528ab2835cbd379187e08a58cea62e -r008d18e14db9f73782072e42a71ff364915c5f83 --- firmware/App/Services/TDInterface.c (.../TDInterface.c) (revision e08f4a03a3528ab2835cbd379187e08a58cea62e) +++ firmware/App/Services/TDInterface.c (.../TDInterface.c) (revision 008d18e14db9f73782072e42a71ff364915c5f83) @@ -611,6 +611,101 @@ /*********************************************************************//** * @brief + * The handleTDCommandRequest function handles a generic DD command + * request received from TD. + * @details \b Inputs: DD command request from TD. + * @details \b Outputs: Requested DD operation initiated and command + * response sent to TD. + * @param message Pointer to the received command request message. + * @return TRUE if the command is accepted, FALSE otherwise. + *************************************************************************/ +BOOL handleTDCommandRequest( MESSAGE_T *message ) +{ + BOOL result = FALSE; + DD_COMMAND_T command = DD_CMD_NONE; + DD_CMD_RESPONSE_T response; + + response.commandID = DD_CMD_NONE; + response.rejected = TRUE; + response.rejectCode = DD_CMD_REQUEST_REJECT_REASON_INVALID_PARAMETER; + + if ( sizeof( U32 ) == message->hdr.payloadLen ) + { + memcpy( &command, message->payload, sizeof( U32 ) ); + + response.commandID = (U32)command; + + if ( ( DD_CMD_NONE < command ) && + ( command < NUM_OF_DD_COMMANDS ) ) + { + response.rejectCode = DD_CMD_REQUEST_REJECT_REASON_INVALID_MODE; + + switch ( command ) + { + case DD_CMD_GOTO_POST_GENERATE: + if ( DD_MODE_GEND == getCurrentOperationMode() ) + { + requestNewOperationMode( DD_MODE_POSG ); + + result = TRUE; + } + break; + + case DD_CMD_GOTO_STANDBY: + if ( DD_MODE_POSG == getCurrentOperationMode() ) + { + requestNewOperationMode( DD_MODE_STAN ); + + result = TRUE; + } + break; + + case DD_CMD_START_DISINFECT_SKIP: + if ( DD_MODE_STAN == getCurrentOperationMode() ) + { + // Skip requires no DD mode transition. + result = TRUE; + } + break; + + case DD_CMD_START_DISINFECT_HEAT: + if ( DD_MODE_STAN == getCurrentOperationMode() ) + { + result = startDDHeatDisinfect(); + } + break; + + case DD_CMD_START_DISINFECT_FLUSH: + case DD_CMD_START_DISINFECT_HEAT_CITRIC: + case DD_CMD_START_DISINFECT_SUBSTITUTION_PORT: + response.rejectCode = + DD_CMD_REQUEST_REJECT_REASON_INVALID_PARAMETER; + break; + + default: + response.rejectCode = + DD_CMD_REQUEST_REJECT_REASON_INVALID_PARAMETER; + break; + } + + if ( TRUE == result ) + { + response.rejected = FALSE; + response.rejectCode = DD_CMD_REQUEST_REJECT_REASON_NONE; + } + } + } + + sendMessage( MSG_ID_DD_COMMAND_RESPONSE, + COMM_BUFFER_OUT_CAN_DD_2_TD, + (U08 *)&response, + sizeof( DD_CMD_RESPONSE_T ) ); + + return result; +} + +/*********************************************************************//** + * @brief * The handleTDRequestDDFlush function handles a DD flush request from TD. * @details \b Inputs: none * @details \b Outputs: DD flush request processed Index: firmware/App/Services/TDInterface.h =================================================================== diff -u -re08f4a03a3528ab2835cbd379187e08a58cea62e -r008d18e14db9f73782072e42a71ff364915c5f83 --- firmware/App/Services/TDInterface.h (.../TDInterface.h) (revision e08f4a03a3528ab2835cbd379187e08a58cea62e) +++ firmware/App/Services/TDInterface.h (.../TDInterface.h) (revision 008d18e14db9f73782072e42a71ff364915c5f83) @@ -40,6 +40,7 @@ BOOL handleDialysateDeliveryRequestMsg( MESSAGE_T *message ); BOOL handlePreGenDialysateRequestMsg( MESSAGE_T *message ); +BOOL handleTDCommandRequest( MESSAGE_T *message ); BOOL handleTDRequestDDFlush( MESSAGE_T *message ); BOOL handleTDRequestDDHeatDisinfect( MESSAGE_T *message ); BOOL handleTDRequestDDHeatDisinfectActiveCool( MESSAGE_T *message );