Index: firmware/App/Services/DDInterface.c =================================================================== diff -u -r9c833ef5623ce842267e284d958820ac0dc3a7fc -r9e38d223e94cf990a87fa8615acf9a8c5c585852 --- firmware/App/Services/DDInterface.c (.../DDInterface.c) (revision 9c833ef5623ce842267e284d958820ac0dc3a7fc) +++ firmware/App/Services/DDInterface.c (.../DDInterface.c) (revision 9e38d223e94cf990a87fa8615acf9a8c5c585852) @@ -120,7 +120,7 @@ dialysateDeliveryCmdSet.bicarbConvFactor = 0.0F; dialysateDeliveryCmdSet.sodium = 0; dialysateDeliveryCmdSet.bicarbonate = 0; - dialysateDeliveryCmdSet.substitutionRate = 0.0F; + //dialysateDeliveryCmdSet.substitutionRate = 0.0F; } /**********************************************************************//** @@ -401,7 +401,7 @@ dialysateDeliveryCmdSet.bicarbConvFactor = bicarbConvFactor; dialysateDeliveryCmdSet.sodium = sodium; dialysateDeliveryCmdSet.bicarbonate = bicarbonate; - dialysateDeliveryCmdSet.substitutionRate = 0.0F; + //dialysateDeliveryCmdSet.substitutionRate = 0.0F; #ifndef TEST_UI_ONLY sendMessage( MSG_ID_DD_GEN_DIALYSATE_REQUEST_DATA, COMM_BUFFER_OUT_CAN_TD_2_DD, (U08*)(&dialysateDeliveryCmdSet), sizeof( DIALYSATE_DELIVERY_REQ_PAYLOAD_T ) ); @@ -614,7 +614,7 @@ { if ( TRUE == dialysateDeliveryCmdSet.start ) { - dialysateDeliveryCmdSet.substitutionRate = qs; + //dialysateDeliveryCmdSet.substitutionRate = qs; #ifndef TEST_UI_ONLY sendMessage( MSG_ID_DD_GEN_DIALYSATE_REQUEST_DATA, COMM_BUFFER_OUT_CAN_TD_2_DD, (U08*)(&dialysateDeliveryCmdSet), sizeof( DIALYSATE_DELIVERY_REQ_PAYLOAD_T ) ); #endif Index: firmware/App/Services/StateServices/DrySelfTests.c =================================================================== diff -u -r3afb9f74631d80a7c8ef99e000d33c3f0552b7f8 -r9e38d223e94cf990a87fa8615acf9a8c5c585852 --- firmware/App/Services/StateServices/DrySelfTests.c (.../DrySelfTests.c) (revision 3afb9f74631d80a7c8ef99e000d33c3f0552b7f8) +++ firmware/App/Services/StateServices/DrySelfTests.c (.../DrySelfTests.c) (revision 9e38d223e94cf990a87fa8615acf9a8c5c585852) @@ -75,8 +75,8 @@ /// Payload record structure for dry self-test authentication response typedef struct { - U32 validTubingSet; - U32 modalityMatch; + U32 validTubingSet; ///< Tubing set barcode is valid + U32 modalityMatch; ///< Tubing set modality from barcode } UI_TUBING_SET_AUTH_RESPONSE_PAYLOAD_T; // ********** private data ********** @@ -406,7 +406,7 @@ * The handleDrySelfTestUsedTubingSetCheckState function verifies that * no fluid is detected in the tubing set before continuing dry self-tests. * @details \b Inputs: none -* @details \b Outputs: none +* @details \b Outputs: barcodeScanResponseReceived * @return the next state of dry self-tests state machine *************************************************************************/ static DRY_SELF_TESTS_STATE_T handleDrySelfTestUsedTubingSetCheckState( void ) @@ -422,6 +422,7 @@ { resetArtVenPressureOffsets(); // TODO: Send barcode scan command through FPGA interface + barcodeScanResponseReceived = TRUE; state = DRY_SELF_TESTS_TUBING_SET_LOADED_CHECK_STATE; } else @@ -430,11 +431,11 @@ if ( TRUE == getTestConfigStatus( TEST_CONFIG_USE_WET_TUBING_SET ) ) { // TODO: Send barcode scan command through FPGA interface + barcodeScanResponseReceived = TRUE; state = DRY_SELF_TESTS_TUBING_SET_LOADED_CHECK_STATE; } else { - // If tubing set is invalid it triggers an alarm SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_INSTALL_NEW_BLOOD_TUBING_SET, bubbleState, lowerLevelState ); PreTxRequestTubeSetInstall(); } @@ -458,8 +459,12 @@ if ( TRUE == barcodeScanResponseReceived ) { barcodeScanResponseReceived = FALSE; - // Send barcode for authentication + // TODO: Send barcode for authentication when UI flow is ready sendMessage( MSG_ID_TD_TUBE_SET_AUTHENTICATION_REQUEST, COMM_BUFFER_OUT_CAN_TD_2_UI, NULL, 0 ); + // TODO: Remove these once UI responds to authentication request + authResponseReceived = TRUE; + authResponseValidTubingSet = TRUE; + authResponseModalityAccepted = TRUE; authenticationStartTime = getMSTimerCount(); state = DRY_SELF_TESTS_TUBING_SET_AUTHENTICATION_STATE; } @@ -485,39 +490,28 @@ { DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_TUBING_SET_AUTHENTICATION_STATE; - // Response received if ( TRUE == authResponseReceived ) { authResponseReceived = FALSE; - - // Invalid tubing set if ( FALSE == authResponseValidTubingSet ) { activateAlarmNoData( ALARM_ID_TD_INVALID_TUBING_SET ); PreTxRequestTubeSetInstall(); } - // Modality mismatch else if ( FALSE == authResponseModalityAccepted ) { PreTxRequestTubeSetInstall(); } - // If valid it goes to next state else { - //tubingSetChecksCompleted = TRUE; pressureSelfTestPreNormalStartTime = getMSTimerCount(); -// state = DRY_SELF_TESTS_PRESSURE_SENSOR_NORMAL_SETUP_STATE; + state = DRY_SELF_TESTS_PRESSURE_SENSOR_NORMAL_SETUP_STATE; } } - - //Timeout Alarm - else + else if ( TRUE == didTimeout( authenticationStartTime, TUBING_SET_AUTH_TIMEOUT_MS ) ) { - if ( TRUE == didTimeout( authenticationStartTime, TUBING_SET_AUTH_TIMEOUT_MS ) ) - { - activateAlarmNoData( ALARM_ID_TD_TUBING_SET_AUTHENTICATION_TIMEOUT ); - state = DRY_SELF_TESTS_STOPPED_STATE; - } + activateAlarmNoData( ALARM_ID_TD_TUBING_SET_AUTHENTICATION_TIMEOUT ); + state = DRY_SELF_TESTS_STOPPED_STATE; } return state; @@ -862,18 +856,21 @@ BOOL drySelfTestHandleTubingSetAuthResponse( MESSAGE_T *message ) { BOOL result = FALSE; - if ( sizeof( UI_TUBING_SET_AUTH_RESPONSE_PAYLOAD_T ) == message->hdr.payloadLen ) { UI_TUBING_SET_AUTH_RESPONSE_PAYLOAD_T payload; - memcpy( &payload, message->payload, sizeof( payload ) ); - - authResponseValidTubingSet = (BOOL)payload.validTubingSet; - authResponseModalityAccepted = (BOOL)payload.modalityMatch; - authResponseReceived = TRUE; - result = TRUE; - barcodeScanResponseReceived = authResponseValidTubingSet && authResponseModalityAccepted; + authResponseValidTubingSet = (BOOL)payload.validTubingSet; + if ( payload.modalityMatch == getTreatmentParameterU32( TREATMENT_PARAM_TREATMENT_MODALITY ) ) + { + authResponseModalityAccepted = TRUE; + } + else + { + authResponseModalityAccepted = FALSE; + } + authResponseReceived = TRUE; + result = TRUE; } return result; Index: firmware/App/TDCommon.h =================================================================== diff -u -rcf497d5ddf47dd4c7c2678dafb38d01cde081bcb -r9e38d223e94cf990a87fa8615acf9a8c5c585852 --- firmware/App/TDCommon.h (.../TDCommon.h) (revision cf497d5ddf47dd4c7c2678dafb38d01cde081bcb) +++ firmware/App/TDCommon.h (.../TDCommon.h) (revision 9e38d223e94cf990a87fa8615acf9a8c5c585852) @@ -37,7 +37,7 @@ // #define TEST_DEBUGGER 1 // Testing with debugger - prevents FPGA comm alarms caused by breakpoints // #define TEST_PROCESS_TASKS_WO_UI 1 // Allow task processing even when UI not connected // #define TEST_UI_ONLY 1 // Alpha test with TD and UI only - no DD -// #define TEST_DISABLE_UI_ALARMS 1 // Disable UI alarms + #define TEST_DISABLE_UI_ALARMS 1 // Disable UI alarms // #define TEST_USE_OFF_AS_STOP_BUTTON 1 // Alpha test re-purposing off button as a stop button // #define TEST_NO_PRESSURE_CHECKS 1 // Alpha test with no pressure sensor checks // #define TEST_NO_STOP_CONSUME_CHECK 1 // Alpha test with no check for stop button timeout