Index: firmware/App/Modes/TreatmentStop.c =================================================================== diff -u -r85a18ee758116bb8e19b80b18f166a691a464bb7 -rc65ad0538ff99c3e13d7d7866ac15e38a1ef6002 --- firmware/App/Modes/TreatmentStop.c (.../TreatmentStop.c) (revision 85a18ee758116bb8e19b80b18f166a691a464bb7) +++ firmware/App/Modes/TreatmentStop.c (.../TreatmentStop.c) (revision c65ad0538ff99c3e13d7d7866ac15e38a1ef6002) @@ -37,20 +37,23 @@ /// Maximum time in this mode before blood sitting warning given (in general task intervals). static const U32 MAX_TIME_BLOOD_SITTING = ( ( 5 * SEC_PER_MIN * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ); /// Treatment stop status broadcast interval. -static const U32 TREATMENT_STOP_DATA_PUBLISH_INTERVAL = ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ); +#define TREATMENT_STOP_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) // ********** private data ********** static TREATMENT_STOP_STATE_T currentTxStopState; ///< Current treatment stop state. static U32 bloodSittingTimerCtr; ///< Timer counter tracks time in this mode while blood is sitting. static U32 stopPublishTimerCtr; ///< Timer counter (in GP task intervals) counts time to next status broadcast. +/// Interval (in task intervals) at which to publish treatment stop sub-mode data to CAN bus. +static OVERRIDE_U32_T treatmentStopPublishInterval = { TREATMENT_STOP_DATA_PUBLISH_INTERVAL, TREATMENT_STOP_DATA_PUBLISH_INTERVAL, TREATMENT_STOP_DATA_PUBLISH_INTERVAL, 0 }; // ********** private function prototypes ********** static TREATMENT_STOP_STATE_T handleTreatmentStopRecircState( void ); static TREATMENT_STOP_STATE_T handleTreatmentStopNoRecircState( void ); static void publishTreatmentStopData( void ); +static U32 getPublishTreatmentStopInterval( void ); /*********************************************************************//** * @brief @@ -223,7 +226,7 @@ *************************************************************************/ static void publishTreatmentStopData( void ) { - if ( ++stopPublishTimerCtr >= TREATMENT_STOP_DATA_PUBLISH_INTERVAL ) + if ( ++stopPublishTimerCtr >= getPublishTreatmentStopInterval() ) { U32 timeout = MAX_TIME_BLOOD_SITTING / ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ); U32 countdown = ( bloodSittingTimerCtr >= MAX_TIME_BLOOD_SITTING ? 0 : ( MAX_TIME_BLOOD_SITTING - bloodSittingTimerCtr ) / ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ); @@ -233,4 +236,77 @@ } } +/*********************************************************************//** + * @brief + * The getPublishTreatmentStopInterval function gets the treatment stop sub-mode data + * publication interval. + * @details Inputs: treatmentStopPublishInterval + * @details Outputs: none + * @return the current treatment stop sub-mode publication interval (in task intervals). + *************************************************************************/ +static U32 getPublishTreatmentStopInterval( void ) +{ + U32 result = treatmentStopPublishInterval.data; + + if ( OVERRIDE_KEY == treatmentStopPublishInterval.override ) + { + result = treatmentStopPublishInterval.ovData; + } + + return result; +} + + +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + + +/*********************************************************************//** + * @brief + * The testSetTreatmentStopPublishIntervalOverride function sets the override of the + * treatment stop sub-mode data publication interval. + * @details Inputs: none + * @details Outputs: treatmentStopPublishInterval + * @param ms milliseconds between treatment stop sub-mode broadcasts + * @return TRUE if override set successful, FALSE if not + *************************************************************************/ +BOOL testSetTreatmentStopPublishIntervalOverride( U32 ms ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + U32 intvl = ms / TASK_GENERAL_INTERVAL; + + result = TRUE; + treatmentStopPublishInterval.ovData = intvl; + treatmentStopPublishInterval.override = OVERRIDE_KEY; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testResetTreatmentStopPublishIntervalOverride function resets the override of the + * treatment stop sub-mode data publication interval. + * @details Inputs: none + * @details Outputs: treatmentStopPublishInterval + * @return TRUE if override reset successful, FALSE if not + *************************************************************************/ +BOOL testResetTreatmentStopPublishIntervalOverride( void ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + treatmentStopPublishInterval.override = OVERRIDE_RESET; + treatmentStopPublishInterval.ovData = treatmentStopPublishInterval.ovInitData; + } + + return result; +} + /**@}*/