Index: firmware/App/Controllers/LoadCell.c =================================================================== diff -u -r30bf93016955d5eb5c4053645d5b2065f20be911 -re58e3385eaf5e920335f963937b2e9f654a32cfe --- firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 30bf93016955d5eb5c4053645d5b2065f20be911) +++ firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision e58e3385eaf5e920335f963937b2e9f654a32cfe) @@ -505,6 +505,46 @@ /*********************************************************************//** * @brief + * The getLoadCellsTareValues function gets the load cells tare values + * @details Inputs: loadcells[] + * @details Outputs: none + * @param bufferAddress address to the buffer provided to get the load cells + * tare values + * @return none + *************************************************************************/ +void getLoadCellsTareValues( U08* bufferAddress ) +{ + LOAD_CELL_ID_T id; + + for ( id = LOAD_CELL_FIRST; id < NUM_OF_LOAD_CELLS; ++id ) + { + memcpy( bufferAddress, &loadcells[ id ].autoCalOffset, sizeof( F32 ) ); + bufferAddress += sizeof( F32 ); + } +} + +/*********************************************************************//** + * @brief + * The setLoadCellsTareValues function sets the load cells tare values + * @details Inputs: loadcells[] + * @details Outputs: none + * @param bufferAddress address to the buffer provided to set the load cells + * tare values + * @return none + *************************************************************************/ +void setLoadCellsTareValues( U08* bufferAddress ) +{ + LOAD_CELL_ID_T id; + + for ( id = LOAD_CELL_FIRST; id < NUM_OF_LOAD_CELLS; ++id ) + { + memcpy( &loadcells[ id ].autoCalOffset, bufferAddress, sizeof( F32 ) ); + bufferAddress += sizeof( F32 ); + } +} + +/*********************************************************************//** + * @brief * The monitorLoadCellsPrimaryBackupDriftOutOfRange function monitors the * load cells' primary and backup drift. * @details Inputs: none Index: firmware/App/Controllers/LoadCell.h =================================================================== diff -u -r6499ea25921fcf67826fa0c35bb03caf411ba542 -re58e3385eaf5e920335f963937b2e9f654a32cfe --- firmware/App/Controllers/LoadCell.h (.../LoadCell.h) (revision 6499ea25921fcf67826fa0c35bb03caf411ba542) +++ firmware/App/Controllers/LoadCell.h (.../LoadCell.h) (revision e58e3385eaf5e920335f963937b2e9f654a32cfe) @@ -44,6 +44,9 @@ F32 getLoadCellLargeFilteredWeight( LOAD_CELL_ID_T loadCellID ); F32 getLoadCellVelocity( LOAD_CELL_ID_T loadCellID ); +void getLoadCellsTareValues( U08* bufferAddress ); +void setLoadCellsTareValues( U08* bufferAddress ); + BOOL testSetLoadCellOverride( U32 loadCellID, F32 value, BOOL raw ); BOOL testResetLoadCellOverride( U32 loadCellID, BOOL raw ); BOOL testSetLoadCellDataPublishIntervalOverride( U32 value ); Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -rc7ea3969643ead419cbfcd34c3cb203c45bcad71 -re58e3385eaf5e920335f963937b2e9f654a32cfe --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision c7ea3969643ead419cbfcd34c3cb203c45bcad71) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision e58e3385eaf5e920335f963937b2e9f654a32cfe) @@ -667,7 +667,7 @@ } #endif - if ( ( TRUE == isConductivityInRange ) || ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_MIXING_WITH_WATER ) ) ) + if ( ( TRUE == isConductivityInRange ) || ( TRUE == getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) ) ) { // Initialization requestConcentratePumpOff( CONCENTRATEPUMPS_CP2_BICARB, NO_PARK_CONC_PUMPS ); @@ -739,7 +739,7 @@ #endif { if ( ( TRUE == isValueWithinPercentRange( averageAcidConductivity, acidCondUSPerCM, FIVE_PERCENT_FACTOR ) ) || - ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_MIXING_WITH_WATER ) ) ) + ( TRUE == getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) ) ) { hasAcidTestPassed = TRUE; } @@ -748,7 +748,7 @@ SET_ALARM_WITH_1_F32_DATA( ALARM_ID_DG_ACID_CONDUCTIVITY_OUT_OF_RANGE, averageAcidConductivity ) } - if ( ( pctDiffInConductivity < FIVE_PERCENT_FACTOR ) || ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_MIXING_WITH_WATER ) ) ) + if ( ( pctDiffInConductivity < FIVE_PERCENT_FACTOR ) || ( TRUE == getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) ) ) { hasCD1CD2TestPassed = TRUE; } @@ -934,7 +934,7 @@ F32 avgCPo = sumFillCPoConductivity / (F32)fillCPoConductivitySampleCnt; // sample count incremented above w/o condition so no need for divide by zero checks F32 avgRR = sumFillRejRatio / (F32)fillCPoConductivitySampleCnt; - if ( ( avgCPo > MAX_CPO_CONDUCTIVITY_ALLOW ) && ( getTestConfigStatus( TEST_CONFIG_ENABLE_MIXING_WITH_WATER ) != FALSE ) ) + if ( ( avgCPo > MAX_CPO_CONDUCTIVITY_ALLOW ) && ( getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) != FALSE ) ) { // Fault alarm per PRS 483 SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DG_OUTLET_PRIMARY_CONDUCTIVITY_OUT_OF_RANGE, avgCPo, MAX_CPO_CONDUCTIVITY_ALLOW ); @@ -965,7 +965,7 @@ { // SRSDG 400 if ( ( FALSE == isValueWithinPercentRange( avgBicarbConductivity, bicarbNormalConductivity, FIVE_PERCENT_FACTOR ) ) && - ( getTestConfigStatus( TEST_CONFIG_ENABLE_MIXING_WITH_WATER ) != TRUE ) ) + ( getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) != TRUE ) ) { setBadAvgConductivityDetectedFlag( TRUE ); // signal idle bad avg conductivity detected setThisFisrtFillFlag( TRUE ); @@ -975,7 +975,7 @@ } if ( ( FALSE == isValueWithinPercentRange( avgAcidConductivity, acidNormalConductivity, FIVE_PERCENT_FACTOR ) ) && - ( getTestConfigStatus( TEST_CONFIG_ENABLE_MIXING_WITH_WATER ) != TRUE ) ) + ( getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) != TRUE ) ) { setBadAvgConductivityDetectedFlag( TRUE ); // signal idle bad avg conductivity detected setThisFisrtFillFlag( TRUE ); Index: firmware/App/Services/Reservoirs.c =================================================================== diff -u -r3e5c16b70fb34da7d58f5cf6efff896fdb3d00c3 -re58e3385eaf5e920335f963937b2e9f654a32cfe --- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 3e5c16b70fb34da7d58f5cf6efff896fdb3d00c3) +++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision e58e3385eaf5e920335f963937b2e9f654a32cfe) @@ -917,7 +917,7 @@ *************************************************************************/ void tareLoadCellsAtEmpty( DG_RESERVOIR_ID_T reservoirId ) { - U32 const targetDrainVolume = getU32OverrideValue( &drainVolumeTargetMl ); + U32 targetDrainVolume = getU32OverrideValue( &drainVolumeTargetMl ); if ( TRUE == tareLoadCellRequest ) { Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -rc7ea3969643ead419cbfcd34c3cb203c45bcad71 -re58e3385eaf5e920335f963937b2e9f654a32cfe --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision c7ea3969643ead419cbfcd34c3cb203c45bcad71) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision e58e3385eaf5e920335f963937b2e9f654a32cfe) @@ -1326,6 +1326,14 @@ handleTestDGDialinCheckIn( message ); break; + case MSG_ID_DG_GET_LOAD_CELLS_TARE_VALUES: + handleTestDGGetLoadCellsTareValues( message ); + break; + + case MSG_ID_DG_SET_LOAD_CELLS_TARE_VALUES: + handleTestDGSetLoadCellsTareValues( message ); + break; + default: // TODO - unrecognized message ID received - ignore break; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rc7ea3969643ead419cbfcd34c3cb203c45bcad71 -re58e3385eaf5e920335f963937b2e9f654a32cfe --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision c7ea3969643ead419cbfcd34c3cb203c45bcad71) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision e58e3385eaf5e920335f963937b2e9f654a32cfe) @@ -4652,4 +4652,65 @@ sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, status ); } +/*********************************************************************//** + * @brief + * The handleTestDGGetLoadCellsTareValues function handles a request to + * get the load cells tare values. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestDGGetLoadCellsTareValues( MESSAGE_T* message ) +{ + BOOL status = FALSE; + + if ( 0 == message->hdr.payloadLen ) + { + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_DG_SEND_LOAD_CELLS_TARE_VALUES; + msg.hdr.payloadLen = sizeof( F32 ) * NUM_OF_LOAD_CELLS; + + getLoadCellsTareValues( payloadPtr ); + + // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + status = serializeMessage( msg, COMM_BUFFER_OUT_CAN_PC, ACK_NOT_REQUIRED ); + } + + // respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, status ); +} + +/*********************************************************************//** + * @brief + * The handleTestDGSetLoadCellsTareValues function handles a request to + * set the load cells tare values. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestDGSetLoadCellsTareValues( MESSAGE_T* message ) +{ + BOOL status = FALSE; + + if ( ( sizeof( F32 ) * NUM_OF_LOAD_CELLS ) == message->hdr.payloadLen ) + { + status = TRUE; + + F32 payload[ NUM_OF_LOAD_CELLS ]; + + memcpy( &payload, message->payload, sizeof( F32 ) * NUM_OF_LOAD_CELLS ); + + setLoadCellsTareValues( (U08*)&payload ); + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, status ); +} + /**@}*/ Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -rc7ea3969643ead419cbfcd34c3cb203c45bcad71 -re58e3385eaf5e920335f963937b2e9f654a32cfe --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision c7ea3969643ead419cbfcd34c3cb203c45bcad71) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision e58e3385eaf5e920335f963937b2e9f654a32cfe) @@ -488,6 +488,12 @@ // MSG_ID_DG_DIALIN_CHECK_IN void handleTestDGDialinCheckIn( MESSAGE_T* message ); +// MSG_ID_DG_GET_LOAD_CELLS_TARE_VALUES +void handleTestDGGetLoadCellsTareValues( MESSAGE_T* message ); + +// MSG_ID_DG_SET_LOAD_CELLS_TARE_VALUES +void handleTestDGSetLoadCellsTareValues( MESSAGE_T* message ); + /**@}*/ #endif