Index: firmware/App/Controllers/BPModule.c =================================================================== diff -u -re36419ec3d1b64f3831b631d57f30ce4018646c5 -rd22b634e0d703617cebdd7817c76895ed7b33128 --- firmware/App/Controllers/BPModule.c (.../BPModule.c) (revision e36419ec3d1b64f3831b631d57f30ce4018646c5) +++ firmware/App/Controllers/BPModule.c (.../BPModule.c) (revision d22b634e0d703617cebdd7817c76895ed7b33128) @@ -31,8 +31,6 @@ // ********** private definitions ********** -#define BP_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval at which vitals data is published to UI. - // 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 @@ -51,24 +49,19 @@ // ********** private data ********** -static BP_MODULE_STATE_T bpModuleState = BP_MODULE_IDLE_STATE; ///< Current blood pressure module state +static BP_MODULE_STATE_T bpModuleState; ///< Current blood pressure module state static U08 lowSystolicCount; ///< Consecutive low systolic pressure counter static BOOL requestAdultBPReading; ///< Adult BP reading request static BOOL requestPedsBPReading; ///< Pediatric BP reading request static BOOL requestAbortBPReading; ///< Abort BP reading request -static BOOL pendingVitalsRequest; ///< Indicating UI requested BP measurement. -static BOOL isBloodPressureCuffConnected; ///< Indicating UI has requested Bp Cuff connected. -static U32 bpPublishTimerCtr; ///< Timer counter for vitals publish. -static BP_RESULTS_T bpResults; ///< Latest BP measurement results. // ********** private function prototypes ********** static void checkBloodPressureReading( BP_RESULTS_T *bpResults ); static BP_MODULE_STATE_T handleBPModuleIdleState( void ); static BP_MODULE_STATE_T handleBPModuleMeasureState( void ); static BP_MODULE_STATE_T handleBPModuleCheckState( void ); -static void resetBPModuleFlags( void ); -static void publishVitalsData( void ); +static void publishVitalsData( BP_RESULTS_T *bpResults ); /*********************************************************************//** * @brief @@ -82,12 +75,9 @@ initBPDriver(); bpModuleState = BP_MODULE_IDLE_STATE; lowSystolicCount = 0; - bpPublishTimerCtr = 0; - pendingVitalsRequest = FALSE; requestAdultBPReading = FALSE; requestPedsBPReading = FALSE; requestAbortBPReading = FALSE; - isBloodPressureCuffConnected = FALSE; } /*********************************************************************//** @@ -120,24 +110,10 @@ bpModuleState = BP_MODULE_IDLE_STATE; break; } - resetBPModuleFlags(); - publishVitalsData(); } /*********************************************************************//** * @brief -* The resetBPModuleFlags function resets BP module flags. -* @details \b Inputs: none -* @details \b Outputs: pendingVitalsRequest -* @return none -*************************************************************************/ -static void resetBPModuleFlags( void ) -{ - pendingVitalsRequest = FALSE; -} - -/*********************************************************************//** -* @brief * The initiateAdultBPReading function initiates an adult blood pressure * measurement. * @details \b Inputs: none @@ -290,6 +266,7 @@ if( TRUE == getBPResults( &bpResults ) ) { checkBloodPressureReading( &bpResults ); + publishVitalsData( &bpResults ); } return nextState; @@ -300,8 +277,8 @@ * The bpModuleHandleVitalsRequest function handles the UI blood * pressure measurement request. * @details \b Message \b Sent: MSG_ID_TD_BLOOD_PRESSURE_READING -* @details \b Inputs: message containing blood pressure reques -* @details \b Outputs: pendingVitalsRequest +* @details \b Inputs: message containing blood pressure request +* @details \b Outputs: requestAdultBPReading * @return TRUE if request is accepted, FALSE if rejected. *************************************************************************/ BOOL bpModuleHandleVitalsRequest( MESSAGE_T *message ) @@ -310,27 +287,30 @@ REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_INVALID_REQUEST_FORMAT; UI_RESPONSE_PAYLOAD_T response; - if ( 0 == message->hdr.payloadLen ) + if ( NULL != message ) { - // Verify treatment mode - if ( MODE_TREA == getCurrentOperationMode() ) + if ( 0 == message->hdr.payloadLen ) { - // Verify cuff connection - if ( TRUE == isBloodPressureCuffConnected ) + // Verify treatment mode + if ( MODE_TREA == getCurrentOperationMode() ) { - pendingVitalsRequest = TRUE; - result = TRUE; - rejReason = REQUEST_REJECT_REASON_NONE; + // Verify cuff connection + if ( TRUE == isBPCuffConnected() ) + { + initiateAdultBPReading(); + result = TRUE; + rejReason = REQUEST_REJECT_REASON_NONE; + } + else + { + rejReason = REQUEST_REJECT_REASON_INVALID_COMMAND; + } } else { - rejReason = REQUEST_REJECT_REASON_INVALID_COMMAND; + rejReason = REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE; } } - else - { - rejReason = REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE; - } } // Respond to request @@ -346,20 +326,19 @@ * The publishVitalsData function publishes blood pressure data. * @details \b Message \b Sent: MSG_ID_TD_BLOOD_PRESSURE_DATA * @details \b Inputs: bpResults -* @details \b Outputs: bpPublishTimerCtr +* @details \b Outputs: none * @return none *************************************************************************/ -static void publishVitalsData( void ) +static void publishVitalsData( BP_RESULTS_T *bpResults ) { - if ( ++bpPublishTimerCtr >= BP_DATA_PUBLISH_INTERVAL ) + BP_RESULTS_T data; + + if ( NULL != bpResults ) { - BP_RESULTS_T data; + data.systolic = bpResults->systolic; + data.diastolic = bpResults->diastolic; + data.heartRate = bpResults->heartRate; - bpPublishTimerCtr = 0; - data.systolic = bpResults.systolic; - data.diastolic = bpResults.diastolic; - data.heartRate = bpResults.heartRate; - broadcastData( MSG_ID_TD_BLOOD_PRESSURE_DATA, COMM_BUFFER_OUT_CAN_TD_BROADCAST, (U08*)&data, sizeof( BP_RESULTS_T ) ); } } Index: firmware/App/Drivers/BPDriver.c =================================================================== diff -u -re36419ec3d1b64f3831b631d57f30ce4018646c5 -rd22b634e0d703617cebdd7817c76895ed7b33128 --- firmware/App/Drivers/BPDriver.c (.../BPDriver.c) (revision e36419ec3d1b64f3831b631d57f30ce4018646c5) +++ firmware/App/Drivers/BPDriver.c (.../BPDriver.c) (revision d22b634e0d703617cebdd7817c76895ed7b33128) @@ -52,7 +52,6 @@ static BOOL requestPedsBPMeasurement; ///< Request pediatric BP measurement static BOOL requestAbortBPMeasurement; ///< Request abort BP measurement static BOOL bpCuffConnected; ///< Blood pressure cuff connection -static BOOL bpResultsAvailable; ///< Blood pressure results available // ********** private function prototypes ********** @@ -77,7 +76,6 @@ requestPedsBPMeasurement = FALSE; requestAbortBPMeasurement = FALSE; bpCuffConnected = FALSE; - bpResultsAvailable = FALSE; bpResults.systolic = 0; bpResults.diastolic = 0; bpResults.heartRate = 0; Index: firmware/App/Drivers/BPDriver.h =================================================================== diff -u -re36419ec3d1b64f3831b631d57f30ce4018646c5 -rd22b634e0d703617cebdd7817c76895ed7b33128 --- firmware/App/Drivers/BPDriver.h (.../BPDriver.h) (revision e36419ec3d1b64f3831b631d57f30ce4018646c5) +++ firmware/App/Drivers/BPDriver.h (.../BPDriver.h) (revision d22b634e0d703617cebdd7817c76895ed7b33128) @@ -37,7 +37,7 @@ typedef enum { BP_CMD_IDLE = 0x00, ///< No command. - BP_CMD_GET_MODULE_DATA = 0x01, ///< Get NIBP module data. + BP_CMD_GET_MODULE_DATA = 0x01, ///< Get BP module data. BP_CMD_SET_INITIAL_INFLATE = 0x02, ///< Set initial inflate pressure. BP_CMD_START_BP = 0x03, ///< Start adult BP measurement. BP_CMD_START_PEDS_BP = 0x04, ///< Start pediatric BP measurement. @@ -46,7 +46,7 @@ BP_CMD_GET_BP_DATA = 0x07, ///< Get BP data. BP_CMD_SET_SLEEP_MODE = 0x08, ///< Set sleep mode. BP_CMD_CONTROL_PNEUMATICS = 0x09, ///< Control pneumatics. - BP_CMD_RESET = 0x0A ///< Reset NIBP module. + BP_CMD_RESET = 0x0A ///< Reset BP module. } BP_CMD_T; /// Blood pressure measurement results.