Added fault timer to avoid warning beeps for short term glitches in connection.
This commit is contained in:
@@ -65,7 +65,6 @@ import org.json.JSONObject;
|
||||
import org.json.JSONArray;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Based on example at:
|
||||
* http://stackoverflow.com/questions/14309256/using-nanohttpd-in-android
|
||||
@@ -84,6 +83,10 @@ public class SdServer extends Service implements SdDataReceiver {
|
||||
private CancelAudibleTimer mCancelAudibleTimer = null;
|
||||
private int mCancelAudiblePeriod = 10; // Cancel Audible Period in minutes
|
||||
private long mCancelAudibleTimeRemaining = 0;
|
||||
private FaultTimer mFaultTimer = null;
|
||||
private int mFaultTimerPeriod = 30; // Fault Timer Period in sec
|
||||
private boolean mFaultTimerCompleted = false;
|
||||
|
||||
private HandlerThread thread;
|
||||
private WakeLock mWakeLock = null;
|
||||
public SdDataSource mSdDataSource;
|
||||
@@ -188,7 +191,6 @@ public class SdServer extends Service implements SdDataReceiver {
|
||||
mSMSTime = new Time(Time.getCurrentTimezone());
|
||||
|
||||
|
||||
|
||||
// Start timer to log data regularly..
|
||||
if (dataLogTimer == null) {
|
||||
Log.v(TAG, "onCreate(): starting dataLog timer");
|
||||
@@ -299,6 +301,7 @@ public class SdServer extends Service implements SdDataReceiver {
|
||||
|
||||
/**
|
||||
* Process the data received from the SdData source.
|
||||
*
|
||||
* @param sdData
|
||||
*/
|
||||
public void onSdDataReceived(SdData sdData) {
|
||||
@@ -388,6 +391,8 @@ public class SdServer extends Service implements SdDataReceiver {
|
||||
if ((sdData.alarmState == 4)) {
|
||||
sdData.alarmPhrase = "FAULT";
|
||||
faultWarningBeep();
|
||||
} else {
|
||||
stopFaultTimer();
|
||||
}
|
||||
mSdData = sdData;
|
||||
if (webServer != null) webServer.setSdData(mSdData);
|
||||
@@ -420,6 +425,7 @@ public class SdServer extends Service implements SdDataReceiver {
|
||||
* beep, provided mAudibleAlarm is set
|
||||
*/
|
||||
public void faultWarningBeep() {
|
||||
if (mFaultTimerCompleted) {
|
||||
if (mCancelAudible) {
|
||||
Log.v(TAG, "faultWarningBeep() - CancelAudible Active - silent beep...");
|
||||
} else {
|
||||
@@ -430,6 +436,11 @@ public class SdServer extends Service implements SdDataReceiver {
|
||||
Log.v(TAG, "faultWarningBeep() - silent...");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
startFaultTimer();
|
||||
Log.v(TAG, "faultWarningBeep() - starting Fault Timer");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -591,6 +602,17 @@ public class SdServer extends Service implements SdDataReceiver {
|
||||
Log.v(TAG, "updatePrefs() - mLatchAlarms = " + mLatchAlarms);
|
||||
mAudibleFaultWarning = SP.getBoolean("AudibleFaultWarning", true);
|
||||
Log.v(TAG, "updatePrefs() - mAuidbleFaultWarning = " + mAudibleFaultWarning);
|
||||
// Parse the faultTimer period setting.
|
||||
try {
|
||||
String faultTimerPeriodStr = SP.getString("FaultTimerPeriod", "30");
|
||||
mFaultTimerPeriod = Integer.parseInt(faultTimerPeriodStr);
|
||||
Log.v(TAG, "updatePrefs() - mFaultTimerPeriod = " + mFaultTimerPeriod);
|
||||
} catch (Exception ex) {
|
||||
Log.v(TAG, "updatePrefs() - Problem with FaultTimerPeriod preference!");
|
||||
Toast toast = Toast.makeText(getApplicationContext(), "Problem Parsing FaultTimerPeriod Preference", Toast.LENGTH_SHORT);
|
||||
toast.show();
|
||||
}
|
||||
|
||||
mAudibleAlarm = SP.getBoolean("AudibleAlarm", true);
|
||||
Log.v(TAG, "updatePrefs() - mAuidbleAlarm = " + mAudibleAlarm);
|
||||
mAudibleWarning = SP.getBoolean("AudibleWarning", true);
|
||||
@@ -693,11 +715,13 @@ public class SdServer extends Service implements SdDataReceiver {
|
||||
public CancelAudibleTimer(long startTime, long interval) {
|
||||
super(startTime, interval);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinish() {
|
||||
mCancelAudible = false;
|
||||
Log.v(TAG, "mCancelAudibleTimer - removing cancelAudible flag");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(long msRemaining) {
|
||||
mCancelAudibleTimeRemaining = msRemaining / 1000;
|
||||
@@ -707,6 +731,60 @@ public class SdServer extends Service implements SdDataReceiver {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Start the fault timer that is used to require a fault to remain
|
||||
* standing for a period before raising fault beeps.
|
||||
*/
|
||||
public void startFaultTimer() {
|
||||
if (mFaultTimer != null) {
|
||||
Log.v(TAG, "startFaultTimer(): fault timer already running - not doing anything.");
|
||||
} else {
|
||||
Log.v(TAG, "startFaultTimer(): starting fault timer.");
|
||||
mFaultTimerCompleted = false;
|
||||
mFaultTimer =
|
||||
// conver to ms.
|
||||
new FaultTimer(mFaultTimerPeriod * 1000, 1000);
|
||||
mFaultTimer.start();
|
||||
}
|
||||
}
|
||||
|
||||
public void stopFaultTimer() {
|
||||
if (mFaultTimer != null) {
|
||||
Log.v(TAG, "stopFaultTimer(): fault timer already running - cancelling it.");
|
||||
mFaultTimer.cancel();
|
||||
mFaultTimer = null;
|
||||
mFaultTimerCompleted = false;
|
||||
} else {
|
||||
Log.v(TAG, "stopFaultTimer(): fault timer not running - not doing anything.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Inhibit fault alarm initiation for a period to avoid spurious warning
|
||||
* beeps caused by short term network interruptions.
|
||||
*/
|
||||
private class FaultTimer extends CountDownTimer {
|
||||
public long mFaultTimerRemaining = 0;
|
||||
|
||||
public FaultTimer(long startTime, long interval) {
|
||||
super(startTime, interval);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinish() {
|
||||
mFaultTimerCompleted = true;
|
||||
Log.v(TAG, "mFaultTimer - removing mFaultTimerRunning flag");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(long msRemaining) {
|
||||
mFaultTimerRemaining = msRemaining / 1000;
|
||||
Log.v(TAG, "mFaultTimer - onTick() - Time Remaining = "
|
||||
+ mFaultTimerRemaining);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user