Added alarm cause code. Fixes #111

This commit is contained in:
Graham Jones
2023-12-21 17:40:03 +00:00
parent 792ddf46d0
commit cdbacd00c2
3 changed files with 23 additions and 2 deletions

View File

@@ -632,7 +632,7 @@ public class MainActivity extends AppCompatActivity {
tv.setTextColor(warnTextColour); tv.setTextColor(warnTextColour);
} }
if (mConnection.mSdServer.mSdData.alarmStanding) { if (mConnection.mSdServer.mSdData.alarmStanding) {
tv.setText(R.string.Alarm); tv.setText(getString(R.string.Alarm) + "\n" + mConnection.mSdServer.mSdData.alarmCause);
tv.setBackgroundColor(alarmColour); tv.setBackgroundColor(alarmColour);
tv.setTextColor(alarmTextColour); tv.setTextColor(alarmTextColour);
} }

View File

@@ -106,6 +106,7 @@ public class SdData implements Parcelable {
/* Analysis results */ /* Analysis results */
public Time dataTime = null; public Time dataTime = null;
public long alarmState; public long alarmState;
public String alarmCause = "";
public boolean alarmStanding = false; public boolean alarmStanding = false;
public boolean fallAlarmStanding = false; public boolean fallAlarmStanding = false;
public long maxVal; public long maxVal;
@@ -223,6 +224,7 @@ public class SdData implements Parcelable {
jsonObj.put("roiRatio", 10 * roiPower / specPower); jsonObj.put("roiRatio", 10 * roiPower / specPower);
jsonObj.put("alarmState", alarmState); jsonObj.put("alarmState", alarmState);
jsonObj.put("alarmPhrase", alarmPhrase); jsonObj.put("alarmPhrase", alarmPhrase);
jsonObj.put("alarmCause", alarmCause);
jsonObj.put("hr", mHR); jsonObj.put("hr", mHR);
jsonObj.put("adaptiveHrAv", mAdaptiveHrAverage); jsonObj.put("adaptiveHrAv", mAdaptiveHrAverage);
jsonObj.put("averageHrAv", mAverageHrAverage); jsonObj.put("averageHrAv", mAverageHrAverage);
@@ -273,6 +275,7 @@ public class SdData implements Parcelable {
jsonObj.put("phoneBatteryPc", phoneBatteryPc); jsonObj.put("phoneBatteryPc", phoneBatteryPc);
jsonObj.put("alarmState", alarmState); jsonObj.put("alarmState", alarmState);
jsonObj.put("alarmPhrase", alarmPhrase); jsonObj.put("alarmPhrase", alarmPhrase);
jsonObj.put("alarmCause", alarmCause);
jsonObj.put("sdMode", mSdMode); jsonObj.put("sdMode", mSdMode);
jsonObj.put("sampleFreq", mSampleFreq); jsonObj.put("sampleFreq", mSampleFreq);
jsonObj.put("analysisPeriod", analysisPeriod); jsonObj.put("analysisPeriod", analysisPeriod);
@@ -338,6 +341,7 @@ public class SdData implements Parcelable {
jsonObj.put("haveSettings", haveSettings); jsonObj.put("haveSettings", haveSettings);
jsonObj.put("alarmState", alarmState); jsonObj.put("alarmState", alarmState);
jsonObj.put("alarmPhrase", alarmPhrase); jsonObj.put("alarmPhrase", alarmPhrase);
jsonObj.put("alarmCause", alarmCause);
jsonObj.put("sdMode", mSdMode); jsonObj.put("sdMode", mSdMode);
jsonObj.put("sampleFreq", mSampleFreq); jsonObj.put("sampleFreq", mSampleFreq);
jsonObj.put("analysisPeriod", analysisPeriod); jsonObj.put("analysisPeriod", analysisPeriod);

View File

@@ -541,6 +541,7 @@ public abstract class SdDataSource {
} }
// Check this data to see if it represents an alarm state. // Check this data to see if it represents an alarm state.
mSdData.alarmCause = "";
alarmCheck(); alarmCheck();
hrCheck(); hrCheck();
o2SatCheck(); o2SatCheck();
@@ -569,12 +570,14 @@ public abstract class SdDataSource {
// Is the current set of data representing an alarm state? // Is the current set of data representing an alarm state?
if ((mSdData.roiPower > mAlarmThresh) && ((10 * mSdData.roiPower / mSdData.specPower) > mAlarmRatioThresh)) { if ((mSdData.roiPower > mAlarmThresh) && ((10 * mSdData.roiPower / mSdData.specPower) > mAlarmRatioThresh)) {
inAlarm = true; inAlarm = true;
mSdData.alarmCause = mSdData.alarmCause+"OsdAlg ";
} }
} }
if (mSdData.mCnnAlarmActive) { if (mSdData.mCnnAlarmActive) {
if (mSdData.mPseizure > 0.5) { if (mSdData.mPseizure > 0.5) {
inAlarm = true; inAlarm = true;
mSdData.alarmCause = mSdData.alarmCause+"CnnAlg ";
} }
} }
@@ -602,7 +605,10 @@ public abstract class SdDataSource {
} }
} }
Log.v(TAG, "alarmCheck(): inAlarm=" + inAlarm + ", alarmState = " + mSdData.alarmState + " alarmCount=" + mAlarmCount + " mWarnTime=" + mWarnTime+ " mAlarmTime=" + mAlarmTime); Log.v(TAG, "alarmCheck(): inAlarm=" + inAlarm + ", alarmCause="
+ mSdData.alarmCause + ", alarmState = " + mSdData.alarmState
+ " alarmCount=" + mAlarmCount + " mWarnTime=" + mWarnTime
+ " mAlarmTime=" + mAlarmTime);
} }
@@ -640,6 +646,8 @@ public abstract class SdDataSource {
mSdData.mHRAlarmStanding = true; mSdData.mHRAlarmStanding = true;
mSdData.mAdaptiveHrAlarmStanding = false; mSdData.mAdaptiveHrAlarmStanding = false;
mSdData.mAverageHrAlarmStanding = false; mSdData.mAverageHrAlarmStanding = false;
mSdData.alarmCause = mSdData.alarmCause+"HrNull ";
} else { } else {
Log.i(TAG, "Heart Rate Fault (HR<0)"); Log.i(TAG, "Heart Rate Fault (HR<0)");
mSdData.mHRFaultStanding = true; mSdData.mHRFaultStanding = true;
@@ -650,8 +658,14 @@ public abstract class SdDataSource {
} else { } else {
mSdData.mHRFaultStanding = false; mSdData.mHRFaultStanding = false;
mSdData.mHRAlarmStanding = checkResults.get(0); mSdData.mHRAlarmStanding = checkResults.get(0);
if (mSdData.mHRAlarmStanding)
mSdData.alarmCause = mSdData.alarmCause+"HR ";
mSdData.mAdaptiveHrAlarmStanding = checkResults.get(1); mSdData.mAdaptiveHrAlarmStanding = checkResults.get(1);
if (mSdData.mAdaptiveHrAlarmStanding)
mSdData.alarmCause = mSdData.alarmCause+"HR_ADAPT ";
mSdData.mAverageHrAlarmStanding = checkResults.get(2); mSdData.mAverageHrAlarmStanding = checkResults.get(2);
if (mSdData.mAverageHrAlarmStanding)
mSdData.alarmCause = mSdData.alarmCause+"HR_AVG ";
// Show an ALARM state if any of the HR alarms is standing. // Show an ALARM state if any of the HR alarms is standing.
if (mSdData.mHRAlarmStanding | mSdData.mAdaptiveHrAlarmStanding | mSdData.mAverageHrAlarmStanding) { if (mSdData.mHRAlarmStanding | mSdData.mAdaptiveHrAlarmStanding | mSdData.mAverageHrAlarmStanding) {
mSdData.alarmState = 2; mSdData.alarmState = 2;
@@ -679,6 +693,7 @@ public abstract class SdDataSource {
Log.i(TAG, "Oxygen Saturation Null - Alarming"); Log.i(TAG, "Oxygen Saturation Null - Alarming");
mSdData.mO2SatFaultStanding = false; mSdData.mO2SatFaultStanding = false;
mSdData.mO2SatAlarmStanding = true; mSdData.mO2SatAlarmStanding = true;
mSdData.alarmCause = mSdData.alarmCause+"O2_NULL ";
} else { } else {
Log.i(TAG, "Oxygen Saturation Fault (O2Sat<0)"); Log.i(TAG, "Oxygen Saturation Fault (O2Sat<0)");
mSdData.mO2SatFaultStanding = true; mSdData.mO2SatFaultStanding = true;
@@ -688,6 +703,7 @@ public abstract class SdDataSource {
Log.i(TAG, "Oxygen Saturation Abnormal - " + mSdData.mO2Sat + " %"); Log.i(TAG, "Oxygen Saturation Abnormal - " + mSdData.mO2Sat + " %");
mSdData.mO2SatFaultStanding = false; mSdData.mO2SatFaultStanding = false;
mSdData.mO2SatAlarmStanding = true; mSdData.mO2SatAlarmStanding = true;
mSdData.alarmCause = mSdData.alarmCause+"O2SAT ";
} else { } else {
mSdData.mO2SatFaultStanding = false; mSdData.mO2SatFaultStanding = false;
mSdData.mO2SatAlarmStanding = false; mSdData.mO2SatAlarmStanding = false;
@@ -729,6 +745,7 @@ public abstract class SdDataSource {
Log.d(TAG, "check_fall() ****FALL DETECTED***** minAcc=" + minAcc + ", maxAcc=" + maxAcc); Log.d(TAG, "check_fall() ****FALL DETECTED***** minAcc=" + minAcc + ", maxAcc=" + maxAcc);
Log.d(TAG, "check_fall() - ****FALL DETECTED****"); Log.d(TAG, "check_fall() - ****FALL DETECTED****");
mSdData.fallAlarmStanding = true; mSdData.fallAlarmStanding = true;
mSdData.alarmCause = mSdData.alarmCause+"FALL ";
return; return;
} }
if (mMute != 0) { if (mMute != 0) {