Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r94789b2f2324d5901685b6ff7b6224d4af3a0276 -r7aa0c684cca238a9697867ff72e5c3f5f2edb379 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 94789b2f2324d5901685b6ff7b6224d4af3a0276) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 7aa0c684cca238a9697867ff72e5c3f5f2edb379) @@ -722,7 +722,7 @@ if ( D5_HEAT == heater ) { alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D5_HEAT_IS_ON; - isLevelLow = ( ( getLevelStatus( D6_LEVL ) != 0 )? FALSE : TRUE ); + isLevelLow = ( ( getFloaterStatus( D6_LEVL ) != 0 )? FALSE : TRUE ); } else { Index: firmware/App/Controllers/PermeateTank.c =================================================================== diff -u -r336f6c49e05f515ca1250e0fd9ea97e5f5b5f11c -r7aa0c684cca238a9697867ff72e5c3f5f2edb379 --- firmware/App/Controllers/PermeateTank.c (.../PermeateTank.c) (revision 336f6c49e05f515ca1250e0fd9ea97e5f5b5f11c) +++ firmware/App/Controllers/PermeateTank.c (.../PermeateTank.c) (revision 7aa0c684cca238a9697867ff72e5c3f5f2edb379) @@ -240,7 +240,7 @@ static PERMEATE_TANK_STATE_T handlePermeateTankFillState( void ) { PERMEATE_TANK_STATE_T state = PERMEATE_TANK_FILL_STATE; - LEVEL_STATE_T level = getLevelStatus( P25_LEVL ); + LVL_STATE_T level = getFloaterStatus( P25_LEVL ); // Transition to manual valve control state when requested if ( TRUE == pendingStopPermeateTankController ) @@ -249,7 +249,7 @@ state = PERMEATE_TANK_MANUAL_CONTROL_STATE; } - else if ( LEVEL_STATE_HIGH == level ) + else if ( LVL_STATE_HIGH == level ) { state = PERMEATE_TANK_FULL_STATE; } @@ -268,15 +268,15 @@ static PERMEATE_TANK_STATE_T handlePermeateTankFullState( void ) { PERMEATE_TANK_STATE_T state = PERMEATE_TANK_FULL_STATE; - LEVEL_STATE_T level = getLevelStatus( P25_LEVL ); + LVL_STATE_T level = getFloaterStatus( P25_LEVL ); // Transition to manual valve control state when requested if ( TRUE == pendingStopPermeateTankController ) { pendingStopPermeateTankController = FALSE; state = PERMEATE_TANK_MANUAL_CONTROL_STATE; } - else if ( level == LEVEL_STATE_LOW ) + else if ( level == LVL_STATE_LOW ) { state = PERMEATE_TANK_FILL_STATE; } Index: firmware/App/Modes/FPModes/ModePreGenPermeate.c =================================================================== diff -u -r3e1af7cc2576e347ab8bdf2f400196b2301def07 -r7aa0c684cca238a9697867ff72e5c3f5f2edb379 --- firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 3e1af7cc2576e347ab8bdf2f400196b2301def07) +++ firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 7aa0c684cca238a9697867ff72e5c3f5f2edb379) @@ -563,14 +563,14 @@ BOOL testValidatePreGenPChangeReq( U32 newSubMode ) { BOOL result = FALSE; - LEVEL_STATE_T level = getLevelStatus( P25_LEVL ); + LVL_STATE_T level = getFloaterStatus( P25_LEVL ); if ( newSubMode < NUM_OF_FP_PRE_GENW_MODE_STATES ) { switch ( newSubMode ) { case FP_PRE_GENP_CONCENTRATE_FLUSH: - result = (( LEVEL_STATE_HIGH == level ) ? TRUE : FALSE); + result = (( LVL_STATE_HIGH == level ) ? TRUE : FALSE); break; case FP_PRE_GENP_INLET_PRESSURE_CHECK: Index: firmware/App/Modes/FPModes/StateFlushConcentrate.c =================================================================== diff -u -r046bc2b62cf942b7e846fa5bff698b94238edf24 -r7aa0c684cca238a9697867ff72e5c3f5f2edb379 --- firmware/App/Modes/FPModes/StateFlushConcentrate.c (.../StateFlushConcentrate.c) (revision 046bc2b62cf942b7e846fa5bff698b94238edf24) +++ firmware/App/Modes/FPModes/StateFlushConcentrate.c (.../StateFlushConcentrate.c) (revision 7aa0c684cca238a9697867ff72e5c3f5f2edb379) @@ -143,7 +143,7 @@ static FP_CONC_FLUSH_STATE_T handleConcentrateFlushProgressState( void ) { FP_CONC_FLUSH_STATE_T state = CONC_FLUSH_IN_PROGRESS; - LEVEL_STATE_T level = getLevelStatus( P25_LEVL ); + LVL_STATE_T level = getFloaterStatus( P25_LEVL ); // if ( TRUE == 1 ) )// TODO Alarm and Stop State Rework // { @@ -156,7 +156,7 @@ state = CONC_FLUSH_PAUSED; } // Manual control of Permeate tank to prevent over fill. - if ( LEVEL_STATE_HIGH == level ) + if ( LVL_STATE_HIGH == level ) { setValveState( M4_VALV, VALVE_STATE_CLOSED ); if ( TRUE == isBoostPumpInstalled() ) @@ -167,7 +167,7 @@ isTankFilled = TRUE; } } - else if ( LEVEL_STATE_LOW == level ) + else if ( LVL_STATE_LOW == level ) { setValveState( M4_VALV, VALVE_STATE_OPEN ); // set boost pump to closed loop when M4 closed. Added Tank fill check to avoid reset during initial transition Index: firmware/App/Modes/FPModes/StateFlushPermeate.c =================================================================== diff -u -r973f790125e70115662d979f5f5631bb9df081f0 -r7aa0c684cca238a9697867ff72e5c3f5f2edb379 --- firmware/App/Modes/FPModes/StateFlushPermeate.c (.../StateFlushPermeate.c) (revision 973f790125e70115662d979f5f5631bb9df081f0) +++ firmware/App/Modes/FPModes/StateFlushPermeate.c (.../StateFlushPermeate.c) (revision 7aa0c684cca238a9697867ff72e5c3f5f2edb379) @@ -145,11 +145,11 @@ static FP_PERM_FLUSH_STATE_T handlePermeateFlushProgressState( void ) { FP_PERM_FLUSH_STATE_T state = PERM_FLUSH_IN_PROGRESS; - LEVEL_STATE_T level = getLevelStatus( P25_LEVL ); + LVL_STATE_T level = getFloaterStatus( P25_LEVL ); // Manual control of Permeate tank while in Permeate Flush // to prevent overfill. - if ( LEVEL_STATE_HIGH == level ) + if ( LVL_STATE_HIGH == level ) { setValveState( M4_VALV, VALVE_STATE_CLOSED ); if ( TRUE == isBoostPumpInstalled() ) @@ -161,7 +161,7 @@ isTankFilled = TRUE; } } - else if ( LEVEL_STATE_LOW == level ) + else if ( LVL_STATE_LOW == level ) { setValveState( M4_VALV, VALVE_STATE_OPEN ); // set boost pump to closed loop when M4 closed. Added Tank fill check to avoid reset during initial transition Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -r6d4aa77e6b85aa7621a234660f631e725fb1d441 -r7aa0c684cca238a9697867ff72e5c3f5f2edb379 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 6d4aa77e6b85aa7621a234660f631e725fb1d441) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 7aa0c684cca238a9697867ff72e5c3f5f2edb379) @@ -583,19 +583,19 @@ { // Read floater switch BOOL result = FALSE; - LEVEL_STATE_T floaterLevel = getLevelStatus( D6_LEVL ); + LVL_STATE_T floaterLevel = getFloaterStatus( D6_LEVL ); BOOL balancingChambFillInProgress = getBalancingChamberFillinProgressStatus(); // High level is met - if ( LEVEL_STATE_HIGH == floaterLevel ) + if ( LVL_STATE_HIGH == floaterLevel ) { //turn off inlet water valve setValveState( D3_VALV, VALVE_STATE_CLOSED ); // Water level reached high. result = TRUE; } - else if ( LEVEL_STATE_LOW == floaterLevel || TRUE != balancingChambFillInProgress ) + else if ( LVL_STATE_LOW == floaterLevel || TRUE != balancingChambFillInProgress ) { // if level is not met,allow inlet water to hydraulics chamber setValveState( D3_VALV, VALVE_STATE_OPEN ); Index: firmware/App/Monitors/Level.c =================================================================== diff -u -rfd897db8177752330ad08d877e0a13620513dbdc -r7aa0c684cca238a9697867ff72e5c3f5f2edb379 --- firmware/App/Monitors/Level.c (.../Level.c) (revision fd897db8177752330ad08d877e0a13620513dbdc) +++ firmware/App/Monitors/Level.c (.../Level.c) (revision 7aa0c684cca238a9697867ff72e5c3f5f2edb379) @@ -29,6 +29,7 @@ // ********** private definitions ********** #define LEVEL_SENSOR_VALUE_LOW 0U ///< Level sensor digital low value (0 = low, non-zero = high). +#define LEVEL_SENSOR_LIQUID 0U ///< Level sensor digital low value (0 = liquid, 1 = no liquid). #define FPGA_B1_HW_LEVEL_LOW 5 ///< Floater low level status for Beta 1.0 #define FPGA_B1_HW_LEVEL_MEDIUM 4 ///< Floater medium level status for Beta 1.0 #define FPGA_B1_HW_LEVEL_HIGH 6 ///< Floater high level status for Beta 1.0 @@ -70,10 +71,10 @@ static void publishLevelsData( void ); static BOOL processLevelCount( U16 count ); -static LEVEL_STATE_T readFloaterLevelStatus( LEVEL_T levelId ); -static LEVEL_STATE_T getLevelState( U32 levelStatus ); -static LEVEL_STATE_T getLevelStateBeta19( U32 levelStatus ); -static LEVEL_STATE_T getLevelStateBeta10( U32 levelStatus ); +static LVL_STATE_T readFloaterLevelStatus( LEVEL_T levelId ); +static LVL_STATE_T getLevelState( U32 levelStatus ); +static LVL_STATE_T getLevelStateBeta19( U32 levelStatus ); +static LVL_STATE_T getLevelStateBeta10( U32 levelStatus ); /*********************************************************************//** * @brief @@ -120,13 +121,13 @@ *************************************************************************/ void execLevels( void ) { - U32 i; + LEVEL_T level; U32 currentLevelStatus = 0; - for ( i = 0; i < NUM_OF_LEVELS; i++ ) + for ( level = FIRST_LEVEL; level < NUM_OF_LEVELS; level++ ) { // Get the current level status - switch ( i ) + switch (level ) { // Process the status of the Level case D6_LEVL: @@ -136,33 +137,33 @@ case D63_LEVL: if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) { - currentLevelStatus = ( LEVEL_SENSOR_VALUE_LOW == getFPGAD63LevelSensor() ) ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW; + currentLevelStatus = ( LEVEL_SENSOR_LIQUID == getFPGAD63LevelSensor() ) ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW; } else { - currentLevelStatus = ( processLevelCount( getFPGAD63LevelSensor() ) == LEVEL_SENSOR_VALUE_LOW ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); + currentLevelStatus = ( processLevelCount( getFPGAD63LevelSensor() ) == LEVEL_SENSOR_LIQUID ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW ); } break; case D98_LEVL: if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) { - currentLevelStatus = ( LEVEL_SENSOR_VALUE_LOW == getFPGAD98LevelSensor() ) ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW; + currentLevelStatus = ( LEVEL_SENSOR_LIQUID == getFPGAD98LevelSensor() ) ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW; } else { - currentLevelStatus = ( processLevelCount( getFPGAD98LevelSensor() ) == LEVEL_SENSOR_VALUE_LOW ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); + currentLevelStatus = ( processLevelCount( getFPGAD98LevelSensor() ) == LEVEL_SENSOR_LIQUID ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW ); } break; case D46_LEVL: if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) { - currentLevelStatus = ( LEVEL_SENSOR_VALUE_LOW == getFPGAD46LevelSensor() ) ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH; + currentLevelStatus = ( LEVEL_SENSOR_LIQUID == getFPGAD46LevelSensor() ) ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW; } else { - currentLevelStatus = ( processLevelCount( getFPGAD46LevelSensor() ) == LEVEL_SENSOR_VALUE_LOW ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); + currentLevelStatus = ( processLevelCount( getFPGAD46LevelSensor() ) == LEVEL_SENSOR_LIQUID ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW ); } break; @@ -172,57 +173,57 @@ #ifndef _VECTORCAST_ default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_LEVEL_SELECTED, i ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_LEVEL_SELECTED, level ); break; #endif } // Check if the current level status is not the same as the recorded data - if ( currentLevelStatus != status[ i ].data ) + if ( currentLevelStatus != status[ level ].data ) { - // If the debounce time is 0, start the timer - if ( ( 0 == levelsStatus[ i ].debounceStartTime ) || ( currentLevelStatus != levelsStatus[i].priorRawLevel ) ) + // If the de-bounce time is 0, start the timer + if ( ( 0 == levelsStatus[ level ].debounceStartTime ) || ( currentLevelStatus != levelsStatus[ level ].priorRawLevel ) ) { - levelsStatus[ i ].debounceStartTime = getMSTimerCount(); + levelsStatus[ level ].debounceStartTime = getMSTimerCount(); } // If the debounce time has been elapsed, update the level sensor status to the new status - else if ( TRUE == didTimeout( levelsStatus[ i ].debounceStartTime, levelsStatus[ i ].debounceTime ) ) + else if ( TRUE == didTimeout( levelsStatus[ level ].debounceStartTime, levelsStatus[ level ].debounceTime ) ) { - switch ( i ) + switch ( level ) { case D6_LEVL: - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D6_LEVL_CHANGE, (U32)status[ i ].data, (U32)currentLevelStatus ); + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D6_LEVL_CHANGE, (U32)status[ level ].data, (U32)currentLevelStatus ); break; case D63_LEVL: - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D63_LEVL_CHANGE, (U32)status[ i ].data, (U32)currentLevelStatus ); + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D63_LEVL_CHANGE, (U32)status[ level ].data, (U32)currentLevelStatus ); break; case D98_LEVL: - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D98_LEVL_CHANGE, (U32)status[ i ].data, (U32)currentLevelStatus ); + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D98_LEVL_CHANGE, (U32)status[ level ].data, (U32)currentLevelStatus ); break; case D46_LEVL: - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D46_LEVL_CHANGE, (U32)status[ i ].data, (U32)currentLevelStatus ); + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D46_LEVL_CHANGE, (U32)status[ level ].data, (U32)currentLevelStatus ); break; #ifndef _VECTORCAST_ default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_LEVEL_SELECTED, i ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_LEVEL_SELECTED, level); break; #endif } - levelsStatus[ i ].debounceStartTime = 0; - status[ i ].data = currentLevelStatus; + levelsStatus[ level ].debounceStartTime = 0; + status[ level ].data = currentLevelStatus; } } else { - levelsStatus[ i ].debounceStartTime = 0; + levelsStatus[ level ].debounceStartTime = 0; } - levelsStatus[i].priorRawLevel = currentLevelStatus; + levelsStatus[level].priorRawLevel = currentLevelStatus; } publishLevelsData(); @@ -231,18 +232,18 @@ /*********************************************************************//** * @brief * The getLevelStatus function returns the status of the called level sensor. - * @details \b Inputs: levelStatus - * @details \b Outputs: levelStatus + * @details \b Inputs: status + * @details \b Outputs: status * @details \b Alarms: ALARM_ID_DD_SOFTWARE_FAULT when invalid level sensor * passed. * @param levelId which is the sensor that its status is requested - * @return level status + * @return LEVEL_STATE_T status *************************************************************************/ LEVEL_STATE_T getLevelStatus( LEVEL_T levelId ) { U32 stat = 0; - if ( levelId < NUM_OF_LEVELS ) + if ( levelId < LAST_LEVEL ) { // Assume there is no override stat = status[ levelId ].data; @@ -262,6 +263,39 @@ /*********************************************************************//** * @brief + * The getFloaterStatus function returns the status of the called floater sensor. + * @details \b Inputs: status + * @details \b Outputs: status + * @details \b Alarms: ALARM_ID_DD_SOFTWARE_FAULT when invalid level sensor + * passed. + * @param levelId which is the sensor that its status is requested + * @return LVL_STATE_T status + *************************************************************************/ +LVL_STATE_T getFloaterStatus( LEVEL_T levelId ) +{ + U32 stat = 0; + + if ( levelId >= FIRST_FLOAT && levelId < LAST_FLOAT ) + { + // Assume there is no override + stat = status[ levelId ].data; + + if ( OVERRIDE_KEY == status[ levelId ].override ) + { + stat = status[ levelId ].ovData; + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_DD_INVALID_LEVEL_ID, (U32)levelId ) + } + + return (LVL_STATE_T)stat; +} + + +/*********************************************************************//** + * @brief * The processLevelCount function checks the range of count reported by FPGA * and determine level based on the count. * @details \b Inputs: none @@ -291,30 +325,30 @@ * @param levelStatus Raw FPGA level status value * @return mapped level state *************************************************************************/ -static LEVEL_STATE_T getLevelStateBeta19( U32 levelStatus ) +static LVL_STATE_T getLevelStateBeta19( U32 levelStatus ) { - LEVEL_STATE_T currentLevelStatus = LEVEL_STATE_ILLEGAL; + LVL_STATE_T currentLevelStatus = LVL_STATE_ILLEGAL; if ( FPGA_LEVEL_EMPTY == levelStatus ) { - currentLevelStatus = LEVEL_STATE_EMPTY; + currentLevelStatus = LVL_STATE_EMPTY; } else if ( FPGA_LEVEL_LOW == levelStatus ) { - currentLevelStatus = LEVEL_STATE_LOW; + currentLevelStatus = LVL_STATE_LOW; } else if ( FPGA_LEVEL_MEDIUM == levelStatus ) { - currentLevelStatus = LEVEL_STATE_MEDIUM; + currentLevelStatus = LVL_STATE_MEDIUM; } else if ( FPGA_LEVEL_HIGH == levelStatus ) { - currentLevelStatus = LEVEL_STATE_HIGH; + currentLevelStatus = LVL_STATE_HIGH; } else { // TODO - Handle invalid level alarm - currentLevelStatus = LEVEL_STATE_ILLEGAL; + currentLevelStatus = LVL_STATE_ILLEGAL; } return currentLevelStatus; @@ -329,30 +363,30 @@ * @param levelStatus Raw FPGA level status value * @return mapped level state *************************************************************************/ -static LEVEL_STATE_T getLevelState( U32 levelStatus ) +static LVL_STATE_T getLevelState( U32 levelStatus ) { - LEVEL_STATE_T currentLevelStatus = LEVEL_STATE_ILLEGAL; + LVL_STATE_T currentLevelStatus = LVL_STATE_ILLEGAL; if ( FPGA_B2_LEVEL_EMPTY == levelStatus ) { - currentLevelStatus = LEVEL_STATE_EMPTY; + currentLevelStatus = LVL_STATE_EMPTY; } else if ( FPGA_B2_LEVEL_LOW == levelStatus ) { - currentLevelStatus = LEVEL_STATE_LOW; + currentLevelStatus = LVL_STATE_LOW; } else if ( FPGA_B2_LEVEL_MEDIUM == levelStatus ) { - currentLevelStatus = LEVEL_STATE_MEDIUM; + currentLevelStatus = LVL_STATE_MEDIUM; } else if ( FPGA_B2_LEVEL_HIGH == levelStatus ) { - currentLevelStatus = LEVEL_STATE_HIGH; + currentLevelStatus = LVL_STATE_HIGH; } else { // TODO - Handle invalid level alarm - currentLevelStatus = LEVEL_STATE_ILLEGAL; + currentLevelStatus = LVL_STATE_ILLEGAL; } return currentLevelStatus; @@ -367,26 +401,26 @@ * @param levelStatus Raw FPGA level status value * @return mapped level state *************************************************************************/ -static LEVEL_STATE_T getLevelStateBeta10( U32 levelStatus ) +static LVL_STATE_T getLevelStateBeta10( U32 levelStatus ) { - LEVEL_STATE_T currentLevelStatus = LEVEL_STATE_ILLEGAL; + LVL_STATE_T currentLevelStatus = LVL_STATE_ILLEGAL; if ( FPGA_B1_HW_LEVEL_LOW == levelStatus ) { - currentLevelStatus = LEVEL_STATE_LOW; + currentLevelStatus = LVL_STATE_LOW; } else if ( FPGA_B1_HW_LEVEL_MEDIUM == levelStatus ) { - currentLevelStatus = LEVEL_STATE_MEDIUM; + currentLevelStatus = LVL_STATE_MEDIUM; } else if ( FPGA_B1_HW_LEVEL_HIGH == levelStatus ) { - currentLevelStatus = LEVEL_STATE_HIGH; + currentLevelStatus = LVL_STATE_HIGH; } else { // TODO - Handle invalid level alarm - currentLevelStatus = LEVEL_STATE_ILLEGAL; + currentLevelStatus = LVL_STATE_ILLEGAL; } return currentLevelStatus; @@ -400,9 +434,9 @@ * @details \b Outputs: level * @return level status *************************************************************************/ -static LEVEL_STATE_T readFloaterLevelStatus( LEVEL_T levelId ) +static LVL_STATE_T readFloaterLevelStatus( LEVEL_T levelId ) { - LEVEL_STATE_T currentLevelStatus = LEVEL_STATE_HIGH; + LVL_STATE_T currentLevelStatus = LVL_STATE_HIGH; U32 levelStatus = 0; if ( D6_LEVL == levelId ) @@ -465,29 +499,29 @@ * @details \b Outputs: level * @return level status *************************************************************************/ -LEVEL_STATE_T getBicarbChamberLevelStatus( void ) +LVL_STATE_T getBicarbChamberLevelStatus( void ) { - LEVEL_STATE_T status = LEVEL_STATE_ILLEGAL; + LVL_STATE_T status = LVL_STATE_ILLEGAL; LEVEL_STATE_T upperlevel = getLevelStatus( D98_LEVL ); LEVEL_STATE_T lowerlevel = getLevelStatus( D63_LEVL ); if ( ( lowerlevel == LEVEL_STATE_LOW ) && ( upperlevel == LEVEL_STATE_LOW ) ) { - status = LEVEL_STATE_LOW; + status =LVL_STATE_LOW; } else if ( ( lowerlevel == LEVEL_STATE_HIGH ) && ( upperlevel == LEVEL_STATE_LOW ) ) { - status = LEVEL_STATE_MEDIUM; + status = LVL_STATE_MEDIUM; } else if ( ( lowerlevel == LEVEL_STATE_HIGH ) && ( upperlevel == LEVEL_STATE_HIGH ) ) { - status = LEVEL_STATE_HIGH; + status = LVL_STATE_HIGH; } else { // upperlevel == TRUE while lowerlevel == FALSE - illegal - status = LEVEL_STATE_ILLEGAL; + status = LVL_STATE_ILLEGAL; } return status; } @@ -508,11 +542,11 @@ { DD_LEVEL_DATA_T data; - data.d6Level = (U32)getLevelStatus( D6_LEVL ); + data.d6Level = (U32)getFloaterStatus( D6_LEVL ); + data.d46Level = (U32)getLevelStatus( D46_LEVL ); data.d63Level = (U32)getLevelStatus( D63_LEVL ); data.d98Level = (U32)getLevelStatus( D98_LEVL ); data.bicarbLevel = (U32)getBicarbChamberLevelStatus(); - data.d46Level = (U32)getLevelStatus( D46_LEVL ); levelsDataPublicationCounter = 0; @@ -524,7 +558,7 @@ { FP_LEVEL_DATA_T data; - data.p25Level = (U32)getLevelStatus( P25_LEVL ); + data.p25Level = (U32)getFloaterStatus( P25_LEVL ); fplevelsDataPublicationCounter = 0; broadcastData( MSG_ID_FP_LEVEL_DATA, COMM_BUFFER_OUT_CAN_FP_BROADCAST, (U08*)&data, sizeof( FP_LEVEL_DATA_T ) ); } @@ -565,7 +599,7 @@ *************************************************************************/ BOOL testLevelStatusOverride( MESSAGE_T *message ) { - BOOL result = u32ArrayOverride( message, &status[0], NUM_OF_LEVELS - 1, 0, NUM_OF_LEVELS_STATES -1 ); + BOOL result = u32ArrayOverride( message, &status[0], LAST_LEVEL, 0, NUM_OF_LEVEL_STATES -1 ); return result; } @@ -603,9 +637,9 @@ TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; OVERRIDE_TYPE_T ovType = getOverrideArrayPayloadFromMessage( message, &payload ); - if ( ( payload.index >= FIRST_FP_LEVL ) && ( payload.index <= LAST_FP_LEVL ) ) + if ( ( payload.index >= P25_LEVL ) && ( payload.index <= P25_LEVL ) ) { - BOOL result = u32Override( message, &status[0], 0, NUM_OF_LEVELS_STATES -1 ); + BOOL result = u32Override( message, &status[0], 0, NUM_OF_LVL_STATES -1 ); } return result; Index: firmware/App/Monitors/Level.h =================================================================== diff -u -r50144ec3e96785cf76d5bfd22ee65029c82e732b -r7aa0c684cca238a9697867ff72e5c3f5f2edb379 --- firmware/App/Monitors/Level.h (.../Level.h) (revision 50144ec3e96785cf76d5bfd22ee65029c82e732b) +++ firmware/App/Monitors/Level.h (.../Level.h) (revision 7aa0c684cca238a9697867ff72e5c3f5f2edb379) @@ -35,40 +35,45 @@ /// DD floater and level sensor enumeration typedef enum level_names { - D6_LEVL = 0, ///< floater switch low, medium and high status - FIRST_DD_LEVL = D6_LEVL, ///< First DD level + D46_LEVL = 0, ///< Spent dialysate air separation chamber level low or high status + FIRST_LEVEL = D46_LEVL, D63_LEVL, ///< Bicarb upper level low or high status D98_LEVL, ///< Bicarb lower level low or high status - D46_LEVL, ///< Spent dialysate air separation chamber level low or high status - LAST_DD_LEVL = D46_LEVL, ///< Last DD level + LAST_LEVEL = D98_LEVL, + D6_LEVL, ///< floater switch low, medium and high status + FIRST_FLOAT = D6_LEVL, P25_LEVL, ///< FP level sensor - FIRST_FP_LEVL = P25_LEVL, ///< FP first level sensor - LAST_FP_LEVL = P25_LEVL, ///< FP last level sensor + LAST_FLOAT = P25_LEVL, NUM_OF_LEVELS ///< Number of levels } LEVEL_T; -#define NUM_OF_DD_LEVL ( ( LAST_DD_LEVL - FIRST_DD_LEVL ) + 1 ) -#define NUM_OF_IOFP_LEVL ( ( LAST_FP_LEVL - FIRST_FP_LEVL ) + 1 ) - -/// floater and level sensor states. +/// level sensor states. typedef enum level_States { - LEVEL_STATE_EMPTY = 0, ///< Empty level LEVEL_STATE_LOW, ///< Low level - LEVEL_STATE_MEDIUM, ///< Medium level LEVEL_STATE_HIGH, ///< High level - LEVEL_STATE_ILLEGAL, ///< Illegal level - NUM_OF_LEVELS_STATES ///< Number of level states + NUM_OF_LEVEL_STATES ///< Number of level states } LEVEL_STATE_T; +/// floater and bicarb level sensor states. +typedef enum lvl_States +{ + LVL_STATE_EMPTY = 0, ///< Empty level + LVL_STATE_LOW, ///< Low level + LVL_STATE_MEDIUM, ///< Medium level + LVL_STATE_HIGH, ///< High level + LVL_STATE_ILLEGAL, ///< Illegal level + NUM_OF_LVL_STATES ///< Number of level states +} LVL_STATE_T; + /// DD floater and level sensor data publish structure typedef struct { U32 d6Level; ///< Floater level + U32 d46Level; ///< Spent dialysate level U32 d63Level; ///< Bicarb upper level U32 d98Level; ///< Bicarb lower level U32 bicarbLevel; ///< Bicarb chamber level combination ( D63 + D98 ) - U32 d46Level; ///< Spent dialysate level } DD_LEVEL_DATA_T; /// FP floater and level sensor data publish structure @@ -82,7 +87,8 @@ void initLevels( void ); void execLevels( void ); LEVEL_STATE_T getLevelStatus( LEVEL_T levelId ); -LEVEL_STATE_T getBicarbChamberLevelStatus( void ); +LVL_STATE_T getFloaterStatus( LEVEL_T levelId ); +LVL_STATE_T getBicarbChamberLevelStatus( void ); BOOL testLevelsDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testLevelStatusOverride( MESSAGE_T *message );