Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -rf5a0411ee5f51e49f3ec74ff459d5fb02a4859c9 -rc49ab370df876258ed3c805b33b2a2311a8ac0e3 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision f5a0411ee5f51e49f3ec74ff459d5fb02a4859c9) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision c49ab370df876258ed3c805b33b2a2311a8ac0e3) @@ -330,9 +330,9 @@ ( 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 ) || - ( D85_VALV == valveID ) || ( P11_VALV == valveID ) || ( P33_VALV == valveID ) || ( P34_VALV == valveID ) || ( P37_VALV == valveID ) || - ( P6_VALV == valveID ) || ( M12_VALV == valveID ) || ( P39_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 ) ) + { result = TRUE; } break; Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -r27e8758fa6199e72b914e1199786a4396ce74d06 -rc49ab370df876258ed3c805b33b2a2311a8ac0e3 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 27e8758fa6199e72b914e1199786a4396ce74d06) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision c49ab370df876258ed3c805b33b2a2311a8ac0e3) @@ -1029,12 +1029,6 @@ data.genDialysateExecState = (U32)getCurrentGenDialysateState(); data.isDialDelInProgress = (BOOL)getDialDeliveryProgressStatus(); - data.d6Level = (U32)getLevelStatus( D6_LEVL ); - data.d63Level = (U32)getLevelStatus( D63_LEVL ); - data.d46Level = (U32)getLevelStatus( D46_LEVL ); - data.d9Pressure = getFilteredPressure( D9_PRES ); - data.d18Pressure = getFilteredPressure( D18_PRES ); - data.d51Pressure = getFilteredPressure( D51_PRES ); data.isDialysateGoodtoDeliver = (BOOL)getDialGoodToDeliverStatus(); data.currentQd = dialysateToDialyzerFlowRate; Index: firmware/App/Monitors/Level.c =================================================================== diff -u -r27e8758fa6199e72b914e1199786a4396ce74d06 -rc49ab370df876258ed3c805b33b2a2311a8ac0e3 --- firmware/App/Monitors/Level.c (.../Level.c) (revision 27e8758fa6199e72b914e1199786a4396ce74d06) +++ firmware/App/Monitors/Level.c (.../Level.c) (revision c49ab370df876258ed3c805b33b2a2311a8ac0e3) @@ -28,9 +28,10 @@ */ // ********** private definitions ********** -#define FPGA_LEVEL_LOW 5 ///< Floater low level status -#define FPGA_LEVEL_MEDIUM 4 ///< Floater medium level status -#define FPGA_LEVEL_HIGH 6 ///< Floater high level status +#define FPGA_LEVEL_EMPTY 3 ///< Floater empty level status +#define FPGA_LEVEL_LOW 2 ///< Floater low level status +#define FPGA_LEVEL_MEDIUM 0 ///< Floater medium level status +#define FPGA_LEVEL_HIGH 4 ///< Floater high level status #define LEVEL_COUNT_LOW 0xFFFF ///< Level sensor count when fluid level is low or non submerged #define LEVEL_COUNT_HIGH_START 0x0000 ///< Start range of level sensor count when fluid level is high or submerged #define LEVEL_COUNT_HIGH_END 0x1FFF ///< End range of level sensor count when fluid level is high or submerged @@ -125,6 +126,10 @@ currentLevelStatus = ( processLevelCount( getFPGAD63LevelSensor() ) == 0 ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); break; + case D98_LEVL: + currentLevelStatus = ( processLevelCount( getFPGAD98LevelSensor() ) == 0 ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); + break; + case D46_LEVL: currentLevelStatus = ( processLevelCount( getFPGAD46LevelSensor() ) == 0 ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); break; @@ -161,6 +166,10 @@ SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D63_LEVL_CHANGE, (U32)status[ i ].data, (U32)currentLevelStatus ); break; + case D98_LEVL: + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D98_LEVL_CHANGE, (U32)status[ i ].data, (U32)currentLevelStatus ); + break; + case D46_LEVL: SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D46_LEVL_CHANGE, (U32)status[ i ].data, (U32)currentLevelStatus ); break; @@ -255,58 +264,151 @@ if ( D6_LEVL == levelId ) { - levelStatus = getFPGAD6LevelStatus(); + levelStatus = getFPGAD6LevelStatus(); - 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 ; - } + if ( getTestConfigStatus( TEST_CONFIG_ENABLE_BETA_1_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; + } + } + else + { + // Beta 1.0 behavior + 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; + } + } } else if ( P25_LEVL == levelId ) { - levelStatus = getFPGAP25FloaterState(); + levelStatus = getFPGAP25FloaterState(); - 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 ; - } + if ( getTestConfigStatus( TEST_CONFIG_ENABLE_BETA_1_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; + } + } + else + { + // Beta 1.0 behavior + 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; + } + } } + else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_DD_INVALID_LEVEL_ID, (U32)levelId ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_DD_INVALID_LEVEL_ID, (U32)levelId ); } return currentLevelStatus; } /*********************************************************************//** * @brief + * The getBicarbChamberLevelStatus function returns the status of Bicarb chamber + * F level from the upper level and lower level sensors. + * @details \b Inputs: FPGA level sensor data + * @details \b Outputs: level + * @return level status + *************************************************************************/ +LEVEL_STATE_T getBicarbChamberLevelStatus( void ) +{ + LEVEL_STATE_T status = LEVEL_STATE_ILLEGAL; + LEVEL_STATE_T upperlevel = getLevelStatus( D63_LEVL ); + LEVEL_STATE_T lowerlevel = getLevelStatus( D98_LEVL ); + + if ( ( lowerlevel == LEVEL_STATE_LOW ) && ( upperlevel == LEVEL_STATE_LOW ) ) + { + status = LEVEL_STATE_LOW; + } + else if ( ( lowerlevel == LEVEL_STATE_HIGH ) && ( upperlevel == LEVEL_STATE_LOW ) ) + { + status = LEVEL_STATE_MEDIUM; + } + else if ( ( lowerlevel == LEVEL_STATE_HIGH ) && ( upperlevel == LEVEL_STATE_HIGH ) ) + { + status = LEVEL_STATE_HIGH; + } + else + { + // upperlevel == TRUE while lowerlevel == FALSE - illegal + status = LEVEL_STATE_ILLEGAL; + } + return status; +} + +/*********************************************************************//** + * @brief * The publishLevelsData function broadcasts the level data at the * publication interval. * @details \b Inputs: levelsDataPublicationCounter @@ -321,9 +423,11 @@ { DD_LEVEL_DATA_T data; - data.d6Level = (U32)getLevelStatus( D6_LEVL ); - data.d63Level = (U32)getLevelStatus( D63_LEVL ); - data.d46Level = (U32)getLevelStatus( D46_LEVL ); + data.d6Level = (U32)getLevelStatus( D6_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; Index: firmware/App/Services/Messaging.c =================================================================== diff -u -rb4040c87876465ffac138d9259ba8a40ea840aa9 -rc49ab370df876258ed3c805b33b2a2311a8ac0e3 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision b4040c87876465ffac138d9259ba8a40ea840aa9) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision c49ab370df876258ed3c805b33b2a2311a8ac0e3) @@ -247,6 +247,9 @@ { MSG_ID_DD_BICARB_CHAMBER_FILL_REQUEST_OVERRIDE_REQUEST, &testBiCarbChamberFillRequestOverride }, { MSG_ID_FP_RO_REJECTION_RATIO_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testRORejectionRatioDataPublishIntervalOverride }, { MSG_ID_FP_RO_FILTERED_REJECTION_RATIO_OVERRIDE_REQUEST, &testRORejectionRatioFilteredOverride }, + { MSG_ID_FP_SET_TEST_CONFIGURATION, &testSetTestConfiguration }, + { MSG_ID_FP_GET_TEST_CONFIGURATION, &testGetTestConfiguration }, + { MSG_ID_FP_RESET_ALL_TEST_CONFIGURATIONS, &testResetAllTestConfigurations }, }; /// Calculation for number of entries in the incoming message function handler look-up table.