Index: firmware/App/Modes/ModeDrain.c =================================================================== diff -u -r79d12d6910a03b6fe08161d0cd3c706e7d359fff -r729561329c224146d94b91bce5992cddec51f7c6 --- firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision 79d12d6910a03b6fe08161d0cd3c706e7d359fff) +++ firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision 729561329c224146d94b91bce5992cddec51f7c6) @@ -62,6 +62,8 @@ #define CONCENTRATE_BOTTLE_RESERVOIOR_FILLS 3 ///< Concentrate bottle reservoir vlls. #define BICARB_PERCENT_FILL 0.03514F ///< Bicarb volume percentage of reservoir volume. #define ACID_PERCENT_FILL 0.02222F ///< Acid volume percentage of reservoir volume. +#define DATA_PUBLISH_COUNTER_START_COUNT 70 ///< Data publish counter start count. +#define DRAIN_MODE_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the drain mode data is published on the CAN bus. ///< Concentrate bottle acid low volume in mL. static const F32 CONCENTRATE_BOTTLE_ACID_LOW_VOLUME_ML = ( CONCENTRATE_BOTTLE_PRIMING_VOL_ML + @@ -78,13 +80,15 @@ static BOOL rinseConcentrateLines; ///< Flag indicates to rinse concentrate lines. static U32 rinseConcentrateLinesTimerCtr; ///< Timer counter for rinsing concentrate lines. static U32 dialysateDrainStartTime; ///< Dialysate drain start time. - +static U32 dataPublishCounter; ///< Used to schedule drain mode data publication to CAN bus. +static OVERRIDE_U32_T drainModeDataPublishInterval = { DRAIN_MODE_DATA_PUB_INTERVAL, + DRAIN_MODE_DATA_PUB_INTERVAL, 0, 0 }; ///< Interval (in ms) at which to publish drain mode data to CAN bus. // ********** private function prototypes ********** static DG_DRAIN_STATE_T handleDrainStateStart( void ); static DG_DRAIN_STATE_T handleDrainStateDrain( void ); static DG_DRAIN_STATE_T handleDrainStateTare( void ); static DG_DRAIN_STATE_T handleRinseState( void ); - +static void publishDrainModeData( void ); /*********************************************************************//** * @brief * The initDrainMode function initializes the drain mode module. @@ -101,6 +105,7 @@ drainEmptyTareTimerCtr = 0; rinseConcentrateLinesTimerCtr = 0; dialysateDrainStartTime = 0; + dataPublishCounter = DATA_PUBLISH_COUNTER_START_COUNT; } /*********************************************************************//** @@ -398,4 +403,33 @@ return result; } +/*********************************************************************//** + * @brief + * The publishFillModeData function publishes fill mode data + * at the set interval. + * @details Inputs: fillModeDataPublicationTimerCounter, fillModeDataPublishInterval + * @details Outputs: fillModeData + * @return none + *************************************************************************/ +static void publishDrainModeData( void ) +{ + // publish Drain mode data on interval + if ( ++dataPublishCounter >= getU32OverrideValue( &fillModeDataPublishInterval ) ) + { + DG_DRAIN_MODE_DATA_T drainModeData; + + U32 drainModeState; ///< Drain Mode state. + U32 badFillSignal; ///< Gen Idle bad fill signal. + U32 badFillState; ///< Gen Idle bad fill substate. + + drainModeData.drainModeState = drainState; + drainModeData.badFillSignal = getCurrentBadFillSignal(); + drainModeData.badFillState = getCurrentGenIdleBadFillState() + + broadcastData( /, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&drainModeData, sizeof( DG_DRAIN_MODE_DATA_T ) ); + // Populate the data structure for publication + dataPublishCounter = 0; + } +} + /**@}*/ Index: firmware/App/Modes/ModeDrain.h =================================================================== diff -u -r6499ea25921fcf67826fa0c35bb03caf411ba542 -r729561329c224146d94b91bce5992cddec51f7c6 --- firmware/App/Modes/ModeDrain.h (.../ModeDrain.h) (revision 6499ea25921fcf67826fa0c35bb03caf411ba542) +++ firmware/App/Modes/ModeDrain.h (.../ModeDrain.h) (revision 729561329c224146d94b91bce5992cddec51f7c6) @@ -30,7 +30,13 @@ */ // ********** public definitions ********** - +/// Drain mode data structure +typedef struct +{ + U32 drainModeState; ///< Drain Mode state. + U32 badFillSignal; ///< Gen Idle bad fill signal. + U32 badFillState; ///< Gen Idle bad fill substate. +} DG_DRAIN_MODE_DATA_T; // ********** public function prototypes ********** void initDrainMode( void ); // initialize this module Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -r9b8889b096ae02246e939468fc843f467de8c6bb -r729561329c224146d94b91bce5992cddec51f7c6 --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 9b8889b096ae02246e939468fc843f467de8c6bb) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 729561329c224146d94b91bce5992cddec51f7c6) @@ -1227,7 +1227,7 @@ *************************************************************************/ static void publishFillModeData( void ) { - // publish Drain pump data on interval + // publish Fill mode data on interval if ( ++dataPublishCounter >= getU32OverrideValue( &fillModeDataPublishInterval ) ) { DG_FILL_MODE_DATA_T fillModeData; @@ -1241,6 +1241,8 @@ fillModeData.usedBicarbVolumeML = getChemicalUsedVolumeML( BICARB ); fillModeData.integratedVolumeML = getIntegratedVolumeML(); fillModeData.roOnlyModeStatus = (U32)isROOnlyModeEnabled(); + fillModeData.badFillSignal = getCurrentBadFillSignal(); + fillModeData.badFillState = getCurrentGenIdleBadFillState(); broadcastData( MSG_ID_DG_FILL_MODE_DATA, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&fillModeData, sizeof( DG_FILL_MODE_DATA_T ) ); Index: firmware/App/Modes/ModeFill.h =================================================================== diff -u -re12f1b3d41ae133bc0975fcb126e431c2bedda59 -r729561329c224146d94b91bce5992cddec51f7c6 --- firmware/App/Modes/ModeFill.h (.../ModeFill.h) (revision e12f1b3d41ae133bc0975fcb126e431c2bedda59) +++ firmware/App/Modes/ModeFill.h (.../ModeFill.h) (revision 729561329c224146d94b91bce5992cddec51f7c6) @@ -50,6 +50,8 @@ F32 usedBicarbVolumeML; ///< The used bicarb volume in ML. F32 integratedVolumeML; ///< Integrated volume in milliliters. U32 roOnlyModeStatus; ///< RO only mode status. + U32 badFillSignal; ///< bad fill signal. + U32 badFillState; ///< bad fill substate. } DG_FILL_MODE_DATA_T; // ********** public function prototypes ********** Index: firmware/App/Modes/ModeGenIdle.c =================================================================== diff -u -r39c83612c7d83075cded8b7e1c8030898cdb5ad9 -r729561329c224146d94b91bce5992cddec51f7c6 --- firmware/App/Modes/ModeGenIdle.c (.../ModeGenIdle.c) (revision 39c83612c7d83075cded8b7e1c8030898cdb5ad9) +++ firmware/App/Modes/ModeGenIdle.c (.../ModeGenIdle.c) (revision 729561329c224146d94b91bce5992cddec51f7c6) @@ -493,7 +493,20 @@ } } +/*********************************************************************//** + * @brief + * The getCurrentBadFillSignal function returns the current + * generation idle mode bad fill flag. + * @details Inputs: handleBadFillFlag + * @details Outputs: none + * @return the current generation idle mode bad fill flag + *************************************************************************/ +BOOL getCurrentBadFillSignal( void ) +{ + return handleBadFillFlag; +} + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Modes/ModeGenIdle.h =================================================================== diff -u -r5109bb981cab2025fcb9de33e303d046085efa18 -r729561329c224146d94b91bce5992cddec51f7c6 --- firmware/App/Modes/ModeGenIdle.h (.../ModeGenIdle.h) (revision 5109bb981cab2025fcb9de33e303d046085efa18) +++ firmware/App/Modes/ModeGenIdle.h (.../ModeGenIdle.h) (revision 729561329c224146d94b91bce5992cddec51f7c6) @@ -50,6 +50,7 @@ DG_GEN_IDLE_MODE_STATE_T getCurrentGenIdleState( void ); // get the current state of generation idle mode DG_GEN_IDLE_MODE_BAD_FILL_STATE_T getCurrentGenIdleBadFillState( void ); // get the current bad fill state +BOOL getCurrentBadFillSignal( void ); // get the current bad fill signal BOOL requestDGStop( void ); // HD requests DG stop (go back to standby mode) BOOL testSetGenIdleSubstatesPublishIntervalOverride( U32 value );