Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -rbf9a2a05483a188c075023bc3f3cbb93e8d2ca5f -r52761961d73cdc8f5f9c0c83ef420bcd43a27551 --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision bf9a2a05483a188c075023bc3f3cbb93e8d2ca5f) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 52761961d73cdc8f5f9c0c83ef420bcd43a27551) @@ -707,7 +707,7 @@ *************************************************************************/ BOOL startHeparinContinuous( void ) { - F32 flowRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ); + F32 flowRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DELIVERY_RATE ); if ( ( flowRate >= MIN_HEPARIN_CONTINUOUS_RATE ) && ( flowRate <= MAX_HEPARIN_CONTINUOUS_RATE ) && ( FALSE == isSyringePumpHome() ) ) { @@ -1114,7 +1114,7 @@ #endif { F32 bolusVol = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); - F32 hepRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ); + F32 hepRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DELIVERY_RATE ); // Syringe detection not required if not using Heparin in treatment if ( ( bolusVol > NEARLY_ZERO ) || ( hepRate > NEARLY_ZERO ) ) @@ -1511,8 +1511,8 @@ BOOL stopPump = FALSE; S32 pos = getSyringePumpPosition(); F32 bolusVol = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); - F32 contRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ); - U32 preStop = getTreatmentParameterU32( TREATMENT_PARAM_HEPARIN_STOP_TIME ); + F32 contRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DELIVERY_RATE ); + U32 preStop = getTreatmentParameterU32( TREATMENT_PARAM_HEPARIN_DELIVERY_DURATION ); U32 setTxDur = getTreatmentParameterU32( TREATMENT_PARAM_TREATMENT_DURATION ); F32 hepDurHr = ( (F32)( setTxDur - preStop ) / (F32)MIN_PER_HOUR ); F32 txVolumeReq = SYRINGE_PUMP_PRIME_VOLUME_ML + bolusVol + ( hepDurHr * contRate ); @@ -1567,8 +1567,8 @@ BOOL stopPump = FALSE; S32 pos = getSyringePumpPosition(); F32 bolusVol = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); - F32 contRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ); - U32 preStop = getTreatmentParameterU32( TREATMENT_PARAM_HEPARIN_STOP_TIME ); + F32 contRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DELIVERY_RATE ); + U32 preStop = getTreatmentParameterU32( TREATMENT_PARAM_HEPARIN_DELIVERY_DURATION ); U32 setTxDur = getTreatmentParameterU32( TREATMENT_PARAM_TREATMENT_DURATION ); F32 hepDurHr = ( (F32)( setTxDur - preStop ) / (F32)MIN_PER_HOUR ); F32 txVolume = SYRINGE_PUMP_PRIME_VOLUME_ML + bolusVol + ( hepDurHr * contRate ); @@ -2311,7 +2311,7 @@ break; case SYRINGE_PUMP_OP_CONTINUOUS: - setTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DISPENSE_RATE, opParams.rate ); + setTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DELIVERY_RATE, opParams.rate ); result = startHeparinContinuous(); break; Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -ra98f9ee6b2314f8d98764222a580a896840815f1 -r52761961d73cdc8f5f9c0c83ef420bcd43a27551 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision a98f9ee6b2314f8d98764222a580a896840815f1) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 52761961d73cdc8f5f9c0c83ef420bcd43a27551) @@ -7,8 +7,8 @@ * * @file ModeTreatment.c * -* @author (last) Varshini Nagabooshanam -* @date (last) 29-Jan-2026 +* @author (last) Raghu Kallala +* @date (last) 17-Apr-2026 * * @author (original) Sean Nash * @date (original) 21-Apr-2025 @@ -20,6 +20,7 @@ #include "Bubbles.h" #include "Buttons.h" #include "DDInterface.h" +#include "Messaging.h" #include "ModeService.h" #include "ModeTreatment.h" //#include "NVDataMgmt.h" @@ -177,7 +178,8 @@ *************************************************************************/ U32 transitionToTreatmentMode( void ) { -// PRESSURE_LIMIT_CHANGE_RESPONSE_T respRecord; + PRESSURE_LIMIT_CHANGE_RESPONSE_T respRecord; + F32 bicarbConvFactor; // don't re-initialize treatment if tester is jumping to Tx mode // if ( getPreviousOperationMode() != MODE_PRET ) @@ -208,18 +210,22 @@ presUFVolumeL = getTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME ); presUFRateLHr = presUFVolumeL / ( (F32)getTreatmentParameterU32( TREATMENT_PARAM_TREATMENT_DURATION ) / (F32)MIN_PER_HOUR ); setDialysisDDParams( getTreatmentParameterU32( TREATMENT_PARAM_DIALYSATE_FLOW ), presUFVolumeL, presUFRateLHr ); + bicarbConvFactor = BICARBONATE_CONVERSION_FACTOR; // Direct DD to generate dialysate and bypass while priming blood cmdStartGenerateDialysate( (F32)getTreatmentParameterU32( TREATMENT_PARAM_DIALYSATE_FLOW ), presUFRateLHr, getTreatmentParameterF32( TREATMENT_PARAM_DIALYSATE_TEMPERATURE ), TRUE, - (ACID_CONCENTRATE_TYPE_T)getTreatmentParameterU32( TREATMENT_PARAM_ACID_CONCENTRATE ), - (BICARB_CONCENTRATE_TYPE_T)getTreatmentParameterU32( TREATMENT_PARAM_BICARB_CONCENTRATE ) ); + getTreatmentParameterF32( TREATMENT_PARAM_ACID_CONCENTRATE_CONV_FACTOR ), + bicarbConvFactor, + getTreatmentParameterU32( TREATMENT_PARAM_SODIUM ), + getTreatmentParameterU32( TREATMENT_PARAM_BICARBONATE ) ); // Read back limits for transmit to UI. -// respRecord.artPresLimitWindowmmHg = getTreatmentParameterS32( TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW ); -// respRecord.venPresLimitWindowmmHg = getTreatmentParameterS32( TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW ); -// respRecord.venPresLimitAsymmetricmmHg = getTreatmentParameterS32( TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC ); + respRecord.artPresLimitWindowmmHg = getSysConfigTreatmentParameterU32( TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW ); + respRecord.venPresLimitWindowmmHg = getSysConfigTreatmentParameterU32( TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW ); + respRecord.venPresLimitAsymmetricmmHg = getSysConfigTreatmentParameterU32( TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC ); + respRecord.tmpPresLimitWindowmmHg = getSysConfigTreatmentParameterU32( TREATMENT_PARAM_TMP_PRES_LIMIT_WINDOW ); // Send response -// sendPressureLimitsChangeResponse( &respRecord ); + sendPressureLimitsChangeResponse( &respRecord ); return currentTreatmentState; } @@ -512,6 +518,35 @@ /*********************************************************************//** * @brief + * The sendPressureLimitsChangeResponse function constructs a change + * pressure limits response to the UI and queues the msg for transmit on the + * appropriate CAN channel. + * @details Inputs: none + * @details Outputs: Pressure limits change response msg constructed and queued. + * @param data response data record + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendPressureLimitsChangeResponse( PRESSURE_LIMIT_CHANGE_RESPONSE_T *data ) +{ + BOOL result; + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_TD_PRESSURE_LIMITS_CHANGE_RESPONSE; + msg.hdr.payloadLen = sizeof( PRESSURE_LIMIT_CHANGE_RESPONSE_T ); + + memcpy( payloadPtr, (U08*)data, sizeof( PRESSURE_LIMIT_CHANGE_RESPONSE_T ) ); + + // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_TD_2_UI, ACK_REQUIRED ); + + return result; +} + +/*********************************************************************//** + * @brief * The handleTreatmentStartState function handles the Start state of * the Treatment Mode state machine. Should only pass through this state * once at very beginning of treatment. @@ -1080,7 +1115,7 @@ { SALINE_BOLUS_DATA_PAYLOAD_T data; - data.tgtSalineVolumeMl = getTreatmentParameterU32( TREATMENT_PARAM_SALINE_BOLUS_VOLUME ); + data.tgtSalineVolumeMl = getTreatmentParameterU32( TREATMENT_PARAM_FLUID_BOLUS_VOLUME ); data.cumSalineVolumeMl = 0.0F; // TODO data.bolSalineVolumeMl = 0.0F; // TODO Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -r22293ecac97c3f374f90bb20e3c4cc03fbd27f9d -r52761961d73cdc8f5f9c0c83ef420bcd43a27551 --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 22293ecac97c3f374f90bb20e3c4cc03fbd27f9d) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 52761961d73cdc8f5f9c0c83ef420bcd43a27551) @@ -7,8 +7,8 @@ * * @file AlarmMgmtSWFaults.h * -* @author (last) Varshini Nagabooshanam -* @date (last) 26-Jan-2026 +* @author (last) Raghu Kallala +* @date (last) 29-Apr-2026 * * @author (original) Sean Nash * @date (original) 01-Aug-2024 @@ -182,11 +182,14 @@ SW_FAULT_ID_VALVES_INVALID_VALVE_FINDING_EDGE = 151, SW_FAULT_ID_TD_VALVES_INVALID_FIND_DEENERGIZED_EDGE = 152, SW_FAULT_ID_BLOOD_PRIME_INVALID_STATE = 153, - SW_FAULT_ID_MODE_PRE_TREATMENT_INVALID_STATE = 148, - SW_FAULT_ID_TD_SYRINGE_INVALID_BOLUS_CMD = 149, - SW_FAULT_ID_TD_SYRINGE_INVALID_CONT_CMD = 150, - SW_FAULT_ID_TD_SYRINGE_INVALID_STATE = 151, - SW_FAULT_ID_TD_SYRINGE_INVALID_VREF = 152, + SW_FAULT_ID_MODE_PRE_TREATMENT_INVALID_STATE = 154, + SW_FAULT_ID_TD_AIR_PUMP_DUTY_CYCLE_OUT_OF_RANGE = 155, + SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER = 156, + SW_FAULT_ID_INVALID_TREATMENT_MODALITY = 157, + SW_FAULT_ID_TD_SYRINGE_INVALID_BOLUS_CMD = 158, + SW_FAULT_ID_TD_SYRINGE_INVALID_CONT_CMD = 159, + SW_FAULT_ID_TD_SYRINGE_INVALID_STATE = 160, + SW_FAULT_ID_TD_SYRINGE_INVALID_VREF = 161, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/FpgaTD.c =================================================================== diff -u -r291d652fcd09b461728962a547d3b08163737d76 -r52761961d73cdc8f5f9c0c83ef420bcd43a27551 --- firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision 291d652fcd09b461728962a547d3b08163737d76) +++ firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision 52761961d73cdc8f5f9c0c83ef420bcd43a27551) @@ -102,10 +102,10 @@ U16 fpgaGenWrRd; ///< Reg 256. FPGA general read-back register (mirrored from a general write register in write page at addr 4). U08 errorCountProcessor; ///< Reg 258. Error count for processor communications. U08 errorCountPC; ///< Reg 259. Error count for TBD. - U08 sPumpDACRdStatus; ///< Reg 260. Syringe pump DAC read status. + U08 h10DACRdStatus; ///< Reg 260. H10 Syringe pump DAC read status. U08 h6HallStatus; ///< Reg 261. H6 hall sensor status. - U16 sPumpDACSet; ///< Reg 262. Syringe pump DAC setting. - U16 sPumpDACEEProm; ///< Reg 264. Syringe pump DAC EEProm data. + U16 h10DACSet; ///< Reg 262. H10 Syringe pump DAC setting. + U16 h10DACEEProm; ///< Reg 264. H10 Syringe pump DAC EEProm data. U16 h14Pressure; ///< Reg 266. H14 raw pressure data. S16 h14Temperature; ///< Reg 268. H14 raw temperature data. U08 h14ReadCount; ///< Reg 270. H14 read count. @@ -126,15 +126,15 @@ S16 h19EncPosition; ///< Reg 298. H19 encoder position (1000 steps/rev). S16 h19MaxEncPosition; ///< Reg 300. H19 max encoder position. U16 GPIOReg; ///< Reg 302. GPIO register. - U08 HEPStatus; ///< Reg 304. HEP status register. - U08 HEPAdcReadCount; ///< Reg 305. HEP ADC read counter. - U08 HEPAdcDacStatus; ///< Reg 306. HEP ADC/DAC status register. - U08 HEPEncStatus; ///< Reg 307. HEP encoder status register. - S32 HEPEncPosition; ///< Reg 308. HEP encoder position. - U16 HEPAdcCh0; ///< Reg 312. HEP ADC channel 0 reading. - U16 HEPAdcCh1; ///< Reg 314. HEP ADC channel 1 reading. - U16 HEPAdcCh2; ///< Reg 316. HEP ADC channel 2 reading. - U16 HEPAdcCh3; ///< Reg 318. HEP ADC channel 3 reading. + U08 h10Status; ///< Reg 304. H10 Syringe pump status register. + U08 h10AdcReadCount; ///< Reg 305. H10 Syringe pump ADC read counter. + U08 h10AdcDacStatus; ///< Reg 306. H10 Syringe pump ADC/DAC status register. + U08 h10EncStatus; ///< Reg 307. H10 Syringe pump encoder status register. + S32 h10EncPosition; ///< Reg 308. H10 Syringe pump encoder position. + U16 h10AdcCh0; ///< Reg 312. H10 Syringe pump ADC channel 0 reading. + U16 h10AdcCh1; ///< Reg 314. H10 Syringe pump ADC channel 1 reading. + U16 h10AdcCh2; ///< Reg 316. H10 Syringe pump ADC channel 2 reading. + U16 h10AdcCh3; ///< Reg 318. H10 Syringe pump ADC channel 3 reading. U16 fpgaAdcTemperature; ///< Reg 320. FPGA ADC temperature. U16 fpga1msTimerCounter; ///< Reg 322. FPGA 1 millisecond timer counter. U16 alarmBuzzerCurrentAdc; ///< Reg 324. Alarm buzzer current ADC reading. @@ -189,10 +189,10 @@ U08 h1Control; ///< Reg 30. H1 control register. U08 h1h19ValveEncoderControl; ///< Reg 31. H1/H19 valve encoder control register. U08 alarmControl; ///< Reg 32. Alarm audio control register. - U08 syrPumpControl; ///< Reg 33. Syringe pump control register. - U32 syrPumpSpeed; ///< Reg 34. Syringe pump time between step toggle (1/2 step period). - U16 syrPumpDACData; ///< Reg 38. Syringe pump DAC data (12 bits). - U16 syrPumpDACControl; ///< Reg 40. Syringe pump ADC and DAC control register. + U08 h10Control; ///< Reg 33. H10 Syringe pump control register. + U32 h10Speed; ///< Reg 34. H10 Syringe pump time between step toggle (1/2 step period). + U16 h10DACData; ///< Reg 38. H10 Syringe pump DAC data (12 bits). + U16 h10DACControl; ///< Reg 40. H10 Syringe pump ADC and DAC control register. U16 h12Period; ///< Reg 42. H12 Air pump time period for each count in PWM register. U32 h5SetSpeed; ///< Reg 44. H5 ejector motor set speed. } FPGA_ACTUATORS_T; @@ -1341,4 +1341,227 @@ } } +/*********************************************************************//** + * @brief + * The setFPGASyringePumpControlFlags function sets the syringe pump control + * register per given bit flags. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints + * @param bitFlags control bit settings for syringe pump + * @return none + *************************************************************************/ +void setFPGASyringePumpControlFlags( U08 bitFlags ) +{ + fpgaActuatorSetPoints.h10Control = bitFlags; +} + +/*********************************************************************//** + * @brief + * The setFPGASyringePumpADCandDACControlFlags function sets the syringe pump + * ADC/DAC control register per given bit flags. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints + * @param bitFlags ADC/DAC control bit settings for syringe pump + * @return none + *************************************************************************/ +void setFPGASyringePumpADCandDACControlFlags( U08 bitFlags ) +{ + fpgaActuatorSetPoints.h10DACControl = bitFlags; +} + +/*********************************************************************//** + * @brief + * The setFPGASyringePumpDACOutputLevel function sets the syringe pump force + * sensor DAC output level register to a given value. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints + * @param counts level to set syringe pump force sensor DAC to + * @return none + *************************************************************************/ +void setFPGASyringePumpDACOutputLevel( U16 counts ) +{ + fpgaActuatorSetPoints.h10DACData = counts; +} + +/*********************************************************************//** + * @brief + * The setFPGASyringePumpStepToggleTime function sets the syringe pump stepper + * toggle time register to a given period (in uSec). + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints + * @param microSeconds toggle the stepper motor at this time interval to set pump speed + * @return none + *************************************************************************/ +void setFPGASyringePumpStepToggleTime( U32 microSeconds ) +{ + fpgaActuatorSetPoints.h10Speed = microSeconds; +} + +/*********************************************************************//** + * @brief + * The getFPGASyringePumpStatus function gets the latest syringe pump status + * register reading. Bit 0 indicates a fault. + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return last syringe pump status reading + *************************************************************************/ +U08 getFPGASyringePumpStatus( void ) +{ + return fpgaSensorReadings.h10Status; +} + +/*********************************************************************//** + * @brief + * The getFPGASyringePumpADCReadCounter function gets the latest syringe pump + * ADC read counter. Counter is 8-bit and rolls over when exceeding 255. + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return last syringe pump ADC read counter + *************************************************************************/ +U08 getFPGASyringePumpADCReadCounter( void ) +{ + return fpgaSensorReadings.h10AdcReadCount; +} + +/*********************************************************************//** + * @brief + * The getFPGASyringePumpADCandDACStatus function gets the latest syringe pump + * ADC/DAC status register reading. + * Bit 7 = DAC write and read-back done + * Bit 6 = I2C error on DAC data transfer + * Bit 0..5 = count of I2C errors, rolls over after 63 + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return last syringe pump ADC/DAC status reading + *************************************************************************/ +U08 getFPGASyringePumpADCandDACStatus( void ) +{ + return fpgaSensorReadings.h10AdcDacStatus; +} + +/*********************************************************************//** + * @brief + * The getFPGASyringePumpEncoderStatus function gets the latest syringe pump + * encoder status register reading. + * Bit 7 = direction (0=fwd, 1=rev) + * Bit 0..5 = direction error count (# of errors after power up, rolls over after 63) + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return last syringe pump encoder status reading + *************************************************************************/ +U08 getFPGASyringePumpEncoderStatus( void ) +{ + return fpgaSensorReadings.h10EncStatus; +} + +/*********************************************************************//** + * @brief + * The getFPGASyringePumpEncoderPosition function gets the latest syringe pump + * encoder position reading. + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return last syringe pump encoder position reading + *************************************************************************/ +U32 getFPGASyringePumpEncoderPosition( void ) +{ + return fpgaSensorReadings.h10EncPosition; +} + +/*********************************************************************//** + * @brief + * The getFPGASyringePumpADCChannel0 function gets the latest syringe pump ADC + * channel 0 register reading (syringe pump force sensor). + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return last syringe pump ADC channel 0 reading + *************************************************************************/ +U16 getFPGASyringePumpADCChannel0( void ) +{ + return fpgaSensorReadings.h10AdcCh0; +} + +/*********************************************************************//** + * @brief + * The getFPGASyringePumpADCChannel1 function gets the latest syringe pump ADC + * channel 1 register reading (syringe detection switch). + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return last syringe pump ADC channel 1 reading + *************************************************************************/ +U16 getFPGASyringePumpADCChannel1( void ) +{ + return fpgaSensorReadings.h10AdcCh1; +} + +/*********************************************************************//** + * @brief + * The getFPGASyringePumpADCChannel2 function gets the latest syringe pump ADC + * channel 2 register reading (syringe pump home position sensor). + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return last syringe pump ADC channel 2 reading + *************************************************************************/ +U16 getFPGASyringePumpADCChannel2( void ) +{ + return fpgaSensorReadings.h10AdcCh2; +} + +/*********************************************************************//** + * @brief + * The getFPGASyringePumpADCChannel3 function gets the latest syringe pump ADC + * channel 3 register reading. + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return last syringe pump ADC channel 3 reading + *************************************************************************/ +U16 getFPGASyringePumpADCChannel3( void ) +{ + return fpgaSensorReadings.h10AdcCh3; +} + +/*********************************************************************//** + * @brief + * The getFPGASyringePumpDACStatus function gets the latest syringe pump + * DAC status. + * Bit 0: PD0 + * Bit 1: PD1 + * Bit 2: POR + * Bit 3: Ready (not busy) + * Bits 4..7: N/A + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return last syringe pump DAC status reading + *************************************************************************/ +U08 getFPGASyringePumpDACStatus( void ) +{ + return fpgaSensorReadings.h10DACRdStatus; +} + +/*********************************************************************//** + * @brief + * The getFPGASyringePumpDACSetting function gets the latest syringe pump + * DAC setting. + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return last syringe pump DAC setting + *************************************************************************/ +U16 getFPGASyringePumpDACSetting( void ) +{ + return fpgaSensorReadings.h10DACSet; +} + +/*********************************************************************//** + * @brief + * The getFPGASyringePumpDACStoredSetting function gets the latest syringe + * pump DAC setting stored in sensor's EEPROM. + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return last syringe pump DAC setting stored in EEPROM + *************************************************************************/ +U16 getFPGASyringePumpDACStoredSetting( void ) +{ + return fpgaSensorReadings.h10DACEEProm; +} + + /**@}*/ Index: firmware/App/Services/FpgaTD.h =================================================================== diff -u -r291d652fcd09b461728962a547d3b08163737d76 -r52761961d73cdc8f5f9c0c83ef420bcd43a27551 --- firmware/App/Services/FpgaTD.h (.../FpgaTD.h) (revision 291d652fcd09b461728962a547d3b08163737d76) +++ firmware/App/Services/FpgaTD.h (.../FpgaTD.h) (revision 52761961d73cdc8f5f9c0c83ef420bcd43a27551) @@ -152,6 +152,23 @@ U32 getFPGAEjectorRetractOpticalSensor( void ); U32 getFPGAEjectorEngageOpticalSensor( void ); +void setFPGASyringePumpControlFlags( U08 bitFlags ); +void setFPGASyringePumpADCandDACControlFlags( U08 bitFlags ); +void setFPGASyringePumpDACOutputLevel( U16 counts ); +void setFPGASyringePumpStepToggleTime( U32 microSeconds ); +U08 getFPGASyringePumpStatus( void ); +U08 getFPGASyringePumpADCReadCounter( void ); +U08 getFPGASyringePumpADCandDACStatus( void ); +U08 getFPGASyringePumpEncoderStatus( void ); +U32 getFPGASyringePumpEncoderPosition( void ); +U16 getFPGASyringePumpADCChannel0( void ); +U16 getFPGASyringePumpADCChannel1( void ); +U16 getFPGASyringePumpADCChannel2( void ); +U16 getFPGASyringePumpADCChannel3( void ); +U08 getFPGASyringePumpDACStatus( void ); +U16 getFPGASyringePumpDACSetting( void ); +U16 getFPGASyringePumpDACStoredSetting( void ); + /**@}*/ #endif