Index: firmware/App/Drivers/PressureSensor.c =================================================================== diff -u -r563fea3794155184d27dc242d8883fb25f1b9bca -r3fceee65945cede3526a91d57148ffe1deb0c70e --- firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision 563fea3794155184d27dc242d8883fb25f1b9bca) +++ firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision 3fceee65945cede3526a91d57148ffe1deb0c70e) @@ -7,8 +7,8 @@ * * @file PressureSensor.c * -* @author (last) Dara Navaei -* @date (last) 19-Dec-2025 +* @author (last) Varshini Nagabooshanam +* @date (last) 04-Feb-2026 * * @author (original) Sean Nash * @date (original) 22-Aug-2024 @@ -104,7 +104,6 @@ static F32 calculateBaroTemperatureC( U32 baroTempCount ); static void checkBaroSensorCoeffsCRC( void ); static F32 getCalibrationAppliedPressure( U08 sensorId, F32 pressure ); -static F32 convertPsiToMmhg( F32 psi ); /*********************************************************************//** * @brief @@ -225,15 +224,27 @@ *************************************************************************/ static F32 convertPressureRdg2mmHg( U16 counts ) { - S16 rdg = (S16)( counts & FPGA_PRESSURE_READING_BITS_MASK ); + S16 rdg = (S16)( counts & FPGA_PRESSURE_READING_BITS_MASK ); F32 presPSI; - F32 mmHg; + F32 minPsi; + F32 maxPsi; - // If the arterial pressure status is normal, convert the counts to pressure in mmHg - presPSI = ( ( (F32)rdg - PRES_SENSORS_ZERO_OFFSET ) *( PRESSURE_MAX_PSI - PRESSURE_MIN_PSI ) / PRES_SENSORS_DIVISOR ) + PRESSURE_MIN_PSI; - mmHg = convertPsiToMmhg( presPSI ); + if ( getTestConfigStatus( TEST_CONFIG_ENABLE_BETA_1_HW ) == TRUE ) + { + // Beta 1 Hardware: 30 PSI + minPsi = -30.0F; + maxPsi = 30.0F; + } + else + { + // Beta 1.9 Hardware: 15 PSI + minPsi = -15.0F; + maxPsi = 15.0F; + } - return mmHg; + presPSI = ( ( (F32)rdg - PRES_SENSORS_ZERO_OFFSET ) * ( maxPsi - minPsi ) / PRES_SENSORS_DIVISOR ) + minPsi; + + return ( presPSI * PSI_TO_MMHG ); } /*********************************************************************//** Index: firmware/App/Monitors/Pressures.c =================================================================== diff -u -r8740324a3f7730bdf614df73dcab916f35d03bce -r3fceee65945cede3526a91d57148ffe1deb0c70e --- firmware/App/Monitors/Pressures.c (.../Pressures.c) (revision 8740324a3f7730bdf614df73dcab916f35d03bce) +++ firmware/App/Monitors/Pressures.c (.../Pressures.c) (revision 3fceee65945cede3526a91d57148ffe1deb0c70e) @@ -8,7 +8,7 @@ * @file Pressures.c * * @author (last) Varshini Nagabooshanam -* @date (last) 11-Dec-2025 +* @date (last) 04-Feb-2026 * * @author (original) Sean Nash * @date (original) 24-Sep-2024 @@ -64,24 +64,21 @@ #define ARTERIAL_PRESSURE_SELF_TEST_MAX ( 100.0F ) ///< Maximum self-test value for arterial pressure sensor reading (in mmHg). #define ARTERIAL_PRESSURE_MAX_MMHG ( 2000.0F ) ///< Maximum arterial pressure reading (in mmHg) for range check. #define ARTERIAL_PRESSURE_MIN_MMHG ( -1500.0F ) ///< Minimum arterial pressure reading (in mmHg) for range check. -#define ARTERIAL_PRESSURE_LIMIT_WINDOW_DEFAULT_MMHG ( 200.0F ) ///< Default Arterial pressure limit window (mmHg). Used as Window/2 for min/max limits #define ARTERIAL_PRESSURE_LIMIT_MAX_MMHG ( 100.0F ) ///< Maximum arterial pressure limit (in mmHg). #define ARTERIAL_PRESSURE_LIMIT_MIN_MMHG ( -300.0F ) ///< Minimum arterial pressure limit (in mmHg). #define VENOUS_PRESSURE_SELF_TEST_MIN ( -100.0F ) ///< Minimum self-test value for venous pressure sensor reading (in mmHg). #define VENOUS_PRESSURE_SELF_TEST_MAX ( 100.0F ) ///< Maximum self-test value for venous pressure sensor reading (in mmHg). #define VENOUS_PRESSURE_MAX_MMHG ( 2000.0F ) ///< Maximum venous pressure reading (in mmHg) for range check. #define VENOUS_PRESSURE_MIN_MMHG ( -1500.0F ) ///< Minimum venous pressure reading (in mmHg) for range check. -#define VENOUS_PRESSURE_LIMIT_WINDOW_DEFAULT_MMHG ( 200.0F ) ///< Default Venous pressure limit window (mmHg). Used as Window/2 for min/max limits. #define VENOUS_PRESSURE_LIMIT_MAX_MMHG ( 400.0F ) ///< Maximum venous pressure limit (in mmHg). #define VENOUS_PRESSURE_LIMIT_MIN_MMHG ( 20.0F ) ///< Minimum venous pressure limit (in mmHg). #define VENOUS_PRESSURE_EXEMPTION_PERIOD ( ( 2 * MS_PER_SECOND ) / \ TASK_GENERAL_INTERVAL ) ///< Venous pressure low exemption period (in task interval) after fill for all blood flow rate -#define TMP_PRESSURE_LIMIT_WINDOW_DEFAULT_MMHG ( 200.0F ) ///< Default TMP pressure limit window (mmHg). Used as Window/2 for min/max limits. #define TMP_PRESSURE_LIMIT_MAX_MMHG ( 500.0F ) ///< Maximum transmembrane pressure limit (in mmHg) #define TMP_PRESSURE_LIMIT_MIN_MMHG ( -500.0F ) ///< Minimum transmembrane pressure limit (in mmHg) -#define TMP_PRESSURE_HIGH_ABSOLUTE_MMHG ( 500.0F ) ///< Transmembrane pressure high absolute (in mmHg) +#define TMP_PRESSURE_HIGH_ABSOLUTE_MMHG ( 500.0F ) ///< Transmembrane pressure high absolute (in mmHg). #define TMP_ALARM_PERSISTENCE ( ( 1 * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ) ///< Alarm persistence period for transmembrane pressure alarms #define MIN_TIME_BETWEEN_AIR_TRAP_FILL_EXEMPTIONS_MS ( 1200 ) ///< To monitor low Venous pressure in the defined interval in a case where continuous air fill event happens followed by exemption period to stabilize the pressure @@ -1176,7 +1173,42 @@ return result; } +/*********************************************************************//** +* @brief +* The validatePressureLimitWidenRequest function handles pressure limit +* widening request received from the UI. +* @details Message Received: MSG_ID_UI_PRESSURE_LIMIT_WIDEN_REQUEST +* @details Message Sent: MSG_ID_TD_PRESSURE_LIMIT_WIDEN_RESPONSE +* @param message request message from UI +* @return TRUE if request accepted, FALSE otherwise +*************************************************************************/ +BOOL validatePressureLimitWidenRequest( MESSAGE_T *message ) +{ + BOOL result = FALSE; + REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_INVALID_REQUEST_FORMAT; + UI_RESPONSE_PAYLOAD_T response; + // Verify message payload length + if ( message->hdr.payloadLen == 0 ) + { + // Apply widened pressure limits + setPressureLimitsToOuterBounds(); + // Restart stabilization + stabilizationStartTimeMs = getMSTimerCount(); + currPresLimitsState = PRESSURE_LIMITS_STATE_STABILIZATION; + result = TRUE; + rejReason = REQUEST_REJECT_REASON_NONE; + } + + // Respond to request + response.accepted = result; + response.rejectionReason = rejReason; + sendMessage( MSG_ID_TD_PRESSURE_LIMIT_WIDEN_RESPONSE, COMM_BUFFER_OUT_CAN_TD_2_UI, (U08*)(&response), sizeof( UI_RESPONSE_PAYLOAD_T ) ); + + return result; +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Monitors/Pressures.h =================================================================== diff -u -r21368c3576cfd798ad548566899e7e10754ef37e -r3fceee65945cede3526a91d57148ffe1deb0c70e --- firmware/App/Monitors/Pressures.h (.../Pressures.h) (revision 21368c3576cfd798ad548566899e7e10754ef37e) +++ firmware/App/Monitors/Pressures.h (.../Pressures.h) (revision 3fceee65945cede3526a91d57148ffe1deb0c70e) @@ -7,8 +7,8 @@ * * @file Pressures.h * -* @author (last) Dara Navaei -* @date (last) 31-Oct-2025 +* @author (last) Varshini Nagabooshanam +* @date (last) 26-Jan-2026 * * @author (original) Sean Nash * @date (original) 24-Sep-2024 @@ -94,6 +94,8 @@ F32 getTMPPressure( void ); F32 getBaroPressurePSI( void ); +BOOL validatePressureLimitWidenRequest( MESSAGE_T *message ); + BOOL testPressuresDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testTMPOverride( MESSAGE_T *message ); BOOL testBaroPressureOverride( MESSAGE_T * message ); Index: firmware/App/Services/Messaging.c =================================================================== diff -u -red334512f8d75484960251679a9f9985ac3d31ab -r3fceee65945cede3526a91d57148ffe1deb0c70e --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision ed334512f8d75484960251679a9f9985ac3d31ab) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 3fceee65945cede3526a91d57148ffe1deb0c70e) @@ -7,8 +7,8 @@ * * @file Messaging.c * -* @author (last) Varshini Nagabooshanam -* @date (last) 26-Jan-2026 +* @author (last) Jashwant Gantyada +* @date (last) 29-Jan-2026 * * @author (original) Sean Nash * @date (original) 01-Aug-2024 @@ -113,6 +113,7 @@ { MSG_ID_UI_INITIATE_TREATMENT_WORKFLOW, &signalUserInitiateTreatment }, { MSG_ID_UI_UF_PAUSE_RESUME_REQUEST, &signalPauseResumeUF }, { MSG_ID_TESTER_LOGIN_REQUEST, &handleTesterLogInRequest }, + { MSG_ID_UI_PRESSURE_LIMIT_WIDEN_REQUEST, &validatePressureLimitWidenRequest }, { MSG_ID_TD_SOFTWARE_RESET_REQUEST, &testTDSoftwareResetRequest }, { MSG_ID_TD_BUBBLE_OVERRIDE_REQUEST, &testBubbleDetectOverride }, { MSG_ID_TD_BUBBLE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testBubblesDataPublishIntervalOverride }, @@ -182,6 +183,7 @@ { MSG_ID_TD_EJECTOR_OPT_SENSOR_OVERRIDE_REQUEST, &testEjectorOpticalSensorOverride }, { MSG_ID_TD_BLOOD_PRIME_VOLUME_OVERRIDE, &testBloodPrimeVolumeOverride }, { MSG_ID_TD_BLOOD_PRIME_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testBloodPrimePublishIntervalOverride }, + { MSG_ID_TD_ENABLE_VENOUS_BUBBLE_ALARM, &testEnableVenousBubbleAlarm }, }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLER_LOOKUP) / sizeof(MSG_HANDLER_LOOKUP_T)) Index: firmware/App/TDCommon.h =================================================================== diff -u -r24206b93ac749fd48c8e5fff45ffbc4ae9e9ad3d -r3fceee65945cede3526a91d57148ffe1deb0c70e --- firmware/App/TDCommon.h (.../TDCommon.h) (revision 24206b93ac749fd48c8e5fff45ffbc4ae9e9ad3d) +++ firmware/App/TDCommon.h (.../TDCommon.h) (revision 3fceee65945cede3526a91d57148ffe1deb0c70e) @@ -7,8 +7,8 @@ * * @file TDCommon.h * -* @author (last) Dara Navaei -* @date (last) 19-Dec-2025 +* @author (last) Varshini Nagabooshanam +* @date (last) 04-Feb-2026 * * @author (original) Sean Nash * @date (original) 01-Aug-2024 @@ -38,7 +38,7 @@ // #define TEST_PROCESS_TASKS_WO_UI 1 // Allow task processing even when UI not connected #define TEST_UI_ONLY 1 // Alpha test with TD and UI only - no DD // #define TEST_USE_OFF_AS_STOP_BUTTON 1 // Alpha test re-purposing off button as a stop button - #define TEST_NO_PRESSURE_CHECKS 1 // Alpha test with no pressure sensor checks + #define TEST_NO_PRESSURE_CHECKS 1 // Alpha test with no pressure sensor checks // #define TEST_NO_STOP_CONSUME_CHECK 1 // Alpha test with no check for stop button timeout // #define ASN_DEMO 1