Index: firmware/App/Services/FpgaTD.c =================================================================== diff -u -r95cea3d12a351d086bfcc6344d927374c1848fdf -r1c21d74bc369572b0fcc5b978adc23dc9ce7c656 --- firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision 95cea3d12a351d086bfcc6344d927374c1848fdf) +++ firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision 1c21d74bc369572b0fcc5b978adc23dc9ce7c656) @@ -7,8 +7,8 @@ * * @file FpgaTD.c * -* @author (last) Sean Nash -* @date (last) 30-Jun-2026 +* @author (last) Varshini Nagabooshanam +* @date (last) 05-Aug-2026 * * @author (original) Sean Nash * @date (original) 01-Aug-2024 @@ -71,6 +71,9 @@ #define FPGA_H18_BUBBLE_STATUS_MASK 0x0002 ///< Bit mask for venous air bubble detector input status. #define FPGA_H18_BUBBLE_SELF_TEST_CMD 0x08 ///< Bit for venous air bubble detector self-test command. +#define FPGA_NIBP_CMD_MASK 0x0F ///< Bit mask for NIBP command bits +#define FPGA_NIBP_CMD_RDY 0x10 ///< NIBP command ready pulse bit + /// Control bits to run syringe pump in reverse direction // TODO - move to syringe pump controller unit when implemented. static const U08 SYRINGE_PUMP_CONTROL_RUN_REVERSE = SYRINGE_PUMP_CONTROL_SLEEP_OFF | SYRINGE_PUMP_CONTROL_NOT_RESET | @@ -169,6 +172,18 @@ U32 baroTemperature; ///< Reg 372. Baro temperature value in counts. U08 baroReadCount; ///< Reg 376. Baro read count. U08 baroErrorCount; ///< Reg 377. Baro error count. + U08 notUsed; ///< Reg 378. Not used + U08 h10DacRdByte2; ///< Reg 379. H10 Syringe pump DAC Read Byte 2. + U08 h10DacRdByte3; ///< Reg 380. H10 Syringe pump DAC Read Byte 3. + U08 h10DacRdByte4; ///< Reg 381. H10 Syringe pump DAC Read Byte 4. + U08 h10DacRdByte5; ///< Reg 382. H10 Syringe pump DAC Read Byte 5. + U08 h10DacRdByte6; ///< Reg 383. H10 Syringe pump DAC Read Byte 6. + U08 nibpCtlStatus; ///< Reg 384. NIBP control status register. + U08 nibpStatusResp; ///< Reg 385. NIBP response status register. + S16 cuffPressure; ///< Reg 386. NIBP cuff pressure in mmHg. + U16 bpSystolic; ///< Reg 388. Systolic BP in mmHg. + U16 bpDiastolic; ///< Reg 390. Diastolic BP in mmHg. + U16 bpHr; ///< Reg 392. Heart rate in BPM. } FPGA_SENSORS_T; /// Record structure for FPGA continuous priority writes. @@ -196,8 +211,9 @@ 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. + U08 h10DACControl; ///< Reg 40. H10 Syringe pump ADC and DAC control register. + U16 nibpCtl; ///< Reg 41. NIBP control register. + U16 nibpInflate; ///< Reg 42. NIBP inflate pressure register. U32 h5SetSpeed; ///< Reg 44. H5 ejector motor set speed. U16 h1CmdHeader; ///< Reg 48. H1 Magellan command header. U16 h1InputWord1; ///< Reg 50. H1 Magellan input word 1. @@ -977,21 +993,6 @@ /*********************************************************************//** * @brief - * The setH12AirPumpMotorPWMCntTime function sets the air pump motor PWM count - * time in increments of 10 nS. The PWM period will then be 255 x given - * value x 10 nS. - * @details \b Inputs: fpgaActuatorSetPoints.h12Period - * @details \b Outputs: fpgaActuatorSetPoints.h12Period - * @param tenNS The time associated with each PWM count in power level setting. - * @return none - *************************************************************************/ -void setH12AirPumpMotorPWMCntTime( U16 tenNS ) -{ - fpgaActuatorSetPoints.h12Period = tenNS; -} - -/*********************************************************************//** - * @brief * The H18BubbleDetected function determines whether H18 bubble detector * sensor is currently detecting a bubble. * @details \b Inputs: fpgaSensorReadings @@ -1591,6 +1592,7 @@ } /*********************************************************************//** +<<<<<<< HEAD * @brief * The setH1CmdHeader function sets the H1 Magellan command header. * @details \b Inputs: fpgaActuatorSetPoints @@ -1792,10 +1794,60 @@ U16 getH1OutputWord1( void ) { return fpgaSensorReadings.h1OutputWord1; +======= +* @brief +* The setNIBPCommand function sets the FPGA NIBP command bits and pulses +* the command ready bit to notify the FPGA that a new NIBP command is +* available. +* @details \b Inputs: none +* @details \b Outputs: fpgaActuatorSetPoints +* @param command Blood pressure command to send to the FPGA. +* @return none +*************************************************************************/ +void setNIBPCommand( U08 command ) +{ + fpgaActuatorSetPoints.nibpCtl &= ~FPGA_NIBP_CMD_MASK; + fpgaActuatorSetPoints.nibpCtl |= ( (U16)command & FPGA_NIBP_CMD_MASK ); + if ( 0 == command ) + { + fpgaActuatorSetPoints.nibpCtl &= ~FPGA_NIBP_CMD_RDY; + } + else + { + fpgaActuatorSetPoints.nibpCtl |= FPGA_NIBP_CMD_RDY; + } } /*********************************************************************//** +* @brief +* The setNIBPInflatePressure function sets the initial NIBP cuff inflate +* pressure register. +* @details \b Inputs: none +* @details \b Outputs: fpgaActuatorSetPoints.nibpInflate +* @param pressure Initial cuff inflation pressure in mmHg. +* @return none +*************************************************************************/ +void setNIBPInflatePressure( U16 pressure ) +{ + fpgaActuatorSetPoints.nibpInflate = pressure; +} + +/********************************************************************//** * @brief + * The getNIBPControlStatus function returns the FPGA NIBP control status. + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return FPGA NIBP control status register. + ***************************************************************************/ +U08 getNIBPControlStatus( void ) +{ + return fpgaSensorReadings.nibpCtlStatus; +>>>>>>> b176b1560b9f9f4ea685c8d2bda70c3cd5ef6421 +} + +/*********************************************************************//** + * @brief +<<<<<<< HEAD * The getH1OutputWord2 function reads H1 output word 2. * @details \b Inputs: fpgaSensorReadings * @details \b Outputs: none @@ -1915,4 +1967,66 @@ } +======= + * The getNIBPStatusResponse function returns the FPGA NIBP response status. + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return FPGA NIBP response status register. + ***************************************************************************/ +U08 getNIBPStatusResponse( void ) +{ + return fpgaSensorReadings.nibpStatusResp; +} + +/*********************************************************************//** +* @brief +* The getNIBPCuffPressure function returns the FPGA NIBP cuff pressure. +* @details \b Inputs: fpgaSensorReadings +* @details \b Outputs: none +* @return NIBP cuff pressure in mmHg. +*************************************************************************/ +S16 getNIBPCuffPressure( void ) +{ + return fpgaSensorReadings.cuffPressure; +} + +/*********************************************************************//** +* @brief +* The getNIBPSystolicPressure function returns the FPGA systolic blood +* pressure measurement. +* @details \b Inputs: fpgaSensorReadings +* @details \b Outputs: none +* @return Systolic blood pressure in mmHg. +*************************************************************************/ +U16 getNIBPSystolicPressure( void ) +{ + return fpgaSensorReadings.bpSystolic; +} + +/*********************************************************************//** +* @brief +* The getNIBPDiastolicPressure function returns the FPGA diastolic blood +* pressure measurement. +* @details \b Inputs: fpgaSensorReadings +* @details \b Outputs: none +* @return Diastolic blood pressure in mmHg. +*************************************************************************/ +U16 getNIBPDiastolicPressure( void ) +{ + return fpgaSensorReadings.bpDiastolic; +} + +/*********************************************************************//** +* @brief +* The getNIBPHeartRate function returns the FPGA heart rate measurement. +* @details \b Inputs: fpgaSensorReadings +* @details \b Outputs: none +* @return Heart rate in BPM. +*************************************************************************/ +U16 getNIBPHeartRate( void ) +{ + return fpgaSensorReadings.bpHr; +} + +>>>>>>> b176b1560b9f9f4ea685c8d2bda70c3cd5ef6421 /**@}*/ Index: firmware/App/Services/FpgaTD.h =================================================================== diff -u -r6ad57767b87b8e691c6cbb728b56efabe8a28e8e -r1c21d74bc369572b0fcc5b978adc23dc9ce7c656 --- firmware/App/Services/FpgaTD.h (.../FpgaTD.h) (revision 6ad57767b87b8e691c6cbb728b56efabe8a28e8e) +++ firmware/App/Services/FpgaTD.h (.../FpgaTD.h) (revision 1c21d74bc369572b0fcc5b978adc23dc9ce7c656) @@ -8,7 +8,7 @@ * @file FpgaTD.h * * @author (last) Varshini Nagabooshanam -* @date (last) 15-Jun-2026 +* @date (last) 24-Jun-2026 * * @author (original) Sean Nash * @date (original) 01-Aug-2024 @@ -128,7 +128,6 @@ U16 getH12AirPumpMotorRPM( void ); void setH12AirPumpMotorPowerLevel( U08 power ); -void setH12AirPumpMotorPWMCntTime( U16 tenNS ); void setH19Control( U08 controlBits ); U08 getH19Control( void ); @@ -149,9 +148,18 @@ U16 getFPGAInletFan1TogglePeriod( void ); BOOL getH9FrontDoorClosedStatus( void ); -U32 getFPGAEjectorRetractOpticalSensor( void ); -U32 getFPGAEjectorEngageOpticalSensor( void ); +U32 getFPGAEjectorRetractOpticalSensor( void ); +U32 getFPGAEjectorEngageOpticalSensor( void ); +void setNIBPCommand( U08 command ); +void setNIBPInflatePressure( U16 pressure ); +U08 getNIBPControlStatus( void ); +U08 getNIBPStatusResponse( void ); +S16 getNIBPCuffPressure( void ); +U16 getNIBPSystolicPressure( void ); +U16 getNIBPDiastolicPressure( void ); +U16 getNIBPHeartRate( void ); + void setFPGASyringePumpControlFlags( U08 bitFlags ); void setFPGASyringePumpADCandDACControlFlags( U08 bitFlags ); void setFPGASyringePumpDACOutputLevel( U16 counts ); Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r0b8d53ac1676055b6f65c737a45015c41b857e39 -r1c21d74bc369572b0fcc5b978adc23dc9ce7c656 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 0b8d53ac1676055b6f65c737a45015c41b857e39) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 1c21d74bc369572b0fcc5b978adc23dc9ce7c656) @@ -7,8 +7,8 @@ * * @file Messaging.c * -* @author (last) suresh -* @date (last) 05-Aug-2026 +* @author (last) Varshini Nagabooshanam +* @date (last) 07-Aug-2026 * * @author (original) Sean Nash * @date (original) 01-Aug-2024 @@ -21,6 +21,7 @@ #include "AirTrap.h" #include "AlarmMgmt.h" #include "BloodFlow.h" +#include "BPModule.h" #include "Bubbles.h" #include "Buttons.h" #include "Compatible.h" @@ -137,6 +138,7 @@ { MSG_ID_UI_ADJUST_DISPOSABLES_CONFIRM_REQUEST, &handleAutoLoadRequest }, { MSG_ID_UI_SETUP_TUBING_SET_CONNECTIONS_CONFIRM_REQUEST, &handleSetupTubingSetConnectionConfirmRequest }, { MSG_ID_UI_ADJUST_DISPOSABLES_REMOVAL_CONFIRM_REQUEST, &handleAutoEjectRequest }, + { MSG_ID_UI_BLOOD_PRESSURE_REQUEST, &bpModuleHandleVitalsRequest }, { MSG_ID_FFU_SIGNAL_TD_UPDATE_AVAILABLE, &handleUpdateAvailable }, { MSG_ID_UI_FLUID_BOLUS_REQUEST, &handleFluidBolusRequest }, { MSG_ID_UI_GENERIC_CONFIRMATION_RESULT_RESPONSE, &handleUIConfirmationResponse }, Index: firmware/App/TDCommon.h =================================================================== diff -u -r0b8d53ac1676055b6f65c737a45015c41b857e39 -r1c21d74bc369572b0fcc5b978adc23dc9ce7c656 --- firmware/App/TDCommon.h (.../TDCommon.h) (revision 0b8d53ac1676055b6f65c737a45015c41b857e39) +++ firmware/App/TDCommon.h (.../TDCommon.h) (revision 1c21d74bc369572b0fcc5b978adc23dc9ce7c656) @@ -25,7 +25,7 @@ #define TD_VERSION_MAJOR 0 #define TD_VERSION_MINOR 0 #define TD_VERSION_MICRO 0 -#define TD_VERSION_BUILD 67 +#define TD_VERSION_BUILD 68 // ********** development build switches ********** Index: firmware/App/Tasks/TaskGeneral.c =================================================================== diff -u -r6433fff760cca163a6855430d2282378627a4fc9 -r1c21d74bc369572b0fcc5b978adc23dc9ce7c656 --- firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 6433fff760cca163a6855430d2282378627a4fc9) +++ firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 1c21d74bc369572b0fcc5b978adc23dc9ce7c656) @@ -7,8 +7,8 @@ * * @file TaskGeneral.c * -* @author (last) Praneeth Bunne -* @date (last) 27-May-2026 +* @author (last) Varshini Nagabooshanam +* @date (last) 24-Jun-2026 * * @author (original) Sean Nash * @date (original) 01-Aug-2024 @@ -18,6 +18,7 @@ #include "AirPump.h" #include "AirTrap.h" #include "BloodFlow.h" +#include "BPModule.h" #include "Ejector.h" #include "Messaging.h" #include "OperationModes.h" @@ -108,6 +109,9 @@ // Control air trap valve execAirTrapController(); + // Control blood pressure vitals + execBPModule(); + // Control pinch valves execValvesController(); execPinchValveFunction(); @@ -132,6 +136,7 @@ // Manage data to be transmitted to other sub-systems execSystemCommTx(); + } #ifdef TASK_TIMING_OUTPUT_ENABLED