Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r37733a07bec6a752717a9eadcab000685546eb83 -r640525dbad258a32c5dfecdc29268b432f72fb43 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 37733a07bec6a752717a9eadcab000685546eb83) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 640525dbad258a32c5dfecdc29268b432f72fb43) @@ -59,6 +59,8 @@ #define TREATMENT_TIME_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) /// Interval (ms/task time) at which the treatment state data is published on the CAN bus. #define TREATMENT_STATE_DATA_PUB_INTERVAL ( 250 / TASK_GENERAL_INTERVAL ) +/// Interval (ms/task time) at which the treatment state data is published on the CAN bus. +#define TDI_TEMPERATURE_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) /// Interval (ms/task time) at which updated, valid treatment setting ranges are published on the CAN bus. #define TREATMENT_SETTINGS_RANGES_PUB_INTERVAL ( ( 60 * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ) /// Interval (ms) at which the treatment periodic data is published on the CAN bus. @@ -88,6 +90,7 @@ static U32 lastTreatmentTimeStamp; ///< Last time elapsed treatment time was recorded (a timestamp in ms). static U32 treatmentTimeBroadcastTimerCtr; ///< Treatment time data broadcast timer counter used to schedule when to transmit data. static U32 treatmentStateBroadcastTimerCtr; ///< Treatment state data broadcast timer counter used to schedule when to transmit data. +static U32 tdiTempCounterBroadcastTimerCtr; ///< TDI temperature data broadcast timer counter used to schedule when to transmit data. static U32 treatmentParamsRangesBroadcastTimerCtr; ///< Treatment parameter ranges broadcast timer counter used to schedule when to transmit updated ranges. /// Interval (in task intervals) at which to publish alarm status to CAN bus. @@ -96,6 +99,8 @@ static OVERRIDE_U32_T treatmentStatePublishInterval = { TREATMENT_STATE_DATA_PUB_INTERVAL, TREATMENT_STATE_DATA_PUB_INTERVAL, TREATMENT_STATE_DATA_PUB_INTERVAL, 0 }; /// Interval (in task intervals) at which to publish alarm status to CAN bus. static OVERRIDE_U32_T treatmentParamRangesPublishInterval = { TREATMENT_SETTINGS_RANGES_PUB_INTERVAL, TREATMENT_SETTINGS_RANGES_PUB_INTERVAL, TREATMENT_SETTINGS_RANGES_PUB_INTERVAL, 0 }; +/// Interval (in task intervals) at which to publish alarm status to CAN bus. +static OVERRIDE_U32_T tdiTemperatureCounterPublishInterval = { TDI_TEMPERATURE_DATA_PUB_INTERVAL, TDI_TEMPERATURE_DATA_PUB_INTERVAL, TDI_TEMPERATURE_DATA_PUB_INTERVAL, 0 }; static BOOL resumeTreatmentAlarmResponseRequest; ///< Flag indicates user has requested treatment resume. static BOOL initiateRinsebackAlarmResponseRequest; ///< Flag indicates user has requested rinseback. @@ -166,6 +171,7 @@ treatmentTimeBroadcastTimerCtr = TREATMENT_TIME_DATA_PUB_INTERVAL; // So we send time data immediately when we begin treatment mode treatmentStateBroadcastTimerCtr = TREATMENT_STATE_DATA_PUB_INTERVAL; // So we send state data immediately when we begin treatment mode treatmentParamsRangesBroadcastTimerCtr = TREATMENT_SETTINGS_RANGES_PUB_INTERVAL; // So we send ranges immediately when we begin treatment mode + tdiTempCounterBroadcastTimerCtr = TDI_TEMPERATURE_DATA_PUB_INTERVAL; // So we send state data immediately when we begin treatment mode presTreatmentTimeSecs = 0; presMaxUFVolumeML = 0.0; @@ -677,6 +683,7 @@ broadcastTreatmentTimeAndState(); broadcastTreatmentSettingsRanges(); broadcastTreatmentPeriodicData(); + broadcastTdiTemperatureCounters(); // Manage air trap control execAirTrapMonitorTreatment(); @@ -1462,6 +1469,43 @@ /*********************************************************************//** * @brief + * The broadcastTdiTemperatureCounters function broadcasts tdi temperature high and low + * counter variables. + * @details Inputs: tdiTempCounterBroadcastTimerCtr,dgDialysateTemp + * @details Outputs: tdiTempCounterBroadcastTimerCtr. + * @return none + *************************************************************************/ +void broadcastTdiTemperatureCounters( void ) +{ + DG_TDI_TEMP_COUNTER_T tdiTempCounter; + + // get Tdi temperature counter variables + tdiTempCounter = getDGTdiTempCounter(); + + // Broadcast treatment state data at interval + if ( ++tdiTempCounterBroadcastTimerCtr >= getU32OverrideValue( &tdiTemperatureCounterPublishInterval ) ) + { + TDI_TEMP_COUNTER_T payload; + + payload.tdiHighTempUpCntr = tdiTempCounter.tdiHighTempUpCounter; + payload.tdiHighTempDownCntr = tdiTempCounter.tdiHighTempDownCounter; + payload.prevTdiHighTempUpCntr = tdiTempCounter.prevTdiHighTempUpCounter; + payload.prevTdiHighTempDownCntr = tdiTempCounter.prevTdiHighTempDownCounter; + payload.tdiLowTempUpCntr = tdiTempCounter.tdiLowTempUpCounter; + payload.tdiLowTempDownCntr = tdiTempCounter.tdiLowTempDownCounter; + payload.prevTdiLowTempUpCntr = tdiTempCounter.prevTdiLowTempUpCounter; + payload.prevTdiLowTempDownCntr = tdiTempCounter.prevTdiLowTempDownCounter; + payload.dgCurrentActiveReservoir = tdiTempCounter.dgCurrentActiveReservoir; + payload.dgPrevActiveReservoir = tdiTempCounter.dgPrevActiveReservoir; + payload.dgTdiTemp = getDGTdiTempetraure(); + + broadcastData( MSG_ID_TDI_TEMP_COUNTER_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&payload, sizeof( TDI_TEMP_COUNTER_T ) ); + tdiTempCounterBroadcastTimerCtr = 0; + } +} + +/*********************************************************************//** + * @brief * The broadcastTreatmentSettingsRanges function computes and broadcasts * updated treatment parameter ranges that the user may change during treatment. * It is assumed that prescription settings have already been set prior to calling