Got fault detection working on Garmin using SdDataSourceNetworkPassive

This commit is contained in:
Graham Jones
2017-12-12 20:03:37 +00:00
parent ec34c2fe03
commit ab22abc63a
2 changed files with 38 additions and 25 deletions

View File

@@ -406,6 +406,7 @@ public class SdDataSourceNetworkPassive extends SdDataSource {
} }
// Because we have received data, set flag to show watch app running. // Because we have received data, set flag to show watch app running.
mWatchAppRunningCheck = true; mWatchAppRunningCheck = true;
mSdDataReceiver.onSdDataReceived(mSdData); // and tell SdServer we have received data.
} }
@@ -434,6 +435,8 @@ public class SdDataSourceNetworkPassive extends SdDataSource {
Log.v(TAG, "getStatus() - Watch App Not Running"); Log.v(TAG, "getStatus() - Watch App Not Running");
mUtil.writeToSysLogFile("SdDataSourceNetworkPassive.getStatus() - Watch App not Running"); mUtil.writeToSysLogFile("SdDataSourceNetworkPassive.getStatus() - Watch App not Running");
//mDataStatusTime.setToNow(); //mDataStatusTime.setToNow();
mSdData.roiPower = -1;
mSdData.specPower = -1;
mSdDataReceiver.onSdDataFault(mSdData); mSdDataReceiver.onSdDataFault(mSdData);
} else { } else {
Log.v(TAG, "getStatus() - Waiting for mFaultTimerPeriod before issuing audible warning..."); Log.v(TAG, "getStatus() - Waiting for mFaultTimerPeriod before issuing audible warning...");
@@ -459,36 +462,45 @@ public class SdDataSourceNetworkPassive extends SdDataSource {
*/ */
private void alarmCheck() { private void alarmCheck() {
boolean inAlarm; boolean inAlarm;
Log.v(TAG,"alarmCheck()"); if (mWatchAppRunningCheck) {
if ((mSdData.roiPower > mAlarmThresh) && (10*(mSdData.roiPower/mSdData.specPower) > mAlarmRatioThresh)) { Log.v(TAG, "alarmCheck()");
inAlarm = true; if ((mSdData.roiPower > mAlarmThresh) && (10 * (mSdData.roiPower / mSdData.specPower) > mAlarmRatioThresh)) {
} else { inAlarm = true;
inAlarm = false;
}
if (inAlarm) {
mAlarmCount+=mSamplePeriod;
if (mAlarmCount>mAlarmTime) {
mSdData.alarmState = 2;
} else if (mAlarmCount>mWarnTime) {
mSdData.alarmState = 1;
}
} else {
// If we are in an ALARM state, revert back to WARNING, otherwise
// revert back to OK.
if (mSdData.alarmState == 2) {
mSdData.alarmState = 1;
} else { } else {
mSdData.alarmState = 0; inAlarm = false;
mAlarmCount = 0;
} }
if (inAlarm) {
mAlarmCount += mSamplePeriod;
if (mAlarmCount > mAlarmTime) {
// full alarm
mSdData.alarmState = 2;
} else if (mAlarmCount > mWarnTime) {
// warning
mSdData.alarmState = 1;
}
} else {
// If we are not in an ALARM state, revert back to WARNING, otherwise
// revert back to OK.
if (mSdData.alarmState == 2) {
// revert to warning
mSdData.alarmState = 1;
mAlarmCount = mWarnTime + 1; // pretend we have only just entered warning state.
} else {
// revert to OK
mSdData.alarmState = 0;
mAlarmCount = 0;
}
}
Log.v(TAG, "inAlarm=" + inAlarm + ", alarmState = " + mSdData.alarmState + " alarmCount=" + mAlarmCount + " mAlarmTime=" + mAlarmTime);
} else {
Log.v(TAG,"alarmCheck() - watch app not running so not doing anything");
mAlarmCount = 0;
} }
Log.v(TAG,"inAlarm="+inAlarm+", alarmState = "+mSdData.alarmState+" alarmCount="+mAlarmCount);
} }
} }

View File

@@ -520,6 +520,7 @@ public class SdServer extends Service implements SdDataReceiver, SdLocationRecei
Log.v(TAG, "onSdDataFault()"); Log.v(TAG, "onSdDataFault()");
mSdData = sdData; mSdData = sdData;
mSdData.alarmState = 4; // set fault alarm state. mSdData.alarmState = 4; // set fault alarm state.
mSdData.alarmStanding = false;
if (webServer != null) webServer.setSdData(mSdData); if (webServer != null) webServer.setSdData(mSdData);
if (mAudibleFaultWarning) { if (mAudibleFaultWarning) {
faultWarningBeep(); faultWarningBeep();