Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r57ee0134869672b53ab5b7146b8988ede8f828d6 -r6788d3f0fe41ee36ac7e9d4bd8e0f407f9fc2c4b --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 57ee0134869672b53ab5b7146b8988ede8f828d6) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 6788d3f0fe41ee36ac7e9d4bd8e0f407f9fc2c4b) @@ -22,6 +22,7 @@ #include "DialOutFlow.h" #include "Dialysis.h" #include "Buttons.h" +#include "TaskGeneral.h" #include "OperationModes.h" #include "SystemCommMessages.h" #include "Timers.h" @@ -34,6 +35,8 @@ // ********** private definitions ********** +#define TREATMENT_TIME_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) // interval (ms/task time) at which the treatment time data is published on the CAN bus + typedef enum Treatment_States { TREATMENT_START_STATE = 0, @@ -59,6 +62,7 @@ static U32 treatmentTimeMS; static U32 lastTreatmentTimeStamp; +static U32 treatmentTimeBroadcastTimerCtr; #ifdef UF_TEST_ENABLED static BUTTON_STATE_T lastOffButtonState = BUTTON_STATE_RELEASED; @@ -82,6 +86,10 @@ void initTreatmentMode( void ) { currentTreatmentState = TREATMENT_START_STATE; + + treatmentTimeMS = 0; + lastTreatmentTimeStamp = 0; + treatmentTimeBroadcastTimerCtr = 0; } /************************************************************************* @@ -182,13 +190,18 @@ elapsedTreatmentTimeInSecs = presTreatmentTimeSecs; currentTreatmentState = TREATMENT_END_STATE; } - broadcastTreatmentTime( presTreatmentTimeSecs, elapsedTreatmentTimeInSecs, presTreatmentTimeSecs - elapsedTreatmentTimeInSecs ); + // broadcast treatment time at interval + if ( ++treatmentTimeBroadcastTimerCtr >= TREATMENT_TIME_DATA_PUB_INTERVAL ) + { + broadcastTreatmentTime( presTreatmentTimeSecs, elapsedTreatmentTimeInSecs, presTreatmentTimeSecs - elapsedTreatmentTimeInSecs ); + treatmentTimeBroadcastTimerCtr = 0; + } #endif #ifdef RM46_EVAL_BOARD_TARGET // TODO - temporary test code for eval board - move to next mode after 10 sec if ( TRUE == didTimeout( start, 10000U ) ) { - requestNewOperationMode( MODE_POST ); +// requestNewOperationMode( MODE_POST ); } #endif }