Index: firmware/App/DDCommon.h =================================================================== diff -u -r9102c5da21a15bdaf4bb3bc38795ceb064e3c443 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/DDCommon.h (.../DDCommon.h) (revision 9102c5da21a15bdaf4bb3bc38795ceb064e3c443) +++ firmware/App/DDCommon.h (.../DDCommon.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -27,6 +27,9 @@ #define DD_VERSION_MICRO 0 #define DD_VERSION_BUILD 0 +//Uncomment the below line for new dosing pump testing +#define __PUMPTEST__ 1 + // ********** development build switches ********** #ifndef _RELEASE_ Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -rbc30c54270ec51f947b129da3c7daad54ec4eb5f -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision bc30c54270ec51f947b129da3c7daad54ec4eb5f) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -401,7 +401,7 @@ // Allow water inlet to hydraulics chamber if ( TRUE == hydChamberWaterInletControl() ) { - // if water level, temp is range, move to pressure check state + // if water level is met, move to pressure check state setModeGenDStateTransition( DD_GEND_HYD_CHAMBER_PRESSURE_CHECK_STATE ); state = DD_GEND_HYD_CHAMBER_PRESSURE_CHECK_STATE; } @@ -451,10 +451,10 @@ static DD_GEND_MODE_STATE_T handleGenDFreshDialysatePressureCheckState( void ) { DD_GEND_MODE_STATE_T state = DD_GEND_FRESH_DIALYSATE_PRESSURE_CHECK_STATE; - F32 hydPressure = getFilteredPressure( PRESSURE_SENSOR_FRESH_DIALYSATE ); + F32 hydPressure = getFilteredPressure( D18_PRES ); - // Hydraulics chamber postive pressure is in range ( 23 to 25 psi ) - if ( ( hydPressure >= HYD_CHAMBER_TARGET_POS_PRESS_MIN_PSI ) && ( hydPressure <= HYD_CHAMBER_TARGET_POS_PRESS_MAX_PSI ) ) + // Hydraulics chamber postive pressure is in range + if ( ( hydPressure >= FRESH_DIAL_PRESSURE_MIN_PSIG ) && ( hydPressure <= FRESH_DIAL_PRESSURE_MAX_PSIG ) ) { // Proceed to next state setModeGenDStateTransition( DD_GEND_SPENT_DIALYSATE_PRESSURE_CHECK_STATE ); @@ -482,10 +482,10 @@ static DD_GEND_MODE_STATE_T handleGenDSpentDialysatePressureCheckState( void ) { DD_GEND_MODE_STATE_T state = DD_GEND_SPENT_DIALYSATE_PRESSURE_CHECK_STATE; - F32 spentdialPressure = getFilteredPressure( PRESSURE_SENSOR_SPENT_DIALYSATE ); + F32 spentdialPressure = getFilteredPressure( D51_PRES ); - // Spent dialysate pressure is in range ( 29 to 30 psi ) - if ( ( spentdialPressure >= SPENT_DIAL_TARGET_POS_PRESS_MIN_PSI ) && ( spentdialPressure <= SPENT_DIAL_TARGET_POS_PRESS_MAX_PSI ) ) + // Spent dialysate pressure is in range + if ( ( spentdialPressure >= SPENT_DIAL_PRESSURE_MIN_PSIG ) && ( spentdialPressure <= SPENT_DIAL_PRESSURE_MAX_PSIG ) ) { // Proceed to next state transitionToBalChamberFill(); @@ -648,6 +648,26 @@ /*********************************************************************//** * @brief + * The getGenDilaysateTargetTemperature function gets the target dialysate + * temperature. + * @details \b Inputs: getGenDilaysateTargetTemperature + * @details \b Outputs: none + * @return the target dialysate temperature for the treatment. + *************************************************************************/ +static F32 getGenDilaysateTargetTemperature( void ) +{ + F32 result = targetHydChamberFluidTemp.data; + + if ( OVERRIDE_KEY == targetHydChamberFluidTemp.override ) + { + result = targetHydChamberFluidTemp.ovData; + } + + return result; +} + +/*********************************************************************//** + * @brief * The publishGenDialysateModeData function broadcasts the generate dialysate * mode data at defined interval. * @details \b Inputs: genDialysateDataPublicationTimerCounter @@ -664,13 +684,12 @@ data.genDialysateExecState = (U32)getCurrentGenDialysateState(); data.isDialDelInProgress = (BOOL)getDialDeliveryProgressStatus(); - data.floaterLevel1 = (U32)getLevelStatus( FLOATER_1 ); - data.floaterLevel2 = (U32)getLevelStatus( FLOATER_2 ); - data.BiCarbLevel = (U32)getLevelStatus( BICARB_LEVEL ); - data.SpentChamberLevel = (U32)getLevelStatus( SPENT_DIALYSATE_LEVEL ); - data.hydNegativePressure = getFilteredPressure( PRESSURE_SENSOR_HYDRAULICS_OUTLET ); - data.hydPositivePressure = getFilteredPressure( PRESSURE_SENSOR_FRESH_DIALYSATE ); - data.spentDialysatePressure = getFilteredPressure( PRESSURE_SENSOR_SPENT_DIALYSATE ); + 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(); broadcastData( MSG_ID_DD_GEN_DIALYSATE_MODE_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( GEN_DIALYSATE_MODE_DATA_T ) ); Index: firmware/App/Modes/ModeGenDialysate.h =================================================================== diff -u -rbce6e6d1cfb6e8a0b186419416460ead3a44e5e1 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Modes/ModeGenDialysate.h (.../ModeGenDialysate.h) (revision bce6e6d1cfb6e8a0b186419416460ead3a44e5e1) +++ firmware/App/Modes/ModeGenDialysate.h (.../ModeGenDialysate.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -36,13 +36,12 @@ { U32 genDialysateExecState; ///< Generate dialysate execution state BOOL isDialDelInProgress; ///< Whether Dialysate Delivery in progress or not - U32 floaterLevel1; ///< Floater level 1 (low or medium) - U32 floaterLevel2; ///< Floater level 2 (medium or high) - U32 BiCarbLevel; ///< BiCarb Chamber level - U32 SpentChamberLevel; ///< Spent dialysate chamber level - F32 hydNegativePressure; ///< Hydraulics chamber negative pressure - F32 hydPositivePressure; ///< Hydraulics chamber positive pressure - F32 spentDialysatePressure; ///< Spent Dialysate positive pressure + U32 d6Level; ///< Floater level (low, medium and high) + U32 d63Level; ///< BiCarb Chamber level + U32 d46Level; ///< Spent dialysate chamber level + F32 d9Pressure; ///< Hydraulics chamber negative pressure + F32 d18Pressure; ///< Hydraulics chamber positive pressure + F32 d51Pressure; ///< Spent Dialysate positive pressure BOOL isDialysateGoodtoDeliver; ///< Ready to deliver dialysate or not } GEN_DIALYSATE_MODE_DATA_T; Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -r48ca7fd644c67920acc29a80b7af379d0a134d1a -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 48ca7fd644c67920acc29a80b7af379d0a134d1a) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -106,7 +106,9 @@ *************************************************************************/ U32 execInitAndPOSTMode( void ) { - SELF_TEST_STATUS_T testStatus = SELF_TEST_STATUS_IN_PROGRESS; +//TODO : uncomment following when init mode updated with required tests +// SELF_TEST_STATUS_T testStatus = SELF_TEST_STATUS_IN_PROGRESS; + SELF_TEST_STATUS_T testStatus = SELF_TEST_STATUS_PASSED; // execute current POST state switch ( postState ) @@ -148,6 +150,11 @@ postState = handlePOSTStatus( testStatus ); break; + case DD_POST_STATE_DIALYSATE_PUMPS: + //testStatus = execDialysatePumpsSelfTest(); + postState = handlePOSTStatus( testStatus ); + break; + case DD_POST_STATE_CONCENTRATE_PUMPS: //testStatus = execConcenratePumpsSelfTest(); postState = handlePOSTStatus( testStatus ); Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -15,6 +15,7 @@ * ***************************************************************************/ +#include "BalancingChamber.h" #include "ConcentratePumps.h" #include "ConductivitySensors.h" #include "Heaters.h" @@ -43,6 +44,7 @@ static DD_STANDBY_MODE_STATE_T standbyState; ///< Currently active standby state. static OVERRIDE_U32_T pendingStartDDRequest; ///< Flag indicating TD has requested DD start the dialysis delivery(Overridable). +static BOOL pendingBalanceChamberSwOnlyRequest; ///< Flag indicating balancing chamber switch only request. //static BOOL pendingStartDDFlushRequest; ///< Flag indicating TD has requested DD start flush. //static BOOL pendingStartDDHeatDisinfectRequest; ///< Flag indicating TD has requested DD start heat disinfect. //static BOOL pendingStartDDHeatDisinfectActiveCoolRequest; ///< Flag indicating TD has requested DD start heat disinfect active cool. @@ -67,6 +69,7 @@ pendingStartDDRequest.ovData = FALSE; pendingStartDDRequest.ovInitData = FALSE; pendingStartDDRequest.override = OVERRIDE_RESET; + pendingBalanceChamberSwOnlyRequest = FALSE; // pendingStartDDFlushRequest = FALSE; // pendingStartDDHeatDisinfectRequest = FALSE; // pendingStartDDHeatDisinfectActiveCoolRequest = FALSE; @@ -92,8 +95,8 @@ // // Upon transition to mode standby set CD1 and CD2 calibration records to be picked to the normal // // table. If the chemical disinfect fails, the mode transitions back to mode standby. -// setCondcutivitySensorCalTable( CONDUCTIVITYSENSORS_CD1_SENSOR, CAL_DATA_CD1_COND_SENSOR ); -// setCondcutivitySensorCalTable( CONDUCTIVITYSENSORS_CD2_SENSOR, CAL_DATA_CD2_COND_SENSOR ); +// setCondcutivitySensorCalTable( D17_COND, CAL_DATA_CD1_COND_SENSOR ); +// setCondcutivitySensorCalTable( D27_COND, CAL_DATA_CD2_COND_SENSOR ); // // // Send DD usage data to TD @@ -153,8 +156,9 @@ { BOOL status = FALSE; + //TODO: testing - Comment water pressure check // Check Inlet Water Pressure - both Water inlet pressure Input, pressure Output after pressure regulator. - checkInletWaterPressure(); + // checkInletWaterPressure(); // Check any active alarms status |= isAlarmActive( ALARM_ID_DD_INLET_WATER_PRESSURE_OUT_LOW_RANGE ); @@ -183,17 +187,26 @@ { DD_STANDBY_MODE_STATE_T state = DD_STANDBY_MODE_STATE_IDLE; + //TODO : Testing - commenting solo mode for now + // go to standby solo mode if TD is turned off or stops communicating. - if ( FALSE == isTDCommunicating() ) - { // TODO if TD comm loss, do we need solo standby? - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_TD_COMMUNICATION_LOSS, 0, 0 ) - //requestNewOperationMode( DD_MODE_SOLO ); - } - else if ( TRUE == getU32OverrideValue( &pendingStartDDRequest ) ) +// if ( FALSE == isTDCommunicating() ) +// { // TODO if TD comm loss, do we need solo standby? +// SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_TD_COMMUNICATION_LOSS, 0, 0 ) +// //requestNewOperationMode( DD_MODE_SOLO ); +// } +// else if ( TRUE == getU32OverrideValue( &pendingStartDDRequest ) ) + + if ( TRUE == getU32OverrideValue( &pendingStartDDRequest ) ) { pendingStartDDRequest.data = FALSE; requestNewOperationMode( DD_MODE_GEND ); } + //Test request to handle only balancing chamber switching + else if ( TRUE == pendingBalanceChamberSwOnlyRequest ) + { + execBalancingChamberControl(); + } // else if ( TRUE == pendingStartDDFlushRequest ) // { // pendingStartDDFlushRequest = FALSE; @@ -260,6 +273,42 @@ /*********************************************************************//** * @brief + * The requestBCSwitchingOnlyStart function handles Balancing chamber switching + * only start request. + * @details \b Inputs: standbyState + * @details \b Outputs: pendingBalanceChamberSwOnlyRequest + * @return TRUE if request accepted, FALSE if not. + *************************************************************************/ +BOOL requestBCSwitchingOnlyStart( void ) +{ + BOOL result = FALSE; + + if ( DD_STANDBY_MODE_STATE_IDLE == standbyState ) + { + result = TRUE; + pendingBalanceChamberSwOnlyRequest = TRUE; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The requestBCSwitchingOnlyStop function handles Balancing chamber switching + * only stop request. + * @details \b Inputs: standbyState + * @details \b Outputs: pendingBalanceChamberSwOnlyRequest + * @return none. + *************************************************************************/ +void requestBCSwitchingOnlyStop( void ) +{ + pendingBalanceChamberSwOnlyRequest = FALSE; + // Close all balancing chamber valves + valveControlForBCClosedState(); +} + +/*********************************************************************//** + * @brief * The startDDFlush function starts DD flush mode. * @details \b Inputs: standbyState * @details \b Outputs: none Index: firmware/App/Modes/ModeStandby.h =================================================================== diff -u -r6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision 6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b) +++ firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -46,6 +46,8 @@ BOOL areInletWaterConditionsAlarmsActive( void ); // checks water inlet pressure, temperature and conductivity alarms. BOOL requestDDStart( void ); // TD requests DD start (go to generation dialysate mode) +BOOL requestBCSwitchingOnlyStart( void ); // request to start performing balancing chamber switching only without dosing/pressure validation +void requestBCSwitchingOnlyStop( void ); // request to stop balancing chamber switching only without dosing/pressure validation BOOL startDDFlush( void ); // TD start flush mode BOOL startDDHeatDisinfect( void ); // TD start heat disinfect mode Index: firmware/App/Monitors/Conductivity.c =================================================================== diff -u -re7fe0454b5b2d39009dc784dc8c156856df8bc86 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision e7fe0454b5b2d39009dc784dc8c156856df8bc86) +++ firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -99,14 +99,10 @@ { CONDUCTIVITY_DATA_T data; - data.cd1 = getConductivityValue( CONDUCTIVITYSENSORS_CD1_SENSOR ); - data.cd2 = getConductivityValue( CONDUCTIVITYSENSORS_CD2_SENSOR ); - data.cd3 = getConductivityValue( CONDUCTIVITYSENSORS_CD3_SENSOR ); - data.cd4 = getConductivityValue( CONDUCTIVITYSENSORS_CD4_SENSOR ); - data.td1 = getConductivityTemperatureValue( CONDUCTIVITYSENSORS_CD1_SENSOR ); - data.td2 = getConductivityTemperatureValue( CONDUCTIVITYSENSORS_CD2_SENSOR ); - data.td3 = getConductivityTemperatureValue( CONDUCTIVITYSENSORS_CD3_SENSOR ); - data.td4 = getConductivityTemperatureValue( CONDUCTIVITYSENSORS_CD4_SENSOR ); + data.d17Cond = getConductivityValue( D17_COND ); + data.d27Cond = getConductivityValue( D27_COND ); + data.d29Cond = getConductivityValue( D29_COND ); + data.d43Cond = getConductivityValue( D43_COND ); conductivityPublishTimerCounter = 0; broadcastData( MSG_ID_DD_CONDUCTIVITY_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( CONDUCTIVITY_DATA_T ) ); Index: firmware/App/Monitors/Conductivity.h =================================================================== diff -u -re228885d4b066320c69bbec2553b5e7fc62ec2cb -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Monitors/Conductivity.h (.../Conductivity.h) (revision e228885d4b066320c69bbec2553b5e7fc62ec2cb) +++ firmware/App/Monitors/Conductivity.h (.../Conductivity.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -36,14 +36,10 @@ /// Conductivity data struct. typedef struct { - F32 cd1; ///< CD1 conductivity sensor value - F32 cd2; ///< CD2 conductivity sensor value - F32 cd3; ///< CD3 conductivity sensor value - F32 cd4; ///< CD4 conductivity sensor value - F32 td1; ///< TD1 temperature value - F32 td2; ///< TD2 temperature value - F32 td3; ///< TD3 temperature value - F32 td4; ///< TD4 temperature value + F32 d17Cond; ///< CD1 conductivity sensor value + F32 d27Cond; ///< CD2 conductivity sensor value + F32 d29Cond; ///< CD3 conductivity sensor value + F32 d43Cond; ///< CD4 conductivity sensor value } CONDUCTIVITY_DATA_T; // ********** public function prototypes ********** Index: firmware/App/Monitors/Level.c =================================================================== diff -u -rbce6e6d1cfb6e8a0b186419416460ead3a44e5e1 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Monitors/Level.c (.../Level.c) (revision bce6e6d1cfb6e8a0b186419416460ead3a44e5e1) +++ firmware/App/Monitors/Level.c (.../Level.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -28,15 +28,22 @@ */ // ********** private definitions ********** - +#define FPGA_LEVEL_LOW 2 ///< Floater low level status +#define FPGA_LEVEL_MEDIUM 3 ///< Floater medium level status +#define FPGA_LEVEL_HIGH 1 ///< 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 0x2000 ///< Start range of level sensor count when fluid level is high or submerged +#define LEVEL_COUNT_HIGH_END 0x2FFF ///< End range of level sensor count when fluid level is high or submerged +#define LOW_LEVEL_COUNT_TOLERANCE ( ( LEVEL_COUNT_LOW / 100 ) * 1 ) ///< Level sensor count 1% tolerance for low level +#define HIGH_LEVEL_COUNT_TOLERANCE ( ( LEVEL_COUNT_HIGH / 100 ) * 1 ) ///< Level sensor count 1% tolerance for high level #define LEVEL_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval (ms/task time) at which the level data is published on the CAN bus. #define LEVEL_DEBOUNCE_TIME_MS ( MS_PER_SECOND / 10 ) ///< Level debounce time in milliseconds. #define DATA_PUBLISH_COUNTER_START_COUNT 7 ///< Data publish counter start count. /// Level status structure typedef struct { - OVERRIDE_U32_T status; ///< Level status. + U32 priorRawLevel; ///< Prior level state (not debounced). U32 debounceStartTime; ///< Debounce start time. U32 debounceTime; ///< Debounce time } LEVEL_STATUS_T; @@ -47,10 +54,12 @@ static OVERRIDE_U32_T levelsDataPublishInterval = { LEVEL_DATA_PUB_INTERVAL, LEVEL_DATA_PUB_INTERVAL, 0, 0 }; ///< Interval (in ms) at which to publish Level data to CAN bus. static LEVEL_STATUS_T levelsStatus[ NUM_OF_LEVELS ]; ///< Level status array. +static OVERRIDE_U32_T status[ NUM_OF_LEVELS ]; ///< Level status. // ********** private function prototypes ********** static void publishLevelsData( void ); +static BOOL processLevelCount( U16 count ); /*********************************************************************//** * @brief @@ -68,12 +77,13 @@ // Initialize all the Level for ( i = 0; i < NUM_OF_LEVELS; i++ ) { - levelsStatus[ i ].status.data = (U32)STATE_HIGH; - levelsStatus[ i ].status.ovData = (U32)STATE_HIGH; - levelsStatus[ i ].status.ovInitData = (U32)STATE_HIGH; - levelsStatus[ i ].status.override = OVERRIDE_RESET; + status[ i ].data = (U32)LEVEL_STATE_HIGH; + status[ i ].ovData = (U32)LEVEL_STATE_HIGH; + status[ i ].ovInitData = (U32)LEVEL_STATE_HIGH; + status[ i ].override = OVERRIDE_RESET; levelsStatus[ i ].debounceStartTime = 0; levelsStatus[ i ].debounceTime = LEVEL_DEBOUNCE_TIME_MS; + levelsStatus[ i ].priorRawLevel = (U32)LEVEL_STATE_HIGH; } } @@ -97,24 +107,36 @@ switch ( i ) { // Process the status of the Level - case FLOATER_1: - //currentLevelStatus = ( getFPGAFloater1Status() != 0 ? STATE_LOW : STATE_MEDIUM ); - currentLevelStatus = ( getFPGAFloater1Status() != TRUE ? STATE_LOW : STATE_HIGH ); + case D6_LEVL: + if ( FPGA_LEVEL_LOW == getFPGAD6LevelStatus() ) + { + //currentLevelStatus = LEVEL_STATE_LOW ; + currentLevelStatus = LEVEL_STATE_HIGH ; + } + else if ( FPGA_LEVEL_MEDIUM == getFPGAD6LevelStatus() ) + { + currentLevelStatus = LEVEL_STATE_MEDIUM ; + } + else if ( FPGA_LEVEL_HIGH == getFPGAD6LevelStatus() ) + { + //currentLevelStatus = LEVEL_STATE_HIGH ; + currentLevelStatus = LEVEL_STATE_LOW ; + } + else + { + // Handle invalid level - alarm + currentLevelStatus = LEVEL_STATE_ILLEGAL ; + } break; - case FLOATER_2: - // TODO: Commenting for alpha protoype - //currentLevelStatus = ( getFPGAFloater2Status() != 0 ? STATE_MEDIUM : STATE_HIGH ); + case D63_LEVL: + currentLevelStatus = ( processLevelCount( getFPGAD63LevelSensor() ) == 0 ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); break; - case BICARB_LEVEL: - currentLevelStatus = ( getFPGALevelSensor1() != 0 ? STATE_LOW : STATE_HIGH ); + case D46_LEVL: + currentLevelStatus = ( processLevelCount( getFPGAD46LevelSensor() ) == 0 ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); break; - case SPENT_DIALYSATE_LEVEL: - currentLevelStatus = ( getFPGALevelSensor2() != 0 ? STATE_LOW : STATE_HIGH ); - break; - #ifndef _VECTORCAST_ default: SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_LEVEL_SELECTED, i ); @@ -123,10 +145,10 @@ } // Check if the current level status is not the same as the recorded data - if ( currentLevelStatus != levelsStatus[ i ].status.data ) + if ( currentLevelStatus != status[ i ].data ) { // If the debounce time is 0, start the timer - if ( 0 == levelsStatus[ i ].debounceStartTime ) + if ( ( 0 == levelsStatus[ i ].debounceStartTime ) || ( currentLevelStatus != levelsStatus[i].priorRawLevel ) ) { levelsStatus[ i ].debounceStartTime = getMSTimerCount(); } @@ -135,22 +157,18 @@ { switch ( i ) { - case FLOATER_1: - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_FLOATER_1_LEVEL_CHANGE, (U32)levelsStatus[ i ].status.data, (U32)currentLevelStatus ); + case D6_LEVL: + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D6_LEVL_CHANGE, (U32)status[ i ].data, (U32)currentLevelStatus ); break; - case FLOATER_2: - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_FLOATER_2_LEVEL_CHANGE, (U32)levelsStatus[ i ].status.data, (U32)currentLevelStatus ); + case D63_LEVL: + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D63_LEVL_CHANGE, (U32)status[ i ].data, (U32)currentLevelStatus ); break; - case BICARB_LEVEL: - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_BICARB_LEVEL_CHANGE, (U32)levelsStatus[ i ].status.data, (U32)currentLevelStatus ); + case D46_LEVL: + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D46_LEVL_CHANGE, (U32)status[ i ].data, (U32)currentLevelStatus ); break; - case SPENT_DIALYSATE_LEVEL: - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_SPENT_DIALYSATE_LEVEL_CHANGE, (U32)levelsStatus[ i ].status.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 ); @@ -159,13 +177,15 @@ } levelsStatus[ i ].debounceStartTime = 0; - levelsStatus[ i ].status.data = currentLevelStatus; + status[ i ].data = currentLevelStatus; } } else { levelsStatus[ i ].debounceStartTime = 0; } + + levelsStatus[i].priorRawLevel = currentLevelStatus; } publishLevelsData(); @@ -183,28 +203,55 @@ *************************************************************************/ LEVEL_STATE_T getLevelStatus( LELVEL_T levelId ) { - U32 status = 0; + U32 stat = 0; if ( levelId < NUM_OF_LEVELS ) { // Assume there is no override - status = levelsStatus[ levelId ].status.data; + stat = status[ levelId ].data; - if ( OVERRIDE_KEY == levelsStatus[ levelId ].status.override ) + if ( OVERRIDE_KEY == status[ levelId ].override ) { - status = levelsStatus[ levelId ].status.ovData; + 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 (LEVEL_STATE_T)status; + return (LEVEL_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 + * @details \b Outputs: level + * @param count The level count reported by FPGA + * @return level status + *************************************************************************/ +static BOOL processLevelCount( U16 count ) +{ + BOOL level = FALSE; + + // Check the level count with in the high level range + if ( ( count >= LEVEL_COUNT_HIGH_START ) && + ( count <= LEVEL_COUNT_HIGH_END ) ) + { + level = TRUE; + } + else + { + level = FALSE; + } + + return level; +} + +/*********************************************************************//** + * @brief * The publishLevelsData function broadcasts the level data at the * publication interval. * @details \b Inputs: levelsDataPublicationCounter @@ -219,10 +266,10 @@ { LEVEL_DATA_T data; - data.floater1Level = (U32)getLevelStatus( FLOATER_1 ); - data.floater2Level = (U32)getLevelStatus( FLOATER_2 ); - data.bicarbLevel = (U32)getLevelStatus( BICARB_LEVEL ); - data.spentDialysateLevel = (U32)getLevelStatus( SPENT_DIALYSATE_LEVEL ); + data.d6Level = (U32)getLevelStatus( D6_LEVL ); + data.d63Level = (U32)getLevelStatus( D63_LEVL ); + data.d46Level = (U32)getLevelStatus( D46_LEVL ); + //data.spentDialysateLevel = (U32)getFPGAFloater1Status(); levelsDataPublicationCounter = 0; @@ -265,7 +312,7 @@ *************************************************************************/ BOOL testLevelStatusOverride( MESSAGE_T *message ) { - BOOL result = u32ArrayOverride( message, &levelsStatus[0].status, NUM_OF_LEVELS - 1, 0, NUM_OF_LEVELS_STATES -1 ); + BOOL result = u32ArrayOverride( message, &status[0], NUM_OF_LEVELS - 1, 0, NUM_OF_LEVELS_STATES -1 ); return result; } Index: firmware/App/Monitors/Level.h =================================================================== diff -u -rc85d9f0a8023fabdf1cd557965958d225e2b9085 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Monitors/Level.h (.../Level.h) (revision c85d9f0a8023fabdf1cd557965958d225e2b9085) +++ firmware/App/Monitors/Level.h (.../Level.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -35,29 +35,28 @@ /// DD floater and level sensor enumeration typedef enum level_names { - FLOATER_1 = 0, ///< floater switch low to medium status - FLOATER_2, ///< floater switch medium to high status - BICARB_LEVEL, ///< bicarb level low or high status - SPENT_DIALYSATE_LEVEL, ///< Spent dialysate air separation chamber level low or high status + D6_LEVL = 0, ///< floater switch low, medium and high status + D63_LEVL, ///< bicarb level low or high status + D46_LEVL, ///< Spent dialysate air separation chamber level low or high status NUM_OF_LEVELS ///< Number of levels } LELVEL_T; /// floater and level sensor states. typedef enum level_States { - STATE_LOW = 0, ///< Low level - STATE_HIGH, ///< High level - STATE_MEDIUM, ///< Medium level - NUM_OF_LEVELS_STATES ///< Number of level states + LEVEL_STATE_LOW = 0, ///< Low level + LEVEL_STATE_HIGH, ///< High level + LEVEL_STATE_MEDIUM, ///< Medium level + LEVEL_STATE_ILLEGAL, ///< Illegal level + NUM_OF_LEVELS_STATES ///< Number of level states } LEVEL_STATE_T; /// DD floater and level sensor data publish structure typedef struct { - U32 floater1Level; ///< Floater 1 level - U32 floater2Level; ///< Floater 2 level - U32 bicarbLevel; ///< Bicarb level - U32 spentDialysateLevel; ///< Spent dialysate level + U32 d6Level; ///< Floater level + U32 d63Level; ///< Bicarb level + U32 d46Level; ///< Spent dialysate level } LEVEL_DATA_T; // ********** public function prototypes ********** Index: firmware/App/Monitors/Pressure.c =================================================================== diff -u -r9102c5da21a15bdaf4bb3bc38795ceb064e3c443 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Monitors/Pressure.c (.../Pressure.c) (revision 9102c5da21a15bdaf4bb3bc38795ceb064e3c443) +++ firmware/App/Monitors/Pressure.c (.../Pressure.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -15,27 +15,31 @@ * ***************************************************************************/ -#include "AlarmMgmtDD.h" +#include "AlarmMgmtDD.h" #include "Messaging.h" #include "Pressure.h" #include "PersistentAlarm.h" #include "TaskPriority.h" -#include "Valves.h" - -/** - * @addtogroup Pressure - * @{ - */ - -// ********** private definitions ********** +#include "Valves.h" -#define PRESSURES_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval (ms/task time) at which the pressures data is published on the CAN bus. +/** + * @addtogroup Pressure + * @{ + */ + +// ********** private definitions ********** +//TODO : Increasing the publish interval +#define PRESSURES_DATA_PUB_INTERVAL ( 250 / TASK_PRIORITY_INTERVAL ) ///< Interval (ms/task time) at which the pressures data is published on the CAN bus. +//#define PRESSURES_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval (ms/task time) at which the pressures data is published on the CAN bus. #define DATA_PUBLISH_COUNTER_START_COUNT ( 5 ) ///< Data publish counter start count. -#define PRESSURE_SAMPLE_FILTER_MS ( 200 ) ///< Filter pressure data for given time -#define PRESSURE_TEMP_SAMPLE_FILTER_MS ( 200 ) ///< Filter temperature data for given time +#define PRESSURE_SAMPLE_FILTER_MS ( 50 ) ///< Filter pressure data for given time +#define PRESSURE_TEMP_SAMPLE_FILTER_MS ( 50 ) +//#define PRESSURE_SAMPLE_FILTER_MS ( 200 ) ///< Filter pressure data for given time +//#define PRESSURE_TEMP_SAMPLE_FILTER_MS ( 200 ) ///< Filter temperature data for given time #define SIZE_OF_PRESSURE_ROLLING_AVG ( PRESSURE_SAMPLE_FILTER_MS / TASK_PRIORITY_INTERVAL ) ///< Filtered pressure moving average. #define SIZE_OF_PRESSURETEMP_ROLLING_AVG ( PRESSURE_TEMP_SAMPLE_FILTER_MS / TASK_PRIORITY_INTERVAL ) ///< Filtered pressure temprature w/ 1 second moving average. #define MMHG_TO_PSI_CONVERSION 0.0193368F ///< MMHG to PSI conversion. +#define BAR_TO_PSI_CONVERSION 14.5038F ///< MMHG to PSI conversion. #define MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG 20.0F ///< Minimum allowed Input low pressure value in psig. #define MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG 80.0F ///< Maximum allowed Input high pressure value in psig. @@ -74,9 +78,9 @@ F32 pressureTempReadingsTotal; ///< Rolling total - used to calc average. U32 pressureTempReadingsCount; ///< Number of samples in rolling average buffer }FILTER_PRESSURE_TEMPERATURE_READINGS_T; - -// ********** private data ********** +// ********** private data ********** + static OVERRIDE_F32_T filteredcurrentPressureReadings[ NUM_OF_PRESSURE_SENSORS ]; ///< filtered current pressure sensor pressure readings (overrideable). static OVERRIDE_F32_T filteredcurrentPresTempReadings[ NUM_OF_PRESSURE_SENSORS ]; ///< filtered current pressure sensor temperature readings (overrideable). //static DD_PRES_SENSORS_CAL_RECORD_T pressuresCalRecord; ///< Pressures calibration record. @@ -86,10 +90,10 @@ static PRESSURE_STATE_T pressuresState; ///< current state of pressure monitor state machine. static U32 pressuresDataPublicationTimerCounter; ///< used to schedule pressure data publication to CAN bus. static OVERRIDE_U32_T pressuresDataPublishInterval = { PRESSURES_DATA_PUB_INTERVAL, - PRESSURES_DATA_PUB_INTERVAL, 0, 0 }; ///< Pressure data publish interval. - -// ********** private function prototypes ********** + PRESSURES_DATA_PUB_INTERVAL, 0, 0 }; ///< Pressure data publish interval. +// ********** private function prototypes ********** + static void filterPressureSensorReadings( void ); static void filterPressureSensorTemperatureReadings( void ); //static F32 getCalibrationAppliedPressure( U08 sensorId, F32 pressure ); @@ -235,11 +239,11 @@ *************************************************************************/ void checkInletWaterPressure( void ) { - F32 pressureIn = getFilteredPressure( PRESSURE_SENSOR_WATER_INLET_INPUT ); - F32 PressureOut = getFilteredPressure( PRESSURE_SENSOR_WATER_INLET_OUTPUT ); + F32 pressureIn = getFilteredPressure( M1_PRES ); + F32 PressureOut = getFilteredPressure( M3_PRES ); //Check Water Inlet Input pressure range - if ( VALVE_STATE_OPEN == getValveStateName( VWI ) ) + if ( VALVE_STATE_OPEN == getValveStateName( M4_VALV ) ) { BOOL isPressureTooLow; BOOL isPressureTooHigh; @@ -263,13 +267,13 @@ } else { - // VWI is closed - clear all alarms + // M4_VALV is closed - clear all alarms checkPersistentAlarm( ALARM_ID_DD_INLET_WATER_PRESSURE_IN_LOW_RANGE, FALSE, pressureIn, MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ); checkPersistentAlarm( ALARM_ID_DD_INLET_WATER_PRESSURE_IN_HIGH_RANGE, FALSE, pressureIn, MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ); } //Check Water Inlet Output pressure range - if ( VALVE_STATE_OPEN == getValveStateName( VWI ) ) + if ( VALVE_STATE_OPEN == getValveStateName( M4_VALV ) ) { BOOL isPressureTooLow; BOOL isPressureTooHigh; @@ -293,42 +297,42 @@ } else { - // VWI is closed - clear all alarms + // M4_VALV is closed - clear all alarms checkPersistentAlarm( ALARM_ID_DD_INLET_WATER_PRESSURE_OUT_LOW_RANGE, FALSE, PressureOut, MIN_INLET_WATER_PRES_OUT_WARNING_LOW_PSIG ); checkPersistentAlarm( ALARM_ID_DD_INLET_WATER_PRESSURE_OUT_HIGH_RANGE, FALSE, PressureOut, MAX_INLET_WATER_PRES_OUT_WARNING_HIGH_PSIG ); } } - -/*********************************************************************//** - * @brief + +/*********************************************************************//** + * @brief * The execPressureSensor function executes the pressure monitor state machine - * and publish pressure data. - * @details \b Inputs: pressuresState + * and publish pressure data. + * @details \b Inputs: pressuresState * @details \b Outputs: pressuresState - * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT if invalid pressure state seen - * @return none - *************************************************************************/ -void execPressureSensor( void ) -{ - // state machine - switch ( pressuresState ) - { - case PRESSURE_INIT_STATE: - pressuresState = handlePressuresInitState(); - break; - - case PRESSURE_CONTINUOUS_READ_STATE: - pressuresState = handlePressuresContReadState(); - break; - - default: + * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT if invalid pressure state seen + * @return none + *************************************************************************/ +void execPressureSensor( void ) +{ + // state machine + switch ( pressuresState ) + { + case PRESSURE_INIT_STATE: + pressuresState = handlePressuresInitState(); + break; + + case PRESSURE_CONTINUOUS_READ_STATE: + pressuresState = handlePressuresContReadState(); + break; + + default: SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_INVALID_EXEC_STATE, pressuresState ) - pressuresState = PRESSURE_INIT_STATE; - break; - } - - // publish pressure/occlusion data on interval - publishPressuresData(); + pressuresState = PRESSURE_INIT_STATE; + break; + } + + // publish pressure/occlusion data on interval + publishPressuresData(); } /*********************************************************************//** @@ -345,8 +349,8 @@ for ( i = PRESSURE_SENSOR_FIRST; i < NUM_OF_PRESSURE_SENSORS; i++ ) { - F32 pressureinmmHG = getPressure( i ); - F32 pressure = getConvertedPressure( i, pressureinmmHG ); + F32 pressureinPSI = getPressure( i ); + F32 pressure = getConvertedPressure( i, pressureinPSI ); if ( filteredPressureReadings[i].pressureReadingsCount >= SIZE_OF_PRESSURE_ROLLING_AVG ) { @@ -400,13 +404,13 @@ *************************************************************************/ static F32 getConvertedPressure( PRESSURE_SENSORS_T sensor, F32 pressure ) { - F32 baroPressurePSI = getPressure( PRESSURE_SENSOR_BAROMETRIC ) * MMHG_TO_PSI_CONVERSION; - F32 pressurePSI = pressure * MMHG_TO_PSI_CONVERSION; + F32 baroPressurePSI = getPressure( BARO_PRES ) * MMHG_TO_PSI_CONVERSION; // calibrated pressure - //F32 calPressure = getCalibrationAppliedPressure( sensor, pressurePSI ); + //F32 calPressure = getCalibrationAppliedPressure( sensor, pressure ); - return pressurePSI; + return pressure; + //return calPressure; } /*********************************************************************//** @@ -428,81 +432,81 @@ // pressuresCalRecord.pressureSensors[ (PRESSURE_SENSORS_T)sensorId ].offset; // return calPressure; //} - -/*********************************************************************//** - * @brief - * The handlePressuresInitState function handles the pressures initialize state - * of the pressures monitor state machine. - * @details \b Inputs: none - * @details \b Outputs: none - * @return next state - *************************************************************************/ -static PRESSURE_STATE_T handlePressuresInitState( void ) -{ - return PRESSURE_CONTINUOUS_READ_STATE; -} - -/*********************************************************************//** - * @brief - * The handlePressuresContReadState function handles the continuous read state - * of the pressures monitor state machine. - * @details \b Inputs: pressureFilterCounter - * @details \b Outputs: pressure sensor values updated - * @return next state - *************************************************************************/ -static PRESSURE_STATE_T handlePressuresContReadState( void ) + +/*********************************************************************//** + * @brief + * The handlePressuresInitState function handles the pressures initialize state + * of the pressures monitor state machine. + * @details \b Inputs: none + * @details \b Outputs: none + * @return next state + *************************************************************************/ +static PRESSURE_STATE_T handlePressuresInitState( void ) { + return PRESSURE_CONTINUOUS_READ_STATE; +} + +/*********************************************************************//** + * @brief + * The handlePressuresContReadState function handles the continuous read state + * of the pressures monitor state machine. + * @details \b Inputs: pressureFilterCounter + * @details \b Outputs: pressure sensor values updated + * @return next state + *************************************************************************/ +static PRESSURE_STATE_T handlePressuresContReadState( void ) +{ PRESSURE_STATE_T result = PRESSURE_CONTINUOUS_READ_STATE; //Get raw pressure value readPressureSensors(); // filter pressure readings - filterPressureSensors(); - - return result; + filterPressureSensors(); + + return result; } -/*********************************************************************//** - * @brief - * The publishPressuresData function publishes DD pressures data at a set interval. - * @details \b Inputs: pressuresDataPublicationTimerCounter +/*********************************************************************//** + * @brief + * The publishPressuresData function publishes DD pressures data at a set interval. + * @details \b Inputs: pressuresDataPublicationTimerCounter * @details \b Outputs: pressuresDataPublicationTimerCounter - * @details \b Message \b Sent: MSG_ID_DD_PRESSURES_DATA to publish pressure data. - * @return none - *************************************************************************/ -static void publishPressuresData( void ) -{ - // publish pressure/occlusion data on interval - if ( ++pressuresDataPublicationTimerCounter >= getU32OverrideValue( &pressuresDataPublishInterval ) ) + * @details \b Message \b Sent: MSG_ID_DD_PRESSURES_DATA to publish pressure data. + * @return none + *************************************************************************/ +static void publishPressuresData( void ) +{ + // publish pressure/occlusion data on interval + if ( ++pressuresDataPublicationTimerCounter >= getU32OverrideValue( &pressuresDataPublishInterval ) ) { PRESSURE_TEMP_DATA_T data; - data.filteredWaterInletInputPressure = getFilteredPressure( PRESSURE_SENSOR_WATER_INLET_INPUT ); - data.filteredWaterInletOutputPressure = getFilteredPressure( PRESSURE_SENSOR_WATER_INLET_OUTPUT ); - data.filteredHydraulicsOutletPressure = getFilteredPressure( PRESSURE_SENSOR_HYDRAULICS_OUTLET ); - data.filteredBibagPressure = getFilteredPressure( PRESSURE_SENSOR_BIBAG ); - data.filteredSpentdialysatePressure = getFilteredPressure( PRESSURE_SENSOR_SPENT_DIALYSATE ); - data.filteredFreshdialysatePressure = getFilteredPressure( PRESSURE_SENSOR_FRESH_DIALYSATE ); - data.filteredTransmembranePressure = getFilteredPressure( PRESSURE_SENSOR_TRANSMEMBRANE ); - data.filteredWaterInletInputTemp = getFilteredPressureSensorTemperature( PRESSURE_SENSOR_WATER_INLET_INPUT ); - data.filteredWaterInletOutputTemp = getFilteredPressureSensorTemperature( PRESSURE_SENSOR_WATER_INLET_OUTPUT ); - data.filteredHydraulicsOutletTemp = getFilteredPressureSensorTemperature( PRESSURE_SENSOR_HYDRAULICS_OUTLET ); - data.filteredBibagTemp = getFilteredPressureSensorTemperature( PRESSURE_SENSOR_BIBAG ); - data.filteredSpentdialysateTemp = getFilteredPressureSensorTemperature( PRESSURE_SENSOR_SPENT_DIALYSATE ); - data.filteredFreshdialysateTemp = getFilteredPressureSensorTemperature( PRESSURE_SENSOR_FRESH_DIALYSATE ); - data.filteredTransmembraneTemp = getFilteredPressureSensorTemperature( PRESSURE_SENSOR_TRANSMEMBRANE ); - pressuresDataPublicationTimerCounter = 0; - - broadcastData( MSG_ID_DD_PRESSURES_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( PRESSURE_TEMP_DATA_T ) ); - } -} - - -/************************************************************************* - * TEST SUPPORT FUNCTIONS - *************************************************************************/ + data.m1Pressure = getFilteredPressure( M1_PRES ); + data.m3Pressure = getFilteredPressure( M3_PRES ); + data.d9Pressure = getFilteredPressure( D9_PRES ); + data.d66Pressure = getFilteredPressure( D66_PRES ); + data.d51Pressure = getFilteredPressure( D51_PRES ); + data.d18Pressure = getFilteredPressure( D18_PRES ); + data.d41Pressure = getFilteredPressure( D41_PRES ); + data.m1PresTemp = getFilteredPressureSensorTemperature( M1_PRES ); + data.m3PresTemp = getFilteredPressureSensorTemperature( M3_PRES ); + data.d9PresTemp = getFilteredPressureSensorTemperature( D9_PRES ); + data.d66PresTemp = getFilteredPressureSensorTemperature( D66_PRES ); + data.d51PresTemp = getFilteredPressureSensorTemperature( D51_PRES ); + data.d18PresTemp = getFilteredPressureSensorTemperature( D18_PRES ); + data.d41PresTemp = getFilteredPressureSensorTemperature( D41_PRES ); + pressuresDataPublicationTimerCounter = 0; + broadcastData( MSG_ID_DD_PRESSURES_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( PRESSURE_TEMP_DATA_T ) ); + } +} + +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + + /*********************************************************************//** * @brief * The testPressureSensorDataPublishIntervalOverride function overrides the @@ -553,5 +557,5 @@ return result; } - -/**@}*/ + +/**@}*/ Index: firmware/App/Monitors/Pressure.h =================================================================== diff -u -r48c75a394c56b82886760e9a136b638edecf7572 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Monitors/Pressure.h (.../Pressure.h) (revision 48c75a394c56b82886760e9a136b638edecf7572) +++ firmware/App/Monitors/Pressure.h (.../Pressure.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -14,46 +14,46 @@ * @date (original) 04-Sep-2024 * ***************************************************************************/ - -#ifndef __PRESSURE_H__ -#define __PRESSURE_H__ - + +#ifndef __PRESSURE_H__ +#define __PRESSURE_H__ + #include "DDCommon.h" -#include "PressureSensor.h" - -/** - * @defgroup Pressure Pressure - * @brief Pressure sensors monitor module. Monitors the various DD pressure - * sensors. - * - * @addtogroup Pressure - * @{ - */ - +#include "PressureSensor.h" + +/** + * @defgroup Pressure Pressure + * @brief Pressure sensors monitor module. Monitors the various DD pressure + * sensors. + * + * @addtogroup Pressure + * @{ + */ + // ********** public definitions ********** /// Pressure data struct. typedef struct { - F32 filteredWaterInletInputPressure; ///< Water Inlet Input pressure - F32 filteredWaterInletOutputPressure; ///< Water Inlet Output pressure - F32 filteredHydraulicsOutletPressure; ///< Hydraulics outlet pressure - F32 filteredBibagPressure; ///< Bicarb bag pressure - F32 filteredSpentdialysatePressure; ///< Spent Dialysate pressure - F32 filteredFreshdialysatePressure; ///< Fresh Dialysate pressure - F32 filteredTransmembranePressure; ///< Transmembrane pressure - F32 filteredWaterInletInputTemp; ///< Water Inlet Input temperature - F32 filteredWaterInletOutputTemp; ///< Water Inlet Output temperature - F32 filteredHydraulicsOutletTemp; ///< Hydraulics outlet pressure temperature - F32 filteredBibagTemp; ///< Bicarb bag temperature - F32 filteredSpentdialysateTemp; ///< Spent Dialysate temperature - F32 filteredFreshdialysateTemp; ///< Fresh Dialysate temperature - F32 filteredTransmembraneTemp; ///< Transmembrane temperature + F32 m1Pressure; ///< Water Inlet Input pressure + F32 m3Pressure; ///< Water Inlet Output pressure + F32 d9Pressure; ///< Hydraulics outlet pressure + F32 d66Pressure; ///< Bicarb bag pressure + F32 d51Pressure; ///< Spent Dialysate pressure + F32 d18Pressure; ///< Fresh Dialysate pressure + F32 d41Pressure; ///< Transmembrane pressure + F32 m1PresTemp; ///< Water Inlet Input temperature + F32 m3PresTemp; ///< Water Inlet Output temperature + F32 d9PresTemp; ///< Hydraulics outlet pressure temperature + F32 d66PresTemp; ///< Bicarb bag temperature + F32 d51PresTemp; ///< Spent Dialysate temperature + F32 d18PresTemp; ///< Fresh Dialysate temperature + F32 d41PresTemp; ///< Transmembrane temperature } PRESSURE_TEMP_DATA_T; - -// ********** public function prototypes ********** - -void initPressure( void ); + +// ********** public function prototypes ********** + +void initPressure( void ); void execPressureSensor( void ); void checkInletWaterPressure( void ); @@ -62,8 +62,8 @@ BOOL testPressureSensorDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testPressureSensorFilteredReadingsOverride( MESSAGE_T *message ); -BOOL testPressureSensorFilteredTemperatureReadingsOverride( MESSAGE_T *message ); - -/**@}*/ - -#endif +BOOL testPressureSensorFilteredTemperatureReadingsOverride( MESSAGE_T *message ); + +/**@}*/ + +#endif Index: firmware/App/Monitors/Temperature.c =================================================================== diff -u -re7fe0454b5b2d39009dc784dc8c156856df8bc86 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision e7fe0454b5b2d39009dc784dc8c156856df8bc86) +++ firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -15,6 +15,7 @@ * ***************************************************************************/ +#include "ConductivitySensors.h" #include "Messaging.h" #include "MessageSupport.h" #include "OperationModes.h" @@ -207,12 +208,16 @@ { TEMPERATURE_SENSORS_DATA_T data; - data.inletHeatExchanger = getTemperatureValue( TEMPSENSORS_INLET_HEAT_EXCHANGER ); - data.outletHeatExchanger = getTemperatureValue( TEMPSENSORS_OUTLET_HEAT_EXCHANGER ); - data.hydraulicsPrimaryHeater = getTemperatureValue( TEMPSENSORS_HYDRAULICS_PRIMARY_HEATER ); - data.trimmerHeater = getTemperatureValue( TEMPSENSORS_TRIMMER_HEATER ); - data.boardTemp = getTemperatureValue( TEMPSENSORS_BOARD_TEMPERATURE ); - data.baroTempSensor = getTemperatureValue( TEMPSENSORS_BAROMETRIC_TEMP_SENSOR ); + data.d1Temp = getTemperatureValue( D1_TEMP ); + data.x6Temp = getTemperatureValue( X6_TEMP ); + data.d4Temp = getTemperatureValue( D4_TEMP ); + data.d50Temp = getTemperatureValue( D50_TEMP ); + data.boardTemp = getTemperatureValue( BRD_TEMP ); + data.baroTemp = getTemperatureValue( BARO_TEMP ); + data.d16CondTemp = getConductivityTemperatureValue( D17_COND ); + data.d28CondTemp = getConductivityTemperatureValue( D27_COND ); + data.d30CondTemp = getConductivityTemperatureValue( D29_COND ); + data.d44CondTemp = getConductivityTemperatureValue( D43_COND ); broadcastData( MSG_ID_DD_TEMPERATURE_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( TEMPERATURE_SENSORS_DATA_T ) ); dataPublicationTimerCounter = 0; Index: firmware/App/Monitors/Temperature.h =================================================================== diff -u -re7fe0454b5b2d39009dc784dc8c156856df8bc86 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Monitors/Temperature.h (.../Temperature.h) (revision e7fe0454b5b2d39009dc784dc8c156856df8bc86) +++ firmware/App/Monitors/Temperature.h (.../Temperature.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -34,12 +34,16 @@ /// Temperature sensors data structure. typedef struct { - F32 inletHeatExchanger; ///< Inlet heat exchanger temperature sensor - F32 outletHeatExchanger; ///< Outlet heat exchanger temperature sensor - F32 hydraulicsPrimaryHeater; ///< Hydraulics primary heater temperature sensor - F32 trimmerHeater; ///< Trimmer heater temperature sensor - F32 boardTemp; ///< Board temperature sensor - F32 baroTempSensor; ///< Barometric temperature sensor + F32 d1Temp; ///< Inlet heat exchanger temperature sensor + F32 x6Temp; ///< Outlet heat exchanger temperature sensor + F32 d4Temp; ///< Hydraulics primary heater temperature sensor + F32 d50Temp; ///< Trimmer heater temperature sensor + F32 boardTemp; ///< Board temperature sensor + F32 baroTemp; ///< Barometric temperature sensor + F32 d16CondTemp; ///< D16 temperature value + F32 d28CondTemp; ///< D28 temperature value + F32 d30CondTemp; ///< D30 temperature value + F32 d44CondTemp; ///< D44 temperature value } TEMPERATURE_SENSORS_DATA_T; Index: firmware/App/Services/AlarmMgmtDD.c =================================================================== diff -u -rf7c714a1a09b10d85a8b013712532d37b4d7b97a -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Services/AlarmMgmtDD.c (.../AlarmMgmtDD.c) (revision f7c714a1a09b10d85a8b013712532d37b4d7b97a) +++ firmware/App/Services/AlarmMgmtDD.c (.../AlarmMgmtDD.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -22,87 +22,87 @@ #include "SafetyShutdown.h" #include "SystemCommDD.h" #include "TaskGeneral.h" -#include "TDDefs.h" +#include "TDDefs.h" #include "Timers.h" - - -/** - * @addtogroup AlarmManagement - * @{ - */ - -// ********** private definitions ********** + +/** + * @addtogroup AlarmManagement + * @{ + */ + +// ********** private definitions ********** + #define ALARM_INFO_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) /// Interval (ms/task time) at which the alarm information is published on the CAN bus. #define DATA_PUBLISH_COUNTER_START_COUNT 12 ///< Data publish counter start count. #define SUPERVISOR_ALARM_KEY 0xD2C3B4A5 ///< 32-bit key required for clear all alarms request. - -const ALARM_DATA_T BLANK_ALARM_DATA = { ALARM_DATA_TYPE_NONE, 0 }; ///< A blank alarm data record for alarms that do not include alarm data when triggered. -// ********** private data ********** +const ALARM_DATA_T BLANK_ALARM_DATA = { ALARM_DATA_TYPE_NONE, 0 }; ///< A blank alarm data record for alarms that do not include alarm data when triggered. +// ********** private data ********** + static U32 alarmInfoPublicationTimerCounter; ///< Used to schedule alarm information publication to CAN bus. static BOOL isAFaultAlarmActive; ///< Boolean flag to indicate whether a DD fault alarm is active. /// Interval (in task intervals) at which to publish alarm information to CAN bus. static OVERRIDE_U32_T alarmInfoPublishInterval = { ALARM_INFO_PUB_INTERVAL, ALARM_INFO_PUB_INTERVAL, ALARM_INFO_PUB_INTERVAL, 0 }; - -// ********** private function prototypes ********** - -static void activateAlarmDD( ALARM_ID_T alarm ); + +// ********** private function prototypes ********** + +static void activateAlarmDD( ALARM_ID_T alarm ); static void publishAlarmInfo( void ); static BOOL isTransitionToFaultRequired( void ); - -/*********************************************************************//** - * @brief - * The initAlarmMgmtDD function initializes the AlarmMgmt unit. - * @details \b Inputs: none - * @details \b Outputs: unit variables initialized. - * @return none - *************************************************************************/ -void initAlarmMgmtDD( void ) -{ + +/*********************************************************************//** + * @brief + * The initAlarmMgmtDD function initializes the AlarmMgmt unit. + * @details \b Inputs: none + * @details \b Outputs: unit variables initialized. + * @return none + *************************************************************************/ +void initAlarmMgmtDD( void ) +{ alarmInfoPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; isAFaultAlarmActive = FALSE; // Initialize common alarm mgmt unit - initAlarmMgmt(); -} + initAlarmMgmt(); +} -/*********************************************************************//** - * @brief - * The execAlarmMgmt function executes periodic alarm management operations. - * @details \b Inputs: none - * @details \b Outputs: none - * @return none - *************************************************************************/ -void execAlarmMgmt( void ) -{ +/*********************************************************************//** + * @brief + * The execAlarmMgmt function executes periodic alarm management operations. + * @details \b Inputs: none + * @details \b Outputs: none + * @return none + *************************************************************************/ +void execAlarmMgmt( void ) +{ // Publish alarm information at interval publishAlarmInfo(); -} +} -/*********************************************************************//** - * @brief +/*********************************************************************//** + * @brief * The activateAlarmDD function activates a given alarm. if the alarm is - * DD fault, transition fault operation mode immediately. - * @details \b Inputs: none + * DD fault, transition fault operation mode immediately. + * @details \b Inputs: none * @details \b Outputs: alarmIsActive[], isAFaultAlarmActive - * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT when invalid alarm asked to activate. - * @param alarm ID of alarm to activate - * @return none - *************************************************************************/ -static void activateAlarmDD( ALARM_ID_T alarm ) -{ - // verify given alarm - if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) - { + * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT when invalid alarm asked to activate. + * @param alarm ID of alarm to activate + * @return none + *************************************************************************/ +static void activateAlarmDD( ALARM_ID_T alarm ) +{ + // verify given alarm + if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) + { ALARM_T props = getAlarmProperties( alarm ); - // no need to do anything if alarm is already active - if ( FALSE == isAlarmActive( alarm ) ) - { - // activate alarm + // no need to do anything if alarm is already active + if ( FALSE == isAlarmActive( alarm ) ) + { + // activate alarm activateAlarm( alarm ); if ( TRUE == props.alarmIsDDFault ) @@ -113,64 +113,65 @@ if ( TRUE == isTransitionToFaultRequired() ) { // If alarm is a DD fault and the alarm manager can transition to fault immediately, go to fault mode - requestNewOperationMode( DD_MODE_FAUL ); + //TODO : Testing - remove the comment later + // requestNewOperationMode( DD_MODE_FAUL ); } - } - } - } - else - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE, alarm ) - } -} + } + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE, alarm ) + } +} -/*********************************************************************//** - * @brief +/*********************************************************************//** + * @brief * The activateAlarmNoData function activates a given alarm. An alarm message * is broadcast to the rest of the system.it doesn't contain any parameters - * associated to alarm. - * @details \b Inputs: none - * @details \b Outputs: alarm triggered message sent, alarm activated - * @param alarm ID of alarm to activate - * @return none - *************************************************************************/ -void activateAlarmNoData( ALARM_ID_T alarm ) + * associated to alarm. + * @details \b Inputs: none + * @details \b Outputs: alarm triggered message sent, alarm activated + * @param alarm ID of alarm to activate + * @return none + *************************************************************************/ +void activateAlarmNoData( ALARM_ID_T alarm ) { - activateAlarm2Data( alarm, BLANK_ALARM_DATA, BLANK_ALARM_DATA, FALSE ); -} + activateAlarm2Data( alarm, BLANK_ALARM_DATA, BLANK_ALARM_DATA, FALSE ); +} -/*********************************************************************//** - * @brief +/*********************************************************************//** + * @brief * The activateAlarm1Data function activates a given alarm. An alarm message * is broadcast to the rest of the system. This function will include given - * data in the broadcast message for logging. - * @details \b Inputs: none - * @details \b Outputs: alarm triggered message sent, alarm activated - * @param alarm ID of alarm to activate - * @param alarmData supporting data to include in alarm message - * @return none - *************************************************************************/ -void activateAlarm1Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData ) + * data in the broadcast message for logging. + * @details \b Inputs: none + * @details \b Outputs: alarm triggered message sent, alarm activated + * @param alarm ID of alarm to activate + * @param alarmData supporting data to include in alarm message + * @return none + *************************************************************************/ +void activateAlarm1Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData ) { - activateAlarm2Data( alarm, alarmData, BLANK_ALARM_DATA, FALSE ); -} + activateAlarm2Data( alarm, alarmData, BLANK_ALARM_DATA, FALSE ); +} -/*********************************************************************//** - * @brief +/*********************************************************************//** + * @brief * The activateAlarm2Data function activates a given alarm. An alarm message * is broadcast to the rest of the system. This function will include - * two given data in the broadcast message for logging. - * @details \b Inputs: none + * two given data in the broadcast message for logging. + * @details \b Inputs: none * @details \b Outputs: alarm triggered message sent, alarm activated * @details \b Message \b sent: MSG_ID_ALARM_TRIGGERED to update Alarm - * trigerred details along with the supporting data. - * @param alarm ID of alarm to activate - * @param alarmData1 supporting data to include in alarm message - * @param alarmData2 supporting data to include in alarm message + * trigerred details along with the supporting data. + * @param alarm ID of alarm to activate + * @param alarmData1 supporting data to include in alarm message + * @param alarmData2 supporting data to include in alarm message * @param outside flag indicates whether alarm is originating from outside HD f/w - * @return none - *************************************************************************/ -void activateAlarm2Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData1, ALARM_DATA_T alarmData2, BOOL outside ) + * @return none + *************************************************************************/ +void activateAlarm2Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData1, ALARM_DATA_T alarmData2, BOOL outside ) { TD_MODE_SUB_MODE_T tdModes; ALARM_T props = getAlarmProperties( alarm ); @@ -188,44 +189,44 @@ } activateAlarmDD( alarm ); } -} +} -/*********************************************************************//** - * @brief +/*********************************************************************//** + * @brief * The clearAlarmDD function clears a given alarm if it is recoverable. - * An alarm message is broadcast to the rest of the system. - * @details \b Inputs: none + * An alarm message is broadcast to the rest of the system. + * @details \b Inputs: none * @details \b Outputs: AlarmStatusTable[] * @details \b Message \Sent: MSG_ID_ALARM_CLEARED to update clearance of * the alarm. * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT when invalid alarm needs - * to be cleared. - * @param alarm ID of alarm to clear - * @return none - *************************************************************************/ -void clearAlarmDD( ALARM_ID_T alarm ) -{ + * to be cleared. + * @param alarm ID of alarm to clear + * @return none + *************************************************************************/ +void clearAlarmDD( ALARM_ID_T alarm ) +{ ALARM_T props = getAlarmProperties( alarm ); - // verify given alarm - if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) - { - // clear alarm and broadcast alarm clear if not already cleared (and not a DD fault which should not be cleared) - if ( ( TRUE == isAlarmActive( alarm ) ) && ( props.alarmIsDDFault != TRUE ) ) + // verify given alarm + if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) + { + // clear alarm and broadcast alarm clear if not already cleared (and not a DD fault which should not be cleared) + if ( ( TRUE == isAlarmActive( alarm ) ) && ( props.alarmIsDDFault != TRUE ) ) { if ( TRUE == isTDCommunicating() ) - { + { broadcastAlarmCleared( alarm ); } - setAlarmActive( alarm, FALSE ); - clearAlarmConditionDD( alarm ); - } - } - else - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR, alarm ) - } -} + setAlarmActive( alarm, FALSE ); + clearAlarmConditionDD( alarm ); + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR, alarm ) + } +} /*********************************************************************//** * @brief @@ -373,11 +374,11 @@ return status; } - -/************************************************************************* - * TEST SUPPORT FUNCTIONS - *************************************************************************/ +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + /*********************************************************************//** * @brief * The testClearAllAlarms function clears all active alarms, even if they Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -r9102c5da21a15bdaf4bb3bc38795ceb064e3c443 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 9102c5da21a15bdaf4bb3bc38795ceb064e3c443) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -14,20 +14,20 @@ * @date (original) 30-Jul-2024 * ***************************************************************************/ - -#ifndef __ALARM_MGMT_SW_FAULTS_H__ -#define __ALARM_MGMT_SW_FAULTS_H__ - -/** - * @addtogroup AlarmManagement - * @{ - */ - -// ********** public definitions ********** - -/// Listing of specific software faults for logging purposes. -typedef enum -{ + +#ifndef __ALARM_MGMT_SW_FAULTS_H__ +#define __ALARM_MGMT_SW_FAULTS_H__ + +/** + * @addtogroup AlarmManagement + * @{ + */ + +// ********** public definitions ********** + +/// Listing of specific software faults for logging purposes. +typedef enum +{ SW_FAULT_ID_NONE = 0, SW_FAULT_ID_INT_ADC_DATA_OVERRUN = 1, SW_FAULT_ID_INT_ADC_INVALID_CHANNEL_REQUESTED = 2, @@ -133,9 +133,13 @@ SW_FAULT_ID_GEND_MODE_INVALID_EXEC_STATE = 102, SW_FAULT_ID_GEND_MODE_INVALID_EXEC_STATE1 = 103, SW_FAULT_ID_INVALID_RO_OPERATING_MODE = 104, - NUM_OF_SW_FAULT_IDS -} SW_FAULT_ID_T; - +#ifdef __PUMPTEST__ + SW_FAULT_ID_PISTON_PUMP_EXEC_INVALID_STATE = 105, + SW_FAULT_ID_PISTON_PUMP_INVALID_PUMP_ID = 106, +#endif + NUM_OF_SW_FAULT_IDS +} SW_FAULT_ID_T; + /**@}*/ -#endif +#endif Index: firmware/App/Services/FpgaDD.c =================================================================== diff -u -r9102c5da21a15bdaf4bb3bc38795ceb064e3c443 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Services/FpgaDD.c (.../FpgaDD.c) (revision 9102c5da21a15bdaf4bb3bc38795ceb064e3c443) +++ firmware/App/Services/FpgaDD.c (.../FpgaDD.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -74,24 +74,28 @@ #define FPGA_ENABLE_BC_VALVES_PWM 0x00 ///< FPGA enable Balancing chamber valves PWM. #define FPGA_ENABLE_UF_VALVES_PWM 0x00 ///< FPGA enable Ultrafiltration valves PWM. +#define FPGA_ADC_AUTO_READ_ENABLE 0x11 ///< FPGA internal ADC auto read enable. + #define CONCENTRATE_CAP_SWITCH_MASK 0x10 ///< Concentrate cap switch bit mask. #define FPGA_CONC_PUMP_FAULT_BITS 0x03 ///< Concentrate pump fault bits mask. -#define FPGA_CPA_PARKED_BIT 0x04 ///< Concentrate pump 1 parked status bit mask. -#define FPGA_CPB_PARKED_BIT 0x10 ///< Concentrate pump 2 parked status bit mask. -#define FPGA_CPA_PARK_FAULT_BIT 0x08 ///< Concentrate pump 1 park fault status bit mask. -#define FPGA_CPB_PARK_FAULT_BIT 0x20 ///< Concentrate pump 2 park fault status bit mask. +#define FPGA_D11_PUMP_PARKED_BIT 0x04 ///< Acid Concentrate pump parked status bit mask. +#define FPGA_D10_PUMP_PARKED_BIT 0x10 ///< Bicarb Concentrate pump parked status bit mask. +#define FPGA_D11_PUMP_PARK_FAULT_BIT 0x08 ///< Acid Concentrate pump park fault status bit mask. +#define FPGA_D10_PUMP_PARK_FAULT_BIT 0x20 ///< Bicarb Concentrate pump park fault status bit mask. #define FPGA_CONC_PUMP_PARK_COMMAND 0x80 ///< Park command bit for the concentrate pumps. #define FPGA_THD_CONTROL_COMMAND 0X01 ///< FPGA THd control command. #define FPGA_POWER_OUT_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< FPGA power out timeout in milliseconds. #define FPGA_GPIO_POWER_STATUS_PIN 7 ///< FPGA GPIO power status pin. #define FPGA_READ_V3_START_BYTE_NUM 256 ///< FPGA V3 read sensors start byte number. #define FPGA_READ_V3_END_BYTE_NUM 430 ///< FPGA V3 read sensors end byte number. -#define FPGA_DGP_PUMP_ERROR_BIT 0x01 ///< Fresh dialysate pump error bit mask. -#define FPGA_SDP_PUMP_ERROR_BIT 0x02 ///< Spent dialysate pump error bit mask. +#define FPGA_D12_PUMP_ERROR_BIT 0x01 ///< Fresh dialysate pump error bit mask. +#define FPGA_D48_PUMP_ERROR_BIT 0x02 ///< Spent dialysate pump error bit mask. -#define FPGA_FLOATER_LEVEL_BIT 0x01 ///< Floater level bit mask. +#define FPGA_FLOATER_LEVEL_BIT 0x03 ///< Floater level bit mask. +#define FPGA_PRIMARY_HEATER_CNTRL_BIT 0x01 ///< FPGA GIO Primary heater control bit mask + /// FPGA size of V3 read bytes. #define FPGA_SIZE_OF_V3_READ_BYTES ( FPGA_READ_V3_END_BYTE_NUM - FPGA_READ_V3_START_BYTE_NUM ) @@ -121,67 +125,67 @@ U08 fpgaIOErrorCntProcessor; ///< Reg 262. Number of errors in Microprocessor UART interface U08 fpgaIOErrorCntPC; ///< Reg 263. Number of errors in PC UART interface - U16 fpgaPnPressure; ///< Reg 264. Pn/PHo MPM pressure sensor RAW pressure data - U16 fpgaPnTemp; ///< Reg 266. Pn/PHo MPM pressure sensor RAW temperature data - U08 fpgaPnReadCnt; ///< Reg 268. Pn/PHo Counter for good SPI transmission b/w FPGA and sensor - U08 fpgaPnErrorCnt; ///< Reg 229. Pn/PHo Counter for bad SPI transmission b/w FPGA and sensor + U16 fpgaD9PresPressure; ///< Reg 264. D9 MPM pressure sensor RAW pressure data + U16 fpgaD9PresTemp; ///< Reg 266. D9 MPM pressure sensor RAW temperature data + U08 fpgaD9PresReadCnt; ///< Reg 268. D9 Counter for good SPI transmission b/w FPGA and sensor + U08 fpgaD9PresErrorCnt; ///< Reg 229. D9 Counter for bad SPI transmission b/w FPGA and sensor - U16 fpgaPCbPressure; ///< Reg 270. PCb/PDB MPM pressure sensor RAW pressure data - U16 fpgaPCbTemp; ///< Reg 272. PCb/PDB MPM pressure sensor RAW temperature data - U08 fpgaPCbReadCnt; ///< Reg 274. PCb/PDB Counter for good SPI transmission b/w FPGA and sensor - U08 fpgaPCbErrorCnt; ///< Reg 275. PCb/PDB Counter for bad SPI transmission b/w FPGA and sensor + U16 fpgaD66PresPressure; ///< Reg 270. D66 MPM pressure sensor RAW pressure data + U16 fpgaD66PresTemp; ///< Reg 272. D66 MPM pressure sensor RAW temperature data + U08 fpgaD66PresReadCnt; ///< Reg 274. D66 Counter for good SPI transmission b/w FPGA and sensor + U08 fpgaD66PresErrorCnt; ///< Reg 275. D66 Counter for bad SPI transmission b/w FPGA and sensor - U16 fpgaPDsPressure; ///< Reg 276. PDs MPM pressure sensor RAW pressure data - U16 fpgaPDsTemp; ///< Reg 278. PDs MPM pressure sensor RAW temperature data - U08 fpgaPDsReadCnt; ///< Reg 280. PDs Counter for good SPI transmission b/w FPGA and sensor - U08 fpgaPDsErrorCnt; ///< Reg 281. PDs Counter for bad SPI transmission b/w FPGA and sensor + U16 fpgaD51PresPressure; ///< Reg 276. D51 MPM pressure sensor RAW pressure data + U16 fpgaD51PresTemp; ///< Reg 278. D51 MPM pressure sensor RAW temperature data + U08 fpgaD51PresReadCnt; ///< Reg 280. D51 Counter for good SPI transmission b/w FPGA and sensor + U08 fpgaD51PresErrorCnt; ///< Reg 281. D51 Counter for bad SPI transmission b/w FPGA and sensor - U16 fpgaPDfPressure; ///< Reg 282. PDf MPM pressure sensor RAW pressure data - U16 fpgaPDfTemp; ///< Reg 284. PDf MPM pressure sensor RAW temperature data - U08 fpgaPDfReadCnt; ///< Reg 286. PDf Counter for good SPI transmission b/w FPGA and sensor - U08 fpgaPDfErrorCnt; ///< Reg 287. PDf Counter for bad SPI transmission b/w FPGA and sensor + U16 fpgaD18PresPressure; ///< Reg 282. D18 MPM pressure sensor RAW pressure data + U16 fpgaD18PresTemp; ///< Reg 284. D18 MPM pressure sensor RAW temperature data + U08 fpgaD18PresReadCnt; ///< Reg 286. D18 Counter for good SPI transmission b/w FPGA and sensor + U08 fpgaD18PresErrorCnt; ///< Reg 287. D18 Counter for bad SPI transmission b/w FPGA and sensor - U16 fpgaPtmPressure; ///< Reg 288. Ptm MPM pressure sensor RAW pressure data - U16 fpgaPtmTemp; ///< Reg 290. Ptm MPM pressure sensor RAW temperature data - U08 fpgaPtmReadCnt; ///< Reg 292. Ptm Counter for good SPI transmission b/w FPGA and sensor - U08 fpgaPtmErrorCnt; ///< Reg 293. Ptm Counter for bad SPI transmission b/w FPGA and sensor + U16 fpgaD41PresPressure; ///< Reg 288. D41 MPM pressure sensor RAW pressure data + U16 fpgaD41PresTemp; ///< Reg 290. D41 MPM pressure sensor RAW temperature data + U08 fpgaD41PresReadCnt; ///< Reg 292. D41 Counter for good SPI transmission b/w FPGA and sensor + U08 fpgaD41PresErrorCnt; ///< Reg 293. D41 Counter for bad SPI transmission b/w FPGA and sensor - U16 fpgaPRiPressure; ///< Reg 294. PRi MPM pressure sensor RAW pressure data - U16 fpgaPRiTemp; ///< Reg 296. PRi MPM pressure sensor RAW temperature data - U08 fpgaPRiReadCnt; ///< Reg 298. PRi Counter for good SPI transmission b/w FPGA and sensor - U08 fpgaPRiErrorCnt; ///< Reg 299. Pri Counter for bad SPI transmission b/w FPGA and sensor + U16 fpgaM1PresPressure; ///< Reg 294. M1 MPM pressure sensor RAW pressure data + U16 fpgaM1PresTemp; ///< Reg 296. M1 MPM pressure sensor RAW temperature data + U08 fpgaM1PresReadCnt; ///< Reg 298. M1 Counter for good SPI transmission b/w FPGA and sensor + U08 fpgaM1PresErrorCnt; ///< Reg 299. M1 Counter for bad SPI transmission b/w FPGA and sensor - U16 fpgaPRoPressure; ///< Reg 300. PRo MPM pressure sensor RAW pressure data - U16 fpgaPRoTemp; ///< Reg 302. PRo MPM pressure sensor RAW temperature data - U08 fpgaPRoReadCnt; ///< Reg 304. PRo Counter for good SPI transmission b/w FPGA and sensor - U08 fpgaPRoErrorCnt; ///< Reg 305. PRo Counter for bad SPI transmission b/w FPGA and sensor + U16 fpgaM3PresPressure; ///< Reg 300. M3 MPM pressure sensor RAW pressure data + U16 fpgaM3PresTemp; ///< Reg 302. M3 MPM pressure sensor RAW temperature data + U08 fpgaM3PresReadCnt; ///< Reg 304. M3 Counter for good SPI transmission b/w FPGA and sensor + U08 fpgaM3PresErrorCnt; ///< Reg 305. M3 Counter for bad SPI transmission b/w FPGA and sensor - U32 fpgaCD1DataOut; ///< Reg 306. Data read from Conductivity Sensor 1 register - U16 fpgaCD1Cond; ///< Reg 310. CD1 conductivity - U16 fpgaCD1Temp; ///< Reg 312. CD1 Temperature - U08 fpgaCD1ReadCnt; ///< Reg 314. CD1 successful read count - U08 fpgaCD1ErrorCnt; ///< Reg 315. CD1 error read count + U32 fpgaD17CondDataOut; ///< Reg 306. Data read from Conductivity Sensor 1 register + U16 fpgaD17CondCond; ///< Reg 310. D17 conductivity + U16 fpgaD17CondTemp; ///< Reg 312. D17 Temperature + U08 fpgaD17CondReadCnt; ///< Reg 314. D17 successful read count + U08 fpgaD17CondErrorCnt; ///< Reg 315. D17 error read count - U32 fpgaCD2DataOut; ///< Reg 316. Data read from Conductivity Sensor 2 register - U16 fpgaCD2Cond; ///< Reg 320. CD2 conductivity - U16 fpgaCD2Temp; ///< Reg 322. CD2 Temperature - U08 fpgaCD2ReadCnt; ///< Reg 324. CD2 successful read count - U08 fpgaCD2ErrorCnt; ///< Reg 325. CD2 error read count + U32 fpgaD27CondDataOut; ///< Reg 316. Data read from Conductivity Sensor 2 register + U16 fpgaD27CondCond; ///< Reg 320. D27 conductivity + U16 fpgaD27CondTemp; ///< Reg 322. D27 Temperature + U08 fpgaD27CondReadCnt; ///< Reg 324. D27 successful read count + U08 fpgaD27CondErrorCnt; ///< Reg 325. D27 error read count - U32 fpgaCD3DataOut; ///< Reg 326. Data read from Conductivity Sensor 3 register - U16 fpgaCD3Cond; ///< Reg 330. CD3 conductivity - U16 fpgaCD3Temp; ///< Reg 332. CD3 Temperature - U08 fpgaCD3ReadCnt; ///< Reg 334. CD3 successful read count - U08 fpgaCD3ErrorCnt; ///< Reg 335. CD3 error read count + U32 fpgaD29CondDataOut; ///< Reg 326. Data read from Conductivity Sensor 3 register + U16 fpgaD29CondCond; ///< Reg 330. D29 conductivity + U16 fpgaD29CondTemp; ///< Reg 332. D29 Temperature + U08 fpgaD29CondReadCnt; ///< Reg 334. D29 successful read count + U08 fpgaD29CondErrorCnt; ///< Reg 335. D29 error read count - U32 fpgaCD4DataOut; ///< Reg 336. Data read from Conductivity Sensor 4 register - U16 fpgaCD4Cond; ///< Reg 340. CD4 conductivity - U16 fpgaCD4Temp; ///< Reg 342. CD4 Temperature - U08 fpgaCD4ReadCnt; ///< Reg 344. CD4 successful read count - U08 fpgaCD4ErrorCnt; ///< Reg 345. CD4 error read count + U32 fpgaD43CondDataOut; ///< Reg 336. Data read from Conductivity Sensor 4 register + U16 fpgaD43CondCond; ///< Reg 340. D43 conductivity + U16 fpgaD43CondTemp; ///< Reg 342. D43 Temperature + U08 fpgaD43CondReadCnt; ///< Reg 344. D43 successful read count + U08 fpgaD43CondErrorCnt; ///< Reg 345. D43 error read count - U16 fpgaLevelSensor1; ///< Reg 346. Level Sensor 1 - U16 fpgaLevelSensor2; ///< Reg 348. Level Sensor 2 + U16 fpgaD63LevelSensor; ///< Reg 346. Level Sensor 1 + U16 fpgaD46LevelSensor; ///< Reg 348. Level Sensor 2 U08 fpgaHallSensInputs; ///< Reg 350. Hall sensor Inputs @@ -197,15 +201,15 @@ U08 fpgaValveBCPWMStates; ///< Reg 363. Balancing Chamber Valve PWM states U08 fpgaValveUFStates; ///< Reg 364. Ultrafiltration Valves states U08 fpgaValveUFPWMStates; ///< Reg 365. Ultrafiltration Valves PWM states - U08 fpgaCPACPBFault; ///< Reg 366. Concentrate pump fault register for CPA and CPB + U08 fpgaD11_D10_PumpFault; ///< Reg 366. Concentrate pump fault register for D11_Pump and D10_Pump U08 fpgaRTDCountErrorCycles; ///< Reg 367. Count of each incomplete seq of reads from RTD ADC. - U16 fpgaCPAHallSense; ///< Reg 368. Concentrate pump CPA hall sensor pulse width - U16 fpgaCPBHallSense; ///< Reg 370. Concentrate pump CPB hall sensor pulse width + U16 fpgaD11PumpHallSense; ///< Reg 368. Concentrate pump D11_Pump hall sensor pulse width + U16 fpgaD10PumpHallSense; ///< Reg 370. Concentrate pump D10_Pump hall sensor pulse width - F32 fpgaTax1Temp; ///< Reg 372. Inlet heat exchanger temperature - F32 fpgaTH2Temp; ///< Reg 376. Inlet heat exchanger temperature - F32 fpgaTH1Temp; ///< Reg 380. Hydraulics primary heater temperature - F32 fpgaTH3Temp; ///< Reg 384. Trimmer heater temperature + U32 fpgaD1Temp; ///< Reg 372. Inlet heat exchanger temperature + U32 fpgaX6Temp; ///< Reg 376. Outlet heat exchanger temperature + U32 fpgaD4Temp; ///< Reg 380. Hydraulics primary heater temperature + U32 fpgaD50Temp; ///< Reg 384. Trimmer heater temperature U08 fpgaRTDReadCnt; ///< Reg 388. Read count for all RTD sensors U08 fpgaBaroReadCount; ///< Reg 389. Barometric sensor read count @@ -220,67 +224,69 @@ U32 fpgaBaroPressure; ///< Reg 406. Barometric sensor pressure value U32 fpgaBaroTemperature; ///< Reg 410. Barometric sensor temperature sensor - U16 fpgaDGPMeasuredSpeed; ///< Reg 414. Fresh dialysate pump measured speed - U16 fpgaSDPMeasuredSpeed; ///< Reg 416. Spent dialysate pump measured speed + U16 fpgaD12MeasuredSpeed; ///< Reg 414. Fresh dialysate pump measured speed + U16 fpgaD48MeasuredSpeed; ///< Reg 416. Spent dialysate pump measured speed U08 fpgaBaroErrorCount; ///< Reg 418. Barometric sensor Error count - U08 fpgaDGPSDPPumpStatus; ///< Reg 419. Dialysate pumps Error status - U16 fpgaDGPCurrentFeedback; ///< Reg 420. Fresh dialysate pump current feedback - U16 fpgaSDPCurrentFeedback; ///< Reg 422. Spent dialysate pump current feedback - U08 fpgaDGPHallStatus; ///< Reg 424. Fresh dialysate pump hall sensor direction status - U08 fpgaSDPHallStatus; ///< Reg 425. Spent dialysate pump hall sensor direction status - U08 fpgaFloater1Status; ///< Reg 426. Floater 1 level sensor status + U08 fpgaD12D48PumpStatus; ///< Reg 419. Dialysate pumps Error status + U16 fpgaD12CurrentFeedback; ///< Reg 420. Fresh dialysate pump current feedback + U16 fpgaD48CurrentFeedback; ///< Reg 422. Spent dialysate pump current feedback + U08 fpgaD12HallStatus; ///< Reg 424. Fresh dialysate pump hall sensor direction status + U08 fpgaD48HallStatus; ///< Reg 425. Spent dialysate pump hall sensor direction status + U08 fpgaD6FloaterStatus; ///< Reg 426. Floater 1 level sensor status U08 fpgaFloater2Status; ///< Reg 427. Floater 2 level sensor status + U16 fpgaD11PumpStepCountStatus; ///< Reg 428. Acid concentrate pump revolution down count status + U16 fpgaD10PumpStepCountStatus; ///< Reg 430. Bicarb concentrate pump revolution down count status } DD_FPGA_SENSORS_T; typedef struct { U16 fpgaValveControl; ///< Reg 04. Valve control register U16 fpgaValvePWMEnable; ///< Reg 06. Valve PWM enable - U16 fpgaVDrPWMLow; ///< Reg 08. VDr PWM low. VDo-> VDr. - U16 fpgaVDrPWMPeriod; ///< Reg 10. VDr PWM period - U16 fpgaVDrPWMPullin; ///< Reg 12. VDr PWM pull in - U16 fpgaVTDWMLow; ///< Reg 14. VTD PWM low - U16 fpgaVTDPWMPeriod; ///< Reg 16. VTD PWM period - U16 fpgaVTDPWMPullin; ///< Reg 18. VTD PWM pull in - U16 fpgaVHBPWMLow; ///< Reg 20. VHB PWM low - U16 fpgaVHBPWMPeriod; ///< Reg 22. VHB PWM period - U16 fpgaVHBPWMPullin; ///< Reg 24. VHB PWM pull in - U16 fpgaVrpPWMLow; ///< Reg 26. Vrp PWM low - U16 fpgaVrpPWMPeriod; ///< Reg 28. Vrp PWM period - U16 fpgaVrpPWMPullin; ///< Reg 30. Vrp PWM pull in + U16 fpgaD53ValvePWMLow; ///< Reg 08. D53 PWM low. (VDR) + U16 fpgaD53ValvePWMPeriod; ///< Reg 10. D53 PWM period (VDR) + U16 fpgaD53ValvePWMPullin; ///< Reg 12. D53 PWM pull in (VDR) + U16 fpgaD52ValvePWMLow; ///< Reg 14. D52 PWM low (VTD) + U16 fpgaD52ValvePWMPeriod; ///< Reg 16. D52 PWM period (VTD) + U16 fpgaD52ValvePWMPullin; ///< Reg 18. D52 PWM pull in (VTD) + U16 fpgaD8ValvePWMLow; ///< Reg 20. D8 PWM low (VHB) + U16 fpgaD8ValvePWMPeriod; ///< Reg 22. D8 PWM period (VHB) + U16 fpgaD8ValvePWMPullin; ///< Reg 24. D8 PWM pull in (VHB) + U16 fpgaD54ValvePWMLow; ///< Reg 26. D54 PWM low (VRP) + U16 fpgaD54ValvePWMPeriod; ///< Reg 28. D54 PWM period (VRP) + U16 fpgaD54ValvePWMPullin; ///< Reg 30. D54 PWM pull in (VRP) - U16 fpgaVHoPWMLow; ///< Reg 32. VHo PWM low - U16 fpgaVHoPWMPeriod; ///< Reg 34. VHo PWM period - U16 fpgaVHoPWMPullin; ///< Reg 36. VHo PWM pull in - U16 fpgaVDB1PWMLow; ///< Reg 38. VDB1 PWM low - U16 fpgaVDB1PWMPeriod; ///< Reg 40. VDB1 PWM period - U16 fpgaVDB1PWMPullin; ///< Reg 42. VDB1 PWM pull in - U16 fpgaVP1PWMLow; ///< Reg 44. VP1 PWM low - U16 fpgaVP1PWMPeriod; ///< Reg 46. VP1 PWM period - U16 fpgaVP1PWMPullin; ///< Reg 48. VP1 PWM pull in - U16 fpgaVPTPWMLow; ///< Reg 50. VPT PWM Low - U16 fpgaVPTPWMPeriod; ///< Reg 52. VPT PWM period - U16 fpgaVPTPWMPullin; ///< Reg 54. VPT PWM pull in + U16 fpgaD14ValvePWMLow; ///< Reg 32. D14 PWM low (VHo) + U16 fpgaD14ValvePWMPeriod; ///< Reg 34. D14 PWM period (VHo) + U16 fpgaD14ValvePWMPullin; ///< Reg 36. D14 PWM pull in (VHo) + U16 fpgaD65ValvePWMLow; ///< Reg 38. D65 PWM low + U16 fpgaD65ValvePWMPeriod; ///< Reg 40. D65 PWM period + U16 fpgaD65ValvePWMPullin; ///< Reg 42. D65 PWM pull in + U16 fpgaD64ValvePWMLow; ///< Reg 44. D64 PWM low ( VP1 : Bicarb purge) + U16 fpgaD64ValvePWMPeriod; ///< Reg 46. D64 PWM period + U16 fpgaD64ValvePWMPullin; ///< Reg 48. D64 PWM pull in + U16 fpgaD31ValvePWMLow; ///< Reg 50. D31 PWM Low (Pressure test) + U16 fpgaD31ValvePWMPeriod; ///< Reg 52. D31 PWM period + U16 fpgaD31ValvePWMPullin; ///< Reg 54. D31 PWM pull in - U16 fpgaVDB2PWMLow; ///< Reg 56. VDB2 PWM low - U16 fpgaVDB2PWMPeriod; ///< Reg 58. VDB2 PWM period - U16 fpgaVDB2PWMPullin; ///< Reg 60. VDB2 PWM pull in - U16 fpgaVDiPWMLow; ///< Reg 62. VDi PWM low - U16 fpgaVDiPWMPeriod; ///< Reg 64. VDi PWM period - U16 fpgaVDiPWMPullin; ///< Reg 66. VDi PWM pull in - U16 fpgaVDoPWMLow; ///< Reg 68. VDo PWM low - U16 fpgaVDoPWMPeriod; ///< Reg 70. VDo PWM period - U16 fpgaVDoPWMPullin; ///< Reg 72. VDo PWM pull in - U16 fpgaVP2PWMLow; ///< Reg 74. VP2 PWM low - U16 fpgaVP2PWMPeriod; ///< Reg 76. VP2 PWM period - U16 fpgaVP2PWMPullin; ///< Reg 78. VP2 PWM pull in - U16 fpgaVHiPWMLow; ///< Reg 80. VHi PWM low - U16 fpgaVHiPWMPeriod; ///< Reg 82. VHi PWM period - U16 fpgaVHiPWMPullin; ///< Reg 84. VHi PWM pull in - U16 fpgaVWiPWMLow; ///< Reg 86. VWi PWM low - U16 fpgaVWiPWMPeriod; ///< Reg 88. VWi PWM period - U16 fpgaVWiPWMPullin; ///< Reg 90. VWi PWM pull in + U16 fpgaD34ValvePWMLow; ///< Reg 56. D34 PWM low + U16 fpgaD34ValvePWMPeriod; ///< Reg 58. D34 PWM period + U16 fpgaD34ValvePWMPullin; ///< Reg 60. D34 PWM pull in + U16 fpgaD35ValvePWMLow; ///< Reg 62. D35 PWM low + U16 fpgaD35ValvePWMPeriod; ///< Reg 64. D35 PWM period + U16 fpgaD35ValvePWMPullin; ///< Reg 66. D35 PWM pull in + U16 fpgaD40ValvePWMLow; ///< Reg 68. D40 PWM low + U16 fpgaD40ValvePWMPeriod; ///< Reg 70. D40 PWM period + U16 fpgaD40ValvePWMPullin; ///< Reg 72. D40 PWM pull in + U16 fpgaD47ValvePWMLow; ///< Reg 74. D47 PWM low + U16 fpgaD47ValvePWMPeriod; ///< Reg 76. D47 PWM period + U16 fpgaD47ValvePWMPullin; ///< Reg 78. D47 PWM pull in + U16 fpgaD3ValvePWMLow; ///< Reg 80. D3 PWM low + U16 fpgaD3ValvePWMPeriod; ///< Reg 82. D3 PWM period + U16 fpgaD3ValvePWMPullin; ///< Reg 84. D3 PWM pull in + U16 fpgaM4ValvePWMLow; ///< Reg 86. M4 PWM low + U16 fpgaM4ValvePWMPeriod; ///< Reg 88. M4 PWM period + U16 fpgaM4ValvePWMPullin; ///< Reg 90. M4 PWM pull in U08 fpgaBCValveControl; ///< Reg 92. Balancing Chamber Valves Control Registers U08 fpgaBCValvePWMControl; ///< Reg 93. Balancing Chamber Valves PWM control @@ -296,20 +302,20 @@ U16 fpgaRemoteUpdate_Write; ///< Reg 110.Register for Remote update used by SW. - U16 fpgaDGPSpeed; ///< Reg 112. DGP Speed/RPM Control - U08 fpgaDGPControl; ///< Reg 114. DGP Control - U08 fpgaSDPControl; ///< Reg 115. SDP Control - U16 fpgaSDPSpeed; ///< Reg 116. SDP Speed/RPM Control - U16 fpgaCPASpeed; ///< Reg 118. Acid Concentrate Pump Speed/RPM Control - U08 fpgaCPAControl; ///< Reg 120. Acid Concentrate Pump Control - U08 fpgaCPBControl; ///< Reg 121. BiCarb Concentrate Pump Control - U16 fpgaCPBSpeed; ///< Reg 122. BiCarb Concentrate Pump Speed/RPM Control + U16 fpgaD12PumpSpeed; ///< Reg 112. D48 Speed/RPM Control + U08 fpgaD12PumpControl; ///< Reg 114. DGP Control + U08 fpgaD48PumpControl; ///< Reg 115. SDP Control + U16 fpgaD48PumpSpeed; ///< Reg 116. SDP Speed/RPM Control + U16 fpgaD11PumpSpeed; ///< Reg 118. Acid Concentrate Pump Speed/RPM Control + U08 fpgaD11PumpControl; ///< Reg 120. Acid Concentrate Pump Control + U08 fpgaD10PumpControl; ///< Reg 121. BiCarb Concentrate Pump Control + U16 fpgaD10PumpSpeed; ///< Reg 122. BiCarb Concentrate Pump Speed/RPM Control U08 fpgaBloodLeakSensorTest; ///< Reg 124. Blood leak sensor test U08 fpgaBloodLeakUARTControl; ///< Reg 125. Blood leak sensor UART control U08 fpgaBloodLeakFIFOTx; ///< Reg 126. Blood leak sensor FIFO transmit control - U08 fpgaPrimaryHeaterPWMControl; ///< Reg 127. Primary heater PWM control - U08 fpgaTrimmerHeaterPWMControl; ///< Reg 128. Trimmer heater PWM control + U08 fpgaD5HeaterPWMControl; ///< Reg 127. Primary heater PWM control + U08 fpgaD45HeaterPWMControl; ///< Reg 128. Trimmer heater PWM control U08 fpgaNotUsed; ///< Reg 129. Not used U16 fpgaVBCPWMLow; ///< Reg 130. VBC PWM low ( Balancing chamber valves) @@ -318,6 +324,10 @@ U16 fpgaVUFPWMLow; ///< Reg 136. VUF PWM low ( Ultra filteration valves ) U16 fpgaVUFPWMPeriod; ///< Reg 138. VUF PWM period U16 fpgaVUFPWMPullin; ///< Reg 140. VUF PWM pull in + U16 fpgaD11PumpRevCount; ///< Reg 142. Acid Concentrate pump revolution count + U16 fpgaD10PumpRevCount; ///< Reg 144. Bicarb Concentrate pump revolution count + U08 fpgaADCControl; ///< Reg 146. FPGA internal ADC Control register for debugging + U08 fpgaGPIOControl; ///< Reg 147. FPGA GPIO control interface } FPGA_ACTUATORS_T; #pragma pack(pop) @@ -359,6 +369,7 @@ fpgaActuatorSetPoints.fpgaBCValvePWMControl = FPGA_ENABLE_BC_VALVES_PWM; fpgaActuatorSetPoints.fpgaUFValveControl = FPGA_ENABLE_UF_VALVES_CONTROL; fpgaActuatorSetPoints.fpgaUFValvePWMControl = FPGA_ENABLE_UF_VALVES_PWM; + fpgaActuatorSetPoints.fpgaADCControl = FPGA_ADC_AUTO_READ_ENABLE; // initialize FPGA clock speed error time windowed count initTimeWindowedCount( TIME_WINDOWED_COUNT_FPGA_COMM_FAILURES, MAX_FPGA_COMM_FAILURES, MAX_FPGA_COMM_FAILURES_WINDOW_MS); @@ -443,20 +454,20 @@ * The setFPGAValveStates function sets the DD valve states with a 16-bit * set of states - one bit per valve, with a 1 meaning "energized" and a 0 * meaning "de-energized". The bit positions for these bit states are as follows: - * 0 - VDr/VDo.\n - * 1 - VTD.\n - * 2 - VHB.\n - * 3 - Vrp.\n - * 4 - VHo.\n - * 5 - VDB1.\n - * 6 - VP1.\n - * 7 - VPT.\n - * 8 - VDB2.\n - * 9 - VDi.\n - * 10 - VDo.\n - * 11 - VP2.\n - * 12 - VHi.\n - * 13 - VWi.\n + * 0 - D53Valve.\n + * 1 - D52Valve.\n + * 2 - D8Valve.\n + * 3 - D54Valve.\n + * 4 - D14Valve.\n + * 5 - D65Valve.\n + * 6 - D64Valve.\n + * 7 - D31Valve.\n + * 8 - D34Valve.\n + * 9 - D35Valve.\n + * 10 - D40Valve.\n + * 11 - D47Valve.\n + * 12 - D3Valve.\n + * 13 - M4Valve.\n * 14..15 - reserved or unused. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaValveControl @@ -513,35 +524,35 @@ /*********************************************************************//** * @brief - * The setFPGASpentDialysatePumpSpeed function sets the speed for the + * The setFPGAD48PumpSpeed function sets the speed for the * spent dialysate pump (SDP). * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints.fpgaSDPSpeed + * @details \b Outputs: fpgaActuatorSetPoints.fpgaD48PumpSpeed * @param speed The spent dialysate pump speed * @return none *************************************************************************/ -void setFPGASpentDialysatePumpSpeed( U16 speed ) +void setFPGAD48PumpSpeed( U16 speed ) { - fpgaActuatorSetPoints.fpgaSDPSpeed = speed; + fpgaActuatorSetPoints.fpgaD48PumpSpeed = speed; } /*********************************************************************//** * @brief - * The setFPGAFreshDialysatePumpSpeed function sets the speed for the + * The setFPGAD12PumpSpeed function sets the speed for the * fresh dialysate pump (DGP). * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints.fpgaDGPSpeed + * @details \b Outputs: fpgaActuatorSetPoints.fpgaD12PumpSpeed * @param speed The fresh dialysate pump speed * @return none *************************************************************************/ -void setFPGAFreshDialysatePumpSpeed( U16 speed ) +void setFPGAD12PumpSpeed( U16 speed ) { - fpgaActuatorSetPoints.fpgaDGPSpeed = speed; + fpgaActuatorSetPoints.fpgaD12PumpSpeed = speed; } /*********************************************************************//** * @brief - * The setFPGASpentDialysatePumpControl function sets the controls for + * The setFPGAD48PumpControl function sets the controls for * dialysate out pump (SDP). * bit 7: TBD * bit 6: TBD @@ -551,18 +562,18 @@ * bit 1-2: TBD * bit 0: Run (1), stop (0) * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints.fpgaSDPControl + * @details \b Outputs: fpgaActuatorSetPoints.fpgaD48PumpControl * @param control The dialysate out pump controls * @return none *************************************************************************/ -void setFPGASpentDialysatePumpControl( U08 control ) +void setFPGAD48PumpControl( U08 control ) { - fpgaActuatorSetPoints.fpgaSDPControl = control; + fpgaActuatorSetPoints.fpgaD48PumpControl = control; } /*********************************************************************//** * @brief - * The setFPGAFreshDialysatePumpControl function sets the controls for + * The setFPGAD12PumpControl function sets the controls for * dialysate In pump (DGP). * bit 7: TBD * bit 6: TBD @@ -572,46 +583,46 @@ * bit 1-2: TBD * bit 0: Run (1), stop (0) * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints.fpgaDGPControl + * @details \b Outputs: fpgaActuatorSetPoints.fpgaD12PumpControl * @param control The dialysate In pump controls * @return none *************************************************************************/ -void setFPGAFreshDialysatePumpControl( U08 control ) +void setFPGAD12PumpControl( U08 control ) { - fpgaActuatorSetPoints.fpgaDGPControl = control; + fpgaActuatorSetPoints.fpgaD12PumpControl = control; } /*********************************************************************//** * @brief - * The setFPGAAcidPumpSetStepSpeed function sets the step speed period for - * concentrate pump CPA. + * The setFPGAD11PumpSetStepSpeed function sets the step speed period for + * concentrate pump D11_Pump. * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints.fpgaCPASpeed + * @details \b Outputs: fpgaActuatorSetPoints.fpgaD11PumpSpeed * @param stepSpeed The concentrate pump step speed period * @return none *************************************************************************/ -void setFPGAAcidPumpSetStepSpeed( U16 stepSpeed ) +void setFPGAD11PumpSetStepSpeed( U16 stepSpeed ) { - fpgaActuatorSetPoints.fpgaCPASpeed = stepSpeed; + fpgaActuatorSetPoints.fpgaD11PumpSpeed = stepSpeed; } /*********************************************************************//** * @brief - * The setFPGABicarbSetStepSpeed function sets the step speed period for - * concentrate pump CPB. + * The setFPGAD10PumpSetStepSpeed function sets the step speed period for + * concentrate pump D10_Pump. * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints.fpgaCPBSpeed + * @details \b Outputs: fpgaActuatorSetPoints.fpgaD10PumpSpeed * @param stepSpeed The concentrate pump step speed period * @return none *************************************************************************/ -void setFPGABicarbSetStepSpeed( U16 stepSpeed ) +void setFPGAD10PumpSetStepSpeed( U16 stepSpeed ) { - fpgaActuatorSetPoints.fpgaCPBSpeed = stepSpeed; + fpgaActuatorSetPoints.fpgaD10PumpSpeed = stepSpeed; } /*********************************************************************//** * @brief - * The setFPGAAcidPumpControl function sets the DVT concentrate pump 1 + * The setFPGAD11PumpControl function sets the DVT concentrate pump 1 * (acid pump) control mode. * bit 7: Park (set in different function) * bit 6: nSleep @@ -620,19 +631,19 @@ * bit 3: Direction (1=Fwd, 0=Rev) * bit 0-2: Microstepping resolution * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints.fpgaCPAControl + * @details \b Outputs: fpgaActuatorSetPoints.fpgaD11PumpControl * @param control Concentrate pump control set * @return none *************************************************************************/ -void setFPGAAcidPumpControl( U08 control ) +void setFPGAD11PumpControl( U08 control ) { - fpgaActuatorSetPoints.fpgaCPAControl &= FPGA_CONC_PUMP_PARK_COMMAND; // preserve msb (park command bit) - fpgaActuatorSetPoints.fpgaCPAControl |= control; + fpgaActuatorSetPoints.fpgaD11PumpControl &= FPGA_CONC_PUMP_PARK_COMMAND; // preserve msb (park command bit) + fpgaActuatorSetPoints.fpgaD11PumpControl |= control; } /*********************************************************************//** * @brief - * The setFPGABicarbPumpControl function sets the DVT concentrate pump 2 + * The setFPGAD10PumpControl function sets the DVT concentrate pump 2 * (bicarb pump) control mode. * bit 7: Park (set in different function) * bit 6: nSleep @@ -641,108 +652,108 @@ * bit 3: Direction (1=Fwd, 0=Rev) * bit 0-2: Microstepping resolution * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints.fpgaCPBControl + * @details \b Outputs: fpgaActuatorSetPoints.fpgaD10PumpControl * @param control Concentrate pump control set * @return none *************************************************************************/ -void setFPGABicarbPumpControl( U08 control ) +void setFPGAD10PumpControl( U08 control ) { - fpgaActuatorSetPoints.fpgaCPBControl &= FPGA_CONC_PUMP_PARK_COMMAND; // preserve msb (park command bit) - fpgaActuatorSetPoints.fpgaCPBControl |= control; + fpgaActuatorSetPoints.fpgaD10PumpControl &= FPGA_CONC_PUMP_PARK_COMMAND; // preserve msb (park command bit) + fpgaActuatorSetPoints.fpgaD10PumpControl |= control; } /*********************************************************************//** * @brief - * The setFPGAAcidPumpParkCmd function sets the DVT concentrate pump 1 + * The setFPGAD11PumpParkCmd function sets the DVT concentrate pump 1 * (acid pump) park command bit. * bit 7: Park command bit * bit 0-6: Other pump control bits (set in different function) * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints.fpgaCPAControl + * @details \b Outputs: fpgaActuatorSetPoints.fpgaD11PumpControl * @param Park command bit set * @return none *************************************************************************/ -void setFPGAAcidPumpParkCmd( void ) +void setFPGAD11PumpParkCmd( void ) { - fpgaActuatorSetPoints.fpgaCPAControl |= FPGA_CONC_PUMP_PARK_COMMAND; // this bit must be cleared after next transmit to prevent continuous park commands + fpgaActuatorSetPoints.fpgaD11PumpControl |= FPGA_CONC_PUMP_PARK_COMMAND; // this bit must be cleared after next transmit to prevent continuous park commands } /*********************************************************************//** * @brief - * The setFPGABicarbPumpParkCmd function sets the DVT concentrate pump 2 + * The setFPGAD10PumpParkCmd function sets the DVT concentrate pump 2 * (bicarb pump) park command bit. * bit 7: Park command bit * bit 0-6: Other pump control bits (set in different function) * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints.fpgaCPBControl + * @details \b Outputs: fpgaActuatorSetPoints.fpgaD10PumpControl * @param Park command bit set * @return none *************************************************************************/ -void setFPGABicarbPumpParkCmd( void ) +void setFPGAD10PumpParkCmd( void ) { - fpgaActuatorSetPoints.fpgaCPBControl |= FPGA_CONC_PUMP_PARK_COMMAND; // this bit must be cleared after next transmit to prevent continuous park commands + fpgaActuatorSetPoints.fpgaD10PumpControl |= FPGA_CONC_PUMP_PARK_COMMAND; // this bit must be cleared after next transmit to prevent continuous park commands } /*********************************************************************//** * @brief - * The setFPGACD1Reset function resets the FPGA Conductivity - * Sensor CD1. + * The setFPGAD17CondReset function resets the FPGA Conductivity + * Sensor D17. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none * @return none *************************************************************************/ -void setFPGACD1Reset( void ) +void setFPGAD17CondReset( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD1_RESET_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD1Reset function clears the reset of FPGA Conductivity - * Sensor CD1. + * The clearFPGAD17CondReset function clears the reset of FPGA Conductivity + * Sensor D17. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none * @return none *************************************************************************/ -void clearFPGACD1Reset( void ) +void clearFPGAD17CondReset( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD1_RESET_BIT; } /*********************************************************************//** * @brief - * The setFPGACD1InitEnable function enables the FPGA Conductivity - * Sensor CD1 initialzation procedure. + * The setFPGAD17CondInitEnable function enables the FPGA Conductivity + * Sensor D17 initialzation procedure. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none * @return none *************************************************************************/ -void setFPGACD1InitEnable( void ) +void setFPGAD17CondInitEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD1_INIT_ENABLE_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD1InitEnable function clears the init process of FPGA Conductivity - * Sensor CD1. + * The clearFPGAD17CondInitEnable function clears the init process of FPGA Conductivity + * Sensor D17. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none * @return none *************************************************************************/ -void clearFPGACD1InitEnable( void ) +void clearFPGAD17CondInitEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD1_INIT_ENABLE_BIT; } /*********************************************************************//** * @brief - * The setFPGACD1WriteEnable function enables the FPGA Conductivity - * Sensor CD1 write transaction. + * The setFPGAD17CondWriteEnable function enables the FPGA Conductivity + * Sensor D17 write transaction. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none @@ -751,29 +762,29 @@ * write transaction with the sensor. * @return none *************************************************************************/ -void setFPGACD1WriteEnable( void ) +void setFPGAD17CondWriteEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD1_WR_ENABLE_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD1WriteEnable function clears the write enable of FPGA Conductivity - * Sensor CD1. + * The clearFPGAD17CondWriteEnable function clears the write enable of FPGA Conductivity + * Sensor D17. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none * @return none *************************************************************************/ -void clearFPGACD1WriteEnable( void ) +void clearFPGAD17CondWriteEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD1_WR_ENABLE_BIT; } /*********************************************************************//** * @brief - * The setFPGACD1ReadEnable function enables the FPGA Conductivity - * Sensor CD1 read transaction. + * The setFPGAD17CondReadEnable function enables the FPGA Conductivity + * Sensor D17 read transaction. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none @@ -782,85 +793,85 @@ * with the sensor. * @return none *************************************************************************/ -void setFPGACD1ReadEnable( void ) +void setFPGAD17CondReadEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD1_RD_ENABLE_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD1ReadEnable function clears the read enable of FPGA Conductivity - * Sensor CD1. + * The clearFPGAD17CondReadEnable function clears the read enable of FPGA Conductivity + * Sensor D17. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none * @return none *************************************************************************/ -void clearFPGACD1ReadEnable( void ) +void clearFPGAD17CondReadEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD1_RD_ENABLE_BIT; } /*********************************************************************//** * @brief - * The setFPGACD2Reset function resets the FPGA Conductivity - * Sensor CD2. + * The setFPGAD27CondReset function resets the FPGA Conductivity + * Sensor D27. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none * @return none *************************************************************************/ -void setFPGACD2Reset( void ) +void setFPGAD27CondReset( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD2_RESET_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD2Reset function clears the reset of FPGA Conductivity - * Sensor CD2. + * The clearFPGAD27CondReset function clears the reset of FPGA Conductivity + * Sensor D27. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none * @return none *************************************************************************/ -void clearFPGACD2Reset( void ) +void clearFPGAD27CondReset( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD2_RESET_BIT; } /*********************************************************************//** * @brief - * The setFPGACD2InitEnable function enables the FPGA Conductivity - * Sensor CD2 initialzation procedure. + * The setFPGAD27CondInitEnable function enables the FPGA Conductivity + * Sensor D27 initialzation procedure. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none * @return none *************************************************************************/ -void setFPGACD2InitEnable( void ) +void setFPGAD27CondInitEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD2_INIT_ENABLE_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD2InitEnable function clears the init process of FPGA Conductivity - * Sensor CD2. + * The clearFPGAD27CondInitEnable function clears the init process of FPGA Conductivity + * Sensor D27. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none * @return none *************************************************************************/ -void clearFPGACD2InitEnable( void ) +void clearFPGAD27CondInitEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD2_INIT_ENABLE_BIT; } /*********************************************************************//** * @brief - * The setFPGACD2WriteEnable function enables the FPGA Conductivity - * Sensor CD2 write transaction. + * The setFPGAD27CondWriteEnable function enables the FPGA Conductivity + * Sensor D27 write transaction. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none @@ -869,29 +880,29 @@ * write transaction with the sensor. * @return none *************************************************************************/ -void setFPGACD2WriteEnable( void ) +void setFPGAD27CondWriteEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD2_WR_ENABLE_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD2WriteEnable function clears the write enable of FPGA Conductivity - * Sensor CD2. + * The clearFPGAD27CondWriteEnable function clears the write enable of FPGA Conductivity + * Sensor D27. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none * @return none *************************************************************************/ -void clearFPGACD2WriteEnable( void ) +void clearFPGAD27CondWriteEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD2_WR_ENABLE_BIT; } /*********************************************************************//** * @brief - * The setFPGACD2ReadEnable function enables the FPGA Conductivity - * Sensor CD2 read transaction. + * The setFPGAD27CondReadEnable function enables the FPGA Conductivity + * Sensor D27 read transaction. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none @@ -900,85 +911,85 @@ * with the sensor. * @return none *************************************************************************/ -void setFPGACD2ReadEnable( void ) +void setFPGAD27CondReadEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD2_RD_ENABLE_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD2ReadEnable function clears the read enable of FPGA Conductivity - * Sensor CD2. + * The clearFPGAD27CondReadEnable function clears the read enable of FPGA Conductivity + * Sensor D27. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param none * @return none *************************************************************************/ -void clearFPGACD2ReadEnable( void ) +void clearFPGAD27CondReadEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD2_RD_ENABLE_BIT; } /*********************************************************************//** * @brief - * The setFPGCD3Reset function resets the FPGA Conductivity - * Sensor CD3. + * The setFPGD29CondReset function resets the FPGA Conductivity + * Sensor D29. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none * @return none *************************************************************************/ -void setFPGACD3Reset( void ) +void setFPGAD29CondReset( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD3_RESET_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD3Reset function clears the reset of FPGA Conductivity - * Sensor CD3. + * The clearFPGAD29CondReset function clears the reset of FPGA Conductivity + * Sensor D29. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none * @return none *************************************************************************/ -void clearFPGACD3Reset( void ) +void clearFPGAD29CondReset( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD3_RESET_BIT; } /*********************************************************************//** * @brief - * The setFPGACD3InitEnable function enables the FPGA Conductivity - * Sensor CD3 initialzation procedure. + * The setFPGAD29CondInitEnable function enables the FPGA Conductivity + * Sensor D29 initialzation procedure. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none * @return none *************************************************************************/ -void setFPGACD3InitEnable( void ) +void setFPGAD29CondInitEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD3_INIT_ENABLE_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD3InitEnable function clears the init process of FPGA Conductivity - * Sensor CD3. + * The clearFPGAD29CondInitEnable function clears the init process of FPGA Conductivity + * Sensor D29. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none * @return none *************************************************************************/ -void clearFPGACD3InitEnable( void ) +void clearFPGAD29CondInitEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD3_INIT_ENABLE_BIT; } /*********************************************************************//** * @brief - * The setFPGACD3WriteEnable function enables the FPGA Conductivity - * Sensor CD3 write transaction. + * The setFPGAD29CondWriteEnable function enables the FPGA Conductivity + * Sensor D29 write transaction. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none @@ -987,29 +998,29 @@ * write transaction with the sensor. * @return none *************************************************************************/ -void setFPGACD3WriteEnable( void ) +void setFPGAD29CondWriteEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD3_WR_ENABLE_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD3WriteEnable function clears the write enable of FPGA Conductivity - * Sensor CD3. + * The clearFPGAD29CondWriteEnable function clears the write enable of FPGA Conductivity + * Sensor D29. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none * @return none *************************************************************************/ -void clearFPGACD3WriteEnable( void ) +void clearFPGAD29CondWriteEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD3_WR_ENABLE_BIT; } /*********************************************************************//** * @brief - * The setFPGACD3ReadEnable function enables the FPGA Conductivity - * Sensor CD3 read transaction. + * The setFPGAD29CondReadEnable function enables the FPGA Conductivity + * Sensor D29 read transaction. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none @@ -1018,85 +1029,85 @@ * with the sensor. * @return none *************************************************************************/ -void setFPGACD3ReadEnable( void ) +void setFPGAD29CondReadEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD3_RD_ENABLE_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD3ReadEnable function clears the read enable of FPGA Conductivity - * Sensor CD3. + * The clearFPGAD29CondReadEnable function clears the read enable of FPGA Conductivity + * Sensor D29. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none * @return none *************************************************************************/ -void clearFPGACD3ReadEnable( void ) +void clearFPGAD29CondReadEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD3_RD_ENABLE_BIT; } /*********************************************************************//** * @brief - * The setFPGACD4Reset function resets the FPGA Conductivity - * Sensor CD4. + * The setFPGAD43CondReset function resets the FPGA Conductivity + * Sensor D43. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none * @return none *************************************************************************/ -void setFPGACD4Reset( void ) +void setFPGAD43CondReset( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD4_RESET_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD4Reset function clears the reset of FPGA Conductivity - * Sensor CD4. + * The clearFPGAD43CondReset function clears the reset of FPGA Conductivity + * Sensor D43. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none * @return none *************************************************************************/ -void clearFPGACD4Reset( void ) +void clearFPGAD43CondReset( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD4_RESET_BIT; } /*********************************************************************//** * @brief - * The setFPGACD4InitEnable function enables the FPGA Conductivity - * Sensor CD4 initialzation procedure. + * The setFPGAD43CondInitEnable function enables the FPGA Conductivity + * Sensor D43 initialzation procedure. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none * @return none *************************************************************************/ -void setFPGACD4InitEnable( void ) +void setFPGAD43CondInitEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD4_INIT_ENABLE_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD4InitEnable function clears the init process of FPGA Conductivity - * Sensor CD4. + * The clearFPGAD43CondInitEnable function clears the init process of FPGA Conductivity + * Sensor D43. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none * @return none *************************************************************************/ -void clearFPGACD4InitEnable( void ) +void clearFPGAD43CondInitEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD4_INIT_ENABLE_BIT; } /*********************************************************************//** * @brief - * The setFPGACD4WriteEnable function enables the FPGA Conductivity - * Sensor CD4 write transaction. + * The setFPGAD43CondWriteEnable function enables the FPGA Conductivity + * Sensor D43 write transaction. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none @@ -1105,29 +1116,29 @@ * write transaction with the sensor. * @return none *************************************************************************/ -void setFPGACD4WriteEnable( void ) +void setFPGAD43CondWriteEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD4_WR_ENABLE_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD4WriteEnable function clears the write enable of FPGA Conductivity - * Sensor CD4. + * The clearFPGAD43CondWriteEnable function clears the write enable of FPGA Conductivity + * Sensor D43. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none * @return none *************************************************************************/ -void clearFPGACD4WriteEnable( void ) +void clearFPGAD43CondWriteEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD4_WR_ENABLE_BIT; } /*********************************************************************//** * @brief - * The setFPGACD4ReadEnable function enables the FPGA Conductivity - * Sensor CD4 read transaction. + * The setFPGAD43CondReadEnable function enables the FPGA Conductivity + * Sensor D43 read transaction. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none @@ -1136,21 +1147,21 @@ * with the sensor. * @return none *************************************************************************/ -void setFPGACD4ReadEnable( void ) +void setFPGAD43CondReadEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD4_RD_ENABLE_BIT; } /*********************************************************************//** * @brief - * The clearFPGACD4ReadEnable function clears the read enable of FPGA Conductivity - * Sensor CD4. + * The clearFPGAD43CondReadEnable function clears the read enable of FPGA Conductivity + * Sensor D43. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param none * @return none *************************************************************************/ -void clearFPGACD4ReadEnable( void ) +void clearFPGAD43CondReadEnable( void ) { fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD4_RD_ENABLE_BIT; } @@ -1260,31 +1271,80 @@ * The setFPGAPrimaryHeaterPWMControl function sets the primary heater * PWM input. * @details \b Inputs: none - * @details \b Outputs: fpgaPrimaryHeaterPWMControl + * @details \b Outputs: fpgaD5HeaterPWMControl * @param control the PWM dutycycle to control the heater * @return none *************************************************************************/ void setFPGAPrimaryHeaterPWMControl( U08 control ) { - fpgaActuatorSetPoints.fpgaPrimaryHeaterPWMControl = control; + fpgaActuatorSetPoints.fpgaD5HeaterPWMControl = control; } /*********************************************************************//** * @brief * The setFPGATrimmerHeaterPWMControl function sets the trimmer heater * PWM input. * @details \b Inputs: none - * @details \b Outputs: fpgaTrimmerHeaterPWMControl + * @details \b Outputs: fpgaD45HeaterPWMControl * @param control the PWM dutycycle to control the heater * @return none *************************************************************************/ void setFPGATrimmerHeaterPWMControl( U08 control ) { - fpgaActuatorSetPoints.fpgaTrimmerHeaterPWMControl = control; + fpgaActuatorSetPoints.fpgaD45HeaterPWMControl = control; } /*********************************************************************//** * @brief + * The setFPGAD11PumpRevolutionCount function sets the Acid concentrate + * pump revolution count. + * @details \b Inputs: none + * @details \b Outputs: fpgaD11PumpRevCount + * @param count the number of revolution to be rotated for the pump. + * @return none + *************************************************************************/ +void setFPGAD11PumpRevolutionCount( U16 count ) +{ + fpgaActuatorSetPoints.fpgaD11PumpRevCount = count; +} + +/*********************************************************************//** + * @brief + * The setFPGAD10PumpRevolutionCount function sets the Bicarb concentrate + * pump revolution count. + * @details \b Inputs: none + * @details \b Outputs: fpgaD10PumpRevCount + * @param count the number of revolution to be rotated for the pump. + * @return none + *************************************************************************/ +void setFPGAD10PumpRevolutionCount( U16 count ) +{ + fpgaActuatorSetPoints.fpgaD10PumpRevCount = count; +} + +/*********************************************************************//** + * @brief + * The setFPGACPrimaryHeaterOnOffControl function sets the primary heater + * On/Off control. + * @details \b Inputs: none + * @details \b Outputs: fpgaGPIOControl + * @param flag Turn heater ON when true, otherwise not. + * @return none + *************************************************************************/ +void setFPGACPrimaryHeaterOnOffControl( BOOL flag ) +{ + if ( TRUE == flag) + { + fpgaActuatorSetPoints.fpgaGPIOControl |= FPGA_PRIMARY_HEATER_CNTRL_BIT; + } + else + { + fpgaActuatorSetPoints.fpgaGPIOControl &= ~FPGA_PRIMARY_HEATER_CNTRL_BIT; + } +} + +/*********************************************************************//** + * @brief * The getFPGAVersions function gets the FPGA version numbers. * @details \b Inputs: fpgaHeader * @details \b Outputs: none @@ -1300,7 +1360,7 @@ /*********************************************************************//** * @brief - * The getFPGASpentDialysatePumpControl function gets the status of the + * The getFPGAD48PumpControl function gets the status of the * dialysate out pump control status bits. * bit 7: TBD * bit 6: TBD @@ -1310,17 +1370,17 @@ * bit 1-2: TBD * bit 0: Run (1), stop (0) * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints.fpgaSDPControl + * @details \b Outputs: fpgaActuatorSetPoints.fpgaD48PumpControl * @return Dialysate Out pump control status bit *************************************************************************/ -U08 getFPGASpentDialysatePumpControl( void ) +U08 getFPGAD48PumpControl( void ) { - return fpgaActuatorSetPoints.fpgaSDPControl; + return fpgaActuatorSetPoints.fpgaD48PumpControl; } /*********************************************************************//** * @brief - * The getFPGAFreshDialysatePumpControl function gets the status of the + * The getFPGAD12PumpControl function gets the status of the * dialysate Inlet pump control status bits. * bit 7: TBD * bit 6: TBD @@ -1330,133 +1390,133 @@ * bit 1-2: TBD * bit 0: Run (1), stop (0) * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints.fpgaDGPControl + * @details \b Outputs: fpgaActuatorSetPoints.fpgaD12PumpControl * @return Dialysate Inlet pump control status bit *************************************************************************/ -U08 getFPGAFreshDialysatePumpControl( void ) +U08 getFPGAD12PumpControl( void ) { - return fpgaActuatorSetPoints.fpgaDGPControl; + return fpgaActuatorSetPoints.fpgaD12PumpControl; } /*********************************************************************//** * @brief - * The getFPGASpentDialysatePumpSpeed function gets the spent dialysate + * The getFPGAD48PumpSpeed function gets the spent dialysate * pump speed. * @details \b Inputs: none - * @details \b Outputs: fpgaSensorReadings.fpgaSDPMeasuredSpeed + * @details \b Outputs: fpgaSensorReadings.fpgaD48MeasuredSpeed * @return Spent dialysate pump measured speed. *************************************************************************/ -U16 getFPGASpentDialysatePumpSpeed( void ) +U16 getFPGAD48PumpSpeed( void ) { - return fpgaSensorReadings.fpgaSDPMeasuredSpeed; + return fpgaSensorReadings.fpgaD48MeasuredSpeed; } /*********************************************************************//** * @brief - * The getFPGAFreshDialysatePumpSpeed function gets the fresh dialysate + * The getFPGAD12PumpSpeed function gets the fresh dialysate * pump speed. * @details \b Inputs: none - * @details \b Outputs: fpgaSensorReadings.fpgaDGPMeasuredSpeed + * @details \b Outputs: fpgaSensorReadings.fpgaD12MeasuredSpeed * @return fresh dialysate pump measured speed. *************************************************************************/ -U16 getFPGAFreshDialysatePumpSpeed( void ) +U16 getFPGAD12PumpSpeed( void ) { - return fpgaSensorReadings.fpgaDGPMeasuredSpeed; + return fpgaSensorReadings.fpgaD12MeasuredSpeed; } /*********************************************************************//** * @brief - * The getFPGAFreshDialysatePumpErrorStatus function gets the fresh dialysate + * The getFPGAD12PumpErrorStatus function gets the fresh dialysate * pump error status. * bit 7-2: TBD * bit 1 : spent dialysate pump error (1), no error(0) * bit 0 : fresh dialysate pump error (1), no error(0) * @details \b Inputs: none - * @details \b Outputs: fpgaSensorReadings.fpgaDGPSDPPumpStatus + * @details \b Outputs: fpgaSensorReadings.fpgaD12D48PumpStatus * @return fresh dialysate pump error status. *************************************************************************/ -BOOL getFPGAFreshDialysatePumpErrorStatus( void ) +BOOL getFPGAD12PumpErrorStatus( void ) { - U08 mask = fpgaSensorReadings.fpgaDGPSDPPumpStatus & FPGA_DGP_PUMP_ERROR_BIT; + U08 mask = fpgaSensorReadings.fpgaD12D48PumpStatus & FPGA_D12_PUMP_ERROR_BIT; BOOL result = ( mask > 0 ? TRUE : FALSE ); return result; } /*********************************************************************//** * @brief - * The getFPGASpentDialysatePumpErrorStatus function gets the spent dialysate + * The getFPGAD48PumpErrorStatus function gets the spent dialysate * pump error status. * bit 7-2: TBD * bit 1 : spent dialysate pump error (1), no error(0) * bit 0 : fresh dialysate pump error (1), no error(0) * @details \b Inputs: none - * @details \b Outputs: fpgaSensorReadings.fpgaDGPSDPPumpStatus + * @details \b Outputs: fpgaSensorReadings.fpgaD12D48PumpStatus * @return spent dialysate pump error status. *************************************************************************/ -BOOL getFPGASpentDialysatePumpErrorStatus( void ) +BOOL getFPGAD48PumpErrorStatus( void ) { - U08 mask = fpgaSensorReadings.fpgaDGPSDPPumpStatus & FPGA_SDP_PUMP_ERROR_BIT; + U08 mask = fpgaSensorReadings.fpgaD12D48PumpStatus & FPGA_D48_PUMP_ERROR_BIT; BOOL result = ( mask > 0 ? TRUE : FALSE ); return result; } /*********************************************************************//** * @brief - * The getFPGAFreshDialysatePumpCurrentFeedback function gets the fresh dialysate + * The getFPGAD12PumpCurrentFeedback function gets the fresh dialysate * pump current consumption. * @details \b Inputs: none - * @details \b Outputs: fpgaSensorReadings.fpgaDGPCurrentFeedback + * @details \b Outputs: fpgaSensorReadings.fpgaD12CurrentFeedback * @return fresh dialysate pump measured current. *************************************************************************/ -U16 getFPGAFreshDialysatePumpCurrentFeedback( void ) +U16 getFPGAD12PumpCurrentFeedback( void ) { - return fpgaSensorReadings.fpgaDGPCurrentFeedback; + return fpgaSensorReadings.fpgaD12CurrentFeedback; } /*********************************************************************//** * @brief - * The getFPGASpentDialysatePumpCurrentFeedback function gets the spent dialysate + * The getFPGAD48PumpCurrentFeedback function gets the spent dialysate * pump current consumption. * @details \b Inputs: none - * @details \b Outputs: fpgaSensorReadings.fpgaSDPCurrentFeedback + * @details \b Outputs: fpgaSensorReadings.fpgaD48CurrentFeedback * @return spent dialysate pump measured current. *************************************************************************/ -U16 getFPGASpentDialysatePumpCurrentFeedback( void ) +U16 getFPGAD48PumpCurrentFeedback( void ) { - return fpgaSensorReadings.fpgaSDPCurrentFeedback; + return fpgaSensorReadings.fpgaD48CurrentFeedback; } /*********************************************************************//** * @brief - * The getFPGAFreshDialysatePumpHallDirectionStatus function gets the fresh dialysate + * The getFPGAD12PumpHallDirectionStatus function gets the fresh dialysate * pump hall sensor based direction error status. * @details \b Inputs: none - * @details \b Outputs: fpgaSensorReadings.fpgaDGPHallStatus + * @details \b Outputs: fpgaSensorReadings.fpgaD12HallStatus * @return fresh dialysate pump hall sensor based direction status. *************************************************************************/ -U08 getFPGAFreshDialysatePumpHallDirectionStatus( void ) +U08 getFPGAD12PumpHallDirectionStatus( void ) { - return fpgaSensorReadings.fpgaDGPHallStatus; + return fpgaSensorReadings.fpgaD12HallStatus; } /*********************************************************************//** * @brief - * The getFPGASpentDialysatePumpHallDirectionStatus function gets the spent dialysate + * The getFPGAD48PumpHallDirectionStatus function gets the spent dialysate * pump hall sensor based direction error status. * @details \b Inputs: none - * @details \b Outputs: fpgaSensorReadings.fpgaSDPHallStatus + * @details \b Outputs: fpgaSensorReadings.fpgaD48HallStatus * @return spent dialysate pump hall sensor based direction status. *************************************************************************/ -U08 getFPGASpentDialysatePumpHallDirectionStatus( void ) +U08 getFPGAD48PumpHallDirectionStatus( void ) { - return fpgaSensorReadings.fpgaSDPHallStatus; + return fpgaSensorReadings.fpgaD48HallStatus; } /*********************************************************************//** * @brief - * The getFPGAAcidPumpControlStatus function gets the status of the + * The getFPGAD11PumpControlStatus function gets the status of the * acid pump control status bits. * bit 7: Park (set in different function) * bit 6: nSleep @@ -1465,17 +1525,17 @@ * bit 3: Direction (1=Fwd, 0=Rev) * bit 0-2: Microstepping resolution * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints.fpgaCPAControl + * @details \b Outputs: fpgaActuatorSetPoints.fpgaD11PumpControl * @return Acid pump control status bit *************************************************************************/ -U08 getFPGAAcidPumpControlStatus( void ) +U08 getFPGAD11PumpControlStatus( void ) { - return fpgaActuatorSetPoints.fpgaCPAControl; + return fpgaActuatorSetPoints.fpgaD11PumpControl; } /*********************************************************************//** * @brief - * The getFPGABicarbPumpControlStatus function gets the DVT concentrate pump 2 + * The getFPGAD10PumpControlStatus function gets the DVT concentrate pump 2 * (bicarb pump) control mode. * bit 7: Park (set in different function) * bit 6: nSleep @@ -1484,115 +1544,115 @@ * bit 3: Direction (1=Fwd, 0=Rev) * bit 0-2: Microstepping resolution * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints.fpgaCPBControl + * @details \b Outputs: fpgaActuatorSetPoints.fpgaD10PumpControl * @return Bicarb pump control status bit *************************************************************************/ -U08 getFPGABicarbPumpControlStatus( void ) +U08 getFPGAD10PumpControlStatus( void ) { - return fpgaActuatorSetPoints.fpgaCPBControl; + return fpgaActuatorSetPoints.fpgaD10PumpControl; } /*********************************************************************//** * @brief * The getFPGAConcentratePumpsFault function gets concentrate pumps fault * reported by FGPA. - * @details \b Inputs: fpgaSensorReadings.fpgaCPACPBFault + * @details \b Inputs: fpgaSensorReadings.fpgaD11_D10_PumpFault * @details \b Outputs: none * @return Latest concentrate pumps fault value *************************************************************************/ U08 getFPGAConcentratePumpsFault( void ) { - return fpgaSensorReadings.fpgaCPACPBFault & FPGA_CONC_PUMP_FAULT_BITS; + return fpgaSensorReadings.fpgaD11_D10_PumpFault & FPGA_CONC_PUMP_FAULT_BITS; } /*********************************************************************//** * @brief - * The getFPGAAcidPumpIsParked function gets whether the acid pump is currently + * The getFPGAD11PumpIsParked function gets whether the acid pump is currently * parked. - * @details \b Inputs: fpgaSensorReadings.fpgaCPACPBFault + * @details \b Inputs: fpgaSensorReadings.fpgaD11_D10_PumpFault * @details \b Outputs: none * @return TRUE if acid pump is parked, FALSE if not *************************************************************************/ -BOOL getFPGAAcidPumpIsParked( void ) +BOOL getFPGAD11PumpIsParked( void ) { - U08 mask = fpgaSensorReadings.fpgaCPACPBFault & FPGA_CPA_PARKED_BIT; + U08 mask = fpgaSensorReadings.fpgaD11_D10_PumpFault & FPGA_D11_PUMP_PARKED_BIT; BOOL result = ( mask > 0 ? TRUE : FALSE ); return result; } /*********************************************************************//** * @brief - * The getFPGABicarbPumpIsParked function gets whether the bicarb pump is currently + * The getFPGAD10PumpIsParked function gets whether the bicarb pump is currently * parked. - * @details \b Inputs: fpgaSensorReadings.fpgaCPACPBFault + * @details \b Inputs: fpgaSensorReadings.fpgaD11_D10_PumpFault * @details \b Outputs: none * @return TRUE if bicarb pump is parked, FALSE if not *************************************************************************/ -BOOL getFPGABicarbPumpIsParked( void ) +BOOL getFPGAD10PumpIsParked( void ) { - U08 mask = fpgaSensorReadings.fpgaCPACPBFault & FPGA_CPB_PARKED_BIT; + U08 mask = fpgaSensorReadings.fpgaD11_D10_PumpFault & FPGA_D10_PUMP_PARKED_BIT; BOOL result = ( mask > 0 ? TRUE : FALSE ); return result; } /*********************************************************************//** * @brief - * The getFPGAAcidPumpParkFault function gets whether the acid pump park command + * The getFPGAD11PumpParkFault function gets whether the acid pump park command * has faulted. - * @details \b Inputs: fpgaSensorReadings.fpgaCPACPBFault + * @details \b Inputs: fpgaSensorReadings.fpgaD11_D10_PumpFault * @details \b Outputs: none * @return TRUE if acid pump park command faulted, FALSE if not *************************************************************************/ -BOOL getFPGAAcidPumpParkFault( void ) +BOOL getFPGAD11PumpParkFault( void ) { - U08 mask = fpgaSensorReadings.fpgaCPACPBFault & FPGA_CPA_PARK_FAULT_BIT; + U08 mask = fpgaSensorReadings.fpgaD11_D10_PumpFault & FPGA_D11_PUMP_PARK_FAULT_BIT; BOOL result = ( mask > 0 ? TRUE : FALSE ); return result; } /*********************************************************************//** * @brief - * The getFPGABicarbPumpParkFault function gets whether the bicarb pump park command + * The getFPGAD10PumpParkFault function gets whether the bicarb pump park command * has faulted. - * @details \b Inputs: fpgaSensorReadings.fpgaCPACPBFault + * @details \b Inputs: fpgaSensorReadings.fpgaD11_D10_PumpFault * @details \b Outputs: none * @return TRUE if bicarb pump park command faulted, FALSE if not *************************************************************************/ -BOOL getFPGABicarbPumpParkFault( void ) +BOOL getFPGAD10PumpParkFault( void ) { - U08 mask = fpgaSensorReadings.fpgaCPACPBFault & FPGA_CPB_PARK_FAULT_BIT; + U08 mask = fpgaSensorReadings.fpgaD11_D10_PumpFault & FPGA_D10_PUMP_PARK_FAULT_BIT; BOOL result = ( mask > 0 ? TRUE : FALSE ); return result; } /*********************************************************************//** * @brief - * The getFPGACPAHallSensePulseWidth function gets concentrate pump CPA + * The getFPGAD11PumpHallSensePulseWidth function gets concentrate pump D11_Pump * hall sense pulse width. - * @details \b Inputs: fpgaSensorReadings.fpgaCPAHallSense + * @details \b Inputs: fpgaSensorReadings.fpgaD11PumpHallSense * @details \b Outputs: none - * @return concentrate pump CPA hall sense pulse width + * @return concentrate pump D11_Pump hall sense pulse width *************************************************************************/ -U16 getFPGACPAHallSensePulseWidth( void ) +U16 getFPGAD11PumpHallSensePulseWidth( void ) { - return fpgaSensorReadings.fpgaCPAHallSense; + return fpgaSensorReadings.fpgaD11PumpHallSense; } /*********************************************************************//** * @brief - * The getFPGACPBHallSensePulseWidth function gets concentrate pump CPB + * The getFPGAD10PumpHallSensePulseWidth function gets concentrate pump D10_Pump * hall sense pulse width. - * @details \b Inputs: fpgaSensorReadings.fpgaCPBHallSense + * @details \b Inputs: fpgaSensorReadings.fpgaD10PumpHallSense * @details \b Outputs: none - * @return concentrate pump CPB hall sense pulse width + * @return concentrate pump D10_Pump hall sense pulse width *************************************************************************/ -U16 getFPGACPBHallSensePulseWidth( void ) +U16 getFPGAD10PumpHallSensePulseWidth( void ) { - return fpgaSensorReadings.fpgaCPBHallSense; + return fpgaSensorReadings.fpgaD10PumpHallSense; } /*********************************************************************//** @@ -1638,643 +1698,640 @@ /*********************************************************************//** * @brief - * The getFPGAPnReadCount function gets hydraulics outlet pressure sensor counter of + * The getFPGAD9PresReadCount function gets hydraulics outlet pressure sensor counter of * good SPI transmissions between FPGA and Sensor. - * @details \b Inputs: fpgaSensorReadings.fpgaPnReadCnt + * @details \b Inputs: fpgaSensorReadings.fpgaD9PresReadCnt * @details \b Outputs: none * @return Latest hydraulics outlet Pressure sensor read count *************************************************************************/ -U08 getFPGAPnReadCount( void ) +U08 getFPGAD9PresReadCount( void ) { - return fpgaSensorReadings.fpgaPnReadCnt; + return fpgaSensorReadings.fpgaD9PresReadCnt; } /*********************************************************************//** * @brief - * The getFPGAPnErrorCount function gets hydraulics outlet pressure sensor error count. - * @details \b Inputs: fpgaSensorReadings.fpgaPnErrorCnt + * The getFPGAD9PresErrorCount function gets hydraulics outlet pressure sensor error count. + * @details \b Inputs: fpgaSensorReadings.fpgaD9PresErrorCnt * @details \b Outputs: none * @return Latest hydraulics outlet pressure sensor read error count *************************************************************************/ -U08 getFPGAPnErrorCount( void ) +U08 getFPGAD9PresErrorCount( void ) { - return fpgaSensorReadings.fpgaPnErrorCnt; + return fpgaSensorReadings.fpgaD9PresErrorCnt; } /*********************************************************************//** * @brief - * The getFPGAPnRawPressure function gets hydraulics outlet pressure sensor raw + * The getFPGAD9PresRawPressure function gets hydraulics outlet pressure sensor raw * pressure value. - * @details \b Inputs: fpgaSensorReadings.fpgaPnPressure + * @details \b Inputs: fpgaSensorReadings.fpgaD9PresPressure * @details \b Outputs: none * @return Latest hydraulics outlet pressure sensor raw pressure data *************************************************************************/ -U16 getFPGAPnRawPressure( void ) +U16 getFPGAD9PresRawPressure( void ) { - return fpgaSensorReadings.fpgaPnPressure; + return fpgaSensorReadings.fpgaD9PresPressure; } /*********************************************************************//** * @brief - * The getFPGAPnRawTemperature function gets hydraulics outlet pressure sensor raw + * The getFPGAD9PresRawTemperature function gets hydraulics outlet pressure sensor raw * temperature value. - * @details \b Inputs: fpgaSensorReadings.fpgaPnTemp + * @details \b Inputs: fpgaSensorReadings.fpgaD9PresTemp * @details \b Outputs: none * @return Latest hydraulics outlet pressure sensor raw temperature data *************************************************************************/ -U16 getFPGAPnRawTemperature( void ) +U16 getFPGAD9PresRawTemperature( void ) { - return fpgaSensorReadings.fpgaPnTemp; + return fpgaSensorReadings.fpgaD9PresTemp; } /*********************************************************************//** * @brief - * The getFPGAPCbReadCount function gets Bibag pressure sensor counter of + * The getFPGAD66PresReadCount function gets Bibag pressure sensor counter of * good SPI transmissions between FPGA and Sensor. - * @details \b Inputs: fpgaSensorReadings.fpgaPCbReadCnt + * @details \b Inputs: fpgaSensorReadings.fpgaD66PresReadCnt * @details \b Outputs: none * @return Latest Bibag Pressure sensor read count *************************************************************************/ -U08 getFPGAPCbReadCount( void ) +U08 getFPGAD66PresReadCount( void ) { - return fpgaSensorReadings.fpgaPCbReadCnt; + return fpgaSensorReadings.fpgaD66PresReadCnt; } /*********************************************************************//** * @brief - * The getFPGAPCbErrorCount function gets Bibag pressure sensor error count. - * @details \b Inputs: fpgaSensorReadings.fpgaPCbErrorCnt + * The getFPGAD66PresErrorCount function gets Bibag pressure sensor error count. + * @details \b Inputs: fpgaSensorReadings.fpgaD66PresErrorCnt * @details \b Outputs: none * @return Latest Bibag pressure sensor read error count *************************************************************************/ -U08 getFPGAPCbErrorCount( void ) +U08 getFPGAD66PresErrorCount( void ) { - return fpgaSensorReadings.fpgaPCbErrorCnt; + return fpgaSensorReadings.fpgaD66PresErrorCnt; } /*********************************************************************//** * @brief - * The getFPGAPCbRawPressure function gets Bibag pressure sensor raw + * The getFPGAD66PresRawPressure function gets Bibag pressure sensor raw * pressure value. - * @details \b Inputs: fpgaSensorReadings.fpgaPCbPressure + * @details \b Inputs: fpgaSensorReadings.fpgaD66PresPressure * @details \b Outputs: none * @return Latest Bibag pressure sensor raw pressure data *************************************************************************/ -U16 getFPGAPCbRawPressure( void ) +U16 getFPGAD66PresRawPressure( void ) { - return fpgaSensorReadings.fpgaPCbPressure; + return fpgaSensorReadings.fpgaD66PresPressure; } /*********************************************************************//** * @brief - * The getFPGAPCbRawTemperature function gets Bibag pressure sensor raw + * The getFPGAD66PresRawTemperature function gets Bibag pressure sensor raw * temperature value. - * @details \b Inputs: fpgaSensorReadings.fpgaPCbTemp + * @details \b Inputs: fpgaSensorReadings.fpgaD66PresTemp * @details \b Outputs: none * @return Latest Bibag pressure sensor raw temperature data *************************************************************************/ -U16 getFPGAPCbRawTemperature( void ) +U16 getFPGAD66PresRawTemperature( void ) { - return fpgaSensorReadings.fpgaPCbTemp; + return fpgaSensorReadings.fpgaD66PresTemp; } /*********************************************************************//** * @brief - * The getFPGAPDsReadCount function gets spent dialysate pressure sensor counter of + * The getFPGAD51PresReadCount function gets spent dialysate pressure sensor counter of * good SPI transmissions between FPGA and Sensor. - * @details \b Inputs: fpgaSensorReadings.fpgaPDsReadCnt + * @details \b Inputs: fpgaSensorReadings.fpgaD51PresReadCnt * @details \b Outputs: none * @return Latest spent dialysate Pressure sensor read count *************************************************************************/ -U08 getFPGAPDsReadCount( void ) +U08 getFPGAD51PresReadCount( void ) { - return fpgaSensorReadings.fpgaPDsReadCnt; + return fpgaSensorReadings.fpgaD51PresReadCnt; } /*********************************************************************//** * @brief - * The getFPGAPDsErrorCount function gets spent dialysate pressure sensor error count. - * @details \b Inputs: fpgaSensorReadings.fpgaPDsErrorCnt + * The getFPGAD51PresErrorCount function gets spent dialysate pressure sensor error count. + * @details \b Inputs: fpgaSensorReadings.fpgaD51PresErrorCnt * @details \b Outputs: none * @return Latest spent dialysate pressure sensor read error count *************************************************************************/ -U08 getFPGAPDsErrorCount( void ) +U08 getFPGAD51PresErrorCount( void ) { - return fpgaSensorReadings.fpgaPDsErrorCnt; + return fpgaSensorReadings.fpgaD51PresErrorCnt; } /*********************************************************************//** * @brief - * The getFPGAPDsRawPressure function gets spent dialysate pressure sensor raw + * The getFPGAD51PresRawPressure function gets spent dialysate pressure sensor raw * pressure value. - * @details \b Inputs: fpgaSensorReadings.fpgaPDsPressure + * @details \b Inputs: fpgaSensorReadings.fpgaD51PresPressure * @details \b Outputs: none * @return Latest spent dialysate pressure sensor raw pressure data *************************************************************************/ -U16 getFPGAPDsRawPressure( void ) +U16 getFPGAD51PresRawPressure( void ) { - return fpgaSensorReadings.fpgaPDsPressure; + return fpgaSensorReadings.fpgaD51PresPressure; } /*********************************************************************//** * @brief - * The getFPGAPDsRawTemperature function gets spent dialysate pressure sensor raw + * The getFPGAD51PresRawTemperature function gets spent dialysate pressure sensor raw * temperature value. - * @details \b Inputs: fpgaSensorReadings.fpgaPDsTemp + * @details \b Inputs: fpgaSensorReadings.fpgaD51PresTemp * @details \b Outputs: none * @return Latest spent dialysate pressure sensor raw temperature data *************************************************************************/ -U16 getFPGAPDsRawTemperature( void ) +U16 getFPGAD51PresRawTemperature( void ) { - return fpgaSensorReadings.fpgaPDsTemp; + return fpgaSensorReadings.fpgaD51PresTemp; } /*********************************************************************//** * @brief - * The getFPGAPDfReadCount function gets fresh dialysate pressure sensor counter of + * The getFPGAD18PresReadCount function gets fresh dialysate pressure sensor counter of * good SPI transmissions between FPGA and Sensor. - * @details \b Inputs: fpgaSensorReadings.fpgaPDfReadCnt + * @details \b Inputs: fpgaSensorReadings.fpgaD18PresReadCnt * @details \b Outputs: none * @return Latest fresh dialysate Pressure sensor read count *************************************************************************/ -U08 getFPGAPDfReadCount( void ) +U08 getFPGAD18PresReadCount( void ) { - return fpgaSensorReadings.fpgaPDfReadCnt; + return fpgaSensorReadings.fpgaD18PresReadCnt; } /*********************************************************************//** * @brief - * The getFPGAPDfErrorCount function gets fresh dialysate pressure sensor error count. - * @details \b Inputs: fpgaSensorReadings.fpgaPDfErrorCnt + * The getFPGAD18PresErrorCount function gets fresh dialysate pressure sensor error count. + * @details \b Inputs: fpgaSensorReadings.fpgaD18PresErrorCnt * @details \b Outputs: none * @return Latest fresh dialysate pressure sensor read error count *************************************************************************/ -U08 getFPGAPDfErrorCount( void ) +U08 getFPGAD18PresErrorCount( void ) { - return fpgaSensorReadings.fpgaPDfErrorCnt; + return fpgaSensorReadings.fpgaD18PresErrorCnt; } /*********************************************************************//** * @brief - * The getFPGAPDfRawPressure function gets fresh dialysate pressure sensor raw + * The getFPGAD18PresRawPressure function gets fresh dialysate pressure sensor raw * pressure value. - * @details \b Inputs: fpgaSensorReadings.fpgaPDfPressure + * @details \b Inputs: fpgaSensorReadings.fpgaD18PresPressure * @details \b Outputs: none * @return Latest fresh dialysate pressure sensor raw pressure data *************************************************************************/ -U16 getFPGAPDfRawPressure( void ) +U16 getFPGAD18PresRawPressure( void ) { - return fpgaSensorReadings.fpgaPDfPressure; + return fpgaSensorReadings.fpgaD18PresPressure; } /*********************************************************************//** * @brief - * The getFPGAPDfRawTemperature function gets fresh dialysate pressure sensor raw + * The getFPGAD18PresRawTemperature function gets fresh dialysate pressure sensor raw * temperature value. - * @details \b Inputs: fpgaSensorReadings.fpgaPDfTemp + * @details \b Inputs: fpgaSensorReadings.fpgaD18PresTemp * @details \b Outputs: none * @return Latest fresh dialysate pressure sensor raw temperature data *************************************************************************/ -U16 getFPGAPDfRawTemperature( void ) +U16 getFPGAD18PresRawTemperature( void ) { - return fpgaSensorReadings.fpgaPDfTemp; + return fpgaSensorReadings.fpgaD18PresTemp; } /*********************************************************************//** * @brief - * The getFPGAPtmReadCount function gets transmembrane pressure sensor counter of + * The getFPGAD41PresReadCount function gets transmembrane pressure sensor counter of * good SPI transmissions between FPGA and Sensor. - * @details \b Inputs: fpgaSensorReadings.fpgaPtmReadCnt + * @details \b Inputs: fpgaSensorReadings.fpgaD41PresReadCnt * @details \b Outputs: none * @return Latest transmembrane Pressure sensor read count *************************************************************************/ -U08 getFPGAPtmReadCount( void ) +U08 getFPGAD41PresReadCount( void ) { - return fpgaSensorReadings.fpgaPtmReadCnt; + return fpgaSensorReadings.fpgaD41PresReadCnt; } /*********************************************************************//** * @brief - * The getFPGAPtmErrorCount function gets transmembrane pressure sensor error count. - * @details \b Inputs: fpgaSensorReadings.fpgaPtmErrorCnt + * The getFPGAD41PresErrorCount function gets transmembrane pressure sensor error count. + * @details \b Inputs: fpgaSensorReadings.fpgaD41PresErrorCnt * @details \b Outputs: none * @return Latest transmembrane pressure sensor read error count *************************************************************************/ -U08 getFPGAPtmErrorCount( void ) +U08 getFPGAD41PresErrorCount( void ) { - return fpgaSensorReadings.fpgaPtmErrorCnt; + return fpgaSensorReadings.fpgaD41PresErrorCnt; } /*********************************************************************//** * @brief - * The getFPGAPtmRawPressure function gets transmembrane pressure sensor raw + * The getFPGAD41PresRawPressure function gets transmembrane pressure sensor raw * pressure value. - * @details \b Inputs: fpgaSensorReadings.fpgaPtmPressure + * @details \b Inputs: fpgaSensorReadings.fpgaD41PresPressure * @details \b Outputs: none * @return Latest transmembrane pressure sensor raw pressure data *************************************************************************/ -U16 getFPGAPtmRawPressure( void ) +U16 getFPGAD41PresRawPressure( void ) { - return fpgaSensorReadings.fpgaPtmPressure; + return fpgaSensorReadings.fpgaD41PresPressure; } /*********************************************************************//** * @brief - * The getFPGAPtmRawTemperature function gets transmembrane pressure sensor raw + * The getFPGAD41PresRawTemperature function gets transmembrane pressure sensor raw * temperature value. - * @details \b Inputs: fpgaSensorReadings.fpgaPtmTemp + * @details \b Inputs: fpgaSensorReadings.fpgaD41PresTemp * @details \b Outputs: none * @return Latest transmembrane pressure sensor raw temperature data *************************************************************************/ -U16 getFPGAPtmRawTemperature( void ) +U16 getFPGAD41PresRawTemperature( void ) { - return fpgaSensorReadings.fpgaPtmTemp; + return fpgaSensorReadings.fpgaD41PresTemp; } /*********************************************************************//** * @brief - * The getFPGAPRiRawPressure function gets water inlet input pressure sensor + * The getFPGAM1PresRawPressure function gets water inlet input pressure sensor * raw pressure value. - * @details \b Inputs: fpgaSensorReadings.fpgaPRiPressure + * @details \b Inputs: fpgaSensorReadings.fpgaM1PresPressure * @details \b Outputs: none * @return Latest water inlet input pressure sensor raw pressure data *************************************************************************/ -U16 getFPGAPRiRawPressure( void ) +U16 getFPGAM1PresRawPressure( void ) { - return fpgaSensorReadings.fpgaPRiPressure; + return fpgaSensorReadings.fpgaM1PresPressure; } /*********************************************************************//** * @brief - * The getFPGAPRiRawTemperature function gets water inlet input pressure sensor + * The getFPGAM1RawTemperature function gets water inlet input pressure sensor * raw temperature value. - * @details \b Inputs: fpgaSensorReadings.fpgaPRiTemp + * @details \b Inputs: fpgaSensorReadings.fpgaM1PresTemp * @details \b Outputs: none * @return Latest water inlet input pressure sensor raw temperature data *************************************************************************/ -U16 getFPGAPRiRawTemperature( void ) +U16 getFPGAM1PresRawTemperature( void ) { - return fpgaSensorReadings.fpgaPRiTemp; + return fpgaSensorReadings.fpgaM1PresTemp; } /*********************************************************************//** * @brief - * The getFPGAPRiReadCount function gets water inlet input pressure sensor + * The getFPGAM1PresReadCount function gets water inlet input pressure sensor * counter of good SPI transmissions between FPGA and Sensor. - * @details \b Inputs: fpgaSensorReadings.fpgaPRiReadCnt + * @details \b Inputs: fpgaSensorReadings.fpgaM1PresReadCnt * @details \b Outputs: none * @return Latest water inlet input pressure sensor read count *************************************************************************/ -U08 getFPGAPRiReadCount( void ) +U08 getFPGAM1PresReadCount( void ) { - return fpgaSensorReadings.fpgaPRiReadCnt; + return fpgaSensorReadings.fpgaM1PresReadCnt; } /*********************************************************************//** * @brief - * The getFPGAPRiErrorCount function gets water inlet input pressure + * The getFPGAM1PresErrorCount function gets water inlet input pressure * sensor error count. - * @details \b Inputs: fpgaSensorReadings.fpgaPRiErrorCnt + * @details \b Inputs: fpgaSensorReadings.fpgaM1PresErrorCnt * @details \b Outputs: none * @return Latest water inlet input pressure sensor read error count *************************************************************************/ -U08 getFPGAPRiErrorCount( void ) +U08 getFPGAM1PresErrorCount( void ) { - return fpgaSensorReadings.fpgaPRiErrorCnt; + return fpgaSensorReadings.fpgaM1PresErrorCnt; } /*********************************************************************//** * @brief - * The getFPGAPRoRawPressure function gets water inlet output pressure sensor + * The getFPGAM3PresRawPressure function gets water inlet output pressure sensor * raw pressure value. - * @details \b Inputs: fpgaSensorReadings.fpgaPRoPressure + * @details \b Inputs: fpgaSensorReadings.fpgaM3PresPressure * @details \b Outputs: none * @return Latest water inlet output pressure sensor raw pressure data *************************************************************************/ -U16 getFPGAPRoRawPressure( void ) +U16 getFPGAM3PresRawPressure( void ) { - return fpgaSensorReadings.fpgaPRoPressure; + return fpgaSensorReadings.fpgaM3PresPressure; } /*********************************************************************//** * @brief - * The getFPGAPRoRawTemperature function gets water inlet output pressure sensor + * The getFPGAM3PresRawTemperature function gets water inlet output pressure sensor * raw temperature value. - * @details \b Inputs: fpgaSensorReadings.fpgaPRoTemp + * @details \b Inputs: fpgaSensorReadings.fpgaM3PresTemp * @details \b Outputs: none * @return Latest water inlet output pressure sensor raw temperature data *************************************************************************/ -U16 getFPGAPRoRawTemperature( void ) +U16 getFPGAM3PresRawTemperature( void ) { - return fpgaSensorReadings.fpgaPRoTemp; + return fpgaSensorReadings.fpgaM3PresTemp; } /*********************************************************************//** * @brief - * The getFPGAPRoReadCount function gets water inlet output pressure sensor + * The getFPGAM3PresReadCount function gets water inlet output pressure sensor * counter of good SPI transmissions between FPGA and Sensor. - * @details \b Inputs: fpgaSensorReadings.fpgaPRoReadCnt + * @details \b Inputs: fpgaSensorReadings.fpgaM3PresReadCnt * @details \b Outputs: none * @return Latest water inlet output pressure sensor read count *************************************************************************/ -U08 getFPGAPRoReadCount( void ) +U08 getFPGAM3PresReadCount( void ) { - return fpgaSensorReadings.fpgaPRoReadCnt; + return fpgaSensorReadings.fpgaM3PresReadCnt; } /*********************************************************************//** * @brief - * The getFPGAPRoErrorCount function gets water inlet output pressure + * The getFPGAM3PresErrorCount function gets water inlet output pressure * sensor error count. - * @details \b Inputs: fpgaSensorReadings.fpgaPRoErrorCnt + * @details \b Inputs: fpgaSensorReadings.fpgaM3PresErrorCnt * @details \b Outputs: none * @return Latest water inlet output pressure sensor read error count *************************************************************************/ -U08 getFPGAPRoErrorCount( void ) +U08 getFPGAM3PresErrorCount( void ) { - return fpgaSensorReadings.fpgaPRoErrorCnt; + return fpgaSensorReadings.fpgaM3PresErrorCnt; } /*********************************************************************//** * @brief - * The getFPGACD1ReadCount function gets CD1 conductivity sensor read count. - * @details \b Inputs: fpgaSensorReadings.fpgaCD1ReadCnt + * The getFPGACD1ReadCount function gets D17 conductivity sensor read count. + * @details \b Inputs: fpgaSensorReadings.fpgaD17CondReadCnt * @details \b Outputs: none - * @return Latest CD1 conductivity sensor read count + * @return Latest D17 conductivity sensor read count *************************************************************************/ -U08 getFPGACD1ReadCount( void ) +U08 getFPGAD17CondReadCount( void ) { - return fpgaSensorReadings.fpgaCD1ReadCnt; + return fpgaSensorReadings.fpgaD17CondReadCnt; } /*********************************************************************//** * @brief - * The getFPGACD1ErrorCount function gets CD1 conductivity sensor error count. - * @details \b Inputs: fpgaSensorReadings.fpgaCD1ErrorCnt + * The getFPGAD17CondErrorCount function gets D17 conductivity sensor error count. + * @details \b Inputs: fpgaSensorReadings.fpgaD17CondErrorCnt * @details \b Outputs: none - * @return Latest CD1 conductivity sensor read error count + * @return Latest D17 conductivity sensor read error count *************************************************************************/ -U08 getFPGACD1ErrorCount( void ) +U08 getFPGAD17CondErrorCount( void ) { - return fpgaSensorReadings.fpgaCD1ErrorCnt; + return fpgaSensorReadings.fpgaD17CondErrorCnt; } /*********************************************************************//** * @brief - * The getFPGACD1 function gets CD1 conductivity sensor value. + * The getFPGAD17Cond function gets D17 conductivity sensor value. * @details \b Inputs: fpgaSensorReadings.fpgaCD1 * @details \b Outputs: none - * @return Latest CD1 conductivity sensor value + * @return Latest D17 conductivity sensor value *************************************************************************/ -U16 getFPGACD1( void ) +U16 getFPGAD17Cond( void ) { - return fpgaSensorReadings.fpgaCD1Cond; + return fpgaSensorReadings.fpgaD17CondCond; } /*********************************************************************//** * @brief - * The getFPGACD1Temp function gets CD1 conductivity sensor temperature value. + * The getFPGAD17CondTemp function gets D17 conductivity sensor temperature value. * @details \b Inputs: fpgaSensorReadings.fpgaCD1Temp * @details \b Outputs: none - * @return Latest CD1 conductivity sensor temperature value + * @return Latest D17 conductivity sensor temperature value *************************************************************************/ -U16 getFPGACD1Temp( void ) +U16 getFPGAD17CondTemp( void ) { - return fpgaSensorReadings.fpgaCD1Temp; + return fpgaSensorReadings.fpgaD17CondTemp; } /*********************************************************************//** * @brief - * The getFPGACD1Data function gets CD1 conductivity sensor register value. - * @details \b Inputs: fpgaSensorReadings.fpgaCD1DataOut + * The getFPGAD17CondData function gets D17 conductivity sensor register value. + * @details \b Inputs: fpgaSensorReadings.fpgaD17CondDataOut * @details \b Outputs: none - * @return Latest CD1 conductivity sensor register data value + * @return Latest D17 conductivity sensor register data value *************************************************************************/ -U32 getFPGACD1Data( void ) +U32 getFPGAD17CondData( void ) { - return fpgaSensorReadings.fpgaCD1DataOut; + return fpgaSensorReadings.fpgaD17CondDataOut; } /*********************************************************************//** * @brief - * The getFPGACD2ReadCount function gets CD2 conductivity sensor read count. - * @details \b Inputs: fpgaSensorReadings.fpgaCD2ReadCnt + * The getFPGAD27CondReadCount function gets D27 conductivity sensor read count. + * @details \b Inputs: fpgaSensorReadings.fpgaD27CondReadCnt * @details \b Outputs: none - * @return Latest CD2 conductivity sensor read count + * @return Latest D27 conductivity sensor read count *************************************************************************/ -U08 getFPGACD2ReadCount( void ) +U08 getFPGAD27CondReadCount( void ) { - return fpgaSensorReadings.fpgaCD2ReadCnt; + return fpgaSensorReadings.fpgaD27CondReadCnt; } /*********************************************************************//** * @brief - * The getFPGACD2ErrorCount function gets CD2 conductivity sensor error count. - * @details \b Inputs: fpgaSensorReadings.fpgaCD2ErrorCnt + * The getFPGAD27CondErrorCount function gets D27 conductivity sensor error count. + * @details \b Inputs: fpgaSensorReadings.fpgaD27CondErrorCnt * @details \b Outputs: none - * @return Latest CD2 conductivity sensor read error count + * @return Latest D27 conductivity sensor read error count *************************************************************************/ -U08 getFPGACD2ErrorCount( void ) +U08 getFPGAD27CondErrorCount( void ) { - return fpgaSensorReadings.fpgaCD2ErrorCnt; + return fpgaSensorReadings.fpgaD27CondErrorCnt; } /*********************************************************************//** * @brief - * The getFPGACD2 function gets CD2 conductivity sensor value. - * @details \b Inputs: fpgaSensorReadings.fpgaCD2 + * The getFPGAD27Cond function gets D27 conductivity sensor value. + * @details \b Inputs: fpgaSensorReadings.fpgaD27Cond * @details \b Outputs: none - * @return Latest CD2 conductivity sensor value + * @return Latest D27 conductivity sensor value *************************************************************************/ -U16 getFPGACD2( void ) +U16 getFPGAD27Cond( void ) { - return fpgaSensorReadings.fpgaCD2Cond; + return fpgaSensorReadings.fpgaD27CondCond; } /*********************************************************************//** * @brief - * The getFPGACD2Temp function gets CD2 conductivity sensor temperature value. - * @details \b Inputs: fpgaSensorReadings.fpgaCD2Temp + * The getFPGAD27CondTemp function gets D27 conductivity sensor temperature value. + * @details \b Inputs: fpgaSensorReadings.fpgaD27CondTemp * @details \b Outputs: none - * @return Latest CD2 conductivity sensor temperature value + * @return Latest D27 conductivity sensor temperature value *************************************************************************/ -U16 getFPGACD2Temp( void ) +U16 getFPGAD27CondTemp( void ) { - return fpgaSensorReadings.fpgaCD2Temp; + return fpgaSensorReadings.fpgaD27CondTemp; } /*********************************************************************//** * @brief - * The getFPGACD2Data function gets CD2 conductivity sensor register value. - * @details \b Inputs: fpgaSensorReadings.fpgaCD2DataOut + * The getFPGAD27CondData function gets D27 conductivity sensor register value. + * @details \b Inputs: fpgaSensorReadings.fpgaD27CondDataOut * @details \b Outputs: none - * @return Latest CD2 conductivity sensor register data value + * @return Latest D27 conductivity sensor register data value *************************************************************************/ -U32 getFPGACD2Data( void ) +U32 getFPGAD27CondData( void ) { - return fpgaSensorReadings.fpgaCD2DataOut; + return fpgaSensorReadings.fpgaD27CondDataOut; } /*********************************************************************//** * @brief - * The getFPGACD3ReadCount function gets CD3 conductivity sensor read count. - * @details \b Inputs: fpgaSensorReadings.fpgaCD3ReadCnt + * The getFPGAD29CondReadCount function gets D29 conductivity sensor read count. + * @details \b Inputs: fpgaSensorReadings.fpgaD29CondReadCnt * @details \b Outputs: none - * @return Latest CD3 conductivity sensor read count + * @return Latest D29 conductivity sensor read count *************************************************************************/ -U08 getFPGACD3ReadCount( void ) +U08 getFPGAD29CondReadCount( void ) { - return fpgaSensorReadings.fpgaCD3ReadCnt; + return fpgaSensorReadings.fpgaD29CondReadCnt; } /*********************************************************************//** * @brief - * The getFPGACD3ErrorCount function gets CD3 conductivity sensor error count. - * @details \b Inputs: fpgaSensorReadings.fpgaCD3ErrorCnt + * The getFPGAD29CondErrorCount function gets D29 conductivity sensor error count. + * @details \b Inputs: fpgaSensorReadings.fpgaD29CondErrorCnt * @details \b Outputs: none - * @return Latest CD3 conductivity sensor read error count + * @return Latest D29 conductivity sensor read error count *************************************************************************/ -U08 getFPGACD3ErrorCount( void ) +U08 getFPGAD29CondErrorCount( void ) { - return fpgaSensorReadings.fpgaCD3ErrorCnt; + return fpgaSensorReadings.fpgaD29CondErrorCnt; } /*********************************************************************//** * @brief - * The getFPGACD3 function gets CD3 conductivity sensor value. - * @details \b Inputs: fpgaSensorReadings.fpgaCD3 + * The getFPGAD29Cond function gets D29 conductivity sensor value. + * @details \b Inputs: fpgaSensorReadings.fpgaD29Cond * @details \b Outputs: none - * @return Latest CD3 conductivity sensor value + * @return Latest D29 conductivity sensor value *************************************************************************/ -U16 getFPGACD3( void ) +U16 getFPGAD29Cond( void ) { - return fpgaSensorReadings.fpgaCD3Cond; + return fpgaSensorReadings.fpgaD29CondCond; } /*********************************************************************//** * @brief - * The getFPGACD3Temp function gets CD3 conductivity sensor temperature value. - * @details \b Inputs: fpgaSensorReadings.fpgaCD3Temp + * The getFPGAD29CondTemp function gets D29 conductivity sensor temperature value. + * @details \b Inputs: fpgaSensorReadings.fpgaD29CondTemp * @details \b Outputs: none - * @return Latest CD3 conductivity sensor temperature value + * @return Latest D29 conductivity sensor temperature value *************************************************************************/ -U16 getFPGACD3Temp( void ) +U16 getFPGAD29CondTemp( void ) { - return fpgaSensorReadings.fpgaCD3Temp; + return fpgaSensorReadings.fpgaD29CondTemp; } /*********************************************************************//** * @brief - * The getFPGACD3Data function gets CD3 conductivity sensor register value. - * @details \b Inputs: fpgaSensorReadings.fpgaCD3DataOut + * The getFPGAD29CondData function gets D29 conductivity sensor register value. + * @details \b Inputs: fpgaSensorReadings.fpgaD29CondDataOut * @details \b Outputs: none - * @return Latest CD3 conductivity sensor register data value + * @return Latest D29 conductivity sensor register data value *************************************************************************/ -U32 getFPGACD3Data( void ) +U32 getFPGAD29CondData( void ) { - return fpgaSensorReadings.fpgaCD3DataOut; + return fpgaSensorReadings.fpgaD29CondDataOut; } /*********************************************************************//** * @brief - * The getFPGACD4ReadCount function gets CD4 conductivity sensor read count. - * @details \b Inputs: fpgaSensorReadings.fpgaCD4ReadCnt + * The getFPGAD43CondReadCount function gets D43 conductivity sensor read count. + * @details \b Inputs: fpgaSensorReadings.fpgaD43CondReadCnt * @details \b Outputs: none - * @return Latest CD4 conductivity sensor read count + * @return Latest D43 conductivity sensor read count *************************************************************************/ -U08 getFPGACD4ReadCount( void ) +U08 getFPGAD43CondReadCount( void ) { - return fpgaSensorReadings.fpgaCD4ReadCnt; + return fpgaSensorReadings.fpgaD43CondReadCnt; } /*********************************************************************//** * @brief - * The getFPGACD4ErrorCount function gets CD4 conductivity sensor error count. - * @details \b Inputs: fpgaSensorReadings.fpgaCD4ErrorCnt + * The getFPGAD43CondErrorCount function gets D43 conductivity sensor error count. + * @details \b Inputs: fpgaSensorReadings.fpgaD43CondErrorCnt * @details \b Outputs: none - * @return Latest CD4 conductivity sensor read error count + * @return Latest D43 conductivity sensor read error count *************************************************************************/ -U08 getFPGACD4ErrorCount( void ) +U08 getFPGAD43CondErrorCount( void ) { - return fpgaSensorReadings.fpgaCD4ErrorCnt; + return fpgaSensorReadings.fpgaD43CondErrorCnt; } /*********************************************************************//** * @brief - * The getFPGACD4 function gets CD4 conductivity sensor value. - * @details \b Inputs: fpgaSensorReadings.fpgaCD4 + * The getFPGAD43Cond function gets D43 conductivity sensor value. + * @details \b Inputs: fpgaSensorReadings.fpgaD43Cond * @details \b Outputs: none - * @return Latest CD4 conductivity sensor value + * @return Latest D43 conductivity sensor value *************************************************************************/ -U16 getFPGACD4( void ) +U16 getFPGAD43Cond( void ) { - return fpgaSensorReadings.fpgaCD4Cond; + return fpgaSensorReadings.fpgaD43CondCond; } /*********************************************************************//** * @brief - * The getFPGACD4Temp function gets CD4 conductivity sensor temperature value. - * @details \b Inputs: fpgaSensorReadings.fpgaCD4Temp + * The getFPGAD43CondTemp function gets D43 conductivity sensor temperature value. + * @details \b Inputs: fpgaSensorReadings.fpgaD43CondTemp * @details \b Outputs: none - * @return Latest CD4 conductivity sensor temperature value + * @return Latest D43 conductivity sensor temperature value *************************************************************************/ -U16 getFPGACD4Temp( void ) +U16 getFPGAD43CondTemp( void ) { - return fpgaSensorReadings.fpgaCD4Temp; + return fpgaSensorReadings.fpgaD43CondTemp; } /*********************************************************************//** * @brief - * The getFPGACD4Data function gets CD4 conductivity sensor register value. - * @details \b Inputs: fpgaSensorReadings.fpgaCD4DataOut + * The getFPGAD43CondData function gets D43 conductivity sensor register value. + * @details \b Inputs: fpgaSensorReadings.fpgaD43CondDataOut * @details \b Outputs: none - * @return Latest CD4 conductivity sensor register data value + * @return Latest D43 conductivity sensor register data value *************************************************************************/ -U32 getFPGACD4Data( void ) +U32 getFPGAD43CondData( void ) { - return fpgaSensorReadings.fpgaCD4DataOut; + return fpgaSensorReadings.fpgaD43CondDataOut; } /*********************************************************************//** * @brief - * The getFPGALevelSensor1 function gets the latest FPGA level sensor 1 + * The getFPGAD63LevelSensor function gets the latest FPGA D63 level sensor * reading. - * @details \b Inputs: fpgaSensorReadings.fpgaLevelSensor1 + * @details \b Inputs: fpgaSensorReadings.fpgaD63LevelSensor * @details \b Outputs: none - * @return last FPGA level sensor1 reading + * @return last FPGA D63 level sensor reading *************************************************************************/ -U16 getFPGALevelSensor1( void ) +U16 getFPGAD63LevelSensor( void ) { - return fpgaSensorReadings.fpgaLevelSensor1; + return fpgaSensorReadings.fpgaD63LevelSensor; } /*********************************************************************//** * @brief - * The getFPGALevelSensor2 function gets the latest FPGA level sensor 2 + * The getFPGAD46LevelSensor function gets the latest FPGA level sensor 2 * reading. - * @details \b Inputs: fpgaSensorReadings.fpgaLevelSensor2 + * @details \b Inputs: fpgaSensorReadings.fpgaD46LevelSensor * @details \b Outputs: none * @return last FPGA level sensor2 reading *************************************************************************/ -U16 getFPGALevelSensor2( void ) +U16 getFPGAD46LevelSensor( void ) { - return fpgaSensorReadings.fpgaLevelSensor2; + return fpgaSensorReadings.fpgaD46LevelSensor; } /*********************************************************************//** * @brief - * The getFPGAFloater1Status function gets the latest FPGA floater 1 level + * The getFPGAD6LevelStatus function gets the latest FPGA floater D6 level * reading. - * @details \b Inputs: fpgaSensorReadings.fpgaFloater1Status + * @details \b Inputs: fpgaSensorReadings.fpgaD6FloaterStatus * @details \b Outputs: none - * @return last FPGA floater 1 level reading + * @return last FPGA floater D6 level reading *************************************************************************/ -BOOL getFPGAFloater1Status( void ) +U08 getFPGAD6LevelStatus( void ) { - U08 mask = fpgaSensorReadings.fpgaFloater1Status & FPGA_FLOATER_LEVEL_BIT; - BOOL result = ( mask > 0 ? FALSE : TRUE ); - - return result; + return ( fpgaSensorReadings.fpgaD6FloaterStatus & FPGA_FLOATER_LEVEL_BIT ); } /*********************************************************************//** @@ -2304,53 +2361,53 @@ /*********************************************************************//** * @brief - * The getFPGAInletHeatExchangerTemp function gets the inlet heat exchanger + * The getFPGAD1Temp function gets the inlet heat exchanger * temperature. * @details \b Inputs: fpgaSensorReadings * @details \b Outputs: none * @return inlet heat exchanger temperature *************************************************************************/ -U32 getFPGAInletHeatExchangerTemp( void ) +U32 getFPGAD1Temp( void ) { - return fpgaSensorReadings.fpgaTax1Temp; + return fpgaSensorReadings.fpgaD1Temp; } /*********************************************************************//** * @brief - * The getFPGAOutletHeatExchangerTemp function gets the outlet heat exchanger + * The getFPGAX6Temp function gets the outlet heat exchanger * temperature. * @details \b Inputs: fpgaSensorReadings * @details \b Outputs: none * @return outlet heat exchanger temperature *************************************************************************/ -U32 getFPGAOutletHeatExchangerTemp( void ) +U32 getFPGAX6Temp( void ) { - return fpgaSensorReadings.fpgaTH2Temp; + return fpgaSensorReadings.fpgaX6Temp; } /*********************************************************************//** * @brief - * The getFPGAHydraulicsPrimaryHeaterTemp function gets the hydraulics primary + * The getFPGAD4Temp function gets the hydraulics primary * heater temperature. * @details \b Inputs: fpgaSensorReadings * @details \b Outputs: none * @return hydraulics primary heater temperature *************************************************************************/ -U32 getFPGAHydraulicsPrimaryHeaterTemp( void ) +U32 getFPGAD4Temp( void ) { - return fpgaSensorReadings.fpgaTH1Temp; + return fpgaSensorReadings.fpgaD4Temp; } /*********************************************************************//** * @brief - * The getFPGATrimmerHeaterTemp function gets the trimmer heater temperature. + * The getFPGAD50Temp function gets the trimmer heater temperature. * @details \b Inputs: fpgaSensorReadings * @details \b Outputs: none * @return trimmer heater temperature *************************************************************************/ -U32 getFPGATrimmerHeaterTemp( void ) +U32 getFPGAD50Temp( void ) { - return fpgaSensorReadings.fpgaTH3Temp; + return fpgaSensorReadings.fpgaD50Temp; } /*********************************************************************//** @@ -2555,6 +2612,32 @@ /*********************************************************************//** * @brief + * The getFPGAD11PumpRevolutionCountStatus function gets the current revolution of + * acid concentrate pump (down counter). + * @details \b Inputs: fpgaD11PumpStepCountStatus + * @details \b Outputs: none + * @return the current revolution of the acid concentrate pump + *************************************************************************/ +U16 getFPGAD11PumpRevolutionCountStatus( void ) +{ + return fpgaSensorReadings.fpgaD11PumpStepCountStatus; +} + +/*********************************************************************//** + * @brief + * The getFPGAD10PumpRevolutionCountStatus function gets the current revolution of + * bicarb concentrate pump (down counter). + * @details \b Inputs: fpgaD10PumpStepCountStatus + * @details \b Outputs: none + * @return the current revolution of the bicarb concentrate pump + *************************************************************************/ +U16 getFPGAD10PumpRevolutionCountStatus( void ) +{ + return fpgaSensorReadings.fpgaD10PumpStepCountStatus; +} + +/*********************************************************************//** + * @brief * The checkFPGAAFEOEFailure function increments the FPGA comm failure * windowed timer if an FE or OE error has occurred and returns whether * or not the number of failures in Index: firmware/App/Services/FpgaDD.h =================================================================== diff -u -r9102c5da21a15bdaf4bb3bc38795ceb064e3c443 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Services/FpgaDD.h (.../FpgaDD.h) (revision 9102c5da21a15bdaf4bb3bc38795ceb064e3c443) +++ firmware/App/Services/FpgaDD.h (.../FpgaDD.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -59,147 +59,151 @@ void setFPGACD12Data( U32 data ); void setFPGACD34Data( U32 data ); -void setFPGACD1Reset( void ); -void clearFPGACD1Reset( void ); -void setFPGACD1InitEnable( void ); -void clearFPGACD1InitEnable( void ); -void setFPGACD1WriteEnable( void ); -void clearFPGACD1WriteEnable( void ); -void setFPGACD1ReadEnable( void ); -void clearFPGACD1ReadEnable( void ); +void setFPGAD17CondReset( void ); +void clearFPGAD17CondReset( void ); +void setFPGAD17CondInitEnable( void ); +void clearFPGAD17CondInitEnable( void ); +void setFPGAD17CondWriteEnable( void ); +void clearFPGAD17CondWriteEnable( void ); +void setFPGAD17CondReadEnable( void ); +void clearFPGAD17CondReadEnable( void ); -void setFPGACD2Reset( void ); -void clearFPGACD2Reset( void ); -void setFPGACD2InitEnable( void ); -void clearFPGACD2InitEnable( void ); -void setFPGACD2WriteEnable( void ); -void clearFPGACD2WriteEnable( void ); -void setFPGACD2ReadEnable( void ); -void clearFPGACD2ReadEnable( void ); +void setFPGAD27CondReset( void ); +void clearFPGAD27CondReset( void ); +void setFPGAD27CondInitEnable( void ); +void clearFPGAD27CondInitEnable( void ); +void setFPGAD27CondWriteEnable( void ); +void clearFPGAD27CondWriteEnable( void ); +void setFPGAD27CondReadEnable( void ); +void clearFPGAD27CondReadEnable( void ); -void setFPGACD3Reset( void ); -void clearFPGACD3Reset( void ); -void setFPGACD3InitEnable( void ); -void clearFPGACD3InitEnable( void ); -void setFPGACD3WriteEnable( void ); -void clearFPGACD3WriteEnable( void ); -void setFPGACD3ReadEnable( void ); -void clearFPGACD3ReadEnable( void ); +void setFPGAD29CondReset( void ); +void clearFPGAD29CondReset( void ); +void setFPGAD29CondInitEnable( void ); +void clearFPGAD29CondInitEnable( void ); +void setFPGAD29CondWriteEnable( void ); +void clearFPGAD29CondWriteEnable( void ); +void setFPGAD29CondReadEnable( void ); +void clearFPGAD29CondReadEnable( void ); -void setFPGACD4Reset( void ); -void clearFPGACD4Reset( void ); -void setFPGACD4InitEnable( void ); -void clearFPGACD4InitEnable( void ); -void setFPGACD4WriteEnable( void ); -void clearFPGACD4WriteEnable( void ); -void setFPGACD4ReadEnable( void ); -void clearFPGACD4ReadEnable( void ); +void setFPGAD43CondReset( void ); +void clearFPGAD43CondReset( void ); +void setFPGAD43CondInitEnable( void ); +void clearFPGAD43CondInitEnable( void ); +void setFPGAD43CondWriteEnable( void ); +void clearFPGAD43CondWriteEnable( void ); +void setFPGAD43CondReadEnable( void ); +void clearFPGAD43CondReadEnable( void ); -U08 getFPGACD1ReadCount( void ); -U08 getFPGACD1ErrorCount( void ); -U16 getFPGACD1( void ); -U16 getFPGACD1Temp( void ); -U32 getFPGACD1Data( void ); +U08 getFPGAD17CondReadCount( void ); +U08 getFPGAD17CondErrorCount( void ); +U16 getFPGAD17Cond( void ); +U16 getFPGAD17CondTemp( void ); +U32 getFPGAD17CondData( void ); -U08 getFPGACD2ReadCount( void ); -U08 getFPGACD2ErrorCount( void ); -U16 getFPGACD2( void ); -U16 getFPGACD2Temp( void ); -U32 getFPGACD2Data( void ); +U08 getFPGAD27CondReadCount( void ); +U08 getFPGAD27CondErrorCount( void ); +U16 getFPGAD27Cond( void ); +U16 getFPGAD27CondTemp( void ); +U32 getFPGAD27CondData( void ); -U08 getFPGACD3ReadCount( void ); -U08 getFPGACD3ErrorCount( void ); -U16 getFPGACD3( void ); -U16 getFPGACD3Temp( void ); -U32 getFPGACD3Data( void ); +U08 getFPGAD29CondReadCount( void ); +U08 getFPGAD29CondErrorCount( void ); +U16 getFPGAD29Cond( void ); +U16 getFPGAD29CondTemp( void ); +U32 getFPGAD29CondData( void ); -U08 getFPGACD4ReadCount( void ); -U08 getFPGACD4ErrorCount( void ); -U16 getFPGACD4( void ); -U16 getFPGACD4Temp( void ); -U32 getFPGACD4Data( void ); +U08 getFPGAD43CondReadCount( void ); +U08 getFPGAD43CondErrorCount( void ); +U16 getFPGAD43Cond( void ); +U16 getFPGAD43CondTemp( void ); +U32 getFPGAD43CondData( void ); // Pumps (Concentrate and Gear pumps ) -void setFPGAAcidPumpSetStepSpeed( U16 stepSpeed ); -void setFPGABicarbSetStepSpeed( U16 stepSpeed ); -void setFPGAAcidPumpControl( U08 control ); -void setFPGABicarbPumpControl( U08 control ); -void setFPGAAcidPumpParkCmd( void ); -void setFPGABicarbPumpParkCmd( void ); +void setFPGAD11PumpSetStepSpeed( U16 stepSpeed ); +void setFPGAD10PumpSetStepSpeed( U16 stepSpeed ); +void setFPGAD11PumpControl( U08 control ); +void setFPGAD10PumpControl( U08 control ); +void setFPGAD11PumpParkCmd( void ); +void setFPGAD10PumpParkCmd( void ); +void setFPGAD11PumpRevolutionCount( U16 count ); +void setFPGAD10PumpRevolutionCount( U16 count ); -U08 getFPGAAcidPumpControlStatus( void ); -U08 getFPGABicarbPumpControlStatus( void ); +U08 getFPGAD11PumpControlStatus( void ); +U08 getFPGAD10PumpControlStatus( void ); U08 getFPGAConcentratePumpsFault( void ); -BOOL getFPGAAcidPumpIsParked( void ); -BOOL getFPGABicarbPumpIsParked( void ); -BOOL getFPGAAcidPumpParkFault( void ); -BOOL getFPGABicarbPumpParkFault( void ); -U16 getFPGACPAHallSensePulseWidth( void ); -U16 getFPGACPBHallSensePulseWidth( void ); +BOOL getFPGAD11PumpIsParked( void ); +BOOL getFPGAD10PumpIsParked( void ); +BOOL getFPGAD11PumpParkFault( void ); +BOOL getFPGAD10PumpParkFault( void ); +U16 getFPGAD11PumpHallSensePulseWidth( void ); +U16 getFPGAD10PumpHallSensePulseWidth( void ); +U16 getFPGAD11PumpRevolutionCountStatus( void ); +U16 getFPGAD10PumpRevolutionCountStatus( void ); -void setFPGASpentDialysatePumpSpeed( U16 speed ); -void setFPGAFreshDialysatePumpSpeed( U16 speed ); -void setFPGASpentDialysatePumpControl( U08 control ); -void setFPGAFreshDialysatePumpControl( U08 control ); +void setFPGAD48PumpSpeed( U16 speed ); +void setFPGAD12PumpSpeed( U16 speed ); +void setFPGAD48PumpControl( U08 control ); +void setFPGAD12PumpControl( U08 control ); -U08 getFPGASpentDialysatePumpControl( void ); -U08 getFPGAFreshDialysatePumpControl( void ); -U16 getFPGASpentDialysatePumpSpeed( void ); -U16 getFPGAFreshDialysatePumpSpeed( void ); -BOOL getFPGAFreshDialysatePumpErrorStatus( void ); -BOOL getFPGASpentDialysatePumpErrorStatus( void ); -U16 getFPGAFreshDialysatePumpCurrentFeedback( void ); -U16 getFPGASpentDialysatePumpCurrentFeedback( void ); -U08 getFPGAFreshDialysatePumpHallDirectionStatus( void ); -U08 getFPGASpentDialysatePumpHallDirectionStatus( void ); +U08 getFPGAD48PumpControl( void ); +U08 getFPGAD12PumpControl( void ); +U16 getFPGAD48PumpSpeed( void ); +U16 getFPGAD12PumpSpeed( void ); +BOOL getFPGAD12PumpErrorStatus( void ); +BOOL getFPGAD48PumpErrorStatus( void ); +U16 getFPGAD12PumpCurrentFeedback( void ); +U16 getFPGAD48PumpCurrentFeedback( void ); +U08 getFPGAD12PumpHallDirectionStatus( void ); +U08 getFPGAD48PumpHallDirectionStatus( void ); //Pressure sensor -U08 getFPGAPnReadCount( void ); -U08 getFPGAPnErrorCount( void ); -U16 getFPGAPnRawPressure( void ); -U16 getFPGAPnRawTemperature( void ); +U08 getFPGAD9PresReadCount( void ); +U08 getFPGAD9PresErrorCount( void ); +U16 getFPGAD9PresRawPressure( void ); +U16 getFPGAD9PresRawTemperature( void ); -U08 getFPGAPCbReadCount( void ); -U08 getFPGAPCbErrorCount( void ); -U16 getFPGAPCbRawPressure( void ); -U16 getFPGAPCbRawTemperature( void ); +U08 getFPGAD66PresReadCount( void ); +U08 getFPGAD66PresErrorCount( void ); +U16 getFPGAD66PresRawPressure( void ); +U16 getFPGAD66PresRawTemperature( void ); -U08 getFPGAPDsReadCount( void ); -U08 getFPGAPDsErrorCount( void ); -U16 getFPGAPDsRawPressure( void ); -U16 getFPGAPDsRawTemperature( void ); +U08 getFPGAD51PresReadCount( void ); +U08 getFPGAD51PresErrorCount( void ); +U16 getFPGAD51PresRawPressure( void ); +U16 getFPGAD51PresRawTemperature( void ); -U08 getFPGAPDfReadCount( void ); -U08 getFPGAPDfErrorCount( void ); -U16 getFPGAPDfRawPressure( void ); -U16 getFPGAPDfRawTemperature( void ); +U08 getFPGAD18PresReadCount( void ); +U08 getFPGAD18PresErrorCount( void ); +U16 getFPGAD18PresRawPressure( void ); +U16 getFPGAD18PresRawTemperature( void ); -U08 getFPGAPtmReadCount( void ); -U08 getFPGAPtmErrorCount( void ); -U16 getFPGAPtmRawPressure( void ); -U16 getFPGAPtmRawTemperature( void ); +U08 getFPGAD41PresReadCount( void ); +U08 getFPGAD41PresErrorCount( void ); +U16 getFPGAD41PresRawPressure( void ); +U16 getFPGAD41PresRawTemperature( void ); -U08 getFPGAPRiReadCount( void ); -U08 getFPGAPRiErrorCount( void ); -U16 getFPGAPRiRawPressure( void ); -U16 getFPGAPRiRawTemperature( void ); +U08 getFPGAM1PresReadCount( void ); +U08 getFPGAM1PresErrorCount( void ); +U16 getFPGAM1PresRawPressure( void ); +U16 getFPGAM1PresRawTemperature( void ); -U08 getFPGAPRoReadCount( void ); -U08 getFPGAPRoErrorCount( void ); -U16 getFPGAPRoRawPressure( void ); -U16 getFPGAPRoRawTemperature( void ); +U08 getFPGAM3PresReadCount( void ); +U08 getFPGAM3PresErrorCount( void ); +U16 getFPGAM3PresRawPressure( void ); +U16 getFPGAM3PresRawTemperature( void ); //Level sensor -U16 getFPGALevelSensor1( void ); -U16 getFPGALevelSensor2( void ); -BOOL getFPGAFloater1Status( void ); +U16 getFPGAD63LevelSensor( void ); +U16 getFPGAD46LevelSensor( void ); +BOOL getFPGAD6LevelStatus( void ); U08 getFPGAFloater2Status( void ); //Temperature sensors -U32 getFPGAInletHeatExchangerTemp( void ); -U32 getFPGAOutletHeatExchangerTemp( void ); -U32 getFPGAHydraulicsPrimaryHeaterTemp( void ); -U32 getFPGATrimmerHeaterTemp( void ); +U32 getFPGAD1Temp( void ); +U32 getFPGAX6Temp( void ); +U32 getFPGAD4Temp( void ); +U32 getFPGAD50Temp( void ); U08 getFPGARTDReadCount( void ); U08 getFPGARTDCountErrorCycles( void ); @@ -220,6 +224,7 @@ //Primary and Trimmer heater void setFPGAPrimaryHeaterPWMControl( U08 control ); void setFPGATrimmerHeaterPWMControl( U08 control ); +void setFPGACPrimaryHeaterOnOffControl( BOOL flag ); /**@}*/ Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r9102c5da21a15bdaf4bb3bc38795ceb064e3c443 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 9102c5da21a15bdaf4bb3bc38795ceb064e3c443) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -31,6 +31,9 @@ #include "ModeGenDialysate.h" #include "OperationModes.h" #include "PAL.h" +#ifdef __PUMPTEST__ +#include "PistonPumpControl.h" +#endif #include "Pressure.h" #include "SystemCommDD.h" #include "Temperature.h" @@ -82,7 +85,7 @@ /// Message handling function lookup table static const U16 MSG_FUNCTION_HANDLER_LOOKUP[] = { - MSG_ID_TESTER_LOGIN_REQUEST, + MSG_ID_DD_TESTER_LOGIN_REQUEST, MSG_ID_DD_SOFTWARE_RESET_REQUEST, MSG_ID_TD_OP_MODE_DATA, MSG_ID_DD_VALVE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, @@ -132,6 +135,17 @@ MSG_ID_DD_VALVES_OPEN_CLOSE_STATE_OVERRIDE_REQUEST, MSG_ID_DD_GEN_DIALYSATE_REQUEST_DATA, MSD_ID_DD_RO_COMMUNICATION_STATUS_OVERRIDE_REQUEST, //50 + MSG_ID_DD_BAL_CHAMBER_DATA_PUBLISH_OVERRIDE_REQUEST, + MSG_ID_DD_BAL_CHAMBER_SWITCH_FREQ_OVERRIDE_REQUEST, + MSG_ID_DD_DIAL_DELIVERY_IN_PROGRESS_OVERRIDE_REQUEST, + MSG_ID_DD_DIAL_DELIVERY_GOOD_TO_DELIVER_OVERRIDE_REQUEST, + MSG_ID_DD_HEATERS_TARGET_TEMPERATURE_OVERRIDE_REQUEST, //55 + MSG_ID_DD_BC_VALVE_STATES_OVERRIDE_REQUEST, +#ifdef __PUMPTEST__ + MSG_ID_DD_PISTON_PUMP_DATA_PUBLISH_OVERRIDE_REQUEST, + MSG_ID_DD_PISTON_PUMP_START_STOP_OVERRIDE_REQUEST, +#endif + MSG_ID_DD_BC_SWITCH_ONLY_START_STOP_OVERRIDE_REQUEST, }; /// Message handling function table @@ -186,6 +200,17 @@ &testValveOpenCloseStateOverride, &handleDialysateDeliveryRequestMsg, &testROCommunicationStatusOverride, //50 + &testDDBalChamberDataPublishIntervalOverride, + &testBalChamberSwFreqOverride, + &testDialDeliveryInProgressOverride, + &testDialGoodToDeliverStatusOverride, + &testHeaterTargetTemperatureOverride, //55 + &testBCValveStatesOverride, +#ifdef __PUMPTEST__ + &testDDPistonPumpControlDataPublishIntervalOverride, + &testDDPistonPumpStartStopOverride, +#endif + &testBCSwitchOnlyStartStopOverride, }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLERS) / sizeof(MsgFuncPtr)) @@ -197,95 +222,95 @@ static volatile U16 nextSeqNo = 1; ///< Next sequence number. /// List of message IDs that are requested not to be transmitted. //static BLOCKED_MSGS_DATA_T blockedMessagesForXmit = { 0, 0, 0, 0, 0, 0, 0, 0 }; - -// ********** private function prototypes ********** - -static BOOL sendTestAckResponseMsg( MSG_ID_T msgID, BOOL ack ); - -/*********************************************************************//** - * @brief - * The serializeMessage function serializes a given message into a given - * array of bytes. A sequence # is added to the message here and the ACK - * bit of the sequence # is set if ACK is required per parameter. A sync byte - * is inserted at the beginning of the message and an 8-bit CRC is appended to - * the end of the message. The message is queued for transmission in the given buffer. - * @details \b Inputs: none + +// ********** private function prototypes ********** + +static BOOL sendTestAckResponseMsg( MSG_ID_T msgID, BOOL ack ); + +/*********************************************************************//** + * @brief + * The serializeMessage function serializes a given message into a given + * array of bytes. A sequence # is added to the message here and the ACK + * bit of the sequence # is set if ACK is required per parameter. A sync byte + * is inserted at the beginning of the message and an 8-bit CRC is appended to + * the end of the message. The message is queued for transmission in the given buffer. + * @details \b Inputs: none * @details \b Outputs: given data array populated with serialized message data and * queued for transmit. - * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT when pending ACK list is full. - * @param msg message to serialize - * @param buffer outgoing buffer that message should be queued in - * @param ackReq is an acknowledgement from receiver required? - * @return size (in bytes) of serialized message populated in given data array. - *************************************************************************/ -U32 serializeMessage( MESSAGE_T msg, COMM_BUFFER_T buffer, BOOL ackReq ) -{ - BOOL result = FALSE; - BOOL error = FALSE; - U32 msgSize = 0; - U32 sizeMod, sizePad; - U32 i; - U08 crc; - U08 data[ MAX_ACK_MSG_SIZE ]; // byte array to populate with message data - - // prefix data with message sync byte - data[ msgSize++ ] = MESSAGE_SYNC_BYTE; - - // set sequence # and ACK bit (unless this is an ACK to a received message) - if ( msg.hdr.msgID != MSG_ID_ACK_MESSAGE_THAT_REQUIRES_ACK ) - { - // thread protect next sequence # access & increment - _disable_IRQ(); - msg.hdr.seqNo = nextSeqNo; - nextSeqNo = INC_WRAP( nextSeqNo, MIN_MSG_SEQ_NO, MAX_MSG_SEQ_NO ); - _enable_IRQ(); - if ( TRUE == ackReq ) - { - msg.hdr.seqNo *= -1; - } - } - - // calculate message CRC - crc = crc8( (U08*)(&msg), sizeof( MESSAGE_HEADER_T ) + msg.hdr.payloadLen ); - - // serialize message header data - memcpy( &data[ msgSize ], &( msg.hdr ), sizeof( MESSAGE_HEADER_T ) ); - msgSize += sizeof( MESSAGE_HEADER_T ); - - // serialize message payload (only used bytes per payloadLen field) - memcpy( &data[ msgSize ], &( msg.payload ), msg.hdr.payloadLen ); - msgSize += msg.hdr.payloadLen; - - // add 8-bit CRC - data[ msgSize++ ] = crc; - - // pad with zero bytes to get length a multiple of CAN_FRAME_PAYLOAD_SIZE (8) - sizeMod = msgSize % CAN_FRAME_PAYLOAD_SIZE; - sizePad = ( sizeMod == 0 ? 0 : CAN_FRAME_PAYLOAD_SIZE - sizeMod ); - for ( i = 0; i < sizePad; i++ ) - { - data[ msgSize++ ] = 0; - } - - // if ACK required, add to pending ACK list - if ( TRUE == ackReq ) - { - if ( FALSE == addMsgToPendingACKList( &msg, buffer, data, msgSize ) ) - { - error = TRUE; - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_MSG_PENDING_ACK_LIST_FULL ) - } - } - - if ( FALSE == error ) - { - // add serialized message data to appropriate out-going comm buffer - result = addToCommBuffer( buffer, data, msgSize ); - } - - return result; -} + * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT when pending ACK list is full. + * @param msg message to serialize + * @param buffer outgoing buffer that message should be queued in + * @param ackReq is an acknowledgement from receiver required? + * @return size (in bytes) of serialized message populated in given data array. + *************************************************************************/ +U32 serializeMessage( MESSAGE_T msg, COMM_BUFFER_T buffer, BOOL ackReq ) +{ + BOOL result = FALSE; + BOOL error = FALSE; + U32 msgSize = 0; + U32 sizeMod, sizePad; + U32 i; + U08 crc; + U08 data[ MAX_ACK_MSG_SIZE ]; // byte array to populate with message data + // prefix data with message sync byte + data[ msgSize++ ] = MESSAGE_SYNC_BYTE; + + // set sequence # and ACK bit (unless this is an ACK to a received message) + if ( msg.hdr.msgID != MSG_ID_ACK_MESSAGE_THAT_REQUIRES_ACK ) + { + // thread protect next sequence # access & increment + _disable_IRQ(); + msg.hdr.seqNo = nextSeqNo; + nextSeqNo = INC_WRAP( nextSeqNo, MIN_MSG_SEQ_NO, MAX_MSG_SEQ_NO ); + _enable_IRQ(); + if ( TRUE == ackReq ) + { + msg.hdr.seqNo *= -1; + } + } + + // calculate message CRC + crc = crc8( (U08*)(&msg), sizeof( MESSAGE_HEADER_T ) + msg.hdr.payloadLen ); + + // serialize message header data + memcpy( &data[ msgSize ], &( msg.hdr ), sizeof( MESSAGE_HEADER_T ) ); + msgSize += sizeof( MESSAGE_HEADER_T ); + + // serialize message payload (only used bytes per payloadLen field) + memcpy( &data[ msgSize ], &( msg.payload ), msg.hdr.payloadLen ); + msgSize += msg.hdr.payloadLen; + + // add 8-bit CRC + data[ msgSize++ ] = crc; + + // pad with zero bytes to get length a multiple of CAN_FRAME_PAYLOAD_SIZE (8) + sizeMod = msgSize % CAN_FRAME_PAYLOAD_SIZE; + sizePad = ( sizeMod == 0 ? 0 : CAN_FRAME_PAYLOAD_SIZE - sizeMod ); + for ( i = 0; i < sizePad; i++ ) + { + data[ msgSize++ ] = 0; + } + + // if ACK required, add to pending ACK list + if ( TRUE == ackReq ) + { + if ( FALSE == addMsgToPendingACKList( &msg, buffer, data, msgSize ) ) + { + error = TRUE; + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_MSG_PENDING_ACK_LIST_FULL ) + } + } + + if ( FALSE == error ) + { + // add serialized message data to appropriate out-going comm buffer + result = addToCommBuffer( buffer, data, msgSize ); + } + + return result; +} + /*********************************************************************//** * @brief * The sendACKMsg function constructs and queues for transmit an ACK message @@ -672,8 +697,6 @@ { testerLoggedIn = FALSE; } - // respond to would be tester - sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, testerLoggedIn ); return testerLoggedIn; } Index: firmware/App/Services/TDInterface.c =================================================================== diff -u -rbce6e6d1cfb6e8a0b186419416460ead3a44e5e1 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Services/TDInterface.c (.../TDInterface.c) (revision bce6e6d1cfb6e8a0b186419416460ead3a44e5e1) +++ firmware/App/Services/TDInterface.c (.../TDInterface.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -35,7 +35,6 @@ // ********** private definitions ********** #define TD_DATA_FRESHNESS_TIMEOUT_MS ( 3 * MS_PER_SECOND ) ///< TD data freshness timeout (in ms). -#define TD_MAX_DIALYSIS_FLOW_RATE ( 600.0F ) ///< TD Max dialysis flow rate // ********** private data ********** @@ -67,7 +66,7 @@ // Initialize unit variables tdCurrentOpMode = MODE_INIT; tdSubMode = 0; - tdDialysateFlowrate = TD_MAX_DIALYSIS_FLOW_RATE; // Will update later based on the TD value + tdDialysateFlowrate = MAX_DIALYSIS_FLOW_RATE; // Will update later based on the TD value tdUFRate = 0.0F; tdTargetDialysateTemp = 0.0F; tdDialyzerBypass = FALSE; Index: firmware/App/Services/TDInterface.h =================================================================== diff -u -rbce6e6d1cfb6e8a0b186419416460ead3a44e5e1 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Services/TDInterface.h (.../TDInterface.h) (revision bce6e6d1cfb6e8a0b186419416460ead3a44e5e1) +++ firmware/App/Services/TDInterface.h (.../TDInterface.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -33,8 +33,9 @@ // ********** public definitions ********** +#define MIN_DIALYSIS_FLOW_RATE ( 100.0F ) ///< TD minimum dialysis flow rate +#define MAX_DIALYSIS_FLOW_RATE ( 600.0F ) ///< TD Max dialysis flow rate - // ********** public function prototypes ********** void initTDInterface( void ); Index: firmware/App/Tasks/TaskGeneral.c =================================================================== diff -u -r9102c5da21a15bdaf4bb3bc38795ceb064e3c443 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 9102c5da21a15bdaf4bb3bc38795ceb064e3c443) +++ firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -14,18 +14,21 @@ * @date (original) 05-Aug-2024 * ***************************************************************************/ - -#include "gio.h" -#include "lin.h" +#include "gio.h" +#include "lin.h" + #include "ConcentratePumps.h" #include "DialysatePumps.h" #include "Heaters.h" #include "Messaging.h" -#include "OperationModes.h" -#include "SystemCommDD.h" +#include "OperationModes.h" +#ifdef __PUMPTEST__ +#include "PistonPumpControl.h" +#endif +#include "SystemCommDD.h" #include "TaskGeneral.h" -#include "WatchdogMgmt.h" +#include "WatchdogMgmt.h" /** * @addtogroup TaskGeneral @@ -38,18 +41,18 @@ #define SET_TASK_ON() { mibspiREG3->PC3 |= TASK_TIMING_TEST_PIN_SPI1_PORT_MASK; } #define SET_TASK_OFF() { mibspiREG3->PC3 &= ~TASK_TIMING_TEST_PIN_SPI1_PORT_MASK; } #endif - -/*********************************************************************//** - * @brief - * The taskGeneral function handles the scheduled general task interrupt. - * Calls the executive functions for most monitors and controllers, the - * operation modes, the system communications, and alarms. - * @details \b Inputs: none - * @details \b Outputs: Executed all general task functions. + +/*********************************************************************//** + * @brief + * The taskGeneral function handles the scheduled general task interrupt. + * Calls the executive functions for most monitors and controllers, the + * operation modes, the system communications, and alarms. + * @details \b Inputs: none + * @details \b Outputs: Executed all general task functions. * @return none - * @note This task runs every 50 ms interval. - *************************************************************************/ -void taskGeneral( void ) + * @note This task runs every 50 ms interval. + *************************************************************************/ +void taskGeneral( void ) { /* Order of exec functions * 1. Comm Rx @@ -58,55 +61,60 @@ * 4. Controllers * 5. Comm Tx * */ - + #ifdef TASK_TIMING_OUTPUT_ENABLED // SET_TASK_ON(); // TODO - uncomment and define TASK_TIMING_OUTPUT_ENABLED to monitor this tasks timing #endif - // check in with watchdog manager - checkInWithWatchdogMgmt( TASK_GENERAL ); // do this first to keep timing consistent with watchdog management - - // manage data received from other sub-systems + // check in with watchdog manager + checkInWithWatchdogMgmt( TASK_GENERAL ); // do this first to keep timing consistent with watchdog management + + // manage data received from other sub-systems execSystemCommRx(); //TODO : Enable later Concentratepump and Heaters // monitor concentrate pumps - //execConcentratePumpMonitor(); + execConcentratePumpMonitor(); // Monitor DD voltages ///execVoltagesMonitor(); // run operation mode state machine execOperationModes(); - // manage dialysate pump + // manage dialysate pump execDialysatePumpController(); // manage concentrate pumps - //execConcentratePumpController(); + execConcentratePumpController(); +#ifdef __PUMPTEST__ + // manage piston pumps + execPistonPumpController(); +#endif + // Manage switches monitor //execSwitches(); - + // Heaters controller - //execHeatersControl(); + execHeatersControl(); // Monitor RAM error status //execRAMMonitor(); // Run non-volatile data management state machine that sends the data record // to Dialin - //execNVDataMgmtProcessRecord(); + //execNVDataMgmtProcessRecord(); - // Run alarm management + // Run alarm management execAlarmMgmt(); - // manage data to be transmitted to other sub-systems - execSystemCommTx(); - + // manage data to be transmitted to other sub-systems + execSystemCommTx(); + #ifdef TASK_TIMING_OUTPUT_ENABLED // SET_TASK_OFF(); // TODO - uncomment and define TASK_TIMING_OUTPUT_ENABLED to monitor this tasks timing #endif -} +} /**@}*/ Index: firmware/App/Tasks/TaskPriority.c =================================================================== diff -u -r9102c5da21a15bdaf4bb3bc38795ceb064e3c443 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Tasks/TaskPriority.c (.../TaskPriority.c) (revision 9102c5da21a15bdaf4bb3bc38795ceb064e3c443) +++ firmware/App/Tasks/TaskPriority.c (.../TaskPriority.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -15,20 +15,20 @@ * ***************************************************************************/ -#include "gio.h" - +#include "gio.h" + #include "Conductivity.h" -#include "DialysatePumps.h" -#include "FPGA.h" -#include "Heaters.h" +#include "DialysatePumps.h" +#include "FPGA.h" +#include "Heaters.h" #include "InternalADC.h" #include "Level.h" #include "ModeGenDialysate.h" -#include "Pressure.h" -#include "TaskPriority.h" -#include "Temperature.h" -#include "Valves.h" -#include "WatchdogMgmt.h" +#include "Pressure.h" +#include "TaskPriority.h" +#include "Temperature.h" +#include "Valves.h" +#include "WatchdogMgmt.h" /** * @addtogroup TaskPriority @@ -42,65 +42,65 @@ #define SET_TASK_OFF() { mibspiREG3->PC3 &= ~TASK_TIMING_TEST_PIN_SPI1_PORT_MASK; } #endif -/*********************************************************************//** - * @brief - * The taskPriority function handles the scheduled priority task interrupt. - * Calls the executive functions for FPGA, pumps, valves, and buttons. - * @details \b Inputs: none +/*********************************************************************//** + * @brief + * The taskPriority function handles the scheduled priority task interrupt. + * Calls the executive functions for FPGA, pumps, valves, and buttons. + * @details \b Inputs: none * @details \b Outputs: Executive for the FPGA, pumps, valves, and buttons called. - * @note This task runs every 10 ms interval. - *************************************************************************/ -void taskPriority( void ) -{ + * @note This task runs every 10 ms interval. + *************************************************************************/ +void taskPriority( void ) +{ #ifdef TASK_TIMING_OUTPUT_ENABLED // SET_TASK_ON(); // TODO - uncomment and define TASK_TIMING_OUTPUT_ENABLED to monitor this tasks timing #endif #ifndef BOARD_WITH_NO_HARDWARE - // First pass for FPGA + // First pass for FPGA execFPGA( TRUE ); - //TODO : Enable later Temperature, Conductivity, Heaters, Internal ADC and FPGA clock speed - // Monitor internal ADC channels + //TODO : Enable later Temperature, Conductivity, Heaters, Internal ADC and FPGA clock speed + // Monitor internal ADC channels //execInternalADC(); //Monitor Level sensor - execLevels(); - - // Monitor pressures - execPressureSensor(); + execLevels(); - // Monitor temperatures - //execTemperatureSensors(); + // Monitor pressures + execPressureSensor(); + // Monitor temperatures + execTemperatureSensors(); + // Verify the processor clock speed against the FPGA clock //execFPGAClockSpeedTest(); // Read/write Conductivity sensors //execConductivity(); - - // Control valves - execValves(); - // Monitor dialysate pump - execDialysatePumpMonitor(); - - // Heaters monitor - //execHeatersMonitor(); + // Control valves + execValves(); + // Monitor dialysate pump + execDialysatePumpMonitor(); + + // Heaters monitor + execHeatersMonitor(); + // Dialysate generation monitor execGenDialysateMonitor(); - // Second pass for FPGA + // Second pass for FPGA execFPGA( FALSE ); -#endif - - // Check in with watchdog manager - checkInWithWatchdogMgmt( TASK_PRIORITY ); - +#endif + + // Check in with watchdog manager + checkInWithWatchdogMgmt( TASK_PRIORITY ); + #ifdef TASK_TIMING_OUTPUT_ENABLED // SET_TASK_OFF(); // TODO - uncomment and define TASK_TIMING_OUTPUT_ENABLED to monitor this tasks timing #endif -} +} -/**@}*/ +/**@}*/ Index: firmware/DD.dil =================================================================== diff -u -re14686745aa9e4650a3112d108be02ba89d0dd97 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/DD.dil (.../DD.dil) (revision e14686745aa9e4650a3112d108be02ba89d0dd97) +++ firmware/DD.dil (.../DD.dil) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -1,4 +1,4 @@ -# RM46L852PGE 08/07/24 14:30:57 +# RM46L852PGE 12/06/24 10:10:57 # ARCH=RM46L852PGE # @@ -3311,7 +3311,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_37_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_1_MESSAGE_29_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_1_MESSAGE_6_INT_ENA.VALUE=0x00000800 -DRIVER.CAN.VAR.CAN_1_RAM_PARITY_ENA.VALUE=0x00000005 +DRIVER.CAN.VAR.CAN_1_RAM_PARITY_ENA.VALUE=0x0000000A DRIVER.CAN.VAR.CAN_1_MESSAGE_59_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_64_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_56_DLC.VALUE=8 @@ -3416,8 +3416,8 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_21_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_14_EOB.VALUE=0x00000080 DRIVER.CAN.VAR.CAN_1_MESSAGE_14_DIR.VALUE=0x20000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_13_INT_ENA_REF.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_AUTO_BUS_ON.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_13_INT_ENA_REF.VALUE=0x00000001 +DRIVER.CAN.VAR.CAN_1_AUTO_BUS_ON.VALUE=0x00000200 DRIVER.CAN.VAR.CAN_2_MESSAGE_63_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_55_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_47_INT_ENA.VALUE=0x00000000 @@ -3787,7 +3787,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_45_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_37_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_29_MASK.VALUE=0x000007FF -DRIVER.CAN.VAR.CAN_1_TQ.VALUE=250.000 +DRIVER.CAN.VAR.CAN_1_TQ.VALUE=500.000 DRIVER.CAN.VAR.CAN_3_MESSAGE_63_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_55_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_47_RTR.VALUE=0x00000000 @@ -3956,7 +3956,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_11_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_3_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_SAMPLE_POINT_REFERENCE.VALUE=75 -DRIVER.CAN.VAR.CAN_1_PROPAGATION_DELAY.VALUE=700 +DRIVER.CAN.VAR.CAN_1_PROPAGATION_DELAY.VALUE=1050 DRIVER.CAN.VAR.CAN_1_MESSAGE_51_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_51_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_50_INT_ENA_REF.VALUE=0x00000000 @@ -3982,7 +3982,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_5_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_1_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_11_ID.VALUE=0x102 -DRIVER.CAN.VAR.CAN_1_NOMINAL_BIT_TIME.VALUE=16 +DRIVER.CAN.VAR.CAN_1_NOMINAL_BIT_TIME.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_61_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_53_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_45_INT_ENA_REF.VALUE=0x00000000 @@ -4086,7 +4086,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_28_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_28_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_8_INT_ENA_REF.VALUE=0x00000001 -DRIVER.CAN.VAR.CAN_1_SHIFT.VALUE=0 +DRIVER.CAN.VAR.CAN_1_SHIFT.VALUE=18 DRIVER.CAN.VAR.CAN_2_MESSAGE_64_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_56_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_50_MASK.VALUE=0x000007FF @@ -4104,7 +4104,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_14_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_9_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_BRPE.VALUE=0 -DRIVER.CAN.VAR.CAN_1_MASK.VALUE=0x1FFFFFFF +DRIVER.CAN.VAR.CAN_1_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_3_MESSAGE_61_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_53_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_45_INT_LEVEL.VALUE=0x00000000 @@ -4113,7 +4113,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_11_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_6_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_21_ID.VALUE=21 -DRIVER.CAN.VAR.CAN_1_MESSAGE_13_ID.VALUE=402 +DRIVER.CAN.VAR.CAN_1_MESSAGE_13_ID.VALUE=0x402 DRIVER.CAN.VAR.CAN_1_MESSAGE_9_INT_LEVEL.VALUE=0x00000200 DRIVER.CAN.VAR.CAN_2_MESSAGE_40_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_40_DIR.VALUE=0x20000000 @@ -4148,8 +4148,8 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_45_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_37_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_29_DLC.VALUE=8 -DRIVER.CAN.VAR.CAN_1_BRPE_FREQ.VALUE=4.000 -DRIVER.CAN.VAR.CAN_1_BRP_FREQ.VALUE=4.000 +DRIVER.CAN.VAR.CAN_1_BRPE_FREQ.VALUE=2.000 +DRIVER.CAN.VAR.CAN_1_BRP_FREQ.VALUE=2.000 DRIVER.CAN.VAR.CAN_3_MESSAGE_20_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_20_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_12_EOB.VALUE=0x00000000 @@ -4169,7 +4169,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_3_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_30_ID.VALUE=30 DRIVER.CAN.VAR.CAN_1_MESSAGE_22_ID.VALUE=22 -DRIVER.CAN.VAR.CAN_1_MESSAGE_14_ID.VALUE=403 +DRIVER.CAN.VAR.CAN_1_MESSAGE_14_ID.VALUE=0x403 DRIVER.CAN.VAR.CAN_2_MESSAGE_41_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_33_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_25_DLC.VALUE=8 @@ -4420,7 +4420,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_19_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_2_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_2_DIR.VALUE=0x20000000 -DRIVER.CAN.VAR.CAN_1_BRP.VALUE=25 +DRIVER.CAN.VAR.CAN_1_BRP.VALUE=51 DRIVER.CAN.VAR.CAN_3_MESSAGE_7_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_3_PROP_SEG.VALUE=3 DRIVER.CAN.VAR.CAN_2_MESSAGE_21_INT_ENA.VALUE=0x00000000 @@ -4441,7 +4441,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_26_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_18_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_2_ID.VALUE=0x2 -DRIVER.CAN.VAR.CAN_1_AUTO_BUS_ON_TR.VALUE=0 +DRIVER.CAN.VAR.CAN_1_AUTO_BUS_ON_TR.VALUE=1040000 DRIVER.CAN.VAR.CAN_3_MESSAGE_31_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_23_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_15_DLC.VALUE=8 @@ -4580,7 +4580,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_24_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_16_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_8_DLC.VALUE=8 -DRIVER.CAN.VAR.CAN_1_NOMINAL_AUTO_BUS_ON_TIME.VALUE=0.000 +DRIVER.CAN.VAR.CAN_1_NOMINAL_AUTO_BUS_ON_TIME.VALUE=10000000.000 DRIVER.CAN.VAR.CAN_2_SHIFT.VALUE=0 DRIVER.CAN.VAR.CAN_1_MESSAGE_64_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_64_DIR.VALUE=0x20000000 @@ -4706,7 +4706,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_6_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_57_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_49_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_PHASE_SEG.VALUE=6 +DRIVER.CAN.VAR.CAN_1_PHASE_SEG.VALUE=2 DRIVER.CAN.VAR.CAN_3_MESSAGE_30_ID.VALUE=30 DRIVER.CAN.VAR.CAN_3_MESSAGE_22_ID.VALUE=22 DRIVER.CAN.VAR.CAN_3_MESSAGE_14_ID.VALUE=14 @@ -4899,7 +4899,7 @@ DRIVER.CAN.VAR.CAN_2_AUTO_BUS_ON.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_30_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_22_INT_ENA_REF.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_14_INT_ENA_REF.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_14_INT_ENA_REF.VALUE=0x00000001 DRIVER.CAN.VAR.CAN_3_MESSAGE_50_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_42_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_40_INT_ENA.VALUE=0x00000000 @@ -4931,7 +4931,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_9_ID.VALUE=0x100 DRIVER.CAN.VAR.CAN_1_MESSAGE_5_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_59_DLC.VALUE=8 -DRIVER.CAN.VAR.CAN_1_SJW.VALUE=4 +DRIVER.CAN.VAR.CAN_1_SJW.VALUE=2 DRIVER.CAN.VAR.CAN_3_MESSAGE_50_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_50_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_42_EOB.VALUE=0x00000000 @@ -4963,7 +4963,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_37_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_29_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_9_MASK.VALUE=0x000007FF -DRIVER.CAN.VAR.CAN_1_IDENTIFIER_MODE.VALUE=0x40000000 +DRIVER.CAN.VAR.CAN_1_IDENTIFIER_MODE.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_41_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_33_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_25_INT_LEVEL.VALUE=0x00000000 @@ -4975,7 +4975,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_55_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_47_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_39_DLC.VALUE=8 -DRIVER.CAN.VAR.CAN_1_AUTO_BUS_ON_TIME.VALUE=0 +DRIVER.CAN.VAR.CAN_1_AUTO_BUS_ON_TIME.VALUE=10000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_6_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_6_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_30_INT_ENA_REF.VALUE=0x00000000 @@ -5019,7 +5019,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_39_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_30_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_22_INT_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_14_INT_ENA.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_14_INT_ENA.VALUE=0x00000800 DRIVER.CAN.VAR.CAN_3_PORT_RX_PSL.VALUE=1 DRIVER.CAN.VAR.CAN_2_MESSAGE_50_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_42_RTR.VALUE=0x00000000 @@ -5214,7 +5214,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_8_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_10_EOB.VALUE=0x00000080 DRIVER.CAN.VAR.CAN_1_MESSAGE_10_DIR.VALUE=0x20000000 -DRIVER.CAN.VAR.CAN_1_SAMPLE_POINT.VALUE=62.500 +DRIVER.CAN.VAR.CAN_1_SAMPLE_POINT.VALUE=75.000 DRIVER.CAN.VAR.CAN_2_MESSAGE_51_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_43_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_35_BOOL_ENA.VALUE=0 @@ -5331,7 +5331,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_7_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_2_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_21_INT_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_13_INT_ENA.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_13_INT_ENA.VALUE=0x00000400 DRIVER.CAN.VAR.CAN_3_PORT_TX_DOUT.VALUE=1 DRIVER.CAN.VAR.CAN_3_MESSAGE_64_ID.VALUE=64 DRIVER.CAN.VAR.CAN_3_MESSAGE_56_ID.VALUE=56 @@ -5535,8 +5535,8 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_13_ID.VALUE=13 DRIVER.CAN.VAR.CAN_2_MESSAGE_8_ID.VALUE=8 DRIVER.ADC.VAR.ADC2_GROUP1_DISCHARGE_PRESCALER.VALUE=0 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN21_ENABLE.VALUE=0x00200000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN13_ENABLE.VALUE=0x00002000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN21_ENABLE.VALUE=0x00000000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN13_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_ACTUAL_DISCHARGE_TIME.VALUE=0.00 DRIVER.ADC.VAR.ADC2_GROUP1_RESOLUTION.VALUE=12_BIT DRIVER.ADC.VAR.ADC2_GROUP0_PIN3_ENABLE.VALUE=0x00000000 @@ -5558,7 +5558,7 @@ DRIVER.ADC.VAR.ADC1_GROUP2_SAMPLE_PRESCALER.VALUE=0 DRIVER.ADC.VAR.ADC1_GROUP1_LENGTH.VALUE=24 DRIVER.ADC.VAR.ADC2_GROUP1_ID_ENABLE.VALUE=0x00000000 -DRIVER.ADC.VAR.ADC1_GROUP2_CONVERSION_TIME.VALUE=3.271 +DRIVER.ADC.VAR.ADC1_GROUP2_CONVERSION_TIME.VALUE=3.250 DRIVER.ADC.VAR.ADC2_PORT_BIT0_DIR.VALUE=0 DRIVER.ADC.VAR.ADC2_GROUP1_PIN4_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP0_PIN11_ENABLE.VALUE=0x00000000 @@ -5575,7 +5575,7 @@ DRIVER.ADC.VAR.ADC2_GROUP2_ACTUAL_SAMPLE_TIME.VALUE=384.60 DRIVER.ADC.VAR.ADC2_GROUP2_SAMPLE_PRESCALER.VALUE=2 DRIVER.ADC.VAR.ADC2_GROUP2_PIN12_ENABLE.VALUE=0x00000000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN18_ENABLE.VALUE=0x00040000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN18_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP0_PIN8_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_PIN11_ENABLE.VALUE=0x00000800 DRIVER.ADC.VAR.ADC1_BND.VALUE=2 @@ -5588,8 +5588,8 @@ DRIVER.ADC.VAR.ADC2_GROUP2_PIN5_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_PIN8_ENABLE.VALUE=0x00000100 DRIVER.ADC.VAR.ADC1_GROUP1_ID_ENABLE.VALUE=0x00000020 -DRIVER.ADC.VAR.ADC1_GROUP1_EXTENDED_SAMPLE_TIME.VALUE=503.22 -DRIVER.ADC.VAR.ADC1_GROUP0_CONVERSION_TIME.VALUE=3.271 +DRIVER.ADC.VAR.ADC1_GROUP1_EXTENDED_SAMPLE_TIME.VALUE=500.00 +DRIVER.ADC.VAR.ADC1_GROUP0_CONVERSION_TIME.VALUE=3.250 DRIVER.ADC.VAR.ADC2_GROUP0_RESOLUTION.VALUE=12_BIT DRIVER.ADC.VAR.ADC1_GROUP1_PIN1_ENABLE.VALUE=0x00000002 DRIVER.ADC.VAR.ADC1_GROUP1_RESOLUTION.VALUE=12_BIT @@ -5622,7 +5622,7 @@ DRIVER.ADC.VAR.ADC1_GROUP0_PIN12_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP2_PIN10_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_PIN24_ENABLE.VALUE=0x00000000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN16_ENABLE.VALUE=0x00010000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN16_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_ACTUAL_SAMPLE_TIME.VALUE=500.00 DRIVER.ADC.VAR.ADC2_GROUP0_PIN6_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP2_TRIGGER_MODE.VALUE=0x00000000 @@ -5642,7 +5642,7 @@ DRIVER.ADC.VAR.ADC2_RAMBASE.VALUE=0xFF3A0000 DRIVER.ADC.VAR.ADC2_GROUP0_BND.VALUE=8 DRIVER.ADC.VAR.ADC1_PORT_BIT0_DOUT.VALUE=0 -DRIVER.ADC.VAR.ADC1_GROUP1_SCAN_TIME.VALUE=1112.885 +DRIVER.ADC.VAR.ADC1_GROUP1_SCAN_TIME.VALUE=576.923 DRIVER.ADC.VAR.ADC1_GROUP0_RESOLUTION.VALUE=12_BIT DRIVER.ADC.VAR.ADC2_GROUP2_FIFO_SIZE.VALUE=16 DRIVER.ADC.VAR.ADC2_GROUP1_PIN7_ENABLE.VALUE=0x00000000 @@ -5665,8 +5665,8 @@ DRIVER.ADC.VAR.ADC1_GROUP2_CONTINUOUS_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP0_PIN10_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP1_PINS.VALUE=0 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN22_ENABLE.VALUE=0x00400000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN14_ENABLE.VALUE=0x00004000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN22_ENABLE.VALUE=0x00000000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN14_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP0_PIN4_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP2_PIN18_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP2_PIN8_ENABLE.VALUE=0x00000000 @@ -5703,14 +5703,14 @@ DRIVER.ADC.VAR.ADC1_GROUP0_PIN15_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_BND.VALUE=12 DRIVER.ADC.VAR.ADC2_GROUP2_PIN13_ENABLE.VALUE=0x00000000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN19_ENABLE.VALUE=0x00080000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN19_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_PORT_BIT0_DOUT.VALUE=0 DRIVER.ADC.VAR.ADC2_CYCLE_TIME.VALUE=100.00 DRIVER.ADC.VAR.ADC1_GROUP1_HW_TRIGGER_SOURCE.VALUE=EVENT DRIVER.ADC.VAR.ADC1_GROUP1_DISCHARGE_PRESCALER.VALUE=0 DRIVER.ADC.VAR.ADC2_GROUP0_PIN9_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_PRESCALE.VALUE=9 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN20_ENABLE.VALUE=0x00100000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN20_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_PIN12_ENABLE.VALUE=0x00001000 DRIVER.ADC.VAR.ADC1_GROUP0_RAM_PARITY_ENA.VALUE=0 DRIVER.ADC.VAR.ADC2_GROUP0_SAMPLE_TIME.VALUE=300.00 @@ -5726,7 +5726,7 @@ DRIVER.ADC.VAR.ADC1_PORT_BIT0_PDR.VALUE=0 DRIVER.ADC.VAR.ADC1_GROUP1_SAMPLE_TIME.VALUE=300.00 DRIVER.ADC.VAR.ADC1_GROUP1_PIN2_ENABLE.VALUE=0x00000004 -DRIVER.ADC.VAR.ADC1_GROUP1_CONVERSION_TIME.VALUE=3.271 +DRIVER.ADC.VAR.ADC1_GROUP1_CONVERSION_TIME.VALUE=3.250 DRIVER.ADC.VAR.ADC1_GROUP0_FIFO_SIZE.VALUE=0 DRIVER.ADC.VAR.ADC1_PORT_BIT0_PULL.VALUE=2 DRIVER.ADC.VAR.ADC1_GROUP0_LENGTH.VALUE=0 @@ -5739,12 +5739,12 @@ DRIVER.ADC.VAR.ADC1_GROUP0_PIN6_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP2_SCAN_TIME.VALUE=0.000 DRIVER.ADC.VAR.ADC2_GROUP1_HW_TRIGGER_SOURCE.VALUE=EVENT -DRIVER.ADC.VAR.ADC1_GROUP1_CHANNEL_TOTAL_TIME.VALUE=91.694165 -DRIVER.ADC.VAR.ADC1_GROUP0_EXTENDED_SAMPLE_TIME.VALUE=503.22 +DRIVER.ADC.VAR.ADC1_GROUP1_CHANNEL_TOTAL_TIME.VALUE=49.326923 +DRIVER.ADC.VAR.ADC1_GROUP0_EXTENDED_SAMPLE_TIME.VALUE=500.00 DRIVER.ADC.VAR.ADC1_GROUP0_HW_TRIGGER_SOURCE_ALT.VALUE=EVENT DRIVER.ADC.VAR.ADC2_GROUP1_PIN14_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_PORT_BIT0_PSL.VALUE=1 -DRIVER.ADC.VAR.ADC1_GROUP2_EXTENDED_SAMPLE_TIME.VALUE=503.22 +DRIVER.ADC.VAR.ADC1_GROUP2_EXTENDED_SAMPLE_TIME.VALUE=500.00 DRIVER.ADC.VAR.ADC2_GROUP1_LENGTH.VALUE=16 DRIVER.ADC.VAR.ADC1_GROUP1_HW_TRIGGER_SOURCE_ALT.VALUE=EVENT DRIVER.ADC.VAR.ADC1_GROUP2_PIN3_ENABLE.VALUE=0x00000000 @@ -5754,7 +5754,7 @@ DRIVER.ADC.VAR.ADC1_GROUP2_HW_TRIGGER_SOURCE_ALT.VALUE=EVENT DRIVER.ADC.VAR.ADC2_GROUP2_PIN11_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP1_CONTINUOUS_ENABLE.VALUE=0x00000000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN17_ENABLE.VALUE=0x00020000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN17_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP1_ACTUAL_DISCHARGE_TIME.VALUE=0.00 DRIVER.ADC.VAR.ADC2_GROUP0_PIN7_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_PIN10_ENABLE.VALUE=0x00000400 @@ -5772,7 +5772,7 @@ DRIVER.ADC.VAR.ADC1_GROUP0_ID_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP2_DISCHARGE_TIME.VALUE=0.00 DRIVER.ADC.VAR.ADC1_GROUP2_SCAN_TIME.VALUE=0.000 -DRIVER.ADC.VAR.ADC1_GROUP1_PINS.VALUE=24 +DRIVER.ADC.VAR.ADC1_GROUP1_PINS.VALUE=13 DRIVER.ADC.VAR.ADC1_GROUP1_TRIGGER_EDGE_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_ALT_TRIG_COMP.VALUE=1 DRIVER.ADC.VAR.ADC1_GROUP0_CONTINUOUS_ENABLE.VALUE=0x00000000 @@ -5791,8 +5791,8 @@ DRIVER.ADC.VAR.ADC1_GROUP2_PIN1_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP0_PIN11_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP0_SCAN_TIME.VALUE=0.000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN23_ENABLE.VALUE=0x00800000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN15_ENABLE.VALUE=0x00008000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN23_ENABLE.VALUE=0x00000000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN15_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP0_HW_TRIGGER_SOURCE.VALUE=EVENT DRIVER.ADC.VAR.ADC2_GROUP0_PIN5_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP2_PIN19_ENABLE.VALUE=0x00000000 Index: firmware/include/can.h =================================================================== diff -u -r8b8fff67b95805272f37855346d600599aaec03d -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/include/can.h (.../can.h) (revision 8b8fff67b95805272f37855346d600599aaec03d) +++ firmware/include/can.h (.../can.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -630,16 +630,16 @@ /* Configuration registers initial value for CAN1*/ -#define CAN1_CTL_CONFIGVALUE ((uint32)0x00000000U \ +#define CAN1_CTL_CONFIGVALUE ((uint32)0x00000200U \ | (uint32)0x00000000U \ - | (uint32)((uint32)0x00000005U << 10U) | 0x00020002U) + | (uint32)((uint32)0x0000000AU << 10U) | 0x00020002U) #define CAN1_ES_CONFIGVALUE 0x00000007U #define CAN1_BTR_CONFIGVALUE ((uint32)((uint32)0U << 16U) \ - | (uint32)((uint32)(6U - 1U) << 12U) \ - | (uint32)((uint32)((3U + 6U) - 1U) << 8U) \ - | (uint32)((uint32)(4U - 1U) << 6U) | (uint32)25U) + | (uint32)((uint32)(2U - 1U) << 12U) \ + | (uint32)((uint32)((3U + 2U) - 1U) << 8U) \ + | (uint32)((uint32)(2U - 1U) << 6U) | (uint32)51U) #define CAN1_TEST_CONFIGVALUE 0x00000080U -#define CAN1_ABOTR_CONFIGVALUE ((uint32)(0U)) +#define CAN1_ABOTR_CONFIGVALUE ((uint32)(1040000U)) #define CAN1_INTMUX0_CONFIGVALUE ((uint32)0x00000000U \ | (uint32)0x00000002U \ | (uint32)0x00000004U \ Index: firmware/source/adc.c =================================================================== diff -u -r8b8fff67b95805272f37855346d600599aaec03d -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/source/adc.c (.../adc.c) (revision 8b8fff67b95805272f37855346d600599aaec03d) +++ firmware/source/adc.c (.../adc.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -245,17 +245,6 @@ 0x00000400U | 0x00000800U | 0x00001000U | - 0x00002000U | - 0x00004000U | - 0x00008000U | - 0x00010000U | - 0x00020000U | - 0x00040000U | - 0x00080000U | - 0x00100000U | - 0x00200000U | - 0x00400000U | - 0x00800000U, 0x00000000U | 0x00000000U | 0x00000000U | @@ -266,6 +255,7 @@ 0x00000000U | 0x00000000U | 0x00000000U | + 0x00000000U, 0x00000000U | 0x00000000U | 0x00000000U | @@ -279,6 +269,16 @@ 0x00000000U | 0x00000000U | 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | 0x00000000U}, {0x00000000U | 0x00000000U | Index: firmware/source/can.c =================================================================== diff -u -re14686745aa9e4650a3112d108be02ba89d0dd97 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/source/can.c (.../can.c) (revision e14686745aa9e4650a3112d108be02ba89d0dd97) +++ firmware/source/can.c (.../can.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -104,9 +104,9 @@ * - Disable status interrupts * - Enter initialization mode */ - canREG1->CTL = (uint32)0x00000000U + canREG1->CTL = (uint32)0x00000200U | (uint32)0x00000000U - | (uint32)((uint32)0x00000005U << 10U) + | (uint32)((uint32)0x0000000AU << 10U) | (uint32)0x00020043U; /** - Clear all pending error flags and reset current status */ @@ -180,7 +180,7 @@ | (uint32)0x00000000U; /** - Setup auto bus on timer period */ - canREG1->ABOTR = (uint32)0U; + canREG1->ABOTR = (uint32)1040000U; /** - Initialize message 1 * - Wait until IF1 is ready for use @@ -196,8 +196,8 @@ } /* Wait */ - canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x1U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x1U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF1CMD = (uint8) 0xF8U; canREG1->IF1NO = 1U; @@ -215,8 +215,8 @@ { } /* Wait */ - canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x2U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x2U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000800U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF2CMD = (uint8) 0xF8U; canREG1->IF2NO = 2U; @@ -234,8 +234,8 @@ { } /* Wait */ - canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x4U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x4U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF1CMD = (uint8) 0xF8U; canREG1->IF1NO = 3U; @@ -253,8 +253,8 @@ { } /* Wait */ - canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x08U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x08U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF2CMD = (uint8) 0xF8U; canREG1->IF2NO = 4U; @@ -272,8 +272,8 @@ { } /* Wait */ - canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x10U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x10U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF1CMD = (uint8) 0xF8U; canREG1->IF1NO = 5U; @@ -291,8 +291,8 @@ { } /* Wait */ - canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x11U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x11U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000800U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF2CMD = (uint8) 0xF8U; canREG1->IF2NO = 6U; @@ -310,8 +310,8 @@ { } /* Wait */ - canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x20U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x20U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000800U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF1CMD = (uint8) 0xF8U; canREG1->IF1NO = 7U; @@ -329,8 +329,8 @@ { } /* Wait */ - canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x21U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x21U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF2CMD = (uint8) 0xF8U; canREG1->IF2NO = 8U; @@ -348,8 +348,8 @@ { } /* Wait */ - canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x100U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x100U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF1CMD = (uint8) 0xF8U; canREG1->IF1NO = 9U; @@ -367,8 +367,8 @@ { } /* Wait */ - canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x101U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x101U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000800U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF2CMD = (uint8) 0xF8U; canREG1->IF2NO = 10U; @@ -386,8 +386,8 @@ { } /* Wait */ - canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x102U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x102U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF1CMD = (uint8) 0xF8U; canREG1->IF1NO = 11U; @@ -405,8 +405,8 @@ { } /* Wait */ - canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x103U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x103U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF2CMD = (uint8) 0xF8U; canREG1->IF2NO = 12U; @@ -424,9 +424,9 @@ { } /* Wait */ - canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)402U & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; + canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x402U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF1CMD = (uint8) 0xF8U; canREG1->IF1NO = 13U; @@ -443,9 +443,9 @@ { } /* Wait */ - canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)403U & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; + canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x403U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000800U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF2CMD = (uint8) 0xF8U; canREG1->IF2NO = 14U; @@ -477,10 +477,10 @@ * - Setup baud rate prescaler */ canREG1->BTR = (uint32)((uint32)0U << 16U) | - (uint32)((uint32)(6U - 1U) << 12U) | - (uint32)((uint32)((3U + 6U) - 1U) << 8U) | - (uint32)((uint32)(4U - 1U) << 6U) | - (uint32)25U; + (uint32)((uint32)(2U - 1U) << 12U) | + (uint32)((uint32)((3U + 2U) - 1U) << 8U) | + (uint32)((uint32)(2U - 1U) << 6U) | + (uint32)51U; /** - CAN1 Port output values */ Index: firmware/source/sys_main.c =================================================================== diff -u -r9102c5da21a15bdaf4bb3bc38795ceb064e3c443 -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/source/sys_main.c (.../sys_main.c) (revision 9102c5da21a15bdaf4bb3bc38795ceb064e3c443) +++ firmware/source/sys_main.c (.../sys_main.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -72,6 +72,7 @@ #include "Level.h" #include "MsgQueues.h" #include "OperationModes.h" +#include "PistonPumpControl.h" #include "Pressure.h" #include "ROInterface.h" #include "SafetyShutdown.h" @@ -179,6 +180,9 @@ initTestConfigs(); initTDInterface(); initROInterface(); +#ifdef __PUMPTEST__ + initPistonPump(); +#endif } /*************************************************************************