Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -rf91baac9704a90ab0fea1dd05e11833ffc5a5a4e --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision f91baac9704a90ab0fea1dd05e11833ffc5a5a4e) @@ -153,7 +153,6 @@ setFPGACPoProbeType( COND_CPO_SENSOR_PROBE_TYPE ); initTimeWindowedCount( TIME_WINDOWED_COUNT_FPGA_CONDUCTIVITY_SENSOR_ERROR, MAX_CONDUCTIVITY_SENSOR_FAILURES, MAX_CONDUCTIVITY_SENSOR_FAILURE_WINDOW_MS ); - initPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_CONDUCTIVITY, COND_SENSOR_PERSISTENCE_PERIOD, COND_SENSOR_PERSISTENCE_PERIOD ); initPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_HIGH_RANGE, COND_SENSOR_PERSISTENCE_PERIOD, COND_SENSOR_PERSISTENCE_PERIOD ); initPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_LOW_RANGE, COND_SENSOR_PERSISTENCE_PERIOD, COND_SENSOR_PERSISTENCE_PERIOD ); initPersistentAlarm( ALARM_ID_RO_REJECTION_RATIO_OUT_OF_RANGE, RO_REJECTION_RATIO_PERSISTENCE_PERIOD, RO_REJECTION_RATIO_PERSISTENCE_PERIOD ); Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -r669f36cf32c3b500aa2fd5b08c58ee5e6b2e7f08 -rf91baac9704a90ab0fea1dd05e11833ffc5a5a4e --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 669f36cf32c3b500aa2fd5b08c58ee5e6b2e7f08) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision f91baac9704a90ab0fea1dd05e11833ffc5a5a4e) @@ -764,6 +764,9 @@ ADC_BOARD_TEMP_SENSORS_CONVERSION_CONST; break; + case TEMPSENSORS_BAROMETRIC_TEMP_SENSOR: + break; + default: // Wrong sensor was called, raise an alarm SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_TEMPERATURE_SENSOR_SELECTED, sensorIndex ); @@ -868,12 +871,13 @@ // coming from FPGA. It is kept here to do moving average on the values. The supporting functions need to see the FPGA read count // incrementing internally so there will not be any errors. U32 simulatedCounter = tempSensors[ TEMPSENSORS_FPGA_BOARD_SENSOR ].readCount; - processTempSnsrsADCRead( TEMPSENSORS_FPGA_BOARD_SENSOR, getFPGABoardTemp(), 0, ++simulatedCounter ); - processTempSnsrsADCRead( TEMPSENSORS_LOAD_CELL_A1_B1, getFPGALoadCellsA1B1Temp(), getFPGAADC1ErrorCount(), getFPGAADC1ReadCount() ); - processTempSnsrsADCRead( TEMPSENSORS_LOAD_CELL_A2_B2, getFPGALoadCellsA2B2Temp(), getFPGAADC2ErrorCount(), getFPGAADC2ReadCount() ); - processTempSnsrsADCRead( TEMPSENSORS_INTERNAL_TRO_RTD, getFPGATRoInternalTemp(), getFPGATRoErrorCount(), getFPGATRoReadCount() ); - processTempSnsrsADCRead( TEMPSENSORS_INTERNAL_TDI_RTD, getFPGATDiInternalTemp(), getFPGATDiErrorCount(), getFPGATDiReadCount() ); - processTempSnsrsADCRead( TEMPSENSORS_INTERNAL_COND_TEMP_SENSOR, getFPGACondSnsrInternalTemp(), getFPGARTDErrorCount(), getFPGARTDReadCount() ); + processTempSnsrsADCRead( TEMPSENSORS_FPGA_BOARD_SENSOR, getFPGABoardTemp(), 0, ++simulatedCounter ); + processTempSnsrsADCRead( TEMPSENSORS_LOAD_CELL_A1_B1, getFPGALoadCellsA1B1Temp(), getFPGAADC1ErrorCount(), getFPGAADC1ReadCount() ); + processTempSnsrsADCRead( TEMPSENSORS_LOAD_CELL_A2_B2, getFPGALoadCellsA2B2Temp(), getFPGAADC2ErrorCount(), getFPGAADC2ReadCount() ); + processTempSnsrsADCRead( TEMPSENSORS_INTERNAL_TRO_RTD, getFPGATRoInternalTemp(), getFPGATRoErrorCount(), getFPGATRoReadCount() ); + processTempSnsrsADCRead( TEMPSENSORS_INTERNAL_TDI_RTD, getFPGATDiInternalTemp(), getFPGATDiErrorCount(), getFPGATDiReadCount() ); + processTempSnsrsADCRead( TEMPSENSORS_INTERNAL_COND_TEMP_SENSOR, getFPGACondSnsrInternalTemp(), getFPGARTDErrorCount(), getFPGARTDReadCount() ); + processTempSnsrsADCRead( TEMPSENSORS_BAROMETRIC_TEMP_SENSOR, getFPGABaroTemperature(), getFPGABaroErrorCount(), getFPGABaroReadCount() ); // Check if time has elapsed to calculate the internal temperature of the heaters if ( ++internalHeatersConversionTimer >= HEATERS_INTERNAL_TEMPERTURE_CALCULATION_INTERVAL ) Index: firmware/App/Controllers/TemperatureSensors.h =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -rf91baac9704a90ab0fea1dd05e11833ffc5a5a4e --- firmware/App/Controllers/TemperatureSensors.h (.../TemperatureSensors.h) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Controllers/TemperatureSensors.h (.../TemperatureSensors.h) (revision f91baac9704a90ab0fea1dd05e11833ffc5a5a4e) @@ -54,6 +54,7 @@ TEMPSENSORS_INTERNAL_TRO_RTD, ///< TRo RTD internal temperature sensor TEMPSENSORS_INTERNAL_TDI_RTD, ///< TDi RTD internal temperature sensor TEMPSENSORS_INTERNAL_COND_TEMP_SENSOR, ///< Conductivity sensor temperature sensor + TEMPSENSORS_BAROMETRIC_TEMP_SENSOR, ///< Barometric temperature sensor NUM_OF_TEMPERATURE_SENSORS ///< Number of temperature sensors } TEMPERATURE_SENSORS_T; Index: firmware/App/DGCommon.h =================================================================== diff -u -rf7de7c6161d27894813e1df880c93cff551a3a36 -rf91baac9704a90ab0fea1dd05e11833ffc5a5a4e --- firmware/App/DGCommon.h (.../DGCommon.h) (revision f7de7c6161d27894813e1df880c93cff551a3a36) +++ firmware/App/DGCommon.h (.../DGCommon.h) (revision f91baac9704a90ab0fea1dd05e11833ffc5a5a4e) @@ -41,6 +41,8 @@ #define DISABLE_RTC_CONFIG 1 // Not needed TODO investigate and remove +// #define ENABLE_DVT_BOARD 1 // TODo can we make this a sw config? + #include #include #endif Index: firmware/App/Modes/ModeChemicalDisinfect.c =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -rf91baac9704a90ab0fea1dd05e11833ffc5a5a4e --- firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision f91baac9704a90ab0fea1dd05e11833ffc5a5a4e) @@ -80,7 +80,7 @@ // R1 to R2 & R2 to R1 chemical disinfect circulation #define CHEM_DISINFECT_TARGET_RO_FLOW_LPM 0.8F ///< Chemical disinfect target RO flow rate in L/min. #define CHEM_DISINFECT_MAX_RO_PRESSURE_PSI 130 ///< Chemical disinfect maximum RO pressure in psi. -#define CHEM_DISINFECT_TARGET_DRAIN_PRES_PSI 10.0 ///< Chemical disinfect target drain outlet pressure in psi. +#define CHEM_DISINFECT_TARGET_DRAIN_PRES_PSI 12.0 ///< Chemical disinfect target drain outlet pressure in psi. #define CHEM_DISINFECT_TIME_MS ( 36 * SEC_PER_MIN * MS_PER_SECOND ) ///< Chemical disinfect time for each section in milliseconds. TODO original time was 36 minutes #define CHEM_DISINFECT_START_TEMP_TIMOUT_MS ( 4 * MIN_PER_HOUR * SEC_PER_MIN * MS_PER_SECOND ) ///< Chemical disinfect reaching to minimum temperature timeout in milliseconds. #define RSRVRS_TARGET_VOL_OUT_TIMEOUT_MS ( 0.5F * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 maximum volume out of range timeout during chemical disinfect. TODO change this to 5 seconds Index: firmware/App/Modes/ModeDrain.c =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -rf91baac9704a90ab0fea1dd05e11833ffc5a5a4e --- firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision f91baac9704a90ab0fea1dd05e11833ffc5a5a4e) @@ -38,7 +38,7 @@ // ********** private definitions ********** -#define TARGET_DRAIN_PUMP_RPM 2300 ///< Target drain pump speed (in RPM). +#define TARGET_DRAIN_PUMP_RPM 2400 ///< Target drain pump speed (in RPM). #define DRAIN_WEIGHT_UNCHANGE_TIMEOUT ( 2 * MS_PER_SECOND ) ///< Time period of unchanged weight during draining before timeout. #define DRAIN_EMPTY_TARE_WAIT ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) /// Time period to wait after drain complete and before taring load cells. Index: firmware/App/Modes/ModeFlush.c =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -rf91baac9704a90ab0fea1dd05e11833ffc5a5a4e --- firmware/App/Modes/ModeFlush.c (.../ModeFlush.c) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Modes/ModeFlush.c (.../ModeFlush.c) (revision f91baac9704a90ab0fea1dd05e11833ffc5a5a4e) @@ -872,12 +872,6 @@ // Raise the alarm failFlushMode(); - - // If the caps alarm was active, clear it at the of the cancel water path - if ( TRUE == isAlarmActive( ALARM_ID_DG_DIALYSATE_OR_CONC_CAP_NOT_IN_PROPER_POSITION ) ) - { - clearAlarmCondition( ALARM_ID_DG_DIALYSATE_OR_CONC_CAP_NOT_IN_PROPER_POSITION ); - } } } else if ( DG_RESERVOIR_NOT_REACHED_TARGET == rsrvr1Status ) @@ -1061,7 +1055,7 @@ prevFlushState = flushState; flushState = DG_FLUSH_STATE_CANCEL_WATER_PATH; alarmDetectedPendingTrigger = ALARM_ID_DG_DIALYSATE_OR_CONC_CAP_NOT_IN_PROPER_POSITION; - } + } } } Index: firmware/App/Modes/ModeHeatDisinfect.c =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -rf91baac9704a90ab0fea1dd05e11833ffc5a5a4e --- firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision f91baac9704a90ab0fea1dd05e11833ffc5a5a4e) @@ -74,13 +74,13 @@ #define NUM_OF_TEMP_SENSORS_TO_AVG 4.0F ///< Number of temperature sensors to average to check the difference. #define ACID_PUMP_SPEED_ML_PER_MIN -30.0F ///< Acid concentrate pump speed in mL/min. // The bicarb pump is 2% faster than the acid pump to create a flow from acid to bicarb line during heat disinfect -#define BICARB_PUMP_SPEED_ML_PER_MIN 30.6F ///< Bicarb concentrate pump speed in mL/min. +#define BICARB_PUMP_SPEED_ML_PER_MIN 30.6F ///< Bicarb concentrate pump speed in mL/min. // Flush and drain R1 and R2 #define RSRVRS_FULL_VOL_ML 1850.0F ///< Reservoirs 1 & 2 full volume in mL. TODo original value was 1900 #define RSRVRS_PARTIAL_FILL_VOL_ML 500.0F ///< Reservoirs 1 & 2 partial volume in mL. #define RSRVRS_FULL_STABLE_TIME_COUNT ( ( 4 * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ) ///< Reservoirs 1 & 2 full stable time in counts. -#define RSRVRS_FILL_UP_TIMEOUT_MS ( 8 * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 full fill up timeout in ms. TODO original value was 5 mins +#define RSRVRS_FILL_UP_TIMEOUT_MS ( 5 * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 full fill up timeout in ms. TODO original value was 5 mins #define RSRVRS_500ML_FILL_UP_TIMEOUT_MS ( 4 * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 partial fill up timeout in ms. TODO original value was 2 mins #define RSRVRS_DRAIN_TIMEOUT_MS ( 2 * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 drain timeout in ms. @@ -95,7 +95,7 @@ #define HEAT_DISINFECT_TIME_MS ( 10 * SEC_PER_MIN * MS_PER_SECOND ) ///< Heat disinfect time for each section in milliseconds. #define HEAT_DISINFECT_START_TEMP_TIMOUT_MS ( 4 * MIN_PER_HOUR * SEC_PER_MIN * MS_PER_SECOND ) ///< Heat disinfect reaching to minimum temperature timeout in milliseconds. #define RSRVRS_TARGET_VOL_OUT_TIMEOUT_MS ( 0.5F * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 maximum volume out of range timeout during heat disinfect. TODO change this to 5 seconds -#define RSRVRS_MAX_TARGET_VOL_CHANGE_ML 150.0F ///< Reservoirs 1 & 2 maximum allowed volume change when full during heat disinfect. +#define RSRVRS_MAX_TARGET_VOL_CHANGE_ML 100.0F ///< Reservoirs 1 & 2 maximum allowed volume change when full during heat disinfect. #define POST_HEAT_DISINFECT_WAIT_TIME_MS ( 3 * SEC_PER_MIN * MS_PER_SECOND ) ///< Heat disinfect final wait time before flushing the system in milliseconds. #define HEAT_DISINFECT_MAX_TEMP_GRADIENT_C 15.0F ///< Heat disinfect maximum allowed temperature gradient in between hottest and coldest sensors. #define HEAT_DISINFECT_TEMP_GRAD_OUT_RANGE_TIME_MS ( 0.16 * SEC_PER_MIN * MS_PER_SECOND ) ///< Heat disinfect temperature gradient out of range timeout in milliseconds. @@ -107,7 +107,7 @@ #define TARGET_THD_SENSOR_FOR_RINSING_C 44.0F ///< Target THd temperature sensor value before rinsing in C. // Mix drain R1 and R2 -#define RSRVRS_MIX_DRAIN_TIMEOUT_MS ( 20 * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 mix drain timeout in ms. +#define RSRVRS_MIX_DRAIN_TIMEOUT_MS ( 5 * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 mix drain timeout in ms. #define DRAIN_PUMP_START_TIME_IN_MIX_DRAIN_MS ( 5 * MS_PER_SECOND ) ///< Time to start the drain pump at mix drain after directing the flow to drain in ms. #define DRAIN_PUMP_RPM_IN_MIX_DRAIN 600 ///< The RPM that the drain pump should be run during mix drain. #define MIX_DRAIN_WEIGHT_UNCHANGE_TIMEOUT ( 15 * MS_PER_SECOND ) ///< Time period of unchanged weight during mix draining before timeout. @@ -714,7 +714,7 @@ areTempSensorsInRange = TRUE; // Turn the pumps on in reverse setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP1_ACID, ACID_PUMP_SPEED_ML_PER_MIN ); - setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP2_BICARB, ACID_PUMP_SPEED_ML_PER_MIN ); + setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP2_BICARB, BICARB_PUMP_SPEED_ML_PER_MIN ); // Turn on the concentrate pumps requestConcentratePumpOn( CONCENTRATEPUMPS_CP1_ACID ); @@ -1101,13 +1101,10 @@ { case HEAT_DISINFECT_RSRVRS_LEAK_TIMEOUT: case HEAT_DISINFECT_HEAT_UP_TIMEOUT: + case HEAT_DISINFECT_TEMP_GRADIENT_OUT_OF_RANGE: state = DG_HEAT_DISINFECT_STATE_CANCEL_WATER_PATH; break; - case HEAT_DISINFECT_TEMP_GRADIENT_OUT_OF_RANGE: - state = DG_HEAT_DISINFECT_STATE_CANCEL_BASIC_PATH; - break; - case HEAT_DISINFECT_DISINFECT_IN_PROGRESS: heatDisinfectUIState = HEAT_DISINFECT_UI_STATE_DISINFECT_RESERVOIR_1; break; @@ -1214,13 +1211,10 @@ { case HEAT_DISINFECT_RSRVRS_LEAK_TIMEOUT: case HEAT_DISINFECT_HEAT_UP_TIMEOUT: + case HEAT_DISINFECT_TEMP_GRADIENT_OUT_OF_RANGE: state = DG_HEAT_DISINFECT_STATE_CANCEL_WATER_PATH; break; - case HEAT_DISINFECT_TEMP_GRADIENT_OUT_OF_RANGE: - state = DG_HEAT_DISINFECT_STATE_CANCEL_BASIC_PATH; - break; - case HEAT_DISINFECT_COMPLETE: // Turn off the heaters stopHeater( DG_PRIMARY_HEATER ); @@ -2102,7 +2096,6 @@ // Set the variables to fail and go to cancel water path. Set the pending alarm to no alarm so the cancel water path // will not be raising the alarm at end of the cancel water path. The recoverable alarm is raised here in this function U32 cap = (U32)( STATE_OPEN == getSwitchStatus( CONCENTRATE_CAP ) ? CONCENTRATE_CAP : DIALYSATE_CAP ); - prevHeatDisinfectState = heatDisinfectState; heatDisinfectState = DG_HEAT_DISINFECT_STATE_CANCEL_WATER_PATH; alarmDetectedPendingTrigger = ALARM_ID_DG_DIALYSATE_OR_CONC_CAP_NOT_IN_PROPER_POSITION; Index: firmware/App/Services/FPGA.c =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -rf91baac9704a90ab0fea1dd05e11833ffc5a5a4e --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision f91baac9704a90ab0fea1dd05e11833ffc5a5a4e) @@ -120,8 +120,13 @@ U32 fpgaTDi; ///< Reg 308. ADC TDi channel 0 - temperature U32 fpgaTDiTemp; ///< Reg 312. ADC TDi channel 1 - internal temperature +#ifndef ENABLE_DVT_BOARD U32 fpgaCPo; ///< Reg 316. CPo conductivity sensor value U32 fpgaCPi; ///< Reg 320. CPi conductivity sensor value +#else + U32 fpgaTHDi; ///< Reg 316. ADC THD channel 0 - temperature + U32 fpgaTHDiTemp; ///< Reg 320. ADC THD channel 1 - internal temperature +#endif U16 fpgaPrimaryHeaterIntTemp; ///< Reg 324. Primary heater temperature U16 fpgaPrimaryHeaterIntJunctionTemp; ///< Reg 326. Primary heater internal temperature @@ -156,6 +161,8 @@ U08 fpgaPrimaryHeaterReadCnt; ///< Reg 365. Primary heater read count U08 fpgaTrimmerHeaterFlags; ///< Reg 366. Trimmer heater flags U08 fpgaTrimmerHeaterReadCnt; ///< Reg 367. Trimmer heater read count + +#ifndef ENABLE_DVT_BOARD U08 fpgaCPoFault; ///< Reg 368. CPo conductivity sensor fault U08 fpgaCPoReadCnt; ///< Reg 369. CPo conductivity sensor read count U08 fpgaCPoErrorCnt; ///< Reg 370. CPo conductivity sensor error count @@ -164,6 +171,14 @@ U08 fpgaCPiErrorCnt; ///< Reg 373. CPi conductivity sensor error count U08 fpgaCP1CP2Fault; ///< Reg 374. Concentrate pump fault register for CP1 and CP2 U08 fpgaReserved1; ///< Reg 375. Reserved +#else + U08 fpgaCPiCPoEmstatOutByte; ///< Reg 368. CPi/CPo Emstat output FIFO + U08 fpgaCPiCPoEmstatRxErrCount; ///< Reg 369. CPi/CPo Emstat receive error count + U16 fpgaCPiCPoEmstatTxFIFOCount; ///< Reg 370. CPi/CPo Emstat transmit FIFO count + U16 fpgaCPiCPoEmstatRxFIFOCount; ///< Reg 372. CPi/CPo Emstat receive FIFO count + U08 fpgaCP1CP2Fault; ///< Reg 374. Concentrate pump fault register for CP1 and CP2 + U08 fpgaDRPHallStatus; ///< Reg 375. Drain pump hall sensor status +#endif U16 fpgaValveStates; ///< Reg 376. Valves states U16 fpgaFanIn1Pulse; ///< Reg 378. Fan inlet 1 pulse time in 2.5 us resolution @@ -188,10 +203,34 @@ U16 fpgaADCVccInt; ///< Reg 406. Internal FPGA Vcc Voltage. U16 fpgaADCVccAux; ///< Reg 408. Internal FPGA Vcc auxiliary voltage. U16 fpgaADCVPVN; ///< Reg 410. Internal FPGA VPVN voltage. - U16 fpgaOpenRegister; ///< Reg 412. Open register. + + // DVT only + U08 fpgaBaroReadCount; ///< Reg 412. Barometric sensor read count + U08 fpgaBaroErroCount; ///< Reg 413. Barometric sensor error count + // DVT only + U16 fpgaDrainPumpSpeedFeedback; ///< Reg 414. Drain pump speed feedback. U16 fpgaDrainPumpCurrentFeedback; ///< Reg 416. Drain pump current feedback. U16 fpgaDialysateFlowRate; ///< Req 418. Dialysate flow rate measurement + + // DVT only + U16 fpgaHeaterGateADC; ///< Reg 420. Heater gate ADC + U16 fpgaHeaterGNDADC; ///< Reg 422. Heater ground ADC + U08 fpgaHeater1ADCReadCount; ///< Reg 424. Heater 1 ADC read count + U08 fpgaHeater1ADCErrorCount; ///< Reg 425. Heater 1 ADC error count + U16 fpgaBaroManufacInfo; ///< Reg 426. Barometric sensor manufacturing information + U16 fpgaBaroPROMCoeff1; ///< Reg 428. Barometric sensor PROM coefficient 1 + U16 fpgaBaroPROMCoeff2; ///< Reg 430. Barometric sensor PROM coefficient 2 + U16 fpgaBaroPROMCoeff3; ///< Reg 432. Barometric sensor PROM coefficient 3 + U16 fpgaBaroPROMCoeff4; ///< Reg 434. Barometric sensor PROM coefficient 4 + U16 fpgaBaroPROMCoeff5; ///< Reg 436. Barometric sensor PROM coefficient 5 + U16 fpgaBaroPROMCoeff6; ///< Reg 438. Barometric sensor PROM coefficient 6 + U16 fpgaBaroPROMCRC; ///< Reg 440. Barometric sensor PROM CRC + U32 fpgaBaroPressure; ///< Reg 442. Barometric sensor pressure value + U32 fpgaBaroTemperature; ///< Reg 446. Barometric sensor temperature sensor + U08 fpgaTHDRTDReadCount; ///< Reg 450. THD RTD read count + U08 fpgaTHDRTDErrorCount; ///< Reg 451. THD RTD error count + // DVT only } DG_FPGA_SENSORS_T; typedef struct @@ -1517,7 +1556,11 @@ *************************************************************************/ U08 getFPGACPiFault( void ) { +#ifndef ENABLE_DVT_BOARD return fpgaSensorReadings.fpgaCPiFault; +#else + return 0; +#endif } /*********************************************************************//** @@ -1529,7 +1572,11 @@ *************************************************************************/ U08 getFPGACPiReadCount( void ) { +#ifndef ENABLE_DVT_BOARD return fpgaSensorReadings.fpgaCPiReadCnt; +#else + return 0; +#endif } /*********************************************************************//** @@ -1541,7 +1588,11 @@ *************************************************************************/ U08 getFPGACPiErrorCount( void ) { +#ifndef ENABLE_DVT_BOARD return fpgaSensorReadings.fpgaCPiErrorCnt; +#else + return 0; +#endif } /*********************************************************************//** @@ -1553,7 +1604,11 @@ *************************************************************************/ U32 getFPGACPi( void ) { +#ifndef ENABLE_DVT_BOARD return fpgaSensorReadings.fpgaCPi; +#else + return 0; +#endif } /*********************************************************************//** @@ -1565,7 +1620,11 @@ *************************************************************************/ U08 getFPGACPoFault( void ) { +#ifndef ENABLE_DVT_BOARD return fpgaSensorReadings.fpgaCPoFault; +#else + return 0; +#endif } /*********************************************************************//** @@ -1577,7 +1636,11 @@ *************************************************************************/ U08 getFPGACPoReadCount( void ) { +#ifndef ENABLE_DVT_BOARD return fpgaSensorReadings.fpgaCPoReadCnt; +#else + return 0; +#endif } /*********************************************************************//** @@ -1590,7 +1653,11 @@ *************************************************************************/ U08 getFPGACPoErrorCount( void ) { +#ifndef ENABLE_DVT_BOARD return fpgaSensorReadings.fpgaCPoErrorCnt; +#else + return 0; +#endif } /*********************************************************************//** @@ -1602,7 +1669,11 @@ *************************************************************************/ U32 getFPGACPo( void ) { +#ifndef ENABLE_DVT_BOARD return fpgaSensorReadings.fpgaCPo; +#else + return 0; +#endif } /*********************************************************************//** @@ -1927,4 +1998,132 @@ return ( fpgaSensorReadings.fpgaGPIO & CONCENTRATE_CAP_SWITCH_MASK ); } +/*********************************************************************//** + * @brief + * The getFPGABaroReadCount function gets the FPGA barometric sensor read count. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return barometric pressure sensor read count + *************************************************************************/ +U08 getFPGABaroReadCount( void ) +{ + return fpgaSensorReadings.fpgaBaroReadCount; +} + +/*********************************************************************//** + * @brief + * The getFPGABaroErrorCount function gets the FPGA barometric sensor error count. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return barometric pressure sensor error count + *************************************************************************/ +U08 getFPGABaroErrorCount( void ) +{ + return fpgaSensorReadings.fpgaBaroErroCount; +} + +/*********************************************************************//** + * @brief + * The getFPGABaroPressureSensitivity function gets the FPGA barometric pressure + * sensor sensitivity. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return barometric pressure sensor sensitivity + *************************************************************************/ +U16 getFPGABaroPressureSensitivity( void ) +{ + return fpgaSensorReadings.fpgaBaroPROMCoeff1; +} + +/*********************************************************************//** + * @brief + * The getFPGABaroPressureOffset function gets the FPGA barometric pressure + * sensor offset. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return barometric pressure sensor offset + *************************************************************************/ +U16 getFPGABaroPressureOffset( void ) +{ + return fpgaSensorReadings.fpgaBaroPROMCoeff2; +} + +/*********************************************************************//** + * @brief + * The getFPGABaroTempCoeffOfPressSensitvity function gets the FPGA barometric + * pressure sensor temperature coefficient of pressure sensitivity. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return barometric pressure sensor temperature coefficient of pressure sensitivity + *************************************************************************/ +U16 getFPGABaroTempCoeffOfPressSensitvity( void ) +{ + return fpgaSensorReadings.fpgaBaroPROMCoeff3; +} + +/*********************************************************************//** + * @brief + * The getFPGABaroTempCoeffOfPressOffset function gets the FPGA barometric + * pressure sensor temperature coefficient of pressure offset. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return barometric pressure sensor temperature coefficient of pressure offset + *************************************************************************/ +U16 getFPGABaroTempCoeffOfPressOffset( void ) +{ + return fpgaSensorReadings.fpgaBaroPROMCoeff4; +} + +/*********************************************************************//** + * @brief + * The getFPGABaroReferenceTemp function gets the FPGA barometric pressure + * sensor reference temperature. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return barometric pressure sensor reference temperature + *************************************************************************/ +U16 getFPGABaroReferenceTemp( void ) +{ + return fpgaSensorReadings.fpgaBaroPROMCoeff5; +} + +/*********************************************************************//** + * @brief + * The getFPGABaroTempCoeffOfTemperature function gets the FPGA barometric pressure + * sensor temperature coefficient of temperature. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return barometric pressure sensor temperature coefficient of temperature + *************************************************************************/ +U16 getFPGABaroTempCoeffOfTemperature( void ) +{ + return fpgaSensorReadings.fpgaBaroPROMCoeff6; +} + +/*********************************************************************//** + * @brief + * The getFPGABaroPressure function gets the FPGA barometric pressure sensor + * pressure. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return barometric pressure sensor pressure + *************************************************************************/ +U32 getFPGABaroPressure( void ) +{ + return ( fpgaSensorReadings.fpgaBaroPressure & MASK_OFF_U32_MSB ); +} + +/*********************************************************************//** + * @brief + * The getFPGABaroTemperature function gets the FPGA barometric pressure sensor + * temperature. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return barometric pressure sensor temperature + *************************************************************************/ +U32 getFPGABaroTemperature( void ) +{ + return ( fpgaSensorReadings.fpgaBaroTemperature & MASK_OFF_U32_MSB ); +} + /**@}*/ Index: firmware/App/Services/FPGA.h =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -rf91baac9704a90ab0fea1dd05e11833ffc5a5a4e --- firmware/App/Services/FPGA.h (.../FPGA.h) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Services/FPGA.h (.../FPGA.h) (revision f91baac9704a90ab0fea1dd05e11833ffc5a5a4e) @@ -142,6 +142,17 @@ U08 getFPGADialysateCapStatus( void ); U08 getFPGAConcentrateCapStatus( void ); +U08 getFPGABaroReadCount( void ); +U08 getFPGABaroErrorCount( void ); +U16 getFPGABaroPressureSensitivity( void ); +U16 getFPGABaroPressureOffset( void ); +U16 getFPGABaroTempCoeffOfPressSensitvity( void ); +U16 getFPGABaroTempCoeffOfPressOffset( void ); +U16 getFPGABaroReferenceTemp( void ); +U16 getFPGABaroTempCoeffOfTemperature( void ); +U32 getFPGABaroPressure( void ); +U32 getFPGABaroTemperature( void ); + /**@}*/ #endif