Index: firmware/App/Monitors/BloodLeak.c =================================================================== diff -u -rdabc7e65f46140329a5d8b75343e5adbcb225436 -r55b07134d116ff3068a6b5d5cae28bce7100adb3 --- firmware/App/Monitors/BloodLeak.c (.../BloodLeak.c) (revision dabc7e65f46140329a5d8b75343e5adbcb225436) +++ firmware/App/Monitors/BloodLeak.c (.../BloodLeak.c) (revision 55b07134d116ff3068a6b5d5cae28bce7100adb3) @@ -145,7 +145,6 @@ // Embedded mode variables static BLOOD_LEAK_EMB_MODE_STATE_T bloodLeakEmbModeSubstate; ///< Blood leak embedded mode state. ///< Blood leak embedded mode set point command. -static EMB_MODE_CMD_T bloodLeakEmbModeCmd[ NUM_OF_EMB_CMDS ]; ///< Blood leak embedded mode commands. static U08 bloodLeakEmbModeCmdQ[ BLOOD_LEAK_EMB_MODE_CMD_Q_MAX_SIZE ]; ///< Blood leak embedded mode command queue. static BOOL bloodLeakEmbModeHasZeroBeenRqustd; ///< Blood leak embedded mode flag to indicate zero has been requested. static U32 bloodLeakEmbModeCmdEnqueueCount; ///< Blood leak embedded mode command enqueue count @@ -350,7 +349,9 @@ // The zero sequence contains Z->G->Z->Q->T and each of the commands has a request counter but for checking whether the // zero sequence has failed only the Z command is checked. When the zero sequence is enqueued, all of the them enqueued so they are // at the same request count number. - BOOL status = ( bloodLeakEmbModeCmd[ G_EMB_MODE_CMD ].commandRqstCount > BLOOD_LEAK_EMB_MODE_MAX_NUM_CMD_TRIES ? TRUE : FALSE ); + EMB_MODE_CMD_T cmdSpec; + getBloodLeakEmbCmdMode(G_EMB_MODE_CMD, &cmdSpec); + BOOL status = (cmdSpec.commandRqstCount > BLOOD_LEAK_EMB_MODE_MAX_NUM_CMD_TRIES ? TRUE : FALSE); return status; } @@ -477,15 +478,19 @@ { BLOOD_LEAK_STATE_T state = BLOOD_LEAK_WAIT_FOR_POST_STATE; BOOL isEmbModeReady = FALSE; - U32 cmdResp = bloodLeakEmbModeCmd[ CS_EMB_MODE_CMD ].commandResp; + //U32 cmdResp = bloodLeakEmbModeCmd[ CS_EMB_MODE_CMD ].commandResp; + EMB_MODE_CMD_T csCmdSpec; + getBloodLeakEmbCmdMode( CS_EMB_MODE_CMD, &csCmdSpec ); + U32 cmdResp = csCmdSpec.commandResp; + if ( BLOOD_LEAK_EMB_MODE_PASS_ASCII == cmdResp ) { isEmbModeReady = TRUE; } - else if ( ( TRUE == bloodLeakEmbModeCmd[ CS_EMB_MODE_CMD ].isCmdRespRdy ) && ( BLOOD_LEAK_EMB_MODE_FAIL_ASCII == cmdResp ) ) + else if ( ( TRUE == csCmdSpec.isCmdRespRdy ) && ( BLOOD_LEAK_EMB_MODE_FAIL_ASCII == cmdResp ) ) { - if ( bloodLeakEmbModeCmd[ CS_EMB_MODE_CMD ].commandRqstCount < BLOOD_LEAK_EMB_MODE_MAX_NUM_CMD_TRIES ) + if ( csCmdSpec.commandRqstCount < BLOOD_LEAK_EMB_MODE_MAX_NUM_CMD_TRIES ) { // Enqueue the commands to set the embedded mode and request the set point of the blood leak sensor // Since set point was requested in the init function as well, both are requested here because we have to be @@ -523,8 +528,12 @@ { BLOOD_LEAK_STATE_T state = BLOOD_LEAK_CHECK_SET_POINT_STATE; //U16 bloodLeakSetPoint = bloodLeakEmbModeCmd[ D_EMB_MODE_CMD ].commandResp; - BOOL isCommandRespReady = bloodLeakEmbModeCmd[ D_EMB_MODE_CMD ].isCmdRespRdy; - U08 commandDRqstCount = bloodLeakEmbModeCmd[ D_EMB_MODE_CMD ].commandRqstCount; + //BOOL isCommandRespReady = bloodLeakEmbModeCmd[ D_EMB_MODE_CMD ].isCmdRespRdy; + //U08 commandDRqstCount = bloodLeakEmbModeCmd[ D_EMB_MODE_CMD ].commandRqstCount; + EMB_MODE_CMD_T dCmdSpec; + getBloodLeakEmbCmdMode(D_EMB_MODE_CMD, &dCmdSpec); + BOOL isCommandRespReady = dCmdSpec.isCmdRespRdy; + U08 commandDRqstCount = dCmdSpec.commandRqstCount; SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_BLOOD_LEAK_NUM_OF_SET_POINT_CHECK_FAILURES, (U32)commandDRqstCount, state ) @@ -585,6 +594,7 @@ U08 i; BLOOD_LEAK_STATE_T state = BLOOD_LEAK_CHECK_ZERO_AND_SELF_TEST_STATE; BOOL areCommandsReady = TRUE; + EMB_MODE_CMD_T spec; // Check to see if all commands in sequence have been responded to for ( i = 0; i < NUM_OF_EMB_CMDS; i++ ) @@ -596,7 +606,10 @@ case Q_EMB_MODE_CMD: case T_EMB_MODE_CMD: // All the commands shall be processed and have data prior to checking the results - areCommandsReady &= bloodLeakEmbModeCmd[ i ].isCmdRespRdy; + //areCommandsReady &= bloodLeakEmbModeCmd[ i ].isCmdRespRdy; + //break; + getBloodLeakEmbCmdMode( (BLOOD_LEAK_EMB_MODE_CMD_T)i, &spec ); + areCommandsReady &= spec.isCmdRespRdy; break; default: @@ -620,13 +633,19 @@ case Q_EMB_MODE_CMD: case T_EMB_MODE_CMD: // Check to see if any of the command responses failed - hasCurrCmdFailed = ( BLOOD_LEAK_EMB_MODE_PASS_ASCII == bloodLeakEmbModeCmd[ i ].commandResp ? FALSE : TRUE ); + //hasCurrCmdFailed = ( BLOOD_LEAK_EMB_MODE_PASS_ASCII == bloodLeakEmbModeCmd[ i ].commandResp ? FALSE : TRUE ); + //hasCmdSqncFailed |= hasCurrCmdFailed; + getBloodLeakEmbCmdMode( (BLOOD_LEAK_EMB_MODE_CMD_T)i, &spec ); + hasCurrCmdFailed = ( BLOOD_LEAK_EMB_MODE_PASS_ASCII == spec.commandResp ? FALSE : TRUE ); hasCmdSqncFailed |= hasCurrCmdFailed; break; case G_EMB_MODE_CMD: // G command will return a value that has to be greater than 0 - hasCurrCmdFailed = ( bloodLeakEmbModeCmd[ i ].commandResp > 0 ? FALSE : TRUE ); + //hasCurrCmdFailed = ( bloodLeakEmbModeCmd[ i ].commandResp > 0 ? FALSE : TRUE ); + //hasCmdSqncFailed |= hasCurrCmdFailed; + getBloodLeakEmbCmdMode( (BLOOD_LEAK_EMB_MODE_CMD_T)i, &spec ); + hasCurrCmdFailed = ( spec.commandResp > 0 ? FALSE : TRUE ); hasCmdSqncFailed |= hasCurrCmdFailed; break; @@ -667,7 +686,9 @@ { BLOOD_LEAK_STATE_T state = BLOOD_LEAK_VERIFY_INTENSITY_AFTER_ZEROING_STATE; - if ( TRUE == bloodLeakEmbModeCmd[ I_EMB_MODE_CMD ].isCmdRespRdy ) + EMB_MODE_CMD_T iCmdSpec; + getBloodLeakEmbCmdMode( I_EMB_MODE_CMD, &iCmdSpec ); + if ( TRUE == iCmdSpec.isCmdRespRdy ) { U32 intensity = getEmbModeInfoValue( I_EMB_MODE_CMD ); @@ -902,7 +923,10 @@ *************************************************************************/ static void processBloodLeakIntensityData( void ) { - if ( ( TRUE == bloodLeakEmbModeCmd[ I_EMB_MODE_CMD ].isCmdRespRdy ) && ( bloodLeakState != BLOOD_LEAK_VERIFY_INTENSITY_AFTER_ZEROING_STATE ) ) + EMB_MODE_CMD_T iCmdSpec; + getBloodLeakEmbCmdMode( I_EMB_MODE_CMD, &iCmdSpec ); + + if ( ( TRUE == iCmdSpec.isCmdRespRdy ) && ( bloodLeakState != BLOOD_LEAK_VERIFY_INTENSITY_AFTER_ZEROING_STATE ) ) { U32 index = bloodLeakZeroingStatus.rawIntensityNextIndex; U32 indexValue = bloodLeakZeroingStatus.rawIntensity[ index ]; @@ -936,7 +960,10 @@ */ BOOL status = FALSE; BOOL isZeroingNeeded = TRUE; - U32 setPoint = bloodLeakEmbModeCmd[ D_EMB_MODE_CMD ].commandResp; + //U32 setPoint = bloodLeakEmbModeCmd[ D_EMB_MODE_CMD ].commandResp; + EMB_MODE_CMD_T cmdSpec; + getBloodLeakEmbCmdMode(D_EMB_MODE_CMD, &cmdSpec); + U32 setPoint = cmdSpec.commandResp; F32 driftMinFromTop = BLD_NOMINAL_INTENSITY - ( setPoint * BLD_MAX_INTENSITY_OUT_OF_RANGE ); F32 driftMaxFromTop = BLD_NOMINAL_INTENSITY - ( setPoint * BLD_MIN_INTENSITY_OUT_OF_RANGE ); U32 zeroingIntervalMS = getU32OverrideValue( &bloodLeakZeroingStatus.zeroingDriftIntervalTimeMS );