Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -r0ffe96d360a99601ac79a1185556eac7b0e7e2a1 -r474cc904efb64612f3a1214c00f1852715de6b45 --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 0ffe96d360a99601ac79a1185556eac7b0e7e2a1) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 474cc904efb64612f3a1214c00f1852715de6b45) @@ -65,8 +65,7 @@ static F32 resCurrVolume[ NUM_OF_DG_RESERVOIRS ]; ///< Reservoir current volume. static F32 resLastVolume[ NUM_OF_DG_RESERVOIRS ]; ///< Reservoir previous volume. static F32 measUFVolumeFromPriorReservoirs; ///< Current total ultrafiltration volume from previous reservoirs in current treatment. -static F32 lcLastStartWeight[NUM_OF_LOAD_CELLS]; ///< Load Cell Last Starting Weight for drift test -static F32 lcLastFinalWeight[NUM_OF_LOAD_CELLS]; ///< Load Cell Last Final Weight for drift test +static F32 lcLastSteadyWeight[NUM_OF_LOAD_CELLS]; ///< Load Cell Last Steady Weight for drift test static U32 uFTimeMS; ///< Current elapsed ultrafiltration time (in ms). Used for calculating UF reference volume. static U32 lastUFTimeStamp; ///< HD timer value when we last took stock of ultrafiltration time (so we can determine how much time has elapsed since). @@ -108,7 +107,7 @@ static void updateUFVolumes( void ); static void publishSalineBolusData( void ); -static void checkLoadCellsStablePrimaryBackupDriftOutOfRange( DG_RESERVOIR_ID_T reservoirID, BOOL reservoirFinal ); +static void checkLoadCellsStablePrimaryBackupDriftOutOfRange( DG_RESERVOIR_ID_T reservoirID ); /*********************************************************************//** * @brief @@ -149,8 +148,7 @@ for (i=0; i (LOAD_CELL_ILLEGAL_WEIGHT_VALUE + 1) ) { - if ( lcLastFinalWeight[lcPrimaryIndex] > (LOAD_CELL_ILLEGAL_WEIGHT_VALUE + 1) ) - { - // Weight has been previously saved, ok to test - loadCellPreviousDrift = lcLastFinalWeight[lcPrimaryIndex] - lcLastFinalWeight[lcBackupIndex]; - driftDiff = fabs ( loadCellCurrentDrift - loadCellPreviousDrift ); - } - // Save latest reading for next test time - lcLastFinalWeight[lcPrimaryIndex] = loadCellPrimaryWeight; - lcLastFinalWeight[lcBackupIndex] = loadCellBackupWeight; + // Weight has been previously saved, ok to test + loadCellPreviousDrift = lcLastSteadyWeight[lcPrimaryIndex] - lcLastSteadyWeight[lcBackupIndex]; + driftDiff = fabs ( loadCellCurrentDrift - loadCellPreviousDrift ); } - else - { - if ( lcLastStartWeight[lcPrimaryIndex] > (LOAD_CELL_ILLEGAL_WEIGHT_VALUE + 1) ) - { - // Weight has been previously saved, ok to test - loadCellPreviousDrift = lcLastStartWeight[lcPrimaryIndex] - lcLastStartWeight[lcBackupIndex]; - driftDiff = fabs ( loadCellCurrentDrift - loadCellPreviousDrift ); - } - // Save latest reading for next test time - lcLastStartWeight[lcPrimaryIndex] = loadCellPrimaryWeight; - lcLastStartWeight[lcBackupIndex] = loadCellBackupWeight; - } + // Save latest reading for next test time + lcLastSteadyWeight[lcPrimaryIndex] = loadCellPrimaryWeight; + lcLastSteadyWeight[lcBackupIndex] = loadCellBackupWeight; // Check for drift out of range if ( driftDiff > LOAD_CELL_PRIMARY_BACKUP_MAX_ALLOWED_DRIFT_GRAMS ) { SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_LOAD_CELL_PRIMARY_BACKUP_DRIFT_OUT_OF_RANGE, loadCellCurrentDrift, loadCellPreviousDrift ) } + + // TODO remove this debug output + // Send a comma delimited debug message with drift data + U08 tempCharBuffer[ 128 ]; + sprintf( tempCharBuffer, "Rsvr,%d,LcOldDrift,%3.3f,LcNewDrift,%3.3f,Diff,%3.3f,Pri,%3.3f,Bak,%3.3f", reservoirID, loadCellPreviousDrift, loadCellCurrentDrift, driftDiff, loadCellPrimaryWeight, loadCellBackupWeight ); + broadcastData( MSG_ID_HD_DEBUG_EVENT, COMM_BUFFER_OUT_CAN_HD_BROADCAST, tempCharBuffer, strlen( tempCharBuffer ) ); }