Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -r7a211da92e750bc5e306e897e956487a4303a36b -r39732559edf2c943e1ef206a393df435a19dc5c9 --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 7a211da92e750bc5e306e897e956487a4303a36b) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 39732559edf2c943e1ef206a393df435a19dc5c9) @@ -401,7 +401,7 @@ * @details \b Outputs: none * @return dgVersion *************************************************************************/ -U32 getDDCompatibility( void ) +U32 isDDCompatibile( void ) { ddVersion = getDDVersion(); return ddVersion.compatibilityRev; Index: firmware/App/Modes/ModeInitPOST.h =================================================================== diff -u -r7a211da92e750bc5e306e897e956487a4303a36b -r39732559edf2c943e1ef206a393df435a19dc5c9 --- firmware/App/Modes/ModeInitPOST.h (.../ModeInitPOST.h) (revision 7a211da92e750bc5e306e897e956487a4303a36b) +++ firmware/App/Modes/ModeInitPOST.h (.../ModeInitPOST.h) (revision 39732559edf2c943e1ef206a393df435a19dc5c9) @@ -47,7 +47,7 @@ void signalDDVersion( DD_VERSIONS_T version ); // Record DD version info DD_VERSIONS_T getDDVersion( void ); // Get DD version info -U32 getDDCompatibility( void ); // Get DD compatability +U32 isDDCompatibile( void ); // Get DD compatability BOOL getDDPOSTPassed( void ); // Get DD POST pass/fail status /**@}*/ Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -rf9c86e807b65164850947909bf63bd327ed69a32 -r39732559edf2c943e1ef206a393df435a19dc5c9 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision f9c86e807b65164850947909bf63bd327ed69a32) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 39732559edf2c943e1ef206a393df435a19dc5c9) @@ -108,7 +108,6 @@ { // TD_OP_MODE_T previousOpMode = getPreviousOperationMode(); //ToDo - U08 requestPayload[3] = { 0U, 0U, 0U }; // Re-initialize when transitioning to standby mode initStandbyMode(); resetDDInterface(); @@ -125,17 +124,6 @@ setAlarmUserActionEnabled( ALARM_USER_ACTION_RINSEBACK, FALSE ); setAlarmUserActionEnabled( ALARM_USER_ACTION_END_TREATMENT, FALSE ); - //ToDo: need to enable -// setStandbyWaitForTreatmentActuators(); - - // Standby currently supports Start and Wait For Treatment states. - // Disinfect/cleaning states are not enabled until the handlers are implemented. - flagNoDisinfectRequired = FALSE; - currentStandbyState = STANDBY_START_STATE; - // Pumps should be off - signalBloodPumpHardStop(); -// stopSyringePump(); - // Set valves to default positions set3WayValveState( H13_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); set3WayValveState( H20_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); @@ -147,7 +135,13 @@ { setValvePosition( H19_VALV, VALVE_POSITION_A_INSERT_EJECT ); } - + // Standby currently supports Start and Wait For Treatment states. + // Disinfect/cleaning states are not enabled until the handlers are implemented. + flagNoDisinfectRequired = FALSE; + currentStandbyState = STANDBY_START_STATE; + // Pumps should be off + signalBloodPumpHardStop(); +// stopSyringePump(); doorClosedRequired( FALSE ); // door no longer required to be closed in standby mode // Request DD service record and usage information from DD @@ -215,8 +209,10 @@ /*********************************************************************//** * @brief * The handleStandbyModeStartState function handles the standby start state. - * This state waits for the door to be closed and then initiates homing of - * pumps and valves and transitions to the wait for treatment state. + * This state initiates homing of the syringe pump and pinch valves, + * then transitions to Wait For Treatment after homing completes and + * then initiates homing of pumps and valves and transitions to the + * wait for treatment state. * @details \b Inputs: * @details \b Outputs: * @return next state of the standby mode state machine @@ -228,13 +224,11 @@ // If we haven't already initiated homing of actuators, initiate now if ( homingInitiated != TRUE ) { - VALVE_T valve; // Home pumps and valves - for ( valve = H1_VALV; valve < NUM_OF_VALVES; ++valve ) - { - homeValve( valve, FALSE, TRUE ); - } + homeValve( H1_VALV, FALSE, TRUE ); + homeValve( H19_VALV, FALSE, TRUE ); + if ( FALSE == isSyringePumpHome() ) { retractSyringePump(); @@ -269,8 +263,9 @@ static TD_STANDBY_STATE_T handleStandbyModeWaitForTreatmentState( void ) { TD_STANDBY_STATE_T state = STANDBY_WAIT_FOR_TREATMENT_STATE; - DD_OP_MODE_T ddOperationMode = getDDOpMode(); F32 bicarbConvFactor = BICARBONATE_CONVERSION_FACTOR; + //ToDo +// DD_OP_MODE_T ddOperationMode = getDDOpMode(); // switch ( ddOperationMode ) // { @@ -297,11 +292,12 @@ // If DD is communicating and we don't yet have DD version info, request it if ( TRUE == isDDCommunicating() ) { - if ( FALSE == getDDCompatibility()) + if ( FALSE == isDDCompatibile()) { - U08*fwbuf = NULL; + U08 fwVersionRequestPayload[3] = { 0U, 0U, 0U }; - sendMessage( MSG_ID_FW_VERSIONS_REQUEST, COMM_BUFFER_OUT_CAN_TD_2_DD, (U08*)(&fwbuf), 3 ); + sendMessage( MSG_ID_FW_VERSIONS_REQUEST, COMM_BUFFER_OUT_CAN_TD_2_DD, fwVersionRequestPayload, + sizeof( fwVersionRequestPayload ) ); } } @@ -329,10 +325,10 @@ getTreatmentParameterU32( TREATMENT_PARAM_SODIUM ), getTreatmentParameterU32( TREATMENT_PARAM_BICARBONATE ) ); // Start treatment workflow with pretreatment mode - requestNewOperationMode( MODE_PRET ); - treatStartReqReceived = FALSE; // Set fluid type setFluidType( modality ); + requestNewOperationMode( MODE_PRET ); + treatStartReqReceived = FALSE; } return state; @@ -435,6 +431,7 @@ REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_NONE; INITIATE_TREATMENT_REQUEST_PAYLOAD_T request; UI_RESPONSE_PAYLOAD_T response; + memset( &response, 0, sizeof( UI_RESPONSE_PAYLOAD_T ) ); // Verify message payload length is valid if ( sizeof( INITIATE_TREATMENT_REQUEST_PAYLOAD_T ) == message->hdr.payloadLen ) @@ -450,6 +447,10 @@ { rejReason = REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE; } + else if ( TRUE == treatStartReqReceived ) + { + rejReason = REQUEST_REJECT_REASON_REQUEST_ALREADY_PENDING; + } else if ( request.modality >= NUM_OF_TREATMENT_MODALITY_TYPES ) { rejReason = REQUEST_REJECT_REASON_INVALID_COMMAND; @@ -465,7 +466,7 @@ { rejReason = REQUEST_REJECT_REASON_DD_BUSY; } - else if ( FALSE == getDDCompatibility() ) + else if ( FALSE == isDDCompatibile() ) { rejReason = REQUEST_REJECT_REASON_DD_INCOMPATIBLE; } @@ -671,13 +672,16 @@ *************************************************************************/ static void handleChemFlushSampleCollection( void ) { - U08 *payloadPtr = NULL; - if ( ( FALSE == currentDDCleaningMode.sampleRqstTrgrd ) && ( TRUE == isAlarmActive( ALARM_ID_DD_CHEM_DISINFECT_FLUSH_FLUSH_SAMPLE ) ) ) + U08 sampleStatus = 0; + + if ( ( FALSE == currentDDCleaningMode.sampleRqstTrgrd ) + && ( TRUE == isAlarmActive( ALARM_ID_DD_CHEM_DISINFECT_FLUSH_FLUSH_SAMPLE ) ) ) { // Check if the flush sample alarm has been raised for the first time in the sample flush state currentDDCleaningMode.sampleRqstTrgrd = TRUE; } - else if ( ( TRUE == currentDDCleaningMode.sampleRqstTrgrd ) && ( FALSE == isAlarmActive( ALARM_ID_DD_CHEM_DISINFECT_FLUSH_FLUSH_SAMPLE ) ) ) + else if ( ( TRUE == currentDDCleaningMode.sampleRqstTrgrd ) + && ( FALSE == isAlarmActive( ALARM_ID_DD_CHEM_DISINFECT_FLUSH_FLUSH_SAMPLE ) ) ) { GENERIC_CONFIRMATION_REQUEST_T genericConfRequest; @@ -700,26 +704,26 @@ { // There is a user confirm CONFIRMATION_REQUEST_STATUS_T status = CONFIRMATION_REQUEST_STATUS_ACCEPTED; //getConfirmationRequestStatus( currentDDCleaningMode.sampleRequestID, 0.0F, 0.0F, 0.0F, 0.0F ); //Todo - U32 sampleStatus = 0; switch( status ) { // If the request status is accepted send a 1 to DG case CONFIRMATION_REQUEST_STATUS_ACCEPTED: - sampleStatus = (U32)CONFIRMATION_REQUEST_STATUS_ACCEPTED; + sampleStatus = (U08)CONFIRMATION_REQUEST_STATUS_ACCEPTED; +// broadcastData( MSG_ID_TD_SEND_CHEM_FLUSH_SAMPLE_PASS_FAIL_TO_DD, COMM_BUFFER_OUT_CAN_TD_2_DD, (U08*) &sampleStatus, 1 ); //ToDo:Required payload currentDDCleaningMode.sampleRequestID = GENERIC_CONFIRM_ID_NONE; - memcpy( payloadPtr, &sampleStatus, sizeof( U32 ) ); - broadcastData( MSG_ID_TD_SEND_CHEM_FLUSH_SAMPLE_PASS_FAIL_TO_DD, COMM_BUFFER_OUT_CAN_TD_2_DD, (U08*) &payloadPtr, 3 ); -// handleSendChemFlushPassFailToDD( sampleStatus ); break; // If the request timed out or rejected, it is 0 or failure to DG case CONFIRMATION_REQUEST_STATUS_TIMEOUT: + sampleStatus = (U08)CONFIRMATION_REQUEST_STATUS_TIMEOUT; +// broadcastData( MSG_ID_TD_SEND_CHEM_FLUSH_SAMPLE_PASS_FAIL_TO_DD, COMM_BUFFER_OUT_CAN_TD_2_DD, (U08*) &sampleStatus, 1 ); //ToDo:Required payload + currentDDCleaningMode.sampleRequestID = GENERIC_CONFIRM_ID_NONE; + break; case CONFIRMATION_REQUEST_STATUS_REJECTED: - memcpy( payloadPtr, &sampleStatus, sizeof( U32 ) ); - broadcastData( MSG_ID_TD_SEND_CHEM_FLUSH_SAMPLE_PASS_FAIL_TO_DD, COMM_BUFFER_OUT_CAN_TD_2_DD, (U08*) &payloadPtr, 3 ); + sampleStatus = (U08)CONFIRMATION_REQUEST_STATUS_REJECTED; +// broadcastData( MSG_ID_TD_SEND_CHEM_FLUSH_SAMPLE_PASS_FAIL_TO_DD, COMM_BUFFER_OUT_CAN_TD_2_DD, (U08*) &sampleStatus, 1 ); //ToDo:Required payload currentDDCleaningMode.sampleRequestID = GENERIC_CONFIRM_ID_NONE; -// handleSendChemFlushPassFailToDD( sampleStatus ); break; case CONFIRMATION_REQUEST_STATUS_PENDING: