Index: sources/view/VVitals.cpp =================================================================== diff -u -rfdb48ba3fba8e95027ebf573325c8f25db74c070 -ra47e7059c91c50cee3e05972fe5d96c053cdfb31 --- sources/view/VVitals.cpp (.../VVitals.cpp) (revision fdb48ba3fba8e95027ebf573325c8f25db74c070) +++ sources/view/VVitals.cpp (.../VVitals.cpp) (revision a47e7059c91c50cee3e05972fe5d96c053cdfb31) @@ -9,8 +9,13 @@ using namespace View; using namespace Gui; +VIEW_DEF_CLASS(VVitals) -VVitals::VVitals(QObject *parent) : QObject(parent) +/*! + * \brief VVitals::initConnections + * Makes the necessary connections. Called inside VIEW_DEF_CLASS + */ +void VVitals::initConnections() { // incoming connect(&_BLEScanner, SIGNAL(didReceiveBPMeasurement(BLEMeasurementData)), @@ -19,9 +24,6 @@ connect(&_GuiController, SIGNAL(didActionReceive(HDOperationModeData)), this, SLOT(onHDOperationModeUpdate(HDOperationModeData))); - connect(&_MainTimer, SIGNAL(didTimeout()), - this, SLOT(onTimeout())); - connect(&_GuiController, SIGNAL(didAlertResponse(GuiAlertResponseData)), this, SLOT(onReceiveAlertResponse(GuiAlertResponseData))); @@ -30,50 +32,62 @@ // outgoing connect(this, SIGNAL(didRequestShowAlert(GuiAlertRequestData)), &_GuiController, SLOT(doAlertRequest(GuiAlertRequestData))); + + _timerID = startTimer(_timerInterval); } /*! + * \brief VVitals::timerEvent + * Called every _timerInterval (s) + * \param event (QTimerEvent*) the timer event + */ +void VVitals::timerEvent(QTimerEvent *event) +{ + Q_UNUSED(event); + notifyTakeMeasurement(); +} + +/*! * \brief VVitals::doUpdateBPMeasureInterval * Updates the blood pressure and hr measurement interval during a treatment * Called whenever a new treatment parameters request is issued - * \param msgID - (QVariantList) the treatment parameters request - * \param request - (QVariantList) the treatment parameters request + * \param vIntervalMinutes (quint32) - the BP measure interval in minutes */ -void VVitals::doUpdateBPMeasureInterval(const quint32 &intervalMinutes) +void VVitals::doUpdateBPMeasureInterval(const quint32 &vIntervalMinutes) { - LOG_DEBUG(QString("Updated BP/HR measurement notify interval to %1 minutes").arg(intervalMinutes)); - bloodPressureMeasureIntervalMinutes(intervalMinutes); + LOG_DEBUG(QString("Updated BP/HR measurement notify interval to %1 minutes").arg(vIntervalMinutes)); + bloodPressureMeasureIntervalMinutes(vIntervalMinutes); } /*! * \brief VVitals::doManualBPMeasureEntry * Called when a user manually enters the bp measurement data - * \param systolic - systolic blood pressure value - * \param diastolic - diastolic blood pressure value - * \param pulse_rate - pulse rate in beats per minute + * \param vSystolic - systolic blood pressure value + * \param vDiastolic - diastolic blood pressure value + * \param vPulseRate - pulse rate in beats per minute */ -void VVitals::doManualBPMeasureEntry(const quint32 &systolic, const quint32 &diastolic, const quint32 &pulse_rate) +void VVitals::doManualBPMeasureEntry(const quint32 &vSystolic, const quint32 &vDiastolic, const quint32 &vPulseRate) { // coco begin validated: Has been validated manually BLEMeasurementData measurement; - measurement.systolic = systolic; - measurement.diastolic = diastolic; - measurement.pulse_rate = pulse_rate; + measurement.systolic = vSystolic; + measurement.diastolic = vDiastolic; + measurement.pulse_rate = vPulseRate; onReceiveBPMeasurement(measurement); } // coco end /*! * \brief VVitals::onReceiveBPMeasurement * Private slot that is called when we recieve a blood pressure measurement - * \param measurement - (BLEScanner::bp_measurement) the blood pressure measurement + * \param vMeasurement - (BLEScanner::bp_measurement) the blood pressure measurement */ -void VVitals::onReceiveBPMeasurement(BLEMeasurementData measurement) +void VVitals::onReceiveBPMeasurement(const BLEMeasurementData &vMeasurement) { // coco begin validated: Has been validated manually - bloodPressureDiastolic (measurement.diastolic); - bloodPressureSystolic (measurement.systolic); - pulseBPM (measurement.pulse_rate); + bloodPressureDiastolic (vMeasurement.diastolic); + bloodPressureSystolic (vMeasurement.systolic); + pulseBPM (vMeasurement.pulse_rate); } // coco end @@ -82,9 +96,9 @@ * When we receive an HD operation mode update * \param hdOpMode - the HD operation mode */ -void VVitals::onHDOperationModeUpdate(HDOperationModeData hdOpMode) +void VVitals::onHDOperationModeUpdate(const HDOperationModeData &vHDOpMode) { - if (hdOpMode.mOpMode != GuiHDOpModes::MODE_TREA) + if (vHDOpMode.mOpMode != GuiHDOpModes::MODE_TREA) _inTreatmentMode = false; else _inTreatmentMode = true; @@ -94,50 +108,58 @@ * \brief VVitals::onTimeout * Notifies the user to take a measurement */ -void VVitals::onTimeout() +void VVitals::notifyTakeMeasurement() { // coco begin validated: Has been validated manually + if (bloodPressureMeasureIntervalMinutes() == 0) + return; + if (_inTreatmentMode && _lastNotification.secsTo(QDateTime::currentDateTime()) >= bloodPressureMeasureIntervalMinutes()*60) // PRS 94 { GuiAlertRequestData request; LOG_DEBUG("Notify user to take a measurement"); request.id = GuiAlertID::ID_Alert_BLE_Measurement_Timeout; request.title = tr("Please take vitals"); - request.description = tr("Press 'Confirm' once you have finished measuring your blood pressure and heart rate."); + request.description = tr("Press 'Confirm' once you have finished measuring your blood pressure and heart rate.\n" + "Press 'Cancel' for manual entry."); emit didRequestShowAlert(request); _lastNotification = QDateTime::currentDateTime(); } /*else { int secondsRemaining = bloodPressureMeasureIntervalMinutes()*60 - _lastNotification.secsTo(QDateTime::currentDateTime()); LOG_DEBUG(QString("There are %1 seconds until next bp/hr measurement request notification").arg(secondsRemaining)); - }*/ + }*/ } // coco end /*! * \brief VVitals::onReceiveAlertResponse * Called when we receive an alert response - * \param response - the alert response + * \param vResponse - the alert response */ -void VVitals::onReceiveAlertResponse(GuiAlertResponseData response) +void VVitals::onReceiveAlertResponse(const GuiAlertResponseData &vResponse) { // coco begin validated: Has been validated manually - if (response.id != GuiAlertID::ID_Alert_BLE_Measurement_Timeout) + if (vResponse.id != GuiAlertID::ID_Alert_BLE_Measurement_Timeout) return; - LOG_DEBUG(QString("User confirmed alert? %1").arg(response.confirmed)); + LOG_DEBUG(QString("User confirmed alert? %1").arg(vResponse.confirmed)); + if (!vResponse.confirmed) + { + emit didManualEntryRequest(); + } } // coco end /*! * \brief VVitals::onActionReceive * Called when a treatment start request response is received * Sets the last take vitals notification time to the start of treatment - * \param response - (TreatmentStartResponseData) the response data + * \param vResponse - (TreatmentStartResponseData) the response data */ -void VVitals::onActionReceive(const TreatmentStartResponseData &response) +void VVitals::onActionReceive(const TreatmentStartResponseData &vResponse) { // coco begin validated: Has been validated manually - if (response.startTreatmentResponse != 1) + if (vResponse.startTreatmentResponse != 1) return; // coco end _lastNotification = QDateTime::currentDateTime();