Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -re04c3c2097f8e08a7012b4b6a245b55d18dfe5f6 -re54806da466a8c52e19fd272356dbbfde04171fd --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision e04c3c2097f8e08a7012b4b6a245b55d18dfe5f6) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision e54806da466a8c52e19fd272356dbbfde04171fd) @@ -26,6 +26,7 @@ #include "ModeTreatmentParams.h" #include "OperationModes.h" #include "PersistentAlarm.h" +#include "SystemComm.h" #include "SystemCommMessages.h" #include "Timers.h" @@ -41,17 +42,19 @@ #define SIZE_OF_LARGE_LOAD_CELL_AVG 32 ///< Large load cell moving average has 32 samples. -#define DIALYSATE_TEMP_PERSISTENCE_PERIOD ( 3 * MS_PER_SECOND ) ///< Persistence period for dialysate temperature alarm. -#define DIALYSATE_TEMP_RECOVERY_TOLERANCE_C 2.0F ///< Dialysate temperature recovery tolerance in degree C. -#define DIALYSATE_TEMP_TOLERANCE_C 4.0F ///< Dialysate temperature tolerance in degree C. -#define DIALYSATE_TEMP_HIGH_LIMIT_C 42.0F ///< Dialysate high temperature limit in degree C. -#define DIALYSATE_TEMP_LOW_LIMIT_C 33.0F ///< Dialysate low temperature limit in degree C. +#define DIALYSATE_TEMP_OUT_OF_TARGET_TOL_C 2.0F ///< Dialysate temperature out of target tolerance C. +#define DIALYSATE_TEMP_OUT_OF_TARGET_TIMEOUT_MS ( 300 * MS_PER_SECOND ) ///< Dialysate temperature out of target timeout in milliseconds. +#define DIALYSATE_TEMP_HIGH_SAFETY_LIMIT_C 46.0F ///< Dialysate high safety temperature limit in C. +#define DIALYSATE_TEMP_HIGH_SAFETY_TIMEOUT_MS ( 1 * MS_PER_SECOND ) ///< Dialysate temperature high safety timeout in milliseconds. +#define DIALYSATE_TEMP_LOW_SAFETY_LIMIT_C 42.0F ///< Dialysate low safety temperature limit in C. +#define DIALYSATE_TEMP_LOW_SAFETY_TIMEOUT_MS ( 10 * MS_PER_SECOND ) ///< Dialysate temperature low safety timeout in milliseconds. +#define LOAD_CELL_DATA_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Load cell freshness timeout (in ms). // ********** private data ********** static const U32 DIP_LOAD_CELL_DATA_MESSAGE_ALARM_THRESHOLD = ((2 * MS_PER_SECOND) / TASK_GENERAL_INTERVAL); -static const U32 DIP_TEMPERATURE_DATA_MESSAGE_ALARM_THRESHOLD = ((2 * MS_PER_SECOND) / TASK_GENERAL_INTERVAL); // DN-19AUG2022 -static const U32 DIP_RESERVOIRS_DATA_MESSAGE_ALARM_THRESHOLD = ((2 * MS_PER_SECOND) / TASK_GENERAL_INTERVAL); // DN-22AUG2022 -static const U32 DIP_DG_OP_MODE_DATA_MESSAGE_ALARM_THRESHOLD = ((2 * MS_PER_SECOND) / TASK_GENERAL_INTERVAL); // DN-22AUG2022 +static const U32 DIP_TEMPERATURE_DATA_MESSAGE_ALARM_THRESHOLD = ((2 * MS_PER_SECOND) / TASK_GENERAL_INTERVAL); +static const U32 DIP_RESERVOIRS_DATA_MESSAGE_ALARM_THRESHOLD = ((2 * MS_PER_SECOND) / TASK_GENERAL_INTERVAL); +static const U32 DIP_DG_OP_MODE_DATA_MESSAGE_ALARM_THRESHOLD = ((2 * MS_PER_SECOND) / TASK_GENERAL_INTERVAL); // DG status static DG_OP_MODE_T dgCurrentOpMode = DG_MODE_INIT; ///< Current DG operation mode. @@ -64,7 +67,7 @@ static U32 timeStartMS = 0; // TODO is this needed? // DG sensor data -static F32 dgDialysateTemp = 0.0; ///< Dialysate temperature reported by the DG. +static F32 dgDialysateTemp; ///< Dialysate temperature reported by the DG. static F32 dgRedundantDialysateTemp = 0.0; ///< Redundant dialysate temperature reported by the DG. static F32 dgPrimaryTemp = 0.0; ///< Latest RO water temperature reported by the DG. static F32 dgTrimmerTempSet = 0.0; ///< Trimmer heater target temperature commanded. @@ -87,13 +90,13 @@ static F32 dgDialysateFlowRateMlMin = 0.0; ///< Latest dialysate flow rate reported by the DG. static BOOL dgDialysateFlowDataFreshFlag = FALSE; ///< Flag to signal the execDialInFlowMonitor() to process fresh flow rate data static BOOL dgLoadCellDataFreshFlag = FALSE; ///< Flag to signal the handleLoadCellReadingsFromDG() to process fresh load cell data -static BOOL dgTemperatureDataFreshFlag = FALSE; ///< Flag to signal the handleTemperatureReadingsFromDG() to process fresh temperature data // DN-19AUG2022 -static BOOL dgReservoirsDataFreshFlag = FALSE; ///< Flag to signal the handleDGReservoirData() to process fresh reservoirs data // DN-22AUG2022 -static BOOL dgOpModeDataFreshFlag = FALSE; ///< Flag to signal the handleDGOpMode() to process fresh dg op mode data // DN-22AUG2022 -static U32 loadcellDataMessageFreshStatusCounter = 0; ///< Counter use to trigger alarm if no fresh load cell data message is received -static U32 temperatureDataMessageFreshStatusCounter = 0; ///< Counter use to trigger alarm if no fresh temperature data message is received -static U32 reservoirsDataMessageFreshStatusCounter = 0; ///< Counter use to trigger alarm if no fresh reservoirs data message is received -static U32 dgOpModeDataMessageFreshStatusCounter = 0; ///< Counter use to trigger alarm if no fresh dg op mode data message is received +static BOOL dgDialysateTemperatureDataFreshFlag = FALSE; ///< Flag to signal the handleTemperatureReadingsFromDG() to process fresh temperature data +static BOOL dgReservoirsDataFreshFlag = FALSE; ///< Flag to signal the handleDGReservoirData() to process fresh reservoirs data +static BOOL dgOpModeDataFreshFlag = FALSE; ///< Flag to signal the handleDGOpMode() to process fresh dg op mode data +static U32 loadcellDataMessageFreshStatusCounter = 0; ///< Counter use to trigger alarm if no fresh load cell data message is received +static U32 temperatureDataMessageFreshStatusCounter = 0; ///< Counter use to trigger alarm if no fresh temperature data message is received +static U32 reservoirsDataMessageFreshStatusCounter = 0; ///< Counter use to trigger alarm if no fresh reservoirs data message is received +static U32 dgOpModeDataMessageFreshStatusCounter = 0; ///< Counter use to trigger alarm if no fresh dg op mode data message is received // Reservoir data static DG_RESERVOIR_ID_T dgActiveReservoir = DG_RESERVOIR_2; ///< Latest active reservoir reported by the DG. @@ -166,9 +169,47 @@ lgLoadCellBackupReadingsTotal[ DG_RESERVOIR_1 ] = 0.0; lgLoadCellBackupReadingsTotal[ DG_RESERVOIR_2 ] = 0.0; - initPersistentAlarm( ALARM_ID_DIALYSATE_TEMPERATURE_HIGH, DIALYSATE_TEMP_PERSISTENCE_PERIOD, DIALYSATE_TEMP_PERSISTENCE_PERIOD ); - initPersistentAlarm( ALARM_ID_DIALYSATE_TEMPERATURE_LOW, DIALYSATE_TEMP_PERSISTENCE_PERIOD, DIALYSATE_TEMP_PERSISTENCE_PERIOD ); + initPersistentAlarm( ALARM_ID_HD_DIALYSATE_TEMP_OUT_OF_HIGH_SAFETY_RANGE, DIALYSATE_TEMP_HIGH_SAFETY_TIMEOUT_MS, DIALYSATE_TEMP_HIGH_SAFETY_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_HD_DIALYSATE_TEMP_OUT_OF_LOW_SAFETY_RANGE, DIALYSATE_TEMP_LOW_SAFETY_TIMEOUT_MS, DIALYSATE_TEMP_LOW_SAFETY_TIMEOUT_MS ); + + initPersistentAlarm( ALARM_ID_HD_DIALYSATE_TEMP_BELOW_TARGET_TEMP, DIALYSATE_TEMP_OUT_OF_TARGET_TIMEOUT_MS, DIALYSATE_TEMP_OUT_OF_TARGET_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_HD_DIALYSATE_TEMP_ABOVE_TARGET_TEMP, DIALYSATE_TEMP_OUT_OF_TARGET_TIMEOUT_MS, DIALYSATE_TEMP_OUT_OF_TARGET_TIMEOUT_MS ); + + initPersistentAlarm( ALARM_ID_HD_NEW_LOAD_CELL_DATA_MESSAGE_NOT_RECEIVE, LOAD_CELL_DATA_TIMEOUT_MS, LOAD_CELL_DATA_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_HD_NEW_DIALYSATE_TEMPERATURE_DATA_MESSAGE_NOT_RECEIVE, LOAD_CELL_DATA_TIMEOUT_MS, LOAD_CELL_DATA_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_HD_NEW_RESERVOIRS_DATA_MESSAGE_NOT_RECEIVE, LOAD_CELL_DATA_TIMEOUT_MS, LOAD_CELL_DATA_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_HD_NEW_DG_OPERATION_MODE_MESSAGE_NOT_RECEIVE, LOAD_CELL_DATA_TIMEOUT_MS, LOAD_CELL_DATA_TIMEOUT_MS ); } + +/**********************************************************************//** + * @brief + * The checkDGDataFreshness function checks the condition + * for triggering an alarm if the DG fresh data is not received for 2 seconds. + * @details Inputs: none + * @details Outputs: an alarm is triggered or an alarm condition is cleared + * @param alarm ID of alarm to check + * @param flag to signal the fresh data processing + * @return None + *************************************************************************/ +void checkDGDataFreshness( ALARM_ID_T alarmID, BOOL *dgFreshDataFlag ) +{ + if ( TRUE == *dgFreshDataFlag ) + { + *dgFreshDataFlag = FALSE; + checkPersistentAlarm( alarmID, FALSE, 0.0, 0.0 ); + } + else + { // Alarm if not receiving DG fresh data message in timely manner + if ( TRUE == isDGCommunicating() ) + { + checkPersistentAlarm( alarmID, TRUE, 0.0, 0.0 ); + } + else + { + checkPersistentAlarm( alarmID, FALSE, 0.0, 0.0 ); + } + } +} /*********************************************************************//** * @brief @@ -180,8 +221,18 @@ *************************************************************************/ void execDGInterfaceMonitor( void ) { - // TODO - make sure DG sensor/state data is coming in timely manner (e.g. load cells s/b every 100 ms) + // Trigger alarm if not receiving new load cell data message in timely manner + checkDGDataFreshness( ALARM_ID_HD_NEW_LOAD_CELL_DATA_MESSAGE_NOT_RECEIVE, &dgLoadCellDataFreshFlag ); + // Trigger alarm if not receiving new dialysate temperature data message in timely manner + checkDGDataFreshness( ALARM_ID_HD_NEW_DIALYSATE_TEMPERATURE_DATA_MESSAGE_NOT_RECEIVE, &dgDialysateTemperatureDataFreshFlag ); + + // Trigger alarm if not receiving new reservoirs data message in timely manner + checkDGDataFreshness( ALARM_ID_HD_NEW_RESERVOIRS_DATA_MESSAGE_NOT_RECEIVE, &dgReservoirsDataFreshFlag ); + + // Trigger alarm if not receiving new reservoirs data message in timely manner + checkDGDataFreshness( ALARM_ID_HD_NEW_DG_OPERATION_MODE_MESSAGE_NOT_RECEIVE, &dgOpModeDataFreshFlag ); + // Trigger alarm if not receiving new load cell data message in timely manner - DN-22AUG2022 if ( TRUE == getLoadCellDataFreshFlag() ) { @@ -335,15 +386,15 @@ * @brief * The getTemperatureDataFreshFlag function returns a flag to indicate * if the temperature data message reported by the DG is fresh or stale data. - * @details Inputs: dgTemperatureDataFreshFlag - * @details Outputs: dgTemperatureDataFreshFlag + * @details Inputs: dgDialysateTemperatureDataFreshFlag + * @details Outputs: dgDialysateTemperatureDataFreshFlag * @return T/F flag to indicate fresh/stale status of load cell data. *************************************************************************/ BOOL getTemperatureDataFreshFlag( void ) // DN-19AUG2022 { - BOOL result = dgTemperatureDataFreshFlag; + BOOL result = dgDialysateTemperatureDataFreshFlag; - dgTemperatureDataFreshFlag = FALSE; + dgDialysateTemperatureDataFreshFlag = FALSE; return result; } @@ -352,8 +403,8 @@ * @brief * The getReservoirsDataFreshFlag function returns a flag to indicate * if the reservoirs data message reported by the DG is fresh or stale data. - * @details Inputs: dgTemperatureDataFreshFlag - * @details Outputs: dgTemperatureDataFreshFlag + * @details Inputs: dgReservoirsDataFreshFlag + * @details Outputs: dgReservoirsDataFreshFlag * @return T/F flag to indicate fresh/stale status of load cell data. *************************************************************************/ BOOL getReservoirsDataFreshFlag( void ) // DN-22AUG2022 @@ -369,8 +420,8 @@ * @brief * The getDGOpModeDataFreshFlag function returns a flag to indicate * if the dg op mode data message reported by the DG is fresh or stale data. - * @details Inputs: dgTemperatureDataFreshFlag - * @details Outputs: dgTemperatureDataFreshFlag + * @details Inputs: dgOpModeDataFreshFlag + * @details Outputs: dgOpModeDataFreshFlag * @return T/F flag to indicate fresh/stale status of load cell data. *************************************************************************/ BOOL getDgOpModeDataFreshFlag( void ) // DN-22AUG2022 @@ -520,31 +571,6 @@ *************************************************************************/ void setDGOpMode( U32 opMode, U32 subMode ) { - // DN-22AUG2022 - // BEGIN - // Trigger alarm if not receiving new DG Op Mode data message in timely manner - if ( TRUE == getDgOpModeDataFreshFlag() ) - { - dgOpModeDataMessageFreshStatusCounter = 0; - } - else - { - // Alarm if not receiving new lDG Op Mode data message in timely manner - if ( TRUE == isDGCommunicating() ) // DN-22AUG2022 - { - if ( ++dgOpModeDataMessageFreshStatusCounter > DIP_DG_OP_MODE_DATA_MESSAGE_ALARM_THRESHOLD ) - { - activateAlarmNoData( ALARM_ID_HD_NEW_DG_OPERATION_MODE_MESSAGE_NOT_RECEIVE ); - } - } - else - { - dgOpModeDataMessageFreshStatusCounter = 0; - } - - } - // END - DN-22AUG2022 - if ( opMode < NUM_OF_DG_MODES ) { dgCurrentOpMode = (DG_OP_MODE_T)opMode; @@ -570,35 +596,10 @@ *************************************************************************/ void setDialysateTemperatureReadings( F32 temp1, F32 temp2 ) { - // DN-19AUG2022 - // BEGIN - // Trigger alarm if not receiving new load cell data message in timely manner - if ( TRUE == getTemperatureDataFreshFlag() ) - { - temperatureDataMessageFreshStatusCounter = 0; - } - else - { - // Alarm if not receiving new load cell data message in timely manner - if ( TRUE == isDGCommunicating() ) // DN-19AUG2022 - { - if ( ++temperatureDataMessageFreshStatusCounter > DIP_TEMPERATURE_DATA_MESSAGE_ALARM_THRESHOLD ) - { - activateAlarmNoData( ALARM_ID_HD_NEW_DIALYSATE_TEMPERATURE_DATA_MESSAGE_NOT_RECEIVE ); - } - } - else - { - temperatureDataMessageFreshStatusCounter = 0; - } - - } - // END - DN-19AUG2022 - dgDialysateTemp = temp1; dgRedundantDialysateTemp = temp2; - dgTemperatureDataFreshFlag = TRUE; + dgDialysateTemperatureDataFreshFlag = TRUE; } /*********************************************************************//** @@ -614,31 +615,6 @@ *************************************************************************/ void setDGReservoirsData( DG_RESERVOIR_ID_T resID, U32 fillVol, U32 drainVol ) { - // DN-22AUG2022 - // BEGIN - // Trigger alarm if not receiving new reservoirs data message in timely manner - if ( TRUE == getReservoirsDataFreshFlag() ) - { - reservoirsDataMessageFreshStatusCounter = 0; - } - else - { - // Alarm if not receiving new reservoirs data message in timely manner - if ( TRUE == isDGCommunicating() ) // DN-22AUG2022 - { - if ( ++reservoirsDataMessageFreshStatusCounter > DIP_RESERVOIRS_DATA_MESSAGE_ALARM_THRESHOLD ) - { - activateAlarmNoData( ALARM_ID_HD_NEW_RESERVOIRS_DATA_MESSAGE_NOT_RECEIVE ); - } - } - else - { - reservoirsDataMessageFreshStatusCounter = 0; - } - - } - // END - DN-22AUG2022 - if ( resID < NUM_OF_DG_RESERVOIRS ) { dgActiveReservoir = resID; @@ -650,7 +626,7 @@ SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_HD_INVALID_RESERVOIR_ID, resID ); } - dgReservoirsDataFreshFlag = TRUE; // DN-22AUG2022 + dgReservoirsDataFreshFlag = TRUE; } /*********************************************************************//** @@ -694,28 +670,6 @@ DG_RESERVOIR_ID_T activeRes = getDGActiveReservoir(); BOOL inTreatment = ( MODE_TREA == getCurrentOperationMode() ? TRUE : FALSE ); - /* ========== - // Trigger alarm if not receiving new load cell data message in timely manner - if ( TRUE == getLoadCellDataFreshFlag() ) - { - loadcellDataMessageFreshStatusCounter = 0; - } - else - { // Alarm if not receiving new load cell data message in timely manner - if ( TRUE == isDGCommunicating() ) - { - if ( ++loadcellDataMessageFreshStatusCounter > DIP_LOAD_CELL_DATA_MESSAGE_ALARM_THRESHOLD ) - { - activateAlarmNoData( ALARM_ID_HD_NEW_LOAD_CELL_DATA_MESSAGE_NOT_RECEIVE ); - } - } - else - { - loadcellDataMessageFreshStatusCounter = 0; - } - } - ========= */ - loadCellWeightInGrams[ LOAD_CELL_RESERVOIR_1_PRIMARY ].data = res1Primary; loadCellWeightInGrams[ LOAD_CELL_RESERVOIR_1_BACKUP ].data = res1Backup; loadCellWeightInGrams[ LOAD_CELL_RESERVOIR_2_PRIMARY ].data = res2Primary; @@ -1147,7 +1101,7 @@ *************************************************************************/ void checkDialysateTemperature( void ) { - BOOL const dialysateHighTemp = ( ( ( dgDialysateTemp - dgTrimmerTempSet ) > DIALYSATE_TEMP_TOLERANCE_C ) || + /*BOOL const dialysateHighTemp = ( ( ( dgDialysateTemp - dgTrimmerTempSet ) > DIALYSATE_TEMP_TOLERANCE_C ) || ( dgDialysateTemp > DIALYSATE_TEMP_HIGH_LIMIT_C ) ); BOOL const dialysateLowTemp = ( ( ( dgTrimmerTempSet - dgDialysateTemp ) > DIALYSATE_TEMP_TOLERANCE_C ) || @@ -1178,7 +1132,7 @@ { clearAlarmCondition( ALARM_ID_DIALYSATE_TEMPERATURE_LOW ); } - } + }*/ } // ********** private functions ********** Index: firmware/App/Controllers/DGInterface.h =================================================================== diff -u -r72e4c11140e7a0d186c3a6e58ef724b7e126bab8 -re54806da466a8c52e19fd272356dbbfde04171fd --- firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 72e4c11140e7a0d186c3a6e58ef724b7e126bab8) +++ firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision e54806da466a8c52e19fd272356dbbfde04171fd) @@ -149,7 +149,7 @@ DG_RESERVOIR_ID_T getDGInactiveReservoir( void ); BOOL hasDGCompletedReservoirSwitch( void ); BOOL getDialysateFlowDataFreshFlag( void ); -BOOL getLoadCellDataFreshFlag(void); +BOOL getLoadCellDataFreshFlag( void ); F32 getDGDialysateFlowRateLMin( void ); F32 getLoadCellWeight( LOAD_CELL_ID_T loadCellID ); F32 getReservoirWeight( DG_RESERVOIR_ID_T resID ); Index: firmware/App/Controllers/Temperatures.c =================================================================== diff -u -r921034ee7092206a50183eacfaa73b436d2dee5f -re54806da466a8c52e19fd272356dbbfde04171fd --- firmware/App/Controllers/Temperatures.c (.../Temperatures.c) (revision 921034ee7092206a50183eacfaa73b436d2dee5f) +++ firmware/App/Controllers/Temperatures.c (.../Temperatures.c) (revision e54806da466a8c52e19fd272356dbbfde04171fd) @@ -292,8 +292,7 @@ if ( ( temperature > MAX_ALLOWED_TEMPERATURE ) || ( temperature < MIN_ALLOWED_TEMPERATURE ) ) { isTempOutOfRange = TRUE; - lastFaultSensor = sensor; - faultSensorTemp = temperature; + lastFaultSensor = sensor; } } Index: firmware/App/Modes/Prime.c =================================================================== diff -u -r72e4c11140e7a0d186c3a6e58ef724b7e126bab8 -re54806da466a8c52e19fd272356dbbfde04171fd --- firmware/App/Modes/Prime.c (.../Prime.c) (revision 72e4c11140e7a0d186c3a6e58ef724b7e126bab8) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision e54806da466a8c52e19fd272356dbbfde04171fd) @@ -14,7 +14,6 @@ * @date (original) 08-Dec-2020 * ***************************************************************************/ - #include "AirTrap.h" #include "AlarmMgmt.h" #include "BloodFlow.h" @@ -734,9 +733,9 @@ } if ( TRUE == didTimeout( primeSalineDialyzerStartTime, PRIME_SALINE_DIALYZER_TIME_OUT_COUNT ) ) - { + { activateAlarmNoData( ALARM_ID_PRIME_SALINE_DIALYZER_TIME_OUT ); // Trigger HD prime saline dialyzer time out alarm. - } + } if ( TRUE == doesAlarmStatusIndicateStop() ) { Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r72e4c11140e7a0d186c3a6e58ef724b7e126bab8 -re54806da466a8c52e19fd272356dbbfde04171fd --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 72e4c11140e7a0d186c3a6e58ef724b7e126bab8) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision e54806da466a8c52e19fd272356dbbfde04171fd) @@ -704,12 +704,6 @@ BOOL isThereMsgRcvd = TRUE; // Assume TRUE at first to get into while loop MESSAGE_WRAPPER_T message; - // DN-22AUG2022 - Try here for debug - //if ( ++loadcellDataMessageFreshStatusCounter > DIP_LOAD_CELL_DATA_MESSAGE_ALARM_THRESHOLD ) - //{ - // activateAlarmNoData( ALARM_ID_HD_NEW_LOAD_CELL_DATA_MESSAGE_NOT_RECEIVE ); - //} - while ( TRUE == isThereMsgRcvd ) { // See if any messages received Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r72e4c11140e7a0d186c3a6e58ef724b7e126bab8 -re54806da466a8c52e19fd272356dbbfde04171fd --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 72e4c11140e7a0d186c3a6e58ef724b7e126bab8) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision e54806da466a8c52e19fd272356dbbfde04171fd) @@ -44,6 +44,8 @@ #include "HDDefs.h" #include "TaskPriority.h" +#include "TaskPriority.h" + /** * @addtogroup SystemCommMessages * @{ Index: firmware/source/sys_main.c =================================================================== diff -u -r43e59e505bbea87c76822c51a3273eec3f4addaa -re54806da466a8c52e19fd272356dbbfde04171fd --- firmware/source/sys_main.c (.../sys_main.c) (revision 43e59e505bbea87c76822c51a3273eec3f4addaa) +++ firmware/source/sys_main.c (.../sys_main.c) (revision e54806da466a8c52e19fd272356dbbfde04171fd) @@ -73,6 +73,7 @@ #include "Buttons.h" #include "CommBuffers.h" #include "CPLD.h" +#include "DGInterface.h" #include "DialInFlow.h" #include "DialOutFlow.h" #include "Fans.h" @@ -186,6 +187,7 @@ initRTC(); // Initialize services initCommBuffers(); + initDGInterface(); initIntegrity(); initFPGA(); initMsgQueues();