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 *************************************************************************/