Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -rfb1673d2282822995ed233f3e9ea5dfb0567780d -r4fc093ea280a0bdb47c20d25efb7c840b9f9867a --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision fb1673d2282822995ed233f3e9ea5dfb0567780d) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 4fc093ea280a0bdb47c20d25efb7c840b9f9867a) @@ -96,13 +96,15 @@ static DG_DISINFECT_UI_STATES_T disinfectsStatus; ///< DG disinfects status. static DG_MIXING_RATIOS_T dgMixingRatios; ///< DG mixing ratios. +static HEATERS_DATA_T dgHeatersData; ///< DG heaters data. // DG command response static DG_CMD_RESPONSE_T dgCmdResp[ NUM_OF_DG_COMMANDS ]; ///< Keep the latest DG command response for each command. // ********** private function prototypes ********** static void checkDGRestart( void ); +static void checkDGTrimmerHeaterStatus( void ); /*********************************************************************//** * @brief @@ -184,6 +186,9 @@ // Check to see if DG has restarted checkDGRestart(); + + // Check the status of the trimmer heater + checkDGTrimmerHeaterStatus(); } /*********************************************************************//** @@ -576,9 +581,22 @@ *************************************************************************/ void setDGMixingRatios( DG_MIXING_RATIOS_T ratios ) { - memcpy( &dgMixingRatios, &ratios, sizeof(DG_MIXING_RATIOS_T) ); + memcpy( &dgMixingRatios, &ratios, sizeof( DG_MIXING_RATIOS_T ) ); } +/*********************************************************************//** + * @brief + * The setDGHeatersData function sets heaters data that has been read from DG. + * @details Inputs: none + * @details Outputs: dgHeatersData + * @param data which is a pointer to the received heaters data + * @return none + *************************************************************************/ +void setDGHeatersData( HEATERS_DATA_T *data ) +{ + memcpy( &dgHeatersData, data, sizeof( HEATERS_DATA_T ) ); +} + /*********************************************************************//** * @brief * The cmdSetDGDialysateHeatingParams function sends the dialysate heating @@ -1001,7 +1019,29 @@ } } +/*********************************************************************//** + * @brief + * The checkDGTrimmerHeaterStatus function checks to see the status of the + * trimmer heater and set them according to the status of the trimmer heater flag. + * @details Inputs: dgTrimmerHeaterOn + * @details Outputs: none + * @return none + *************************************************************************/ +static void checkDGTrimmerHeaterStatus( void ) +{ + U32 trimmerState = dgHeatersData.trimmerHeaterState; + if ( ( TRUE == dgTrimmerHeaterOn ) && ( HEATER_EXEC_STATE_OFF == trimmerState ) ) + { + cmdStartDGTrimmerHeater(); + } + else if ( ( FALSE == dgTrimmerHeaterOn ) && ( trimmerState != HEATER_EXEC_STATE_OFF ) ) + { + cmdStopDGTrimmerHeater(); + } +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Controllers/DGInterface.h =================================================================== diff -u -r8b73263b38f449dacc0795c67a7cf6240cb79026 -r4fc093ea280a0bdb47c20d25efb7c840b9f9867a --- firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 8b73263b38f449dacc0795c67a7cf6240cb79026) +++ firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 4fc093ea280a0bdb47c20d25efb7c840b9f9867a) @@ -71,35 +71,6 @@ F32 tempRsrvrEndFillTrimmer; ///< Temperature reservoir end fill trimmer in C. } DG_RESERVOIRS_DATA_PAYLOAD_T; -/// Payload record structure for DG temperature sensors data message. -typedef struct -{ - F32 inletPrimaryHeater; ///< Inlet primary heater temperature sensor - F32 outletPrimaryHeater; ///< Outlet primary heater temperature sensor - F32 conductivitySensor1; ///< Conductivity sensor 1 temperature sensor - F32 conductivitySensor2; ///< Conductivity sensor 2 temperature sensor - F32 outletRedundant; ///< Outlet redundant temperature sensor - F32 inletDialysate; ///< Inlet dialysate temperature sensor - F32 primaryHeaterThermocouple; ///< Primary heaters thermocouple sensor - F32 trimmerHeaterThermocouple; ///< Trimmer heater thermocouple sensor - F32 priamyHeaterColdjunction; ///< Primary heaters cold junction temperature sensor - F32 trimmerHeaterColdjunction; ///< Trimmer heater cold junction temperature sensor - F32 primaryHeaterInternal; ///< Primary heaters internal temperature (calculated from thermocouple and cold junction) - F32 trimmerHeaterInternal; ///< Trimmer heater internal temperature (calculated from thermocouple and cold junction) - F32 fpgaBoard; ///< FPGA board temperature sensor - F32 loadCellA1B1; ///< Load cell A1/B1 temperature sensor - F32 loadCellA2B2; ///< Load cell A2/B2 temperature sensor - F32 internalTHDORTD; ///< THDo RTD channel temperature sensor - F32 internalTDIRTD; ///< TDI RTD channel temperature sensor - F32 internalCondSnsrTemp; ///< Conductivity Sensor internal temperature sensor - U32 primaryThermoCoupleRaw; ///< Primary heaters thermocouple raw ADC value - U32 primaryColdjuncRaw; ///< Primary heaters cold junction raw ADC value - U32 trimmerThermoCoupleRaw; ///< Trimmer heater thermocouple raw ADC value - U32 trimmerColdjuncRaw; ///< Trimmer heater cold junction raw ADC value - S32 cond1Raw; ///< Conductivity sensor 1 raw temperature ADC value - S32 cond2Raw; ///< Conductivity sensor 2 raw temperature ADC value -} TEMPERATURE_SENSORS_DATA_T; - /// Payload record structure for a drain reservoir command message. typedef struct { @@ -165,6 +136,7 @@ void setNewLoadCellReadings( F32 res1Primary, F32 res1Backup, F32 res2Primary, F32 res2Backup ); void setDGDisinfectsStates( DG_DISINFECT_UI_STATES_T states ); void setDGMixingRatios( DG_MIXING_RATIOS_T ratios ); +void setDGHeatersData( HEATERS_DATA_T *data ); void cmdSetDGDialysateHeatingParams( DG_CMD_DIALYSATE_HEATING_PARAMS_T heatingParams ); void cmdStartDG( void ); Index: firmware/App/Controllers/DialOutFlow.h =================================================================== diff -u -r37a9fd8f15e413db5337371a7d1a1cb65567af7c -r4fc093ea280a0bdb47c20d25efb7c840b9f9867a --- firmware/App/Controllers/DialOutFlow.h (.../DialOutFlow.h) (revision 37a9fd8f15e413db5337371a7d1a1cb65567af7c) +++ firmware/App/Controllers/DialOutFlow.h (.../DialOutFlow.h) (revision 4fc093ea280a0bdb47c20d25efb7c840b9f9867a) @@ -48,16 +48,6 @@ F32 dopCalcRate; ///< Latest calculated DPo flow rate. F32 ufCalcRate; ///< Latest calculated UF rate. } DIAL_OUT_FLOW_DATA_T; - -/// Payload record structure for a load cell data message. -typedef struct -{ - F32 res1PrimaryLoadCell; - F32 res1BackupLoadCell; - F32 res2PrimaryLoadCell; - F32 res2BackupLoadCell; -} LOAD_CELL_READINGS_PAYLOAD_T; - #pragma pack(pop) // ********** public function prototypes ********** Index: firmware/App/Modes/BloodPrime.c =================================================================== diff -u -rfb1673d2282822995ed233f3e9ea5dfb0567780d -r4fc093ea280a0bdb47c20d25efb7c840b9f9867a --- firmware/App/Modes/BloodPrime.c (.../BloodPrime.c) (revision fb1673d2282822995ed233f3e9ea5dfb0567780d) +++ firmware/App/Modes/BloodPrime.c (.../BloodPrime.c) (revision 4fc093ea280a0bdb47c20d25efb7c840b9f9867a) @@ -237,7 +237,7 @@ setBloodIsPrimed( TRUE ); // Signal treatment mode that blood prime is completed signalDialInPumpHardStop(); // Stop dialysate recirculation - dialysis sub-mode will restart dialysate pumps signalBloodPrimeToDialysis(); // Signal treatment mode that it's time to start dialysis - //cmdStopDGTrimmerHeater(); // Stop trimmer heater - dialysis sub-mode will restart as appropriate // TODO un-comment in DEN-13834 + cmdStopDGTrimmerHeater(); // Stop trimmer heater - dialysis sub-mode will restart as appropriate } // Is blood prime taking too long based on set BP rate? else if ( fabs( expectedBloodPrimeVolume_mL - getBloodPrimeVolume() ) > MAX_BLOOD_PRIME_VOLUME_ERROR_ML ) Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -rfb1673d2282822995ed233f3e9ea5dfb0567780d -r4fc093ea280a0bdb47c20d25efb7c840b9f9867a --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision fb1673d2282822995ed233f3e9ea5dfb0567780d) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 4fc093ea280a0bdb47c20d25efb7c840b9f9867a) @@ -975,6 +975,10 @@ case MSG_ID_DG_VERSION: handleDGVersionResponse( message ); + break; + + case MSG_ID_DG_HEATERS_DATA: + handleDGHeatersData( message ); break; case MSG_ID_DG_TEMPERATURE_DATA: Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r173e4fbf9bd750bccb2e758eb1c7ef36ed8db5a0 -r4fc093ea280a0bdb47c20d25efb7c840b9f9867a --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 173e4fbf9bd750bccb2e758eb1c7ef36ed8db5a0) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 4fc093ea280a0bdb47c20d25efb7c840b9f9867a) @@ -2306,17 +2306,36 @@ *************************************************************************/ void handleLoadCellReadingsFromDG( MESSAGE_T *message ) { - if ( message->hdr.payloadLen == sizeof(LOAD_CELL_READINGS_PAYLOAD_T) ) + if ( message->hdr.payloadLen == sizeof( LOAD_CELL_DATA_T ) ) { - LOAD_CELL_READINGS_PAYLOAD_T payload; + LOAD_CELL_DATA_T payload; - memcpy( &payload, message->payload, sizeof(LOAD_CELL_READINGS_PAYLOAD_T) ); - setNewLoadCellReadings( payload.res1PrimaryLoadCell, payload.res1BackupLoadCell, payload.res2PrimaryLoadCell, payload.res2BackupLoadCell ); + memcpy( &payload, message->payload, sizeof( LOAD_CELL_DATA_T ) ); + setNewLoadCellReadings( payload.loadCellA1inGram, payload.loadCellA2inGram, payload.loadCellB1inGram, payload.loadCellB2inGram ); } } /*********************************************************************//** * @brief + * The handleDGHeatersData function handles the heaters data reading from DG. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleDGHeatersData( MESSAGE_T *message ) +{ + if ( message->hdr.payloadLen == sizeof( HEATERS_DATA_T ) ) + { + HEATERS_DATA_T payload; + + memcpy( &payload, message->payload, sizeof( HEATERS_DATA_T ) ); + setDGHeatersData( &payload ); + } +} + +/*********************************************************************//** + * @brief * The handleDGTemperatureData function handles a temperature readings * broadcast message from the DG. * @details Inputs: none Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r4e4ab946c0bc4b668cf5b197c7f841355814ccf5 -r4fc093ea280a0bdb47c20d25efb7c840b9f9867a --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 4e4ab946c0bc4b668cf5b197c7f841355814ccf5) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 4fc093ea280a0bdb47c20d25efb7c840b9f9867a) @@ -139,7 +139,10 @@ void handleUIPOSTFinalResult( MESSAGE_T *message ); // MSG_ID_LOAD_CELL_READINGS -void handleLoadCellReadingsFromDG( MESSAGE_T *message ); +void handleLoadCellReadingsFromDG( MESSAGE_T *message ); + +// MSG_ID_DG_HEATERS_DATA +void handleDGHeatersData( MESSAGE_T *message ); // MSG_ID_DG_TEMPERATURE_DATA: void handleDGTemperatureData( MESSAGE_T *message );