Sorted out issues with default pebbledatasource settings not being used.

This commit is contained in:
Graham Jones
2016-05-08 20:45:52 +01:00
parent 6267745152
commit 29a7655e34
2 changed files with 25 additions and 33 deletions

View File

@@ -55,9 +55,8 @@ public class SdDataSourcePebble extends SdDataSource {
private Timer mStatusTimer; private Timer mStatusTimer;
private Time mPebbleStatusTime; private Time mPebbleStatusTime;
private boolean mPebbleAppRunningCheck = false; private boolean mPebbleAppRunningCheck = false;
private int mDataPeriod = 5; // Period at which data is sent from watch to phone (sec)
private int mAppRestartTimeout = 10; // Timeout before re-starting watch app (sec) if we have not received private int mAppRestartTimeout = 10; // Timeout before re-starting watch app (sec) if we have not received
// data after mDataPeriod // data after mDataUpdatePeriod
//private Looper mServiceLooper; //private Looper mServiceLooper;
private int mFaultTimerPeriod = 30; // Fault Timer Period in sec private int mFaultTimerPeriod = 30; // Fault Timer Period in sec
private PebbleKit.PebbleDataReceiver msgDataHandler = null; private PebbleKit.PebbleDataReceiver msgDataHandler = null;
@@ -117,6 +116,9 @@ public class SdDataSourcePebble extends SdDataSource {
public SdDataSourcePebble(Context context, SdDataReceiver sdDataReceiver) { public SdDataSourcePebble(Context context, SdDataReceiver sdDataReceiver) {
super(context,sdDataReceiver); super(context,sdDataReceiver);
mName = "Pebble"; mName = "Pebble";
// Set default settings from XML files (mContext is set by super().
PreferenceManager.setDefaultValues(mContext,
R.xml.pebble_datasource_prefs, true);
} }
@@ -140,7 +142,7 @@ public class SdDataSourcePebble extends SdDataSource {
public void run() { public void run() {
getPebbleStatus(); getPebbleStatus();
} }
}, 0, mDataPeriod * 1000); }, 0, mDataUpdatePeriod * 1000);
} else { } else {
Log.v(TAG, "onCreate(): status timer already running."); Log.v(TAG, "onCreate(): status timer already running.");
} }
@@ -156,7 +158,7 @@ public class SdDataSourcePebble extends SdDataSource {
public void run() { public void run() {
getPebbleSdSettings(); getPebbleSdSettings();
} }
}, 0, 1000 * (mDataPeriod + 60)); // ask for settings less frequently than we get data }, 0, 1000 * (mDataUpdatePeriod + 60)); // ask for settings less frequently than we get data
} else { } else {
Log.v(TAG, "onCreate(): settings timer already running."); Log.v(TAG, "onCreate(): settings timer already running.");
} }
@@ -215,17 +217,6 @@ public class SdDataSourcePebble extends SdDataSource {
toast.show(); toast.show();
} }
// Parse the DataPeriod setting.
try {
String dataPeriodStr = SP.getString("DataPeriod", "5");
mDataPeriod = Integer.parseInt(dataPeriodStr);
Log.v(TAG, "updatePrefs() - mDataPeriod = " + mDataPeriod);
} catch (Exception ex) {
Log.v(TAG, "updatePrefs() - Problem with DataPeriod preference!");
Toast toast = Toast.makeText(mContext, "Problem Parsing DataPeriod Preference", Toast.LENGTH_SHORT);
toast.show();
}
// Parse the FaultTimer period setting. // Parse the FaultTimer period setting.
try { try {
String faultTimerPeriodStr = SP.getString("FaultTimerPeriod", "30"); String faultTimerPeriodStr = SP.getString("FaultTimerPeriod", "30");
@@ -241,54 +232,54 @@ public class SdDataSourcePebble extends SdDataSource {
// Watch Settings // Watch Settings
String prefStr; String prefStr;
prefStr = SP.getString("DataUpdatePeriod", "5"); prefStr = SP.getString("PebbleUpdatePeriod", "SET_FROM_XML");
mDataUpdatePeriod = (short) Integer.parseInt(prefStr); mDataUpdatePeriod = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() DataUpdatePeriod = " + mDataUpdatePeriod); Log.v(TAG, "updatePrefs() DataUpdatePeriod = " + mDataUpdatePeriod);
prefStr = SP.getString("MutePeriod", "300"); prefStr = SP.getString("MutePeriod", "SET_FROM_XML");
mMutePeriod = (short) Integer.parseInt(prefStr); mMutePeriod = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() MutePeriod = " + mMutePeriod); Log.v(TAG, "updatePrefs() MutePeriod = " + mMutePeriod);
prefStr = SP.getString("ManAlarmPeriod", "30"); prefStr = SP.getString("ManAlarmPeriod", "SET_FROM_XML");
mManAlarmPeriod = (short) Integer.parseInt(prefStr); mManAlarmPeriod = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() ManAlarmPeriod = " + mManAlarmPeriod); Log.v(TAG, "updatePrefs() ManAlarmPeriod = " + mManAlarmPeriod);
prefStr = SP.getString("AlarmFreqMin","3"); prefStr = SP.getString("AlarmFreqMin","SET_FROM_XML");
mAlarmFreqMin = (short) Integer.parseInt(prefStr); mAlarmFreqMin = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AlarmFreqMin = " + mAlarmFreqMin); Log.v(TAG, "updatePrefs() AlarmFreqMin = " + mAlarmFreqMin);
prefStr = SP.getString("AlarmFreqMax", "10"); prefStr = SP.getString("AlarmFreqMax", "SET_FROM_XML");
mAlarmFreqMax = (short) Integer.parseInt(prefStr); mAlarmFreqMax = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AlarmFreqMax = " + mAlarmFreqMax); Log.v(TAG, "updatePrefs() AlarmFreqMax = " + mAlarmFreqMax);
prefStr = SP.getString("WarnTime", "5"); prefStr = SP.getString("WarnTime", "SET_FROM_XML");
mWarnTime = (short) Integer.parseInt(prefStr); mWarnTime = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() WarnTime = " + mWarnTime); Log.v(TAG, "updatePrefs() WarnTime = " + mWarnTime);
prefStr = SP.getString("AlarmTime", "10"); prefStr = SP.getString("AlarmTime", "SET_FROM_XML");
mAlarmTime = (short) Integer.parseInt(prefStr); mAlarmTime = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AlarmTime = " + mAlarmTime); Log.v(TAG, "updatePrefs() AlarmTime = " + mAlarmTime);
prefStr = SP.getString("AlarmThresh", "70"); prefStr = SP.getString("AlarmThresh", "SET_FROM_XML");
mAlarmThresh = (short) Integer.parseInt(prefStr); mAlarmThresh = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AlarmThresh = " + mAlarmThresh); Log.v(TAG, "updatePrefs() AlarmThresh = " + mAlarmThresh);
prefStr = SP.getString("AlarmRatioThresh", "30"); prefStr = SP.getString("AlarmRatioThresh", "SET_FROM_XML");
mAlarmRatioThresh = (short) Integer.parseInt(prefStr); mAlarmRatioThresh = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AlarmRatioThresh = " + mAlarmRatioThresh); Log.v(TAG, "updatePrefs() AlarmRatioThresh = " + mAlarmRatioThresh);
mFallActive = SP.getBoolean("FallActive", false); mFallActive = SP.getBoolean("FallActive", false);
Log.v(TAG, "updatePrefs() FallActive = " + mFallActive); Log.v(TAG, "updatePrefs() FallActive = " + mFallActive);
prefStr = SP.getString("FallThreshMin", "200"); prefStr = SP.getString("FallThreshMin", "SET_FROM_XML");
mFallThreshMin = (short) Integer.parseInt(prefStr); mFallThreshMin = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() FallThreshMin = " + mFallThreshMin); Log.v(TAG, "updatePrefs() FallThreshMin = " + mFallThreshMin);
prefStr = SP.getString("FallThreshMax", "1200"); prefStr = SP.getString("FallThreshMax", "SET_FROM_XML");
mFallThreshMax = (short) Integer.parseInt(prefStr); mFallThreshMax = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() FallThreshMax = " + mFallThreshMax); Log.v(TAG, "updatePrefs() FallThreshMax = " + mFallThreshMax);
prefStr = SP.getString("FallWindow", "1500"); prefStr = SP.getString("FallWindow", "SET_FROM_XML");
mFallWindow = (short) Integer.parseInt(prefStr); mFallWindow = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() FallWindow = " + mFallWindow); Log.v(TAG, "updatePrefs() FallWindow = " + mFallWindow);
@@ -314,7 +305,7 @@ public class SdDataSourcePebble extends SdDataSource {
final PebbleDictionary data) { final PebbleDictionary data) {
Log.v(TAG, "Received message from Pebble - data type=" Log.v(TAG, "Received message from Pebble - data type="
+ data.getUnsignedIntegerAsLong(KEY_DATA_TYPE)); + data.getUnsignedIntegerAsLong(KEY_DATA_TYPE));
// If we ha ve a message, the app must be running // If we have a message, the app must be running
Log.v(TAG,"Setting mPebbleAppRunningCheck to true"); Log.v(TAG,"Setting mPebbleAppRunningCheck to true");
mPebbleAppRunningCheck = true; mPebbleAppRunningCheck = true;
PebbleKit.sendAckToPebble(context, transactionId); PebbleKit.sendAckToPebble(context, transactionId);
@@ -370,9 +361,10 @@ public class SdDataSourcePebble extends SdDataSource {
} }
}; };
PebbleKit.registerReceivedDataHandler(mContext, msgDataHandler); PebbleKit.registerReceivedDataHandler(mContext, msgDataHandler);
// We struggle to connect to pebble time if app is already running, so stop app so we can // We struggle to connect to pebble time if app is already running,
// re-connect to it. // so stop app so we can re-connect to it.
stopWatchApp(); stopWatchApp();
startWatchApp();
} }
/** /**
@@ -553,7 +545,7 @@ public class SdDataSourcePebble extends SdDataSource {
// the app is not talking to us // the app is not talking to us
// mPebbleAppRunningCheck is set to true in the receiveData handler. // mPebbleAppRunningCheck is set to true in the receiveData handler.
if (!mPebbleAppRunningCheck && if (!mPebbleAppRunningCheck &&
(tdiff > (mDataPeriod+mAppRestartTimeout) * 1000)) { (tdiff > (mDataUpdatePeriod+mAppRestartTimeout) * 1000)) {
Log.v(TAG, "getPebbleStatus() - tdiff = " + tdiff); Log.v(TAG, "getPebbleStatus() - tdiff = " + tdiff);
mSdData.pebbleAppRunning = false; mSdData.pebbleAppRunning = false;
Log.v(TAG, "getPebbleStatus() - Pebble App Not Running - Attempting to Re-Start"); Log.v(TAG, "getPebbleStatus() - Pebble App Not Running - Attempting to Re-Start");
@@ -561,7 +553,7 @@ public class SdDataSourcePebble extends SdDataSource {
//mPebbleStatusTime = tnow; // set status time to now so we do not re-start app repeatedly. //mPebbleStatusTime = tnow; // set status time to now so we do not re-start app repeatedly.
getPebbleSdSettings(); getPebbleSdSettings();
// Only make audible warning beep if we have not received data for more than mFaultTimerPeriod seconds. // Only make audible warning beep if we have not received data for more than mFaultTimerPeriod seconds.
if (tdiff > (mDataPeriod+mFaultTimerPeriod) * 1000) { if (tdiff > (mDataUpdatePeriod+mFaultTimerPeriod) * 1000) {
mSdDataReceiver.onSdDataFault(mSdData); mSdDataReceiver.onSdDataFault(mSdData);
} else { } else {
Log.v(TAG, "getPebbleStatus() - Waiting for mFaultTimerPeriod before issuing audible warning..."); Log.v(TAG, "getPebbleStatus() - Waiting for mFaultTimerPeriod before issuing audible warning...");

View File

@@ -4,7 +4,7 @@
<PreferenceCategory android:title="User Interface Settings"> <PreferenceCategory android:title="User Interface Settings">
<EditTextPreference <EditTextPreference
android:defaultValue="5" android:defaultValue="5"
android:key="DataUpdatePeriod" android:key="PebbleUpdatePeriod"
android:summary="Time period at which data is sent to the phone." android:summary="Time period at which data is sent to the phone."
android:title="Data Period (sec)" /> android:title="Data Period (sec)" />
<EditTextPreference <EditTextPreference