Added alarm latching option to SD Server app.

This commit is contained in:
Graham Jones
2015-11-10 23:09:22 +00:00
parent eec87aedd7
commit 3b240e3a54
6 changed files with 68 additions and 13 deletions

Binary file not shown.

View File

@@ -165,6 +165,13 @@ public class MainActivity extends Activity
Log.v(TAG,"exception starting pebble App "+ex.toString()); Log.v(TAG,"exception starting pebble App "+ex.toString());
} }
return true; return true;
case R.id.action_accept_alarm:
Log.v(TAG,"action_accept_alarm");
if (mBound) {
mSdServer.acceptAlarm();
}
return true;
case R.id.action_start_stop: case R.id.action_start_stop:
// Respond to the start/stop server menu item. // Respond to the start/stop server menu item.
Log.v(TAG,"action_sart_stop"); Log.v(TAG,"action_sart_stop");
@@ -243,7 +250,7 @@ public class MainActivity extends Activity
versionName = null; versionName = null;
} }
} }
tv.setText("OpenSeizureDetector Server Version "+versionName); tv.setText("OpenSeizureDetector Server Version " + versionName);
if (!isServerRunning()) { if (!isServerRunning()) {
Log.v(TAG,"Server not Running - Starting Server"); Log.v(TAG,"Server not Running - Starting Server");
@@ -445,18 +452,26 @@ public class MainActivity extends Activity
try { try {
if (mBound) { if (mBound) {
tv = (TextView) findViewById(R.id.alarmTv); tv = (TextView) findViewById(R.id.alarmTv);
if (mSdServer.sdData.alarmState==0) { if ((mSdServer.sdData.alarmState==0)
tv.setText(mSdServer.sdData.alarmPhrase); && !mSdServer.sdData.alarmStanding
&& !mSdServer.sdData.fallAlarmStanding) {
tv.setText("OK");
tv.setBackgroundColor(okColour); tv.setBackgroundColor(okColour);
} }
if (mSdServer.sdData.alarmState==1) { if ((mSdServer.sdData.alarmState==1)
tv.setText(mSdServer.sdData.alarmPhrase); && !mSdServer.sdData.alarmStanding
&& !mSdServer.sdData.fallAlarmStanding) {
tv.setText("WARNING");
tv.setBackgroundColor(warnColour); tv.setBackgroundColor(warnColour);
} }
if (mSdServer.sdData.alarmState==2) { if (mSdServer.sdData.alarmStanding) {
tv.setText(mSdServer.sdData.alarmPhrase); tv.setText("**ALARM**");
tv.setBackgroundColor(alarmColour); tv.setBackgroundColor(alarmColour);
} }
if (mSdServer.sdData.fallAlarmStanding) {
tv.setText("**FALL**");
tv.setBackgroundColor(alarmColour);
}
tv = (TextView) findViewById(R.id.pebTimeTv); tv = (TextView) findViewById(R.id.pebTimeTv);
tv.setText(mSdServer.mPebbleStatusTime.format("%H:%M:%S")); tv.setText(mSdServer.mPebbleStatusTime.format("%H:%M:%S"));
// Pebble Connected Phrase // Pebble Connected Phrase

View File

@@ -53,6 +53,8 @@ public class SdData implements Parcelable {
/* Analysis results */ /* Analysis results */
public Time dataTime; public Time dataTime;
public long alarmState; public long alarmState;
public boolean alarmStanding = false;
public boolean fallAlarmStanding = false;
public long maxVal; public long maxVal;
public long maxFreq; public long maxFreq;
public long specPower; public long specPower;

View File

@@ -141,6 +141,7 @@ public class SdServer extends Service
private WakeLock mWakeLock = null; private WakeLock mWakeLock = null;
public SdData sdData; public SdData sdData;
private PebbleKit.PebbleDataReceiver msgDataHandler = null; private PebbleKit.PebbleDataReceiver msgDataHandler = null;
private boolean mLatchAlarms = false;
private boolean mCancelAudible = false; private boolean mCancelAudible = false;
private boolean mAudibleAlarm = false; private boolean mAudibleAlarm = false;
private boolean mAudibleWarning = false; private boolean mAudibleWarning = false;
@@ -459,12 +460,24 @@ public class SdServer extends Service
sdData.roiPower = data.getUnsignedIntegerAsLong(KEY_ROIPOWER); sdData.roiPower = data.getUnsignedIntegerAsLong(KEY_ROIPOWER);
sdData.alarmPhrase = "Unknown"; sdData.alarmPhrase = "Unknown";
if (sdData.alarmState == 0) { if (sdData.alarmState == 0) {
sdData.alarmPhrase = "OK"; if ((!mLatchAlarms) ||
} (mLatchAlarms &&
(!sdData.alarmStanding && !sdData.fallAlarmStanding))) {
sdData.alarmPhrase = "OK";
sdData.alarmStanding = false;
sdData.fallAlarmStanding = false;
}
}
if (sdData.alarmState == 1) { if (sdData.alarmState == 1) {
sdData.alarmPhrase = "WARNING"; if ((!mLatchAlarms) ||
(mLatchAlarms &&
(!sdData.alarmStanding && !sdData.fallAlarmStanding))) {
sdData.alarmPhrase = "WARNING";
sdData.alarmStanding = false;
sdData.fallAlarmStanding = false;
}
if (mLogAlarms) { if (mLogAlarms) {
Log.v(TAG, "WARNING - Loggin to SD Card"); Log.v(TAG, "WARNING - Logging to SD Card");
writeAlarmToSD(); writeAlarmToSD();
logData(); logData();
} else { } else {
@@ -472,8 +485,9 @@ public class SdServer extends Service
} }
warningBeep(); warningBeep();
} }
if (sdData.alarmState == 2) { if ((sdData.alarmState == 2) || (sdData.alarmStanding)) {
sdData.alarmPhrase = "ALARM"; sdData.alarmPhrase = "ALARM";
sdData.alarmStanding = true;
if (mLogAlarms) { if (mLogAlarms) {
Log.v(TAG, "***ALARM*** - Logging to SD Card"); Log.v(TAG, "***ALARM*** - Logging to SD Card");
writeAlarmToSD(); writeAlarmToSD();
@@ -496,8 +510,9 @@ public class SdServer extends Service
} }
} }
} }
if (sdData.alarmState == 3) { if ((sdData.alarmState == 3) || (sdData.fallAlarmStanding)) {
sdData.alarmPhrase = "FALL"; sdData.alarmPhrase = "FALL";
sdData.fallAlarmStanding = true;
if (mLogAlarms) { if (mLogAlarms) {
Log.v(TAG, "***FALL*** - Logging to SD Card"); Log.v(TAG, "***FALL*** - Logging to SD Card");
writeAlarmToSD(); writeAlarmToSD();
@@ -555,6 +570,15 @@ public class SdServer extends Service
PebbleKit.registerReceivedDataHandler(this,msgDataHandler); PebbleKit.registerReceivedDataHandler(this,msgDataHandler);
} }
/**
* set the alarm standing flags to false to allow alarm phase to reset to current value.
*/
public void acceptAlarm() {
Log.v(TAG,"acceptAlarm()");
sdData.alarmStanding = false;
sdData.fallAlarmStanding = false;
}
/** /**
* De-register this server from receiving pebble data * De-register this server from receiving pebble data
*/ */
@@ -701,6 +725,8 @@ public class SdServer extends Service
SharedPreferences SP = PreferenceManager SharedPreferences SP = PreferenceManager
.getDefaultSharedPreferences(getBaseContext()); .getDefaultSharedPreferences(getBaseContext());
try { try {
mLatchAlarms = SP.getBoolean("LatchAlarms",false);
Log.v(TAG,"updatePrefs() - mLatchAlarms = "+mLatchAlarms);
mAudibleFaultWarning = SP.getBoolean("AudibleFaultWarning",true); mAudibleFaultWarning = SP.getBoolean("AudibleFaultWarning",true);
Log.v(TAG,"updatePrefs() - mAuidbleFaultWarning = "+mAudibleFaultWarning); Log.v(TAG,"updatePrefs() - mAuidbleFaultWarning = "+mAudibleFaultWarning);
mAudibleAlarm = SP.getBoolean("AudibleAlarm",true); mAudibleAlarm = SP.getBoolean("AudibleAlarm",true);

View File

@@ -1,4 +1,10 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/action_accept_alarm"
android:title="Accept Alarm"
android:showAsAction="never|withText"
/>
<item android:id="@+id/action_launch_pebble_app" <item android:id="@+id/action_launch_pebble_app"
android:icon="@drawable/stop_server" android:icon="@drawable/stop_server"
android:title="Launch Pebble App" android:title="Launch Pebble App"

View File

@@ -1,5 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="LatchAlarms"
android:title="Latch Alarms"
android:summary="Require manual reset of alarms to reset them to silence them."
android:defaultValue="false" />
<CheckBoxPreference <CheckBoxPreference
android:key="AudibleAlarm" android:key="AudibleAlarm"
android:title="Enable Audible Alarm" android:title="Enable Audible Alarm"