Index: firmware/App/Controllers/BPModule.c =================================================================== diff -u -r18e59a9564adbb5a6a6a64a18460bdb5bf4d293e -r3e6b89e98c3725c7afd94a3c37fe3efce3fde65f --- firmware/App/Controllers/BPModule.c (.../BPModule.c) (revision 18e59a9564adbb5a6a6a64a18460bdb5bf4d293e) +++ firmware/App/Controllers/BPModule.c (.../BPModule.c) (revision 3e6b89e98c3725c7afd94a3c37fe3efce3fde65f) @@ -28,6 +28,7 @@ // ********** private definitions ********** +// TODO remove these when institutional settings are available #define BP_SYSTOLIC_LOW_LIMIT 90 ///< Low systolic blood pressure threshold in mmHg #define BP_SYSTOLIC_HIGH_LIMIT 180 ///< High systolic blood pressure threshold in mmHG #define BP_HEART_RATE_LOW_LIMIT 40 ///< Low heart rate threshold in BPM @@ -46,88 +47,69 @@ // ********** private data ********** static BP_MODULE_STATE_T bpModuleState = BP_MODULE_IDLE_STATE; ///< Current blood pressure module state -static BP_RESULTS_T bpModuleResults; ///< Latest blood pressure measurement results static U08 lowSystolicCount; ///< Consecutive low systolic pressure counter -static BOOL bpSystolicLowDetected; ///< Low systolic blood pressure detection -static BOOL bpSystolicLowTooManyDetected; ///< Consecutive low systolic detection -static BOOL bpSystolicHighDetected; ///< High systolic blood pressure detection -static BOOL bpHeartRateLowDetected; ///< Low heart rate detection -static BOOL bpHeartRateHighDetected; ///< High heart rate detection -static BOOL bpModuleErrorDetected; ///< Blood pressure module error detection flag. +static BOOL requestAdultBPReading; ///< Adult BP reading request +static BOOL requestPedsBPReading; ///< Pediatric BP reading request +static BOOL requestAbortBPReading; ///< Abort BP reading request // ********** private function prototypes ********** -static void resetBPAlarmFlags( void ); static void checkBloodPressureReading( void ); -static void handleBPModuleIdleState( void ); -static void handleBPModuleMeasureState( void ); -static void handleBPModuleCheckState( void ); +static BP_MODULE_STATE_T handleBPModuleIdleState( void ); +static BP_MODULE_STATE_T handleBPModuleMeasureState( void ); +static BP_MODULE_STATE_T handleBPModuleCheckState( void ); /*********************************************************************//** * @brief * The initBPModule function initializes the blood pressure module. * @details \b Inputs: none -* @details \b Outputs: bpModuleState +* @details \b Outputs: BPModule variables initialized * @return none ***************************************************************************/ void initBPModule( void ) { initBPDriver(); - bpModuleState = BP_MODULE_IDLE_STATE; - resetBPAlarmFlags(); + bpModuleState = BP_MODULE_IDLE_STATE; + lowSystolicCount = 0; + requestAdultBPReading = FALSE; + requestPedsBPReading = FALSE; + requestAbortBPReading = FALSE; } /*********************************************************************//** * @brief - * The resetBPAlarmFlags function clears all blood pressure alarm - * detection flags. - * @details \b Inputs: none - * @details \b Outputs: BP alarm detection flags - * @return none - ***************************************************************************/ -static void resetBPAlarmFlags( void ) -{ - bpSystolicLowDetected = FALSE; - bpSystolicLowTooManyDetected = FALSE; - bpSystolicHighDetected = FALSE; - bpHeartRateLowDetected = FALSE; - bpHeartRateHighDetected = FALSE; - bpModuleErrorDetected = FALSE; -} - -/*********************************************************************//** - * @brief * The execBPModule function executes the blood pressure module state * machine. * @details \b Inputs: bpModuleState - * @details \b Outputs: bpModuleState, bpModuleResults + * @details \b Outputs: bpModuleState * @return none ***************************************************************************/ void execBPModule( void ) { + execBPDriver(); switch ( bpModuleState ) { case BP_MODULE_IDLE_STATE: { - handleBPModuleIdleState(); + bpModuleState = handleBPModuleIdleState(); break; } case BP_MODULE_MEASURE_STATE: { - handleBPModuleMeasureState(); + bpModuleState = handleBPModuleMeasureState(); break; } case BP_MODULE_CHECK_STATE: { - handleBPModuleCheckState(); + bpModuleState = handleBPModuleCheckState(); break; } default: { - activateAlarm( ALARM_ID_TD_SOFTWARE_FAULT ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_TD_BP_MODULE_STATE, bpModuleState ); bpModuleState = BP_MODULE_IDLE_STATE; break; } @@ -144,8 +126,7 @@ ***************************************************************************/ void initiateAdultBPReading( void ) { - startAdultBPMeasurement(); - bpModuleState = BP_MODULE_MEASURE_STATE; + requestAdultBPReading = TRUE; } /*********************************************************************//** @@ -158,8 +139,7 @@ ***************************************************************************/ void initiatePedsBPReading( void ) { - startPedsBPMeasurement(); - bpModuleState = BP_MODULE_MEASURE_STATE; + requestPedsBPReading = TRUE; } /*********************************************************************//** @@ -172,135 +152,45 @@ ***************************************************************************/ void abortBPReading( void ) { - abortBPMeasurement(); - bpModuleState = BP_MODULE_IDLE_STATE; + requestAbortBPReading = TRUE; } /*********************************************************************//** * @brief - * The isBPSystolicLowDetected function returns the systolic low - * detection state. - * @details \b Inputs: bpSystolicLowDetected - * @details \b Outputs: none - * @return TRUE if detected, FALSE otherwise. - ***************************************************************************/ -BOOL isBPSystolicLowDetected( void ) -{ - return bpSystolicLowDetected; -} - -/*********************************************************************//** - * @brief - * The isBPSystolicLowTooManyDetected function returns the consecutive - * systolic low detection state. - * @details \b Inputs: bpSystolicLowTooManyDetected - * @details \b Outputs: none - * @return TRUE if detected, FALSE otherwise. - ***************************************************************************/ -BOOL isBPSystolicLowTooManyDetected( void ) -{ - return bpSystolicLowTooManyDetected; -} - -/*********************************************************************//** - * @brief - * The isBPSystolicHighDetected function returns the systolic high - * detection state. - * @details \b Inputs: bpSystolicHighDetected - * @details \b Outputs: none - * @return TRUE if detected, FALSE otherwise. - ***************************************************************************/ -BOOL isBPSystolicHighDetected( void ) -{ - return bpSystolicHighDetected; -} - -/*********************************************************************//** - * @brief - * The isBPHeartRateLowDetected function returns the heart rate low - * detection state. - * @details \b Inputs: bpHeartRateLowDetected - * @details \b Outputs: none - * @return TRUE if detected, FALSE otherwise. - ***************************************************************************/ -BOOL isBPHeartRateLowDetected( void ) -{ - return bpHeartRateLowDetected; -} - -/*********************************************************************//** - * @brief - * The isBPHeartRateHighDetected function returns the heart rate high - * detection state. - * @details \b Inputs: bpHeartRateHighDetected - * @details \b Outputs: none - * @return TRUE if detected, FALSE otherwise. - ***************************************************************************/ -BOOL isBPHeartRateHighDetected( void ) -{ - return bpHeartRateHighDetected; -} - -/*********************************************************************//** - * @brief - * The hasBPModuleError function returns the blood pressure module - * error detection state. - * @details \b Inputs: bpModuleErrorDetected - * @details \b Outputs: none - * @return TRUE if error detected, FALSE otherwise. - ***************************************************************************/ -BOOL hasBPModuleError( void ) -{ - return bpModuleErrorDetected; -} - -/*********************************************************************//** - * @brief * The checkBloodPressureReading function validates blood pressure * measurement results against configured thresholds and activates * corresponding blood pressure alarms. - * @details \b Inputs: bpModuleResults - * @details \b Outputs: bpSystolicLowDetected, bpSystolicLowTooManyDetected - * bpSystolicHighDetected, bpHeartRateLowDetected, bpHeartRateHighDetected + * @details \b Inputs: systolicPressure, heartRate + * @details \b Outputs: activate BP alarms * @return none ***************************************************************************/ static void checkBloodPressureReading( void ) { - resetBPAlarmFlags(); + U16 systolicPressure = getBPSystolicPressure(); + U16 heartRate = getBPHeartRate(); - if ( bpModuleResults.systolic <= BP_SYSTOLIC_LOW_LIMIT ) + if ( systolicPressure <= BP_SYSTOLIC_LOW_LIMIT ) { - bpSystolicLowDetected = TRUE; lowSystolicCount++; - if ( lowSystolicCount >= BP_LOW_SYSTOLIC_MAX_COUNT ) { - bpSystolicLowTooManyDetected = TRUE; activateAlarm( ALARM_ID_TD_BP_SYSTOLIC_LOW_TOO_MANY ); } else { activateAlarm( ALARM_ID_TD_BP_SYSTOLIC_LOW ); } } - - else + if ( systolicPressure >= BP_SYSTOLIC_HIGH_LIMIT ) { - lowSystolicCount = 0; - } - if ( bpModuleResults.systolic >= BP_SYSTOLIC_HIGH_LIMIT ) - { - bpSystolicHighDetected = TRUE; activateAlarm( ALARM_ID_TD_BP_SYSTOLIC_HIGH ); } - if ( bpModuleResults.heartRate <= BP_HEART_RATE_LOW_LIMIT ) + if ( heartRate <= BP_HEART_RATE_LOW_LIMIT ) { - bpHeartRateLowDetected = TRUE; activateAlarm( ALARM_ID_TD_BP_HEART_RATE_LOW ); } - if ( bpModuleResults.heartRate >= BP_HEART_RATE_HIGH_LIMIT ) + if ( heartRate >= BP_HEART_RATE_HIGH_LIMIT ) { - bpHeartRateHighDetected = TRUE; activateAlarm( ALARM_ID_TD_BP_HEART_RATE_HIGH ); } } @@ -309,53 +199,80 @@ * @brief * The handleBPModuleIdleState function executes the BP module idle * state handling. - * @details \b Inputs: none - * @details \b Outputs: none - * @return none + * @details \b Inputs: requestAdultBPReading, requestPedsBPReading, + * requestAbortBPReading + * @details \b Outputs: flags + * @return next BP module state ***************************************************************************/ -static void handleBPModuleIdleState( void ) +static BP_MODULE_STATE_T handleBPModuleIdleState( void ) { - // TODO + BP_MODULE_STATE_T nextState = BP_MODULE_IDLE_STATE; + + if ( TRUE == requestAdultBPReading ) + { + requestAdultBPReading = FALSE; + startAdultBPMeasurement(); + nextState = BP_MODULE_MEASURE_STATE; + } + else if ( TRUE == requestPedsBPReading ) + { + requestPedsBPReading = FALSE; + startPedsBPMeasurement(); + nextState = BP_MODULE_MEASURE_STATE; + } + else if ( TRUE == requestAbortBPReading ) + { + requestAbortBPReading = FALSE; + abortBPMeasurement(); + } + + return nextState; } /*********************************************************************//** * @brief * The handleBPModuleMeasureState function executes the BP module * measurement state handling. - * @details \b Inputs: BP driver state/results + * @details \b Inputs: results * @details \b Outputs: bpModuleState - * @return none + * @return next BP module state ***************************************************************************/ -static void handleBPModuleMeasureState( void ) +static BP_MODULE_STATE_T handleBPModuleMeasureState( void ) { - execBPDriver(); + BP_MODULE_STATE_T nextState = BP_MODULE_MEASURE_STATE; if ( TRUE == isBPMeasurementReady() ) { - getBPResults( &bpModuleResults ); - bpModuleState = BP_MODULE_CHECK_STATE; + nextState = BP_MODULE_CHECK_STATE; } else if ( TRUE == hasBPDriverError() ) { - bpModuleErrorDetected = TRUE; - bpModuleState = BP_MODULE_IDLE_STATE; + nextState = BP_MODULE_IDLE_STATE; } + + return nextState; } /*********************************************************************//** - * @brief - * The handleBPModuleCheckState function executes the BP module - * validation state handling. - * @details \b Inputs: bpModuleResults - * @details \b Outputs: BP alarm detection flags - * @return none - ***************************************************************************/ -static void handleBPModuleCheckState( void ) +* @brief +* The handleBPModuleCheckState function executes the BP module +* validation state handling. +* @details \b Inputs: BP driver measurement results +* @details \b Outputs: BP alarms +* @return next BP module state. +***************************************************************************/ +static BP_MODULE_STATE_T handleBPModuleCheckState( void ) { - checkBloodPressureReading(); - bpModuleState = BP_MODULE_IDLE_STATE; -} + BP_MODULE_STATE_T nextState = BP_MODULE_IDLE_STATE; + BP_RESULTS_T bpResults; + if( TRUE == getBPResults( &bpResults ) ) + { + checkBloodPressureReading(); + } + return nextState; +} + /**@}*/ Index: firmware/App/Controllers/BPModule.h =================================================================== diff -u -r5a601a06c2423c4379a618608974159366b10553 -r3e6b89e98c3725c7afd94a3c37fe3efce3fde65f --- firmware/App/Controllers/BPModule.h (.../BPModule.h) (revision 5a601a06c2423c4379a618608974159366b10553) +++ firmware/App/Controllers/BPModule.h (.../BPModule.h) (revision 3e6b89e98c3725c7afd94a3c37fe3efce3fde65f) @@ -38,13 +38,6 @@ void initiatePedsBPReading( void ); void abortBPReading( void ); -BOOL isBPSystolicLowDetected( void ); -BOOL isBPSystolicLowTooManyDetected( void ); -BOOL isBPSystolicHighDetected( void ); -BOOL isBPHeartRateLowDetected( void ); -BOOL isBPHeartRateHighDetected( void ); -BOOL hasBPModuleError( void ); - /**@}*/ #endif Index: firmware/App/Drivers/BPDriver.c =================================================================== diff -u -r5a601a06c2423c4379a618608974159366b10553 -r3e6b89e98c3725c7afd94a3c37fe3efce3fde65f --- firmware/App/Drivers/BPDriver.c (.../BPDriver.c) (revision 5a601a06c2423c4379a618608974159366b10553) +++ firmware/App/Drivers/BPDriver.c (.../BPDriver.c) (revision 3e6b89e98c3725c7afd94a3c37fe3efce3fde65f) @@ -38,7 +38,6 @@ BP_DRIVER_IDLE_STATE = 0, ///< Idle state. BP_DRIVER_MEASURE_STATE, ///< Measurement state. BP_DRIVER_GET_DATA_STATE, ///< Get data state. - BP_DRIVER_ERROR_STATE, ///< Error state. NUM_OF_BP_DRIVER_STATES ///< Number of BP driver states. } BP_DRIVER_STATE_T; @@ -47,21 +46,40 @@ static BP_DRIVER_STATE_T bpDriverState = BP_DRIVER_IDLE_STATE; ///< Current blood pressure driver state. static BP_RESULTS_T bpResults; ///< Latest blood pressure measurement results. static BOOL bpMeasurementReady; ///< Blood pressure measurement ready -static BOOL bpDriverError; ///< Blood pressure driver error flag. -static BOOL bpMeasurementReady; ///< Blood pressure measurement ready flag. -static BOOL requestAdultBPMeasurement; ///< Request adult BP measurement flag. -static BOOL requestPedsBPMeasurement; ///< Request pediatric BP measurement flag. -static BOOL requestAbortBPMeasurement; ///< Request abort BP measurement flag. +static BOOL bpDriverError; ///< Blood pressure driver error +static BOOL requestAdultBPMeasurement; ///< Request adult BP measurement +static BOOL requestPedsBPMeasurement; ///< Request pediatric BP measurement +static BOOL requestAbortBPMeasurement; ///< Request abort BP measurement // ********** private function prototypes ********** static U08 getBPResponseCode( void ); -static void handleBPDriverIdleState( void ); -static void handleBPDriverMeasureState( void ); -static void handleBPDriverGetDataState( void ); +static BP_DRIVER_STATE_T handleBPDriverIdleState( void ); +static BP_DRIVER_STATE_T handleBPDriverMeasureState( void ); +static BP_DRIVER_STATE_T handleBPDriverGetDataState( void ); /*********************************************************************//** * @brief + * The initBPDriver function initializes the blood pressure driver. + * @details \b Inputs: none + * @details \b Outputs: BPDriver variables initialized + * @return none + ***************************************************************************/ +void initBPDriver( void ) +{ + bpDriverState = BP_DRIVER_IDLE_STATE; + bpMeasurementReady = FALSE; + bpDriverError = FALSE; + requestAdultBPMeasurement = FALSE; + requestPedsBPMeasurement = FALSE; + requestAbortBPMeasurement = FALSE; + bpResults.systolic = 0; + bpResults.diastolic = 0; + bpResults.heartRate = 0; +} + +/*********************************************************************//** + * @brief * The getBPResponseCode function returns the FPGA NIBP response code. * @details \b Inputs: getNIBPStatusResponse * @details \b Outputs: none @@ -74,24 +92,10 @@ /*********************************************************************//** * @brief - * The initBPDriver function initializes the blood pressure driver. - * @details \b Inputs: none - * @details \b Outputs: bpDriverState, bpResults, bpErrorCode - * @return none - ***************************************************************************/ -void initBPDriver( void ) -{ - bpDriverState = BP_DRIVER_IDLE_STATE; - bpMeasurementReady = FALSE; - bpDriverError = FALSE; -} - -/*********************************************************************//** - * @brief * The execBPDriver function executes the blood pressure driver state * machine. * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT - * @details \b Inputs: FPGA NIBP registers + * @details \b Inputs: bpDriverState * @details \b Outputs: bpDriverState, bpResults * @return none ***************************************************************************/ @@ -101,25 +105,25 @@ { case BP_DRIVER_IDLE_STATE: { - handleBPDriverIdleState(); + bpDriverState = handleBPDriverIdleState(); break; } case BP_DRIVER_MEASURE_STATE: { - handleBPDriverMeasureState(); + bpDriverState = handleBPDriverMeasureState(); break; } case BP_DRIVER_GET_DATA_STATE: { - handleBPDriverGetDataState(); + bpDriverState = handleBPDriverGetDataState(); break; } default: { - activateAlarm( ALARM_ID_TD_SOFTWARE_FAULT ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_TD_BP_DRIVER_STATE, bpDriverState ); bpDriverState = BP_DRIVER_IDLE_STATE; break; } @@ -132,76 +136,89 @@ * state handling. * @details \b Inputs: requestAdultBPMeasurement, requestPedsBPMeasurement, * requestAbortBPMeasurement -* @details \b Outputs: bpDriverState -* @return none +* @details \b Outputs: nextState +* @return next BP module state ***************************************************************************/ -static void handleBPDriverIdleState( void ) +static BP_DRIVER_STATE_T handleBPDriverIdleState( void ) { + BP_DRIVER_STATE_T nextState = BP_DRIVER_IDLE_STATE; + if ( TRUE == requestAdultBPMeasurement ) { requestAdultBPMeasurement = FALSE; - bpMeasurementReady = FALSE; - bpDriverError = FALSE; + bpMeasurementReady = FALSE; + bpDriverError = FALSE; setNIBPCommand( FPGA_NIBP_CMD_START_BP ); - bpDriverState = BP_DRIVER_MEASURE_STATE; + nextState = BP_DRIVER_MEASURE_STATE; } else if ( TRUE == requestPedsBPMeasurement ) { requestPedsBPMeasurement = FALSE; - bpMeasurementReady = FALSE; - bpDriverError = FALSE; + bpMeasurementReady = FALSE; + bpDriverError = FALSE; setNIBPCommand( FPGA_NIBP_CMD_START_PEDS_BP ); - bpDriverState = BP_DRIVER_MEASURE_STATE; + nextState = BP_DRIVER_MEASURE_STATE; } else if ( TRUE == requestAbortBPMeasurement ) { requestAbortBPMeasurement = FALSE; setNIBPCommand( FPGA_NIBP_CMD_ABORT_BP ); - bpDriverState = BP_DRIVER_IDLE_STATE; } + + return nextState; } /*********************************************************************//** * @brief * The handleBPDriverMeasureState function executes the BP driver * measurement state handling. -* @details \b Inputs: setNIBPCommand -* @details \b Outputs: bpDriverState -* @return none +* @details \b Inputs: getNIBPStatusResponse +* @details \b Outputs: nextState +* @return next BP driver state ***************************************************************************/ -static void handleBPDriverMeasureState( void ) +static BP_DRIVER_STATE_T handleBPDriverMeasureState( void ) { - if ( BP_RESP_CODE_BPDATA == getBPResponseCode() ) - { - setNIBPCommand( FPGA_NIBP_CMD_GET_BP_DATA ); - bpDriverState = BP_DRIVER_GET_DATA_STATE; - } + BP_DRIVER_STATE_T nextState = BP_DRIVER_MEASURE_STATE; - else if ( ( getNIBPStatusResponse() & BP_MODULE_ERROR_MASK ) != 0 ) + if ( ( getNIBPStatusResponse() & BP_MODULE_BUSY_MASK ) == 0 ) { - bpDriverError = TRUE; - bpDriverState = BP_DRIVER_IDLE_STATE; + if ( BP_RESP_CODE_BPDATA == getBPResponseCode() ) + { + setNIBPCommand( FPGA_NIBP_CMD_GET_BP_DATA ); + nextState = BP_DRIVER_GET_DATA_STATE; + } + else if ( ( getNIBPStatusResponse() & BP_MODULE_ERROR_MASK ) != 0 ) + { + bpDriverError = TRUE; + nextState = BP_DRIVER_IDLE_STATE; + } } + + return nextState; } /*********************************************************************//** * @brief -* The handleBPDriverGetDataState function executes the BP driver -* get data state handling. +* The handleBPDriverGetDataState function retrieves blood pressure +* measurement results. * @details \b Inputs: getNIBPStatusResponse * @details \b Outputs: bpResults -* @return none +* @return next BP driver state ***************************************************************************/ -static void handleBPDriverGetDataState( void ) +static BP_DRIVER_STATE_T handleBPDriverGetDataState( void ) { - if ( ( getNIBPStatusResponse() & BP_MODULE_BUSY_MASK ) == 0 ) - { - bpResults.systolic = getNIBPSystolicPressure(); - bpResults.diastolic = getNIBPDiastolicPressure(); - bpResults.heartRate = getNIBPHeartRate(); - bpMeasurementReady = TRUE; - bpDriverState = BP_DRIVER_IDLE_STATE; - } + BP_DRIVER_STATE_T nextState = BP_DRIVER_GET_DATA_STATE; + + if ( ( getNIBPStatusResponse() & BP_MODULE_BUSY_MASK ) == 0 ) + { + bpResults.systolic = getNIBPSystolicPressure(); + bpResults.diastolic = getNIBPDiastolicPressure(); + bpResults.heartRate = getNIBPHeartRate(); + bpMeasurementReady = TRUE; + nextState = BP_DRIVER_IDLE_STATE; + } + + return nextState; } /*********************************************************************//** @@ -246,7 +263,7 @@ /*********************************************************************//** * @brief * The isBPMeasurementReady function returns the blood pressure - * measurement ready state + * measurement ready status * @details \b Inputs: bpMeasurementReady * @details \b Outputs: none * @return TRUE if measurement ready, FALSE otherwise. @@ -259,7 +276,7 @@ /*********************************************************************//** * @brief * The hasBPDriverError function returns the blood pressure driver - * error state. + * error status. * @details \b Inputs: bpDriverError * @details \b Outputs: none * @return TRUE if module error exists, FALSE otherwise. Index: firmware/App/Drivers/GLXferPump.c =================================================================== diff -u -r539d38e6125069ea8aa908631e62fd8adf05459c -r3e6b89e98c3725c7afd94a3c37fe3efce3fde65f --- firmware/App/Drivers/GLXferPump.c (.../GLXferPump.c) (revision 539d38e6125069ea8aa908631e62fd8adf05459c) +++ firmware/App/Drivers/GLXferPump.c (.../GLXferPump.c) (revision 3e6b89e98c3725c7afd94a3c37fe3efce3fde65f) @@ -30,7 +30,6 @@ // ********** private definitions ********** -#define AIR_PUMP_PWM_TIME 20 ///< Time (in 10ns increments) per PWM register count for the air pump = 20 kHz. #define AIR_PUMP_RPM_FACTOR 60 ///< Air pump rpm pump factor #define TEN_MICRO ( 10 * 1E-6F ) ///< 10 X 10^-6 #define MOTOR_RPM_ZERO_RAW 0xFFFFU ///< Air pump Zero RPM Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -rda59fa4a98dbc11c37677e92a66aa940d251678f -r3e6b89e98c3725c7afd94a3c37fe3efce3fde65f --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision da59fa4a98dbc11c37677e92a66aa940d251678f) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 3e6b89e98c3725c7afd94a3c37fe3efce3fde65f) @@ -17,6 +17,7 @@ #include "AirTrap.h" //#include "BloodFlow.h" +#include "BPModule.h" #include "Bubbles.h" #include "Buttons.h" #include "DDInterface.h" @@ -186,6 +187,7 @@ { // Initialize treatment mode each time we transition to it initTreatmentMode(); + initBPModule(); // Initialize treatment sub-modes each time we transition to treatment mode initBloodPrime(); initDialysis(); @@ -512,6 +514,8 @@ // Manage air trap control execAirTrapMonitorTreatment(); + // Execute Blood pressure module + execBPModule(); return currentTreatmentState; } Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -rda59fa4a98dbc11c37677e92a66aa940d251678f -r3e6b89e98c3725c7afd94a3c37fe3efce3fde65f --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision da59fa4a98dbc11c37677e92a66aa940d251678f) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 3e6b89e98c3725c7afd94a3c37fe3efce3fde65f) @@ -187,6 +187,8 @@ SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER = 156, SW_FAULT_ID_INVALID_TREATMENT_MODALITY = 157, SW_FAULT_ID_INVALID_DD_DIALYSATE_DATA = 158, + SW_FAULT_ID_TD_BP_DRIVER_STATE = 159, + SW_FAULT_ID_TD_BP_MODULE_STATE = 160, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/FpgaTD.c =================================================================== diff -u -r7f22307635cf6c73dca1a2cc86c5f57ae62dde4d -r3e6b89e98c3725c7afd94a3c37fe3efce3fde65f --- firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision 7f22307635cf6c73dca1a2cc86c5f57ae62dde4d) +++ firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision 3e6b89e98c3725c7afd94a3c37fe3efce3fde65f) @@ -208,7 +208,7 @@ U32 syrPumpSpeed; ///< Reg 34. Syringe pump time between step toggle (1/2 step period). U16 syrPumpDACData; ///< Reg 38. Syringe pump DAC data U16 syrPumpDACControl; ///< Reg 40. Syringe pump ADC and DAC control register. - U08 nibpCtl; ///< Reg 41. NIBP 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. } FPGA_ACTUATORS_T; @@ -1353,7 +1353,7 @@ void setNIBPCommand( FPGA_NIBP_CMD_T command ) { fpgaActuatorSetPoints.nibpCtl &= ~FPGA_NIBP_CMD_MASK; - fpgaActuatorSetPoints.nibpCtl |= ( (U08)command & FPGA_NIBP_CMD_MASK ); + fpgaActuatorSetPoints.nibpCtl |= ( (U16)command & FPGA_NIBP_CMD_MASK ); fpgaActuatorSetPoints.nibpCtl |= FPGA_NIBP_CMD_RDY; } Index: firmware/App/Services/FpgaTD.h =================================================================== diff -u -r7f22307635cf6c73dca1a2cc86c5f57ae62dde4d -r3e6b89e98c3725c7afd94a3c37fe3efce3fde65f --- firmware/App/Services/FpgaTD.h (.../FpgaTD.h) (revision 7f22307635cf6c73dca1a2cc86c5f57ae62dde4d) +++ firmware/App/Services/FpgaTD.h (.../FpgaTD.h) (revision 3e6b89e98c3725c7afd94a3c37fe3efce3fde65f) @@ -176,7 +176,6 @@ U16 getNIBPDiastolicPressure( void ); U16 getNIBPHeartRate( void ); - /**@}*/ #endif