Index: firmware/App/Controllers/DialysatePumps.c =================================================================== diff -u -rc85d9f0a8023fabdf1cd557965958d225e2b9085 -rb6d20d9e5c704a9f7ebceea9bb12731dac61fc2a --- firmware/App/Controllers/DialysatePumps.c (.../DialysatePumps.c) (revision c85d9f0a8023fabdf1cd557965958d225e2b9085) +++ firmware/App/Controllers/DialysatePumps.c (.../DialysatePumps.c) (revision b6d20d9e5c704a9f7ebceea9bb12731dac61fc2a) @@ -114,6 +114,14 @@ U08 control; ///< Dialysate pump control } DIALYSATE_PUMP_DATA_T; +/// Payload record structure for dialysate pump start/stop request +typedef struct +{ + U32 pumpID; ///< Pump ID Fresh(DGP) : 0, Spent ( SDP) : 1 + U32 startStop; ///< Stop : 0, Start : 1 + U32 rpm; ///< Speed range from 300 to 4500 RPM range +} DIAL_PUMP_START_STOP_CMD_PAYLOAD_T; + // ********** private data ********** static U32 dialysatePumpDataPublicationTimerCounter; ///< Used to schedule dialysate pump data publication to CAN bus. @@ -1029,4 +1037,51 @@ return result; } +/*********************************************************************//** + * @brief + * The testDialysatePumpStartStopOverride function starts a given dialysate pump + * at mentioned RPM. + * @details \b Inputs: tester logged in + * @details \b Outputs: dialysatePumps[] + * @param message set message from Dialin which includes the dialysate pump to set + * and the state to set the dialysate pump to. + * @return TRUE if set request is successful, FALSE if not + *************************************************************************/ +BOOL testDialysatePumpStartStopOverride( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + // Verify tester has logged in with TD + if ( TRUE == isTestingActivated() ) + { + // Verify payload length is valid + if ( sizeof( DIAL_PUMP_START_STOP_CMD_PAYLOAD_T ) == message->hdr.payloadLen ) + { + DIAL_PUMP_START_STOP_CMD_PAYLOAD_T payload; + + memcpy( &payload, message->payload, sizeof(DIAL_PUMP_START_STOP_CMD_PAYLOAD_T) ); + + if ( (DIALYSATE_PUMPS_T)payload.pumpID < NUM_OF_DIALYSATE_PUMPS ) + { + // Handle start command + if ( ( TRUE == payload.startStop ) && + ( ( payload.rpm >= MIN_DIALYSATE_PUMP_RPM ) && ( payload.rpm <= MAX_DIALYSATE_PUMP_RPM ) ) ) + { + setDialysatePumpTargetRPM( (DIALYSATE_PUMPS_T)payload.pumpID, payload.rpm ); + result = TRUE; + } + + //Handle stop command + if ( FALSE == payload.startStop ) + { + signalDialysatePumpHardStop( (DIALYSATE_PUMPS_T)payload.pumpID ); + result = TRUE; + } + } + } + } + + return result; +} + /**@}*/