V4.1.10a - Added heart rate readings frozen fault warning.
This commit is contained in:
BIN
app/release/app-release-4.1.10a.apk
Normal file
BIN
app/release/app-release-4.1.10a.apk
Normal file
Binary file not shown.
@@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:versionCode="123"
|
android:versionCode="124"
|
||||||
android:versionName="4.1.9">
|
android:versionName="4.1.10a">
|
||||||
<!-- android:allowBackup="false" -->
|
<!-- android:allowBackup="false" -->
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||||
|
|||||||
@@ -853,9 +853,9 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
// Fault Conditions - We override the values in the UI because we do not know
|
// Fault Conditions - We override the values in the UI because we do not know
|
||||||
// if the stored ones are correct or not with a fault present.
|
// if the stored ones are correct or not with a fault present.
|
||||||
if ((mConnection.mSdServer.mSdData.alarmState == 4) ||
|
if ((mConnection.mSdServer.mSdData.alarmState == 4) ||
|
||||||
(mConnection.mSdServer.mSdData.alarmState == 7)) {
|
(mConnection.mSdServer.mSdData.alarmState == 7) || mConnection.mSdServer.mSdData.mHrFrozenFaultStanding) {
|
||||||
tv = (TextView) findViewById(R.id.alarmTv);
|
tv = (TextView) findViewById(R.id.alarmTv);
|
||||||
if (mConnection.mSdServer.mSdData.alarmState == 4) {
|
if (mConnection.mSdServer.mSdData.alarmState == 4 || mConnection.mSdServer.mSdData.mHrFrozenFaultStanding) {
|
||||||
tv.setText(R.string.Fault);
|
tv.setText(R.string.Fault);
|
||||||
tv.setBackgroundColor(warnColour);
|
tv.setBackgroundColor(warnColour);
|
||||||
tv.setTextColor(warnTextColour);
|
tv.setTextColor(warnTextColour);
|
||||||
@@ -876,7 +876,7 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
tv.setTextColor(warnTextColour);
|
tv.setTextColor(warnTextColour);
|
||||||
|
|
||||||
tv = (TextView) findViewById(R.id.pebbleTv);
|
tv = (TextView) findViewById(R.id.pebbleTv);
|
||||||
tv.setText(getString(R.string.HR_Equals) + " --- bpm\n"+getString(R.string.o2_sat)+" = --- %");
|
//tv.setText(getString(R.string.HR_Equals) + " --- bpm\n"+getString(R.string.o2_sat)+" = --- %");
|
||||||
tv.setBackgroundColor(warnColour);
|
tv.setBackgroundColor(warnColour);
|
||||||
tv.setTextColor(warnTextColour);
|
tv.setTextColor(warnTextColour);
|
||||||
|
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ public class SdData implements Parcelable {
|
|||||||
|
|
||||||
public CircBuf mAdaptiveHrBuf;
|
public CircBuf mAdaptiveHrBuf;
|
||||||
public CircBuf mAverageHrBuf;
|
public CircBuf mAverageHrBuf;
|
||||||
|
public boolean mHrFrozenFaultStanding = false;
|
||||||
int mNsamp = 0;
|
int mNsamp = 0;
|
||||||
|
|
||||||
/* Analysis results */
|
/* Analysis results */
|
||||||
|
|||||||
@@ -104,6 +104,10 @@ public abstract class SdDataSource {
|
|||||||
private int mAlarmCount;
|
private int mAlarmCount;
|
||||||
protected String mBleDeviceAddr;
|
protected String mBleDeviceAddr;
|
||||||
protected String mBleDeviceName;
|
protected String mBleDeviceName;
|
||||||
|
private double mLastHrValue;
|
||||||
|
private Time mHrStatusTime;
|
||||||
|
private double mHrFrozenPeriod = 60; // seconds
|
||||||
|
private boolean mHrFrozenAlarm;
|
||||||
|
|
||||||
|
|
||||||
public SdDataSource(Context context, Handler handler, SdDataReceiver sdDataReceiver) {
|
public SdDataSource(Context context, Handler handler, SdDataReceiver sdDataReceiver) {
|
||||||
@@ -163,6 +167,12 @@ public abstract class SdDataSource {
|
|||||||
Log.v(TAG, "start(): status timer already running.");
|
Log.v(TAG, "start(): status timer already running.");
|
||||||
mUtil.writeToSysLogFile("SdDataSource.start() - status timer already running??");
|
mUtil.writeToSysLogFile("SdDataSource.start() - status timer already running??");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initialise time we last received a change in HR value.
|
||||||
|
mHrStatusTime = new Time(Time.getCurrentTimezone());
|
||||||
|
mHrStatusTime.setToNow();
|
||||||
|
mLastHrValue = -1;
|
||||||
|
|
||||||
if (mFaultCheckTimer == null) {
|
if (mFaultCheckTimer == null) {
|
||||||
Log.v(TAG, "start(): starting alarm check timer");
|
Log.v(TAG, "start(): starting alarm check timer");
|
||||||
mUtil.writeToSysLogFile("SdDataSource.start() - starting alarm check timer");
|
mUtil.writeToSysLogFile("SdDataSource.start() - starting alarm check timer");
|
||||||
@@ -779,6 +789,21 @@ public abstract class SdDataSource {
|
|||||||
//Log.v(TAG, "faultCheck() - watch app not running so not doing anything");
|
//Log.v(TAG, "faultCheck() - watch app not running so not doing anything");
|
||||||
mAlarmCount = 0;
|
mAlarmCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mSdData.mHRAlarmActive && mHrFrozenAlarm) {
|
||||||
|
if (mSdData.mHR != mLastHrValue) {
|
||||||
|
mLastHrValue = mSdData.mHR;
|
||||||
|
mHrStatusTime = tnow;
|
||||||
|
mSdData.mHrFrozenFaultStanding = false;
|
||||||
|
} else {
|
||||||
|
tdiff = (tnow.toMillis(false) - mHrStatusTime.toMillis(false));
|
||||||
|
if (tdiff > mHrFrozenPeriod *1000.) {
|
||||||
|
mSdData.mHrFrozenFaultStanding = true;
|
||||||
|
} else {
|
||||||
|
mSdData.mHrFrozenFaultStanding = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void nnAnalysis() {
|
void nnAnalysis() {
|
||||||
@@ -971,6 +996,10 @@ public abstract class SdDataSource {
|
|||||||
Log.v(TAG, "updatePrefs() HRNullAsAlarm = " + mSdData.mHRNullAsAlarm);
|
Log.v(TAG, "updatePrefs() HRNullAsAlarm = " + mSdData.mHRNullAsAlarm);
|
||||||
mUtil.writeToSysLogFile( "updatePrefs() HRNullAsAlarm = " + mSdData.mHRNullAsAlarm);
|
mUtil.writeToSysLogFile( "updatePrefs() HRNullAsAlarm = " + mSdData.mHRNullAsAlarm);
|
||||||
|
|
||||||
|
mHrFrozenAlarm = SP.getBoolean("HrFrozenAlarm", true);
|
||||||
|
Log.v(TAG, "updatePrefs() - mHrFrozenAlarm = " + mHrFrozenAlarm);
|
||||||
|
mUtil.writeToSysLogFile("updatePrefs() - mHrFrozenAlarm = " + mHrFrozenAlarm);
|
||||||
|
|
||||||
prefStr = SP.getString("HRThreshMin", "SET_FROM_XML");
|
prefStr = SP.getString("HRThreshMin", "SET_FROM_XML");
|
||||||
mSdData.mHRThreshMin = (short) Integer.parseInt(prefStr);
|
mSdData.mHRThreshMin = (short) Integer.parseInt(prefStr);
|
||||||
Log.v(TAG, "updatePrefs() HRThreshMin = " + mSdData.mHRThreshMin);
|
Log.v(TAG, "updatePrefs() HRThreshMin = " + mSdData.mHRThreshMin);
|
||||||
|
|||||||
@@ -774,7 +774,7 @@ public class SdServer extends Service implements SdDataReceiver {
|
|||||||
|
|
||||||
|
|
||||||
// Fault
|
// Fault
|
||||||
if ((sdData.alarmState) == 4 || (sdData.alarmState == 7) || (sdData.mHRFaultStanding)) {
|
if ((sdData.alarmState) == 4 || (sdData.alarmState == 7) || (sdData.mHRFaultStanding) || (sdData.mHrFrozenFaultStanding)) {
|
||||||
sdData.alarmPhrase = "FAULT";
|
sdData.alarmPhrase = "FAULT";
|
||||||
//writeAlarmToSD();
|
//writeAlarmToSD();
|
||||||
faultWarningBeep();
|
faultWarningBeep();
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
<string name="app_name">OpenSeizureDetector</string>
|
<string name="app_name">OpenSeizureDetector</string>
|
||||||
<string name="changelog">
|
<string name="changelog">
|
||||||
"\n
|
"\n
|
||||||
|
\nV4.1.10 - Added warning if heart rate readings freeze and do not change for more than 1 minute.
|
||||||
\nV4.1.9 - Fixed problem with average heart rate alarm
|
\nV4.1.9 - Fixed problem with average heart rate alarm
|
||||||
Fixed issue with phone data source generating continuous alarms for Heart Rate or O2Sat
|
Fixed issue with phone data source generating continuous alarms for Heart Rate or O2Sat
|
||||||
Fixed a small number of user reported issues (https://github.com/OpenSeizureDetector/Android_Pebble_SD/issues?q=is%3Aissue+milestone%3AV4.1.8)
|
Fixed a small number of user reported issues (https://github.com/OpenSeizureDetector/Android_Pebble_SD/issues?q=is%3Aissue+milestone%3AV4.1.8)
|
||||||
@@ -499,4 +500,6 @@
|
|||||||
<string name="export_data_menuItem">Export Data</string>
|
<string name="export_data_menuItem">Export Data</string>
|
||||||
<string name="data_exported_ok">Data Exported OK</string>
|
<string name="data_exported_ok">Data Exported OK</string>
|
||||||
<string name="error_exporting_data">*** ERROR Exporting Data ***</string>
|
<string name="error_exporting_data">*** ERROR Exporting Data ***</string>
|
||||||
|
<string name="HrFrozenTitle">Heart Rate measurement Frozen Warning</string>
|
||||||
|
<string name="HrFrozenSummary">Produce a fault warning if the heart rate measurement freezes and does not change for more than 1 minute.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -83,6 +83,11 @@
|
|||||||
android:key="HRAlarmActive"
|
android:key="HRAlarmActive"
|
||||||
android:summary="@string/HRAlarmEnabledSummary"
|
android:summary="@string/HRAlarmEnabledSummary"
|
||||||
android:title="@string/HRAlarmEnabledTitle" />
|
android:title="@string/HRAlarmEnabledTitle" />
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:defaultValue="true"
|
||||||
|
android:key="HrFrozenAlarm"
|
||||||
|
android:summary="@string/HrFrozenSummary"
|
||||||
|
android:title="@string/HrFrozenTitle" />
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
android:key="HRNullAsAlarm"
|
android:key="HRNullAsAlarm"
|
||||||
|
|||||||
Reference in New Issue
Block a user