Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r8b5a8c816d953cfc1e2ee17a2f4b447e96e85d44 -rceb6a93ac8a92b2676397fe45235758109bee490 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 8b5a8c816d953cfc1e2ee17a2f4b447e96e85d44) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision ceb6a93ac8a92b2676397fe45235758109bee490) @@ -450,7 +450,7 @@ ( D65_VALV == valveID ) || ( D64_VALV == valveID ) || ( D31_VALV == valveID ) || ( D34_VALV == valveID ) || ( D35_VALV == valveID ) || ( D40_VALV == valveID ) || ( D47_VALV == valveID ) || ( D3_VALV == valveID ) || ( M4_VALV == valveID ) || ( D23_VALV == valveID ) || ( D19_VALV == valveID ) || ( D25_VALV == valveID ) || ( D21_VALV == valveID ) || ( D24_VALV == valveID ) || ( D20_VALV == valveID ) || - ( D26_VALV == valveID ) || ( D22_VALV == valveID ) || ( D80_VALV == valveID ) || ( D81_VALV == valveID ) || ( D79_PMP_VALV == valveID ) || + ( D26_VALV == valveID ) || ( D22_VALV == valveID ) || ( D80_VALV == valveID ) || ( D81_VALV == valveID ) || ( D88_79_VALV == valveID ) || ( P11_VALV == valveID ) || ( P33_VALV == valveID ) || ( P34_VALV == valveID ) || ( P37_VALV == valveID ) || ( P6_VALV == valveID ) || ( M12_VALV == valveID ) || ( P39_VALV == valveID ) || ( D83_VALV == valveID ) || ( D91_VALV == valveID ) || ( D100_VALV == valveID ) || ( D85_VALV == valveID ) ) { Index: firmware/App/Monitors/Level.c =================================================================== diff -u -rd0f2f31b8bb46e0615fb5b71ea0594b3f53af064 -rceb6a93ac8a92b2676397fe45235758109bee490 --- firmware/App/Monitors/Level.c (.../Level.c) (revision d0f2f31b8bb46e0615fb5b71ea0594b3f53af064) +++ firmware/App/Monitors/Level.c (.../Level.c) (revision ceb6a93ac8a92b2676397fe45235758109bee490) @@ -70,6 +70,9 @@ 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 ); /*********************************************************************//** * @brief @@ -130,15 +133,36 @@ break; case D63_LEVL: - currentLevelStatus = ( processLevelCount( getFPGAD63LevelSensor() ) == 0 ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) + { + currentLevelStatus = ( 0U == getFPGAD63LevelSensor() ) ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH; + } + else + { + currentLevelStatus = ( processLevelCount( getFPGAD63LevelSensor() ) == 0 ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); + } break; case D98_LEVL: - currentLevelStatus = ( processLevelCount( getFPGAD98LevelSensor() ) == 0 ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) + { + currentLevelStatus = ( 0U == getFPGAD98LevelSensor() ) ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH; + } + else + { + currentLevelStatus = ( processLevelCount( getFPGAD98LevelSensor() ) == 0 ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); + } break; case D46_LEVL: - currentLevelStatus = ( processLevelCount( getFPGAD46LevelSensor() ) == 0 ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) + { + currentLevelStatus = ( 0U == getFPGAD46LevelSensor() ) ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH; + } + else + { + currentLevelStatus = ( processLevelCount( getFPGAD46LevelSensor() ) == 0 ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); + } break; case P25_LEVL: @@ -259,6 +283,116 @@ /*********************************************************************//** * @brief + * The getLevelStateBeta19 function maps the raw floater/level status reported + * by FPGA to the corresponding LEVEL_STATE_T for Beta 1.9 hardware. + * @details \b Inputs: levelStatus + * @details \b Outputs: none + * @param levelStatus Raw FPGA level status value + * @return mapped level state + *************************************************************************/ +static LEVEL_STATE_T getLevelStateBeta19( U32 levelStatus ) +{ + LEVEL_STATE_T currentLevelStatus = LEVEL_STATE_ILLEGAL; + + if ( FPGA_LEVEL_EMPTY == levelStatus ) + { + currentLevelStatus = LEVEL_STATE_EMPTY; + } + else if ( FPGA_LEVEL_LOW == levelStatus ) + { + currentLevelStatus = LEVEL_STATE_LOW; + } + else if ( FPGA_LEVEL_MEDIUM == levelStatus ) + { + currentLevelStatus = LEVEL_STATE_MEDIUM; + } + else if ( FPGA_LEVEL_HIGH == levelStatus ) + { + currentLevelStatus = LEVEL_STATE_HIGH; + } + else + { + // TODO - Handle invalid level alarm + currentLevelStatus = LEVEL_STATE_ILLEGAL; + } + + return currentLevelStatus; +} + +/*********************************************************************//** + * @brief + * The getLevelState function maps the raw floater/level status reported + * by FPGA to the corresponding LEVEL_STATE_T for Beta 2.0 hardware. + * @details \b Inputs: levelStatus + * @details \b Outputs: none + * @param levelStatus Raw FPGA level status value + * @return mapped level state + *************************************************************************/ +static LEVEL_STATE_T getLevelState( U32 levelStatus ) +{ + LEVEL_STATE_T currentLevelStatus = LEVEL_STATE_ILLEGAL; + + if ( FPGA_B2_LEVEL_EMPTY == levelStatus ) + { + currentLevelStatus = LEVEL_STATE_EMPTY; + } + else if ( FPGA_B2_LEVEL_LOW == levelStatus ) + { + currentLevelStatus = LEVEL_STATE_LOW; + } + else if ( FPGA_B2_LEVEL_MEDIUM == levelStatus ) + { + currentLevelStatus = LEVEL_STATE_MEDIUM; + } + else if ( FPGA_B2_LEVEL_HIGH == levelStatus ) + { + currentLevelStatus = LEVEL_STATE_HIGH; + } + else + { + // TODO - Handle invalid level alarm + currentLevelStatus = LEVEL_STATE_ILLEGAL; + } + + return currentLevelStatus; +} + +/*********************************************************************//** + * @brief + * The getLevelStateBeta10 function maps the raw floater/level status reported + * by FPGA to the corresponding LEVEL_STATE_T for Beta 1.0 hardware. + * @details \b Inputs: levelStatus + * @details \b Outputs: none + * @param levelStatus Raw FPGA level status value + * @return mapped level state + *************************************************************************/ +static LEVEL_STATE_T getLevelStateBeta10( U32 levelStatus ) +{ + LEVEL_STATE_T currentLevelStatus = LEVEL_STATE_ILLEGAL; + + if ( FPGA_B1_HW_LEVEL_LOW == levelStatus ) + { + currentLevelStatus = LEVEL_STATE_LOW; + } + else if ( FPGA_B1_HW_LEVEL_MEDIUM == levelStatus ) + { + currentLevelStatus = LEVEL_STATE_MEDIUM; + } + else if ( FPGA_B1_HW_LEVEL_HIGH == levelStatus ) + { + currentLevelStatus = LEVEL_STATE_HIGH; + } + else + { + // TODO - Handle invalid level alarm + currentLevelStatus = LEVEL_STATE_ILLEGAL; + } + + return currentLevelStatus; +} + +/*********************************************************************//** + * @brief * The getFloaterLevelstatus function gets the floater level reported by FPGA * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT if the current state is invalid. * @details \b Inputs: FPGA level sensor data @@ -273,153 +407,44 @@ if ( D6_LEVL == levelId ) { levelStatus = getFPGAD6LevelStatus(); - if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) != TRUE && getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) != TRUE ) + + if ( ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) != TRUE ) && + ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) != TRUE ) ) { // Beta 1.9 behavior - if ( FPGA_LEVEL_EMPTY == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_EMPTY; - } - else if ( FPGA_LEVEL_LOW == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_LOW; - } - else if ( FPGA_LEVEL_MEDIUM == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_MEDIUM; - } - else if ( FPGA_LEVEL_HIGH == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_HIGH; - } - else - { - // TODO - Handle invalid level alarm - currentLevelStatus = LEVEL_STATE_ILLEGAL; - } + currentLevelStatus = getLevelStateBeta19( levelStatus ); } else if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) == TRUE ) { // Beta 2.0 behavior - if ( FPGA_B2_LEVEL_EMPTY == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_EMPTY; - } - else if ( FPGA_B2_LEVEL_LOW == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_LOW; - } - else if ( FPGA_B2_LEVEL_MEDIUM == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_MEDIUM; - } - else if ( FPGA_B2_LEVEL_HIGH == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_HIGH; - } - else - { - // TODO - Handle invalid level alarm - currentLevelStatus = LEVEL_STATE_ILLEGAL; - } + currentLevelStatus = getLevelState( levelStatus ); } else { // Beta 1.0 behavior - if ( FPGA_B1_HW_LEVEL_LOW == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_LOW; - } - else if ( FPGA_B1_HW_LEVEL_MEDIUM == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_MEDIUM; - } - else if ( FPGA_B1_HW_LEVEL_HIGH == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_HIGH; - } - else - { - // TODO - Handle invalid level alarm - currentLevelStatus = LEVEL_STATE_ILLEGAL; - } + currentLevelStatus = getLevelStateBeta10( levelStatus ); } } else if ( P25_LEVL == levelId ) { levelStatus = getFPGAP25FloaterState(); - if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) != TRUE && getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) != TRUE) + if ( ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) != TRUE ) && + ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) != TRUE ) ) { // Beta 1.9 behavior - if ( FPGA_LEVEL_EMPTY == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_EMPTY; - } - else if ( FPGA_LEVEL_LOW == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_LOW; - } - else if ( FPGA_LEVEL_MEDIUM == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_MEDIUM; - } - else if ( FPGA_LEVEL_HIGH == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_HIGH; - } - else - { - // TODO - Handle invalid level alarm - currentLevelStatus = LEVEL_STATE_ILLEGAL; - } + currentLevelStatus = getLevelStateBeta19( levelStatus ); } else if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) == TRUE ) { // Beta 2.0 behavior - if ( FPGA_B2_LEVEL_EMPTY == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_EMPTY; - } - else if ( FPGA_B2_LEVEL_LOW == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_LOW; - } - else if ( FPGA_B2_LEVEL_MEDIUM == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_MEDIUM; - } - else if ( FPGA_B2_LEVEL_HIGH == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_HIGH; - } - else - { - // TODO - Handle invalid level alarm - currentLevelStatus = LEVEL_STATE_ILLEGAL; - } + currentLevelStatus = getLevelState( levelStatus ); } else { // Beta 1.0 behavior - if ( FPGA_B1_HW_LEVEL_LOW == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_LOW; - } - else if ( FPGA_B1_HW_LEVEL_MEDIUM == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_MEDIUM; - } - else if ( FPGA_B1_HW_LEVEL_HIGH == levelStatus ) - { - currentLevelStatus = LEVEL_STATE_HIGH; - } - else - { - // TODO - Handle invalid level alarm - currentLevelStatus = LEVEL_STATE_ILLEGAL; - } + currentLevelStatus = getLevelStateBeta10( levelStatus ); } } Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -rd210786d6c7d75bb0b4d9e18efc40a01d85123fe -rceb6a93ac8a92b2676397fe45235758109bee490 --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision d210786d6c7d75bb0b4d9e18efc40a01d85123fe) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision ceb6a93ac8a92b2676397fe45235758109bee490) @@ -152,6 +152,7 @@ SW_FAULT_ID_DRY_BICART_FILL_INVALID_EXEC_STATE = 121, SW_FAULT_ID_BICARB_CHAMBER_FILL_INVALID_EXEC_STATE = 122, SW_FAULT_ID_DRY_BICART_DRAIN_INVALID_EXEC_STATE = 123, + SW_FAULT_ID_INVALID_RINSE_PUMP = 124, NUM_OF_SW_FAULT_IDS } DD_SW_FAULT_ID_T;