Applied Android Studio code formatting to all java files

This commit is contained in:
Graham Jones
2024-01-19 20:53:18 +00:00
parent d8b3582291
commit cfe612933f
40 changed files with 497 additions and 514 deletions

View File

@@ -66,8 +66,8 @@ public class AuthenticateActivity extends AppCompatActivity {
logoutBtn.setOnClickListener(onLogout); logoutBtn.setOnClickListener(onLogout);
// Components required only for osdapi backend // Components required only for osdapi backend
if (LogManager.USE_FIREBASE_BACKEND) { } if (LogManager.USE_FIREBASE_BACKEND) {
else { } else {
mConnection = new SdServiceConnection(getApplicationContext()); mConnection = new SdServiceConnection(getApplicationContext());
Button registerBtn = (Button) findViewById(R.id.RegisterBtn); Button registerBtn = (Button) findViewById(R.id.RegisterBtn);
@@ -84,7 +84,7 @@ public class AuthenticateActivity extends AppCompatActivity {
new View.OnClickListener() { new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
Log.v(TAG,"aboutDataSharingBtn.onClick()"); Log.v(TAG, "aboutDataSharingBtn.onClick()");
String url = OsdUtil.DATA_SHARING_URL; String url = OsdUtil.DATA_SHARING_URL;
Intent i = new Intent(Intent.ACTION_VIEW); Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url)); i.setData(Uri.parse(url));
@@ -97,7 +97,7 @@ public class AuthenticateActivity extends AppCompatActivity {
new View.OnClickListener() { new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
Log.v(TAG,"privacyPolicyBtn.onClick()"); Log.v(TAG, "privacyPolicyBtn.onClick()");
String url = OsdUtil.PRIVACY_POLICY_URL; String url = OsdUtil.PRIVACY_POLICY_URL;
Intent i = new Intent(Intent.ACTION_VIEW); Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url)); i.setData(Uri.parse(url));
@@ -150,14 +150,13 @@ public class AuthenticateActivity extends AppCompatActivity {
} }
private void initialiseServiceConnection() { private void initialiseServiceConnection() {
Log.v(TAG,"initialiseServiceConnection()"); Log.v(TAG, "initialiseServiceConnection()");
mLm = mConnection.mSdServer.mLm; mLm = mConnection.mSdServer.mLm;
mWac = mConnection.mSdServer.mLm.mWac; mWac = mConnection.mSdServer.mLm.mWac;
updateUi(); updateUi();
} }
// Called after the Firebase Auth UI has completed // Called after the Firebase Auth UI has completed
private ActivityResultLauncher<Intent> signInLauncher = registerForActivityResult( private ActivityResultLauncher<Intent> signInLauncher = registerForActivityResult(
new FirebaseAuthUIActivityResultContract(), new FirebaseAuthUIActivityResultContract(),
@@ -170,13 +169,13 @@ public class AuthenticateActivity extends AppCompatActivity {
private void updateUi() { private void updateUi() {
Log.v(TAG,"updateUi()"); Log.v(TAG, "updateUi()");
LinearLayout loginLl = (LinearLayout) findViewById(R.id.login_ui); LinearLayout loginLl = (LinearLayout) findViewById(R.id.login_ui);
LinearLayout osdApiLoginLl = (LinearLayout) findViewById(R.id.login_osdapi_ui); LinearLayout osdApiLoginLl = (LinearLayout) findViewById(R.id.login_osdapi_ui);
LinearLayout logoutLl = (LinearLayout) findViewById(R.id.logout_ui); LinearLayout logoutLl = (LinearLayout) findViewById(R.id.logout_ui);
if (mWac == null) { if (mWac == null) {
Log.i(TAG,"mWac is null - not updating UI"); Log.i(TAG, "mWac is null - not updating UI");
return; return;
} }
@@ -204,7 +203,7 @@ public class AuthenticateActivity extends AppCompatActivity {
} }
}); });
} else { } else {
Log.v(TAG,"updateUi() - not logged in.."); Log.v(TAG, "updateUi() - not logged in..");
loginLl.setVisibility(View.VISIBLE); loginLl.setVisibility(View.VISIBLE);
logoutLl.setVisibility(View.GONE); logoutLl.setVisibility(View.GONE);
if (!LogManager.USE_FIREBASE_BACKEND) { if (!LogManager.USE_FIREBASE_BACKEND) {
@@ -252,19 +251,19 @@ public class AuthenticateActivity extends AppCompatActivity {
// FIXME - make this work with Google Authentication like we do for Firebase. // FIXME - make this work with Google Authentication like we do for Firebase.
String uname = mUnameEt.getText().toString(); String uname = mUnameEt.getText().toString();
String passwd = mPasswdEt.getText().toString(); String passwd = mPasswdEt.getText().toString();
Log.v(TAG,"onOK() - uname="+uname+", passwd="+passwd); Log.v(TAG, "onOK() - uname=" + uname + ", passwd=" + passwd);
mWac.authenticate(uname, passwd, new WebApiConnection.StringCallback() { mWac.authenticate(uname, passwd, new WebApiConnection.StringCallback() {
@Override @Override
public void accept(String retVal) { public void accept(String retVal) {
if (retVal != null) { if (retVal != null) {
Log.d(TAG,"Authentication Success - token is "+retVal); Log.d(TAG, "Authentication Success - token is " + retVal);
mUtil.showToast("Login Successful"); mUtil.showToast("Login Successful");
saveAuthToken(retVal); saveAuthToken(retVal);
updateUi(); updateUi();
} else { } else {
Log.e(TAG,"onOk: Authentication failure for "+uname+", "+passwd); Log.e(TAG, "onOk: Authentication failure for " + uname + ", " + passwd);
mUtil.showToast("ERROR: Authentication Failed - Please Try Again"); mUtil.showToast("ERROR: Authentication Failed - Please Try Again");
mUtil.writeToSysLogFile("AuthActivity - Authorisation failed for "+uname+", "+passwd); mUtil.writeToSysLogFile("AuthActivity - Authorisation failed for " + uname + ", " + passwd);
} }
} }
}); });
@@ -290,7 +289,7 @@ public class AuthenticateActivity extends AppCompatActivity {
mWac.logout(); mWac.logout();
saveAuthToken(null); saveAuthToken(null);
} else { } else {
Log.e(TAG,"logout() - mWac is null - not doing anything"); Log.e(TAG, "logout() - mWac is null - not doing anything");
} }
} }
updateUi(); updateUi();

View File

@@ -292,7 +292,7 @@ public class BLEScanActivity extends ListActivity {
try { try {
mBluetoothLeScanner.startScan(mLeScanCallback); mBluetoothLeScanner.startScan(mLeScanCallback);
} catch (SecurityException e) { } catch (SecurityException e) {
Log.e(TAG,"startScan - SecurityException while starting scan"); Log.e(TAG, "startScan - SecurityException while starting scan");
Toast toast = Toast.makeText(this, "ERROR Starting Scan - Security Exception", Toast.LENGTH_SHORT); Toast toast = Toast.makeText(this, "ERROR Starting Scan - Security Exception", Toast.LENGTH_SHORT);
toast.show(); toast.show();
@@ -304,7 +304,7 @@ public class BLEScanActivity extends ListActivity {
try { try {
mBluetoothLeScanner.stopScan(mLeScanCallback); mBluetoothLeScanner.stopScan(mLeScanCallback);
} catch (SecurityException e) { } catch (SecurityException e) {
Log.e(TAG,"stopScan - SecurityException while stopping scan"); Log.e(TAG, "stopScan - SecurityException while stopping scan");
Toast toast = Toast.makeText(this, "ERROR Stopping Scan - Security Exception", Toast.LENGTH_SHORT); Toast toast = Toast.makeText(this, "ERROR Stopping Scan - Security Exception", Toast.LENGTH_SHORT);
toast.show(); toast.show();
} }
@@ -360,7 +360,7 @@ public class BLEScanActivity extends ListActivity {
try { try {
Log.v(TAG, "addDevice - " + device.getName()); Log.v(TAG, "addDevice - " + device.getName());
} catch (SecurityException e) { } catch (SecurityException e) {
Log.e(TAG,"addDevice() - security exception getting device name"); Log.e(TAG, "addDevice() - security exception getting device name");
} }
mLeDevices.add(device); mLeDevices.add(device);
} }
@@ -425,7 +425,7 @@ public class BLEScanActivity extends ListActivity {
try { try {
Log.v(TAG, "ScanCallback - " + result.getDevice().getName()); Log.v(TAG, "ScanCallback - " + result.getDevice().getName());
} catch (SecurityException e) { } catch (SecurityException e) {
Log.e(TAG,"ScanCallback - security exception getting device name"); Log.e(TAG, "ScanCallback - security exception getting device name");
} }
mLeDeviceListAdapter.addDevice(result.getDevice()); mLeDeviceListAdapter.addDevice(result.getDevice());
mLeDeviceListAdapter.notifyDataSetChanged(); mLeDeviceListAdapter.notifyDataSetChanged();

View File

@@ -46,8 +46,8 @@ public class BootBroadcastReceiver extends BroadcastReceiver {
Log.v(TAG, "onReceive()"); Log.v(TAG, "onReceive()");
SharedPreferences SP = PreferenceManager SharedPreferences SP = PreferenceManager
.getDefaultSharedPreferences(context); .getDefaultSharedPreferences(context);
boolean autoStart = SP.getBoolean("AutoStart",false); boolean autoStart = SP.getBoolean("AutoStart", false);
Log.v(TAG,"onReceive() - autoStart = "+autoStart); Log.v(TAG, "onReceive() - autoStart = " + autoStart);
if (autoStart && Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { if (autoStart && Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
Intent startUpIntent = new Intent(context, StartupActivity.class); Intent startUpIntent = new Intent(context, StartupActivity.class);
startUpIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startUpIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

View File

@@ -35,7 +35,7 @@ public class CircBuf {
/** /**
* Add value val to the circular buffer. * Add value val to the circular buffer.
*/ */
Log.d(TAG,"add() - before: mHead="+mHead+", mTail="+mTail); Log.d(TAG, "add() - before: mHead=" + mHead + ", mTail=" + mTail);
//System.out.println(TAG+" add() - before: mHead="+mHead+", mTail="+mTail); //System.out.println(TAG+" add() - before: mHead="+mHead+", mTail="+mTail);
if (mIsFull) if (mIsFull)
mHead = (mHead + 1) % mBuffLen; mHead = (mHead + 1) % mBuffLen;
@@ -44,7 +44,7 @@ public class CircBuf {
mTail = (mTail + 1) % mBuffLen; mTail = (mTail + 1) % mBuffLen;
if (mTail == mHead) if (mTail == mHead)
mIsFull = true; mIsFull = true;
Log.d(TAG,"add() - after: mHead="+mHead+", mTail="+mTail); Log.d(TAG, "add() - after: mHead=" + mHead + ", mTail=" + mTail);
//System.out.println(TAG+" add() - before: mHead="+mHead+", mTail="+mTail); //System.out.println(TAG+" add() - before: mHead="+mHead+", mTail="+mTail);
} }
@@ -60,7 +60,7 @@ public class CircBuf {
if (mHead > mTail) { if (mHead > mTail) {
numElements = (mTail + mBuffLen) - mHead; numElements = (mTail + mBuffLen) - mHead;
} else { } else {
numElements = mTail-mHead; numElements = mTail - mHead;
} }
} }
return numElements; return numElements;
@@ -68,11 +68,12 @@ public class CircBuf {
/** /**
* Returns a double array of buffer items in order of their insertion time * Returns a double array of buffer items in order of their insertion time
*
* @return double[] of buffer items * @return double[] of buffer items
*/ */
public double[] getVals () { public double[] getVals() {
int numElements = getNumVals(); int numElements = getNumVals();
System.out.println(TAG+" getVals() - numElements=" + numElements); System.out.println(TAG + " getVals() - numElements=" + numElements);
double[] retArr = new double[numElements]; double[] retArr = new double[numElements];
for (int i = 0; i < numElements; i++) { for (int i = 0; i < numElements; i++) {
retArr[i] = mBuff[(mHead + i) % mBuffLen]; retArr[i] = mBuff[(mHead + i) % mBuffLen];
@@ -89,18 +90,18 @@ public class CircBuf {
int hrCount = 0; int hrCount = 0;
double valArr[] = getVals(); double valArr[] = getVals();
double retVal; double retVal;
for (int n=0; n<valArr.length; n++) { for (int n = 0; n < valArr.length; n++) {
if (valArr[n] != mErrVal) { if (valArr[n] != mErrVal) {
hrSum += valArr[n]; hrSum += valArr[n];
hrCount++; hrCount++;
} }
} }
if (hrCount>0) { if (hrCount > 0) {
retVal = hrSum / hrCount; retVal = hrSum / hrCount;
} else { } else {
retVal = -1; retVal = -1;
} }
return(retVal); return (retVal);
} }
} }

View File

@@ -3,7 +3,9 @@ package uk.org.openseizuredetector;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
@@ -205,7 +207,7 @@ public class EditEventActivity extends AppCompatActivity {
int alarmStateVal = Integer.parseInt(alarmStateStr); int alarmStateVal = Integer.parseInt(alarmStateStr);
alarmStateStr = mUtil.alarmStatusToString(alarmStateVal); alarmStateStr = mUtil.alarmStatusToString(alarmStateVal);
} catch (Exception e) { } catch (Exception e) {
Log.v(TAG,"updateUi: alarmState does not parse to int so displaying it as string: " +alarmStateStr); Log.v(TAG, "updateUi: alarmState does not parse to int so displaying it as string: " + alarmStateStr);
} }
tv.setText(alarmStateStr); tv.setText(alarmStateStr);
tv = (TextView) findViewById(R.id.eventNotsTv); tv = (TextView) findViewById(R.id.eventNotsTv);
@@ -219,7 +221,7 @@ public class EditEventActivity extends AppCompatActivity {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
tv.setText(dateFormat.format(dataTime)); tv.setText(dateFormat.format(dataTime));
} catch (Exception e) { } catch (Exception e) {
Log.e(TAG,"updateUI: Error Parsing dataDate "+e.getLocalizedMessage()); Log.e(TAG, "updateUI: Error Parsing dataDate " + e.getLocalizedMessage());
tv.setText("---"); tv.setText("---");
} }
@@ -234,9 +236,9 @@ public class EditEventActivity extends AppCompatActivity {
} }
// Populate the event sub-types radio button list. // Populate the event sub-types radio button list.
Log.v(TAG,"updateUi() - meventsubtypeshashmap="+mEventSubTypesHashMap+", mEventSubtypesListChanged="+mEventSubTypesListChanged); Log.v(TAG, "updateUi() - meventsubtypeshashmap=" + mEventSubTypesHashMap + ", mEventSubtypesListChanged=" + mEventSubTypesListChanged);
if (mEventSubTypesHashMap != null && mEventSubTypesListChanged) { if (mEventSubTypesHashMap != null && mEventSubTypesListChanged) {
Log.v(TAG,"UpdateUi() - populating event sub types list"); Log.v(TAG, "UpdateUi() - populating event sub types list");
if (mEventObj.getString("type") != null) { if (mEventObj.getString("type") != null) {
// based on https://androidexample.com/create-a-simple-listview // based on https://androidexample.com/create-a-simple-listview
ArrayList<String> subtypesArrayList = mEventSubTypesHashMap.get(mEventObj.getString("type")); ArrayList<String> subtypesArrayList = mEventSubTypesHashMap.get(mEventObj.getString("type"));
@@ -265,11 +267,10 @@ public class EditEventActivity extends AppCompatActivity {
} }
} catch (JSONException e) { } catch (JSONException e) {
Log.e(TAG,"Error Parsing mEventObj: "+e.getMessage()); Log.e(TAG, "Error Parsing mEventObj: " + e.getMessage());
} }
} // updateUi() } // updateUi()
View.OnClickListener onCancel = View.OnClickListener onCancel =
@@ -287,14 +288,14 @@ public class EditEventActivity extends AppCompatActivity {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
//m_status=true; //m_status=true;
TextView tv = (TextView)findViewById(R.id.eventNotsTv); TextView tv = (TextView) findViewById(R.id.eventNotsTv);
try { try {
mEventObj.put("desc",tv.getText()); mEventObj.put("desc", tv.getText());
mEventObj.put("id",mEventId); // Add event Id to event object manually because firestore does not include it by default. mEventObj.put("id", mEventId); // Add event Id to event object manually because firestore does not include it by default.
} catch (JSONException e) { } catch (JSONException e) {
Log.e(TAG,"Error writing mEventObj: "+e.getMessage()); Log.e(TAG, "Error writing mEventObj: " + e.getMessage());
} }
Log.v(TAG, "onOK() - eventObj="+mEventObj.toString()); Log.v(TAG, "onOK() - eventObj=" + mEventObj.toString());
try { try {
mWac.updateEvent(mEventObj, new WebApiConnection.JSONObjectCallback() { mWac.updateEvent(mEventObj, new WebApiConnection.JSONObjectCallback() {
@@ -314,7 +315,7 @@ public class EditEventActivity extends AppCompatActivity {
} }
}); });
} catch (Exception e) { } catch (Exception e) {
Log.e(TAG,"onOK() - ERROR: "+e.getMessage()+" : " +e.toString()); Log.e(TAG, "onOK() - ERROR: " + e.getMessage() + " : " + e.toString());
e.printStackTrace(); e.printStackTrace();
mUtil.showToast("Error Updating Event"); mUtil.showToast("Error Updating Event");
updateUi(); updateUi();
@@ -327,16 +328,16 @@ public class EditEventActivity extends AppCompatActivity {
new RadioGroup.OnCheckedChangeListener() { new RadioGroup.OnCheckedChangeListener() {
@Override @Override
public void onCheckedChanged(RadioGroup group, int checkedId) { public void onCheckedChanged(RadioGroup group, int checkedId) {
Log.v(TAG,"onEventTypeChange() - id="+checkedId); Log.v(TAG, "onEventTypeChange() - id=" + checkedId);
RadioButton b = (RadioButton)findViewById(group.getCheckedRadioButtonId()); RadioButton b = (RadioButton) findViewById(group.getCheckedRadioButtonId());
String selectedEventType = b.getText().toString(); String selectedEventType = b.getText().toString();
try { try {
mEventObj.put("type", selectedEventType); mEventObj.put("type", selectedEventType);
} catch (JSONException e) { } catch (JSONException e) {
Log.e(TAG,"Error setting mEventObj.type: "+e.getMessage()); Log.e(TAG, "Error setting mEventObj.type: " + e.getMessage());
} }
mEventSubTypesListChanged = true; mEventSubTypesListChanged = true;
Log.v(TAG,"onEventTypeChange() - mEventSubTypesListChanged="+mEventSubTypesListChanged); Log.v(TAG, "onEventTypeChange() - mEventSubTypesListChanged=" + mEventSubTypesListChanged);
updateUi(); updateUi();
} }
}; };
@@ -344,13 +345,13 @@ public class EditEventActivity extends AppCompatActivity {
new RadioGroup.OnCheckedChangeListener() { new RadioGroup.OnCheckedChangeListener() {
@Override @Override
public void onCheckedChanged(RadioGroup group, int checkedId) { public void onCheckedChanged(RadioGroup group, int checkedId) {
Log.v(TAG,"onEventSubTypeChange() - id="+checkedId); Log.v(TAG, "onEventSubTypeChange() - id=" + checkedId);
RadioButton b = (RadioButton)findViewById(group.getCheckedRadioButtonId()); RadioButton b = (RadioButton) findViewById(group.getCheckedRadioButtonId());
String selectedEventSubType = b.getText().toString(); String selectedEventSubType = b.getText().toString();
try { try {
mEventObj.put("subType", selectedEventSubType); mEventObj.put("subType", selectedEventSubType);
} catch (JSONException e) { } catch (JSONException e) {
Log.e(TAG,"Error setting mEventObj.type: "+e.getMessage()); Log.e(TAG, "Error setting mEventObj.type: " + e.getMessage());
} }
updateUi(); updateUi();
} }

View File

@@ -265,8 +265,8 @@ public class ExportDataActivity extends AppCompatActivity
// Perform operations on the document using its URI. // Perform operations on the document using its URI.
//mUtil.showToast("URI="+uri.toString()); //mUtil.showToast("URI="+uri.toString());
Log.v(TAG, "onActivityResult() - exporting to file " + uri.toString()); Log.v(TAG, "onActivityResult() - exporting to file " + uri.toString());
mLm.exportToCsvFile(mEndDate, mDuration,uri, (boolean b)-> { mLm.exportToCsvFile(mEndDate, mDuration, uri, (boolean b) -> {
Log.v(TAG,"onActivityResult callback"); Log.v(TAG, "onActivityResult callback");
hideProgressBar(); hideProgressBar();
}); });

View File

@@ -9,6 +9,7 @@ import android.widget.TextView;
public class FragmentDataSharing extends FragmentOsdBaseClass { public class FragmentDataSharing extends FragmentOsdBaseClass {
String TAG = "FragmentDataSharing"; String TAG = "FragmentDataSharing";
public FragmentDataSharing() { public FragmentDataSharing() {
// Required empty public constructor // Required empty public constructor
} }
@@ -28,9 +29,9 @@ public class FragmentDataSharing extends FragmentOsdBaseClass {
@Override @Override
protected void updateUi() { protected void updateUi() {
Log.d(TAG,"updateUi()"); Log.d(TAG, "updateUi()");
TextView tv; TextView tv;
tv = (TextView)mRootView.findViewById(R.id.fragment_data_sharing_tv1); tv = (TextView) mRootView.findViewById(R.id.fragment_data_sharing_tv1);
if (mConnection.mBound) { if (mConnection.mBound) {
tv.setText("Bound to Server"); tv.setText("Bound to Server");
} else { } else {

View File

@@ -52,7 +52,7 @@ public class FragmentHrAlg extends FragmentOsdBaseClass {
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
lineDataSet = new LineDataSet(new ArrayList<Entry>(),"Heart rate history" ); lineDataSet = new LineDataSet(new ArrayList<Entry>(), "Heart rate history");
//lineDataSet.setColors(ColorTemplate.JOYFUL_COLORS); //lineDataSet.setColors(ColorTemplate.JOYFUL_COLORS);
lineDataSet.setValueTextColor(Color.BLACK); lineDataSet.setValueTextColor(Color.BLACK);
lineDataSet.setValueTextSize(18f); lineDataSet.setValueTextSize(18f);
@@ -99,6 +99,7 @@ public class FragmentHrAlg extends FragmentOsdBaseClass {
yAxis2.setDrawGridLines(false); yAxis2.setDrawGridLines(false);
yAxis2.setEnabled(false); yAxis2.setEnabled(false);
} }
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
@@ -118,9 +119,9 @@ public class FragmentHrAlg extends FragmentOsdBaseClass {
tvCurrent = mRootView.findViewById(R.id.textView2); tvCurrent = mRootView.findViewById(R.id.textView2);
if (Objects.nonNull(tvCurrent)) { if (Objects.nonNull(tvCurrent)) {
if (Objects.nonNull(tvHr)) if (Objects.nonNull(tvHr))
tvHr.setText( String.valueOf((short)mConnection.mSdServer.mSdData.mHR)); tvHr.setText(String.valueOf((short) mConnection.mSdServer.mSdData.mHR));
if (Objects.nonNull(tvAvgAHr)) if (Objects.nonNull(tvAvgAHr))
tvAvgAHr.setText( String.valueOf((short)mConnection.mSdServer.mSdData tvAvgAHr.setText(String.valueOf((short) mConnection.mSdServer.mSdData
.mAdaptiveHrAverage)); .mAdaptiveHrAverage));
tvCurrent.setText(new StringBuilder() tvCurrent.setText(new StringBuilder()
.append("\nResult of checks: Adaptive Hr Alarm Standing: ") .append("\nResult of checks: Adaptive Hr Alarm Standing: ")
@@ -137,16 +138,16 @@ public class FragmentHrAlg extends FragmentOsdBaseClass {
int nHistArr = hrHist.getNumVals(); int nHistArr = hrHist.getNumVals();
double hrHistArr[] = hrHist.getVals(); // This gives us a simple vector of hr values to plot. double hrHistArr[] = hrHist.getVals(); // This gives us a simple vector of hr values to plot.
if (Objects.nonNull(hrHist) && nHistArr > 0) { if (Objects.nonNull(hrHist) && nHistArr > 0) {
Log.v(TAG, "hrHist.getNumVals="+nHistArr); Log.v(TAG, "hrHist.getNumVals=" + nHistArr);
lineDataSet.clear(); lineDataSet.clear();
String xVals[] = new String[nHistArr]; String xVals[] = new String[nHistArr];
for (int i = 0; i<nHistArr; i++) { for (int i = 0; i < nHistArr; i++) {
//Log.d(TAG,"i="+i+", HR="+hrHistArr[i]); //Log.d(TAG,"i="+i+", HR="+hrHistArr[i]);
xVals[i] = String.valueOf(i); xVals[i] = String.valueOf(i);
lineDataSet.addEntry(new Entry((float)hrHistArr[i], i)); lineDataSet.addEntry(new Entry((float) hrHistArr[i], i));
} }
Log.d(TAG,"xVals="+ Arrays.toString(xVals)+ ", lneDataSet="+lineDataSet.toSimpleString()); Log.d(TAG, "xVals=" + Arrays.toString(xVals) + ", lneDataSet=" + lineDataSet.toSimpleString());
lineDataSet.setColors(new int[] {0xffff0000}); lineDataSet.setColors(new int[]{0xffff0000});
LineData hrHistLineData = new LineData(xVals, lineDataSet); LineData hrHistLineData = new LineData(xVals, lineDataSet);
@@ -154,7 +155,7 @@ public class FragmentHrAlg extends FragmentOsdBaseClass {
mLineChart.getData().notifyDataChanged(); mLineChart.getData().notifyDataChanged();
mLineChart.notifyDataSetChanged(); mLineChart.notifyDataSetChanged();
mLineChart.refreshDrawableState(); mLineChart.refreshDrawableState();
float xSpan = (nHistArr * 5.0f)/60.0f; // time in minutes assuming one point every 5 seconds. float xSpan = (nHistArr * 5.0f) / 60.0f; // time in minutes assuming one point every 5 seconds.
mLineChart.setDescription(getString(R.string.heart_rate_history_bpm) mLineChart.setDescription(getString(R.string.heart_rate_history_bpm)
+ String.format("%.1f", xSpan) + String.format("%.1f", xSpan)
+ " " + getString(R.string.minutes)); + " " + getString(R.string.minutes));

View File

@@ -9,6 +9,7 @@ import android.widget.TextView;
public class FragmentMlAlg extends FragmentOsdBaseClass { public class FragmentMlAlg extends FragmentOsdBaseClass {
String TAG = "FragmentMlAlg"; String TAG = "FragmentMlAlg";
public FragmentMlAlg() { public FragmentMlAlg() {
// Required empty public constructor // Required empty public constructor
} }
@@ -28,9 +29,9 @@ public class FragmentMlAlg extends FragmentOsdBaseClass {
@Override @Override
protected void updateUi() { protected void updateUi() {
Log.d(TAG,"updateUi()"); Log.d(TAG, "updateUi()");
TextView tv; TextView tv;
tv = (TextView)mRootView.findViewById(R.id.fragment_ml_alg_tv1); tv = (TextView) mRootView.findViewById(R.id.fragment_ml_alg_tv1);
if (mConnection.mBound) { if (mConnection.mBound) {
tv.setText("Bound to Server"); tv.setText("Bound to Server");
} else { } else {

View File

@@ -23,6 +23,7 @@ import java.util.ArrayList;
public class FragmentOsdAlg extends FragmentOsdBaseClass { public class FragmentOsdAlg extends FragmentOsdBaseClass {
String TAG = "FragmentOsdAlg"; String TAG = "FragmentOsdAlg";
public FragmentOsdAlg() { public FragmentOsdAlg() {
// Required empty public constructor // Required empty public constructor
} }
@@ -71,7 +72,7 @@ public class FragmentOsdAlg extends FragmentOsdBaseClass {
} else } else
specRatio = 0; specRatio = 0;
((TextView)mRootView.findViewById(R.id.powerTv)).setText(getString(R.string.PowerEquals) + mConnection.mSdServer.mSdData.roiPower + ((TextView) mRootView.findViewById(R.id.powerTv)).setText(getString(R.string.PowerEquals) + mConnection.mSdServer.mSdData.roiPower +
" (" + getString(R.string.Threshold) + "=" + mConnection.mSdServer.mSdData.alarmThresh + ")"); " (" + getString(R.string.Threshold) + "=" + mConnection.mSdServer.mSdData.alarmThresh + ")");
ProgressBar pb; ProgressBar pb;
@@ -86,7 +87,7 @@ public class FragmentOsdAlg extends FragmentOsdBaseClass {
pbDrawable = mRootView.getResources().getDrawable(R.drawable.progress_bar_red); pbDrawable = mRootView.getResources().getDrawable(R.drawable.progress_bar_red);
pb.setProgressDrawable(pbDrawable); pb.setProgressDrawable(pbDrawable);
((TextView)mRootView.findViewById(R.id.spectrumTv)).setText(getString(R.string.SpectrumRatioEquals) + specRatio + ((TextView) mRootView.findViewById(R.id.spectrumTv)).setText(getString(R.string.SpectrumRatioEquals) + specRatio +
" (" + getString(R.string.Threshold) + "=" + mConnection.mSdServer.mSdData.alarmRatioThresh + ")"); " (" + getString(R.string.Threshold) + "=" + mConnection.mSdServer.mSdData.alarmRatioThresh + ")");
pb = ((ProgressBar) mRootView.findViewById(R.id.spectrumProgressBar)); pb = ((ProgressBar) mRootView.findViewById(R.id.spectrumProgressBar));

View File

@@ -34,7 +34,6 @@ public class FragmentOsdBaseClass extends Fragment {
protected int alarmTextColour = Color.BLACK; protected int alarmTextColour = Color.BLACK;
public FragmentOsdBaseClass() { public FragmentOsdBaseClass() {
// Required empty public constructor // Required empty public constructor
} }
@@ -44,7 +43,7 @@ public class FragmentOsdBaseClass extends Fragment {
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
Log.i(TAG,"onCreate()"); Log.i(TAG, "onCreate()");
mContext = getContext(); mContext = getContext();
mUtil = new OsdUtil(mContext, updateUiHandler); mUtil = new OsdUtil(mContext, updateUiHandler);
mConnection = new SdServiceConnection(mContext); mConnection = new SdServiceConnection(mContext);
@@ -109,7 +108,7 @@ public class FragmentOsdBaseClass extends Fragment {
* update the user interface views... * update the user interface views...
*/ */
private void updateUiOnUiThread() { private void updateUiOnUiThread() {
updateUiHandler.post(new Runnable(){ updateUiHandler.post(new Runnable() {
@Override @Override
public void run() { public void run() {
updateUi(); updateUi();
@@ -121,9 +120,9 @@ public class FragmentOsdBaseClass extends Fragment {
* The subclasses should override this to draw their own UI. * The subclasses should override this to draw their own UI.
*/ */
protected void updateUi() { protected void updateUi() {
Log.d(TAG,"updateUi()"); Log.d(TAG, "updateUi()");
TextView tv; TextView tv;
tv = (TextView)mRootView.findViewById(R.id.fragment_sddata_viewer_tv1); tv = (TextView) mRootView.findViewById(R.id.fragment_sddata_viewer_tv1);
if (mConnection.mBound) { if (mConnection.mBound) {
tv.setText("Bound to Server"); tv.setText("Bound to Server");
} else { } else {

View File

@@ -13,6 +13,7 @@ import androidx.appcompat.widget.LinearLayoutCompat;
public class FragmentSystem extends FragmentOsdBaseClass { public class FragmentSystem extends FragmentOsdBaseClass {
String TAG = "FragmentSystem"; String TAG = "FragmentSystem";
public FragmentSystem() { public FragmentSystem() {
// Required empty public constructor // Required empty public constructor
} }
@@ -51,13 +52,12 @@ public class FragmentSystem extends FragmentOsdBaseClass {
} }
@Override @Override
protected void updateUi() { protected void updateUi() {
//Log.d(TAG,"updateUi()"); //Log.d(TAG,"updateUi()");
TextView tv; TextView tv;
tv = (TextView)mRootView.findViewById(R.id.fragment_bound_to_server_tv); tv = (TextView) mRootView.findViewById(R.id.fragment_bound_to_server_tv);
if (mConnection.mBound) { if (mConnection.mBound) {
tv.setText("Bound to Server"); tv.setText("Bound to Server");
tv.setTextColor(okTextColour); tv.setTextColor(okTextColour);
@@ -66,7 +66,7 @@ public class FragmentSystem extends FragmentOsdBaseClass {
tv.setTextColor(warnTextColour); tv.setTextColor(warnTextColour);
return; return;
} }
LinearLayoutCompat ll = (LinearLayoutCompat)mRootView.findViewById(R.id.fragment_ll); LinearLayoutCompat ll = (LinearLayoutCompat) mRootView.findViewById(R.id.fragment_ll);
if (mUtil.isServerRunning()) { if (mUtil.isServerRunning()) {
ll.setBackgroundColor(okColour); ll.setBackgroundColor(okColour);

View File

@@ -9,6 +9,7 @@ import android.widget.TextView;
public class FragmentWebServer extends FragmentOsdBaseClass { public class FragmentWebServer extends FragmentOsdBaseClass {
String TAG = "FragmentWebServer"; String TAG = "FragmentWebServer";
public FragmentWebServer() { public FragmentWebServer() {
// Required empty public constructor // Required empty public constructor
} }
@@ -28,9 +29,9 @@ public class FragmentWebServer extends FragmentOsdBaseClass {
@Override @Override
protected void updateUi() { protected void updateUi() {
Log.d(TAG,"updateUi()"); Log.d(TAG, "updateUi()");
TextView tv; TextView tv;
tv = (TextView)mRootView.findViewById(R.id.fragment_web_server_tv1); tv = (TextView) mRootView.findViewById(R.id.fragment_web_server_tv1);
if (mConnection.mBound) { if (mConnection.mBound) {
tv.setText("Bound to Server"); tv.setText("Bound to Server");
} else { } else {

View File

@@ -1,5 +1,6 @@
package uk.org.openseizuredetector; package uk.org.openseizuredetector;
// Defines the servies and characteristics we need to subscribe to. // Defines the servies and characteristics we need to subscribe to.
import java.util.HashMap; import java.util.HashMap;
public class GattAttributes { public class GattAttributes {

View File

@@ -2,6 +2,7 @@ package uk.org.openseizuredetector;
/** /**
*
*/ */
import android.content.Context; import android.content.Context;
@@ -21,8 +22,7 @@ interface SdLocationReceiver {
} }
public class LocationFinder implements LocationListener public class LocationFinder implements LocationListener {
{
SdLocationReceiver mSdLocationReceiver = null; SdLocationReceiver mSdLocationReceiver = null;
Location mLastLocation = null; Location mLastLocation = null;
OsdUtil mUtil; OsdUtil mUtil;
@@ -33,7 +33,7 @@ public class LocationFinder implements LocationListener
LocationListener mLocationListener; LocationListener mLocationListener;
int mTimeoutPeriod = 60; // Location search timeout period in seconds. int mTimeoutPeriod = 60; // Location search timeout period in seconds.
String TAG="LocationFinder"; String TAG = "LocationFinder";
LocationFinder(Context context) { LocationFinder(Context context) {
mHandler = new Handler(); mHandler = new Handler();
@@ -56,7 +56,6 @@ public class LocationFinder implements LocationListener
} }
public Location getLastLocation() { public Location getLastLocation() {
return mLastLocation; return mLastLocation;
} }
@@ -82,7 +81,7 @@ public class LocationFinder implements LocationListener
mTimeoutTimer.schedule(new TimerTask() { mTimeoutTimer.schedule(new TimerTask() {
@Override @Override
public void run() { public void run() {
Log.v(TAG,"mTimeOutTimer expired - returning last location"); Log.v(TAG, "mTimeOutTimer expired - returning last location");
//mUtil.showToast("mTimeOutTimer expired - returning last location"); //mUtil.showToast("mTimeOutTimer expired - returning last location");
mLocationManager.removeUpdates(mLocationListener); mLocationManager.removeUpdates(mLocationListener);
mSdLocationReceiver.onSdLocationReceived(mLastLocation); mSdLocationReceiver.onSdLocationReceived(mLastLocation);
@@ -93,7 +92,7 @@ public class LocationFinder implements LocationListener
@Override @Override
public void onLocationChanged(Location location) { public void onLocationChanged(Location location) {
Log.v(TAG,"onLocationChanged - "+location.toString()); Log.v(TAG, "onLocationChanged - " + location.toString());
// if we do not have a last location, this is the best we have! // if we do not have a last location, this is the best we have!
if (mLastLocation == null) { if (mLastLocation == null) {

View File

@@ -510,8 +510,6 @@ public class LogManager {
} }
/** /**
* Return an array list of objects representing the events in the database by calling the specified callback function. * Return an array list of objects representing the events in the database by calling the specified callback function.
* *
@@ -807,7 +805,7 @@ public class LogManager {
ExportDataTask(Date endDate, double duration, Uri uri, BooleanCallback callback) { ExportDataTask(Date endDate, double duration, Uri uri, BooleanCallback callback) {
Log.i(TAG,"ExportDataTask constructor()"); Log.i(TAG, "ExportDataTask constructor()");
this.mCallback = callback; this.mCallback = callback;
mEndDate = endDate; mEndDate = endDate;
mDuration = duration; mDuration = duration;
@@ -882,7 +880,7 @@ public class LogManager {
@Override @Override
protected void onPostExecute(final Boolean result) { protected void onPostExecute(final Boolean result) {
Log.i(TAG,"ExportDataTask.onPostExecute() - notifying callback function of result: "+result); Log.i(TAG, "ExportDataTask.onPostExecute() - notifying callback function of result: " + result);
mCallback.accept(result); mCallback.accept(result);
} }
@@ -923,12 +921,12 @@ public class LogManager {
} catch (IOException e) { } catch (IOException e) {
Log.e(TAG, "exportToFile() - ERROR Writing File: " + e.toString()); Log.e(TAG, "exportToFile() - ERROR Writing File: " + e.toString());
mUtil.showToast("ERROR WRITING FILE"); mUtil.showToast("ERROR WRITING FILE");
return(-1); return (-1);
} }
} }
Log.d(TAG, "writeDatapointsToFile() - data written to file ok"); Log.d(TAG, "writeDatapointsToFile() - data written to file ok");
mUtil.showToast(mContext.getString(R.string.data_exported_ok)+ " "+nRec); mUtil.showToast(mContext.getString(R.string.data_exported_ok) + " " + nRec);
return nRec; return nRec;
} catch (JSONException | NullPointerException e) { } catch (JSONException | NullPointerException e) {
@@ -936,7 +934,7 @@ public class LogManager {
dataObj = null; dataObj = null;
mUtil.showToast(mContext.getString(R.string.error_exporting_data)); mUtil.showToast(mContext.getString(R.string.error_exporting_data));
Log.e(TAG, "exportToFile() - JSONException: " + e.toString()); Log.e(TAG, "exportToFile() - JSONException: " + e.toString());
return(-1); return (-1);
} }
} }

View File

@@ -652,16 +652,16 @@ public class MainActivity extends AppCompatActivity {
//if (mConnection.mSdServer.mSdData.mHRAlarmActive) { //if (mConnection.mSdServer.mSdData.mHRAlarmActive) {
if (mConnection.mSdServer.mSdData.mO2Sat > 0) { if (mConnection.mSdServer.mSdData.mO2Sat > 0) {
tv.setText(getString(R.string.HR_Equals) + " " + Math.round(mConnection.mSdServer.mSdData.mHR) + " bpm\n" tv.setText(getString(R.string.HR_Equals) + " " + Math.round(mConnection.mSdServer.mSdData.mHR) + " bpm\n"
+"(av = " + "(av = "
+Math.round(mConnection.mSdServer.mSdData.mAdaptiveHrAverage)+", " + Math.round(mConnection.mSdServer.mSdData.mAdaptiveHrAverage) + ", "
+Math.round(mConnection.mSdServer.mSdData.mAverageHrAverage)+" bpm)\n" + Math.round(mConnection.mSdServer.mSdData.mAverageHrAverage) + " bpm)\n"
+ getString(R.string.SpO2)+" = " + Math.round(mConnection.mSdServer.mSdData.mO2Sat) + "%"); + getString(R.string.SpO2) + " = " + Math.round(mConnection.mSdServer.mSdData.mO2Sat) + "%");
} else { } else {
tv.setText(getString(R.string.HR_Equals) + " " + Math.round(mConnection.mSdServer.mSdData.mHR) + " bpm\n" tv.setText(getString(R.string.HR_Equals) + " " + Math.round(mConnection.mSdServer.mSdData.mHR) + " bpm\n"
+"(av = " + "(av = "
+Math.round(mConnection.mSdServer.mSdData.mAdaptiveHrAverage)+", " + Math.round(mConnection.mSdServer.mSdData.mAdaptiveHrAverage) + ", "
+Math.round(mConnection.mSdServer.mSdData.mAverageHrAverage)+" bpm)\n" + Math.round(mConnection.mSdServer.mSdData.mAverageHrAverage) + " bpm)\n"
+ getString(R.string.SpO2)+" = ---%"); + getString(R.string.SpO2) + " = ---%");
} }
if (mConnection.mSdServer.mSdData.mHRAlarmStanding if (mConnection.mSdServer.mSdData.mHRAlarmStanding
|| mConnection.mSdServer.mSdData.mAdaptiveHrAlarmStanding || mConnection.mSdServer.mSdData.mAdaptiveHrAlarmStanding
@@ -821,7 +821,7 @@ public class MainActivity extends AppCompatActivity {
" (" + getString(R.string.Threshold) + "=" + mConnection.mSdServer.mSdData.alarmThresh + ")"); " (" + getString(R.string.Threshold) + "=" + mConnection.mSdServer.mSdData.alarmThresh + ")");
((TextView) findViewById(R.id.spectrumTv)).setText(getString(R.string.SpectrumRatioEquals) + specRatio + ((TextView) findViewById(R.id.spectrumTv)).setText(getString(R.string.SpectrumRatioEquals) + specRatio +
" (" + getString(R.string.Threshold) + "=" + mConnection.mSdServer.mSdData.alarmRatioThresh + ")"); " (" + getString(R.string.Threshold) + "=" + mConnection.mSdServer.mSdData.alarmRatioThresh + ")");
((TextView) findViewById(R.id.pSeizureTv)).setText(getString(R.string.seizure_probability)+" = " + pSeizurePc + "%"); ((TextView) findViewById(R.id.pSeizureTv)).setText(getString(R.string.seizure_probability) + " = " + pSeizurePc + "%");
ProgressBar pb; ProgressBar pb;
Drawable pbDrawable; Drawable pbDrawable;

View File

@@ -45,6 +45,7 @@ public class MainActivity2 extends AppCompatActivity {
private OsdUtil mUtil; private OsdUtil mUtil;
private SdServiceConnection mConnection; private SdServiceConnection mConnection;
final Handler serverStatusHandler = new Handler(); final Handler serverStatusHandler = new Handler();
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@@ -127,8 +128,6 @@ public class MainActivity2 extends AppCompatActivity {
} }
@Override @Override
protected void onPause() { protected void onPause() {
super.onPause(); super.onPause();
@@ -151,7 +150,6 @@ public class MainActivity2 extends AppCompatActivity {
} }
@Override @Override
public void onBackPressed() { public void onBackPressed() {
if (Objects.isNull(mFragmentPager) || mFragmentPager.getCurrentItem() == 0) { if (Objects.isNull(mFragmentPager) || mFragmentPager.getCurrentItem() == 0) {
@@ -278,21 +276,20 @@ public class MainActivity2 extends AppCompatActivity {
} }
/** /**
* A simple pager adapter that represents 5 ScreenSlidePageFragment objects, in * A simple pager adapter that represents 5 ScreenSlidePageFragment objects, in
* sequence. * sequence.
*/ */
private class ScreenSlideFragmentPagerAdapter extends FragmentStateAdapter { private class ScreenSlideFragmentPagerAdapter extends FragmentStateAdapter {
private String TAG = "ScreenSlideFragmentPagerAdapter"; private String TAG = "ScreenSlideFragmentPagerAdapter";
public ScreenSlideFragmentPagerAdapter(FragmentActivity fa) { public ScreenSlideFragmentPagerAdapter(FragmentActivity fa) {
super(fa); super(fa);
} }
@Override @Override
public Fragment createFragment(int position) { public Fragment createFragment(int position) {
switch(position) { switch (position) {
case 0: case 0:
return new FragmentOsdAlg(); return new FragmentOsdAlg();
case 1: case 1:
@@ -305,7 +302,7 @@ public class MainActivity2 extends AppCompatActivity {
return new FragmentDataSharing(); return new FragmentDataSharing();
default: default:
Log.e(TAG,"createFragment() - invalid Position "+position); Log.e(TAG, "createFragment() - invalid Position " + position);
return null; return null;
} }
} }
@@ -329,7 +326,6 @@ public class MainActivity2 extends AppCompatActivity {
} }
private void showAbout() { private void showAbout() {
mUtil.writeToSysLogFile("MainActivity.showAbout()"); mUtil.writeToSysLogFile("MainActivity.showAbout()");
View aboutView = getLayoutInflater().inflate(R.layout.about_layout, null, false); View aboutView = getLayoutInflater().inflate(R.layout.about_layout, null, false);

View File

@@ -43,7 +43,7 @@ public class MlModelManager {
public MlModelManager(Context context) { public MlModelManager(Context context) {
Log.i(TAG,"MlModelManager Constructor"); Log.i(TAG, "MlModelManager Constructor");
mContext = context; mContext = context;
mUtil = new OsdUtil(mContext, new Handler()); mUtil = new OsdUtil(mContext, new Handler());
mQueue = Volley.newRequestQueue(mContext); mQueue = Volley.newRequestQueue(mContext);
@@ -55,7 +55,6 @@ public class MlModelManager {
} }
/** /**
* Retrieve the file containing the list of available ML models from the server. * Retrieve the file containing the list of available ML models from the server.
* Calls the specified callback function, passing a JSONObject as a parameter when the data has been received and parsed. * Calls the specified callback function, passing a JSONObject as a parameter when the data has been received and parsed.

View File

@@ -160,8 +160,8 @@ public class OsdUncaughtExceptionHandler implements Thread.UncaughtExceptionHand
}); });
builder.setMessage("Please report the " + builder.setMessage("Please report the " +
"problem by email using the button below so we can fix it.\n" + "problem by email using the button below so we can fix it.\n" +
"You can review the information being sent in the next screen:"+ "You can review the information being sent in the next screen:" +
"\n"+errorContent.toString()); "\n" + errorContent.toString());
Dialog dialog = builder.create(); Dialog dialog = builder.create();
//dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); //dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
dialog.show(); dialog.show();

View File

@@ -325,13 +325,13 @@ public class OsdUtil {
* *
* @param msgStr * @param msgStr
*/ */
public void writeToSysLogFile(String msgStr,String logType) { public void writeToSysLogFile(String msgStr, String logType) {
writeLogEntryToLocalDb(msgStr,logType); writeLogEntryToLocalDb(msgStr, logType);
}
public void writeToSysLogFile(String msgStr) {
writeLogEntryToLocalDb(msgStr,"v");
} }
public void writeToSysLogFile(String msgStr) {
writeLogEntryToLocalDb(msgStr, "v");
}
/** /**
@@ -403,12 +403,11 @@ public class OsdUtil {
public File[] getDataFilesList() { public File[] getDataFilesList() {
File[] files = getDataStorageDir().listFiles(); File[] files = getDataStorageDir().listFiles();
Log.d("Files", "Size: "+ files.length); Log.d("Files", "Size: " + files.length);
for (int i = 0; i < files.length; i++) for (int i = 0; i < files.length; i++) {
{
Log.d("Files", "FileName:" + files[i].getName()); Log.d("Files", "FileName:" + files[i].getName());
} }
return(files); return (files);
} }
/* Checks if external storage is available for read and write */ /* Checks if external storage is available for read and write */
@@ -459,6 +458,7 @@ public class OsdUtil {
* It first attempts to parse it as a long integer, in which case it is assumed to * It first attempts to parse it as a long integer, in which case it is assumed to
* be a unix timestamp. * be a unix timestamp.
* If that fails it attempts to parse it as yyyy-MM-dd'T'HH:mm:ss'Z' format. * If that fails it attempts to parse it as yyyy-MM-dd'T'HH:mm:ss'Z' format.
*
* @param dateStr String reprenting a date * @param dateStr String reprenting a date
* @return Date object or null if parsing fails. * @return Date object or null if parsing fails.
*/ */
@@ -468,7 +468,7 @@ public class OsdUtil {
Long tstamp = Long.parseLong(dateStr); Long tstamp = Long.parseLong(dateStr);
dataTime = new Date(tstamp); dataTime = new Date(tstamp);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
Log.v(TAG, "remoteEventsAdapter.getView: Error Parsing dataDate as Long: " + e.getLocalizedMessage()+" trying as string"); Log.v(TAG, "remoteEventsAdapter.getView: Error Parsing dataDate as Long: " + e.getLocalizedMessage() + " trying as string");
try { try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
dataTime = dateFormat.parse(dateStr); dataTime = dateFormat.parse(dateStr);
@@ -477,7 +477,7 @@ public class OsdUtil {
dataTime = null; dataTime = null;
} }
} }
return(dataTime); return (dataTime);
} }
@@ -503,20 +503,20 @@ public class OsdUtil {
break; break;
} }
return(retVal); return (retVal);
} }
private static boolean openDb() { private static boolean openDb() {
Log.d(TAG, "openDb"); Log.d(TAG, "openDb");
try { try {
if (mSysLogDb == null) { if (mSysLogDb == null) {
Log.i(TAG,"openDb: mSysLogDb is null - initialising"); Log.i(TAG, "openDb: mSysLogDb is null - initialising");
mSysLogDb = new OsdSysLogHelper(mContext).getWritableDatabase(); mSysLogDb = new OsdSysLogHelper(mContext).getWritableDatabase();
} else { } else {
Log.i(TAG,"openDb: mSysLogDb has been initialised already so not doing anything"); Log.i(TAG, "openDb: mSysLogDb has been initialised already so not doing anything");
} }
if (!checkTableExists(mSysLogDb, mSysLogTableName)) { if (!checkTableExists(mSysLogDb, mSysLogTableName)) {
Log.e(TAG, "ERROR - Table "+mSysLogTableName+" does not exist"); Log.e(TAG, "ERROR - Table " + mSysLogTableName + " does not exist");
return false; return false;
} else { } else {
Log.d(TAG, "table " + mSysLogTableName + " exists ok"); Log.d(TAG, "table " + mSysLogTableName + " exists ok");
@@ -565,7 +565,7 @@ public class OsdUtil {
+ 0 + 0
+ ")"; + ")";
mSysLogDb.execSQL(SQLStr); mSysLogDb.execSQL(SQLStr);
Log.v(TAG, "syslog entry written to database: "+logText); Log.v(TAG, "syslog entry written to database: " + logText);
pruneSysLogDb(); pruneSysLogDb();
} catch (SQLException e) { } catch (SQLException e) {
@@ -612,7 +612,6 @@ public class OsdUtil {
/** /**
* Executes the sqlite query (=SELECT statement) * Executes the sqlite query (=SELECT statement)
* Use as new SelectQueryTask(xxx,xxx,xx,xxxx).execute() * Use as new SelectQueryTask(xxx,xxx,xx,xxxx).execute()
*
*/ */
static private class SelectQueryTask extends AsyncTask<Void, Void, Cursor> { static private class SelectQueryTask extends AsyncTask<Void, Void, Cursor> {
// Based on https://stackoverflow.com/a/21120199/2104584 // Based on https://stackoverflow.com/a/21120199/2104584
@@ -669,7 +668,6 @@ public class OsdUtil {
} }
/** /**
* pruneSysLogDb() removes data that is older than 7 days * pruneSysLogDb() removes data that is older than 7 days
*/ */
@@ -728,13 +726,13 @@ public class OsdUtil {
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// This database is only a cache for online data, so its upgrade policy is // This database is only a cache for online data, so its upgrade policy is
// to simply to discard the data and start over // to simply to discard the data and start over
Log.i(TAG,"onUpgrade()"); Log.i(TAG, "onUpgrade()");
db.execSQL("Drop table if exists " + mSysLogTableName + ";"); db.execSQL("Drop table if exists " + mSysLogTableName + ";");
onCreate(db); onCreate(db);
} }
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.i(TAG,"onDowngrade()"); Log.i(TAG, "onDowngrade()");
onUpgrade(db, oldVersion, newVersion); onUpgrade(db, oldVersion, newVersion);
} }
} }

View File

@@ -152,7 +152,7 @@ public class PrefActivity extends PreferenceActivity implements SharedPreference
Intent i; Intent i;
i = new Intent(this, StartupActivity.class); i = new Intent(this, StartupActivity.class);
startActivity(i); startActivity(i);
Log.i(TAG,"onSharedPreferenceChanged() - finishing PrefActivity"); Log.i(TAG, "onSharedPreferenceChanged() - finishing PrefActivity");
finish(); finish();
return; return;
} else { } else {
@@ -218,7 +218,7 @@ public class PrefActivity extends PreferenceActivity implements SharedPreference
protected void onStop() { protected void onStop() {
super.onStop(); super.onStop();
mUtil.writeToSysLogFile("PrefActvity.onStop()"); mUtil.writeToSysLogFile("PrefActvity.onStop()");
Log.i(TAG,"onStop()"); Log.i(TAG, "onStop()");
} }
/** /**

View File

@@ -9,7 +9,9 @@ import android.os.Bundle;
import android.os.CountDownTimer; import android.os.CountDownTimer;
import android.os.Handler; import android.os.Handler;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.webkit.WebSettings; import android.webkit.WebSettings;
@@ -114,7 +116,7 @@ public class RemoteDbActivity extends AppCompatActivity {
private HashMap<String, String> getAuthHeaders() { private HashMap<String, String> getAuthHeaders() {
HashMap<String, String> headersMap = new HashMap<>(); HashMap<String, String> headersMap = new HashMap<>();
String authToken = getAuthToken(); String authToken = getAuthToken();
headersMap.put("Authorization", "Token "+authToken); headersMap.put("Authorization", "Token " + authToken);
return (headersMap); return (headersMap);
} }
@@ -125,7 +127,7 @@ public class RemoteDbActivity extends AppCompatActivity {
} }
private void updateUi() { private void updateUi() {
Log.v(TAG,"updateUi()"); Log.v(TAG, "updateUi()");
TextView tv; TextView tv;
Button btn; Button btn;
// Local Database Information // Local Database Information
@@ -137,10 +139,9 @@ public class RemoteDbActivity extends AppCompatActivity {
//tv.setText(String.format("%d",datapointsCount)); //tv.setText(String.format("%d",datapointsCount));
// Remote Database Information // Remote Database Information
tv = (TextView)findViewById(R.id.authStatusTv); tv = (TextView) findViewById(R.id.authStatusTv);
btn = (Button)findViewById(R.id.auth_button); btn = (Button) findViewById(R.id.auth_button);
if (mLm != null) { if (mLm != null) {
if (mLm.mWac.isLoggedIn()) { if (mLm.mWac.isLoggedIn()) {
tv.setText("Authenticated"); tv.setText("Authenticated");
@@ -158,7 +159,7 @@ public class RemoteDbActivity extends AppCompatActivity {
public void onClick(View view) { public void onClick(View view) {
Log.v(TAG, "onAuth"); Log.v(TAG, "onAuth");
Intent i; Intent i;
i =new Intent(mContext, AuthenticateActivity.class); i = new Intent(mContext, AuthenticateActivity.class);
startActivity(i); startActivity(i);
} }
}; };

View File

@@ -209,24 +209,23 @@ public class ReportSeizureActivity extends AppCompatActivity {
} }
private void updateUi() { private void updateUi() {
//Log.v(TAG,"updateUi()"); //Log.v(TAG,"updateUi()");
TextView tv; TextView tv;
Button btn; Button btn;
RadioButton b; RadioButton b;
tv = (TextView)findViewById(R.id.date_day_tv); tv = (TextView) findViewById(R.id.date_day_tv);
tv.setText(String.format("%02d",mDay)); tv.setText(String.format("%02d", mDay));
tv = (TextView)findViewById(R.id.date_mon_tv); tv = (TextView) findViewById(R.id.date_mon_tv);
tv.setText(String.format("%02d",mMonth+1)); // Month counted from zero tv.setText(String.format("%02d", mMonth + 1)); // Month counted from zero
tv = (TextView)findViewById(R.id.date_year_tv); tv = (TextView) findViewById(R.id.date_year_tv);
tv.setText(String.format("%04d",mYear)); tv.setText(String.format("%04d", mYear));
tv = (TextView)findViewById(R.id.time_hh_tv); tv = (TextView) findViewById(R.id.time_hh_tv);
tv.setText(String.format("%02d",mHour)); tv.setText(String.format("%02d", mHour));
tv = (TextView)findViewById(R.id.time_mm_tv); tv = (TextView) findViewById(R.id.time_mm_tv);
tv.setText(String.format("%02d",mMinute)); tv.setText(String.format("%02d", mMinute));
tv = (TextView)findViewById(R.id.msg_tv); tv = (TextView) findViewById(R.id.msg_tv);
tv.setText(mMsg); tv.setText(mMsg);
// Populate event type button group if necessary // Populate event type button group if necessary
@@ -250,12 +249,12 @@ public class ReportSeizureActivity extends AppCompatActivity {
if (b != null) { if (b != null) {
seizureTypeStr = b.getText().toString(); seizureTypeStr = b.getText().toString();
} }
Log.i(TAG,"updateUi - SeizureType="+seizureTypeStr); Log.i(TAG, "updateUi - SeizureType=" + seizureTypeStr);
// Populate the event sub-types radio button list. // Populate the event sub-types radio button list.
Log.v(TAG,"updateUi() - meventsubtypeshashmap="+mEventSubTypesHashMap+", mEventSubtypesListChanged="+mEventSubTypesListChanged); Log.v(TAG, "updateUi() - meventsubtypeshashmap=" + mEventSubTypesHashMap + ", mEventSubtypesListChanged=" + mEventSubTypesListChanged);
if (mEventSubTypesHashMap != null && mRedrawEventSubTypesList) { if (mEventSubTypesHashMap != null && mRedrawEventSubTypesList) {
Log.v(TAG,"UpdateUi() - populating event sub types list"); Log.v(TAG, "UpdateUi() - populating event sub types list");
if (seizureTypeStr != null) { if (seizureTypeStr != null) {
// based on https://androidexample.com/create-a-simple-listview // based on https://androidexample.com/create-a-simple-listview
ArrayList<String> subtypesArrayList = mEventSubTypesHashMap.get(seizureTypeStr); ArrayList<String> subtypesArrayList = mEventSubTypesHashMap.get(seizureTypeStr);
@@ -281,8 +280,8 @@ public class ReportSeizureActivity extends AppCompatActivity {
String notesStr = null; String notesStr = null;
Log.v(TAG, "onOk"); Log.v(TAG, "onOk");
//SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr=String.format("%4d-%02d-%02d %02d:%02d:30",mYear,mMonth+1,mDay, mHour, mMinute); String dateStr = String.format("%4d-%02d-%02d %02d:%02d:30", mYear, mMonth + 1, mDay, mHour, mMinute);
Log.v(TAG, "onOk() - dateSTr="+dateStr); Log.v(TAG, "onOk() - dateSTr=" + dateStr);
// Read seizure type from radio buttons // Read seizure type from radio buttons
int checkedRadioButtonId = mEventTypeRg.getCheckedRadioButtonId(); int checkedRadioButtonId = mEventTypeRg.getCheckedRadioButtonId();
@@ -290,19 +289,19 @@ public class ReportSeizureActivity extends AppCompatActivity {
if (b != null) { if (b != null) {
seizureTypeStr = b.getText().toString(); seizureTypeStr = b.getText().toString();
} }
Log.i(TAG,"onOk() - SeizureType="+seizureTypeStr); Log.i(TAG, "onOk() - SeizureType=" + seizureTypeStr);
checkedRadioButtonId = mEventSubTypeRg.getCheckedRadioButtonId(); checkedRadioButtonId = mEventSubTypeRg.getCheckedRadioButtonId();
b = (RadioButton) findViewById(checkedRadioButtonId); b = (RadioButton) findViewById(checkedRadioButtonId);
if (b != null) { if (b != null) {
seizureSubTypeStr = b.getText().toString(); seizureSubTypeStr = b.getText().toString();
} }
Log.i(TAG,"onOk() - SeizureSubType="+seizureSubTypeStr); Log.i(TAG, "onOk() - SeizureSubType=" + seizureSubTypeStr);
TextView tv = (TextView)findViewById(R.id.eventNotesTv); TextView tv = (TextView) findViewById(R.id.eventNotesTv);
notesStr = tv.getText().toString(); notesStr = tv.getText().toString();
mLm.createLocalEvent(dateStr,5,seizureTypeStr, seizureSubTypeStr, notesStr, mLm.createLocalEvent(dateStr, 5, seizureTypeStr, seizureSubTypeStr, notesStr,
mConnection.mSdServer.mSdData.toSettingsJSON()); mConnection.mSdServer.mSdData.toSettingsJSON());
mUtil.showToast("Seizure Event Created"); mUtil.showToast("Seizure Event Created");
finish(); finish();

View File

@@ -36,7 +36,7 @@ public class SdAlgHr {
mAdaptiveHrBuff = new CircBuf(mAdaptiveHrAlarmWindowDp, -1.0); mAdaptiveHrBuff = new CircBuf(mAdaptiveHrAlarmWindowDp, -1.0);
mAverageHrBuff = new CircBuf(mAverageHrAlarmWindowDp, -1.0); mAverageHrBuff = new CircBuf(mAverageHrAlarmWindowDp, -1.0);
// FIXME - this is a hard coded 3 hour period (at 5 second intervals) // FIXME - this is a hard coded 3 hour period (at 5 second intervals)
mHrHist = new CircBuf((int)(3 * 3600 / 5), -1); mHrHist = new CircBuf((int) (3 * 3600 / 5), -1);
} }
public void close() { public void close() {
@@ -72,34 +72,33 @@ public class SdAlgHr {
mSimpleHrAlarmActive = SP.getBoolean("HRAlarmActive", false); mSimpleHrAlarmActive = SP.getBoolean("HRAlarmActive", false);
mSimpleHrAlarmThreshMin = readDoublePref(SP, "HRThreshMin", "20"); mSimpleHrAlarmThreshMin = readDoublePref(SP, "HRThreshMin", "20");
mSimpleHrAlarmThreshMax = readDoublePref(SP, "HRThreshMax", "150"); mSimpleHrAlarmThreshMax = readDoublePref(SP, "HRThreshMax", "150");
Log.d(TAG,"updatePrefs(): mSimpleHrAlarmActive="+mSimpleHrAlarmActive); Log.d(TAG, "updatePrefs(): mSimpleHrAlarmActive=" + mSimpleHrAlarmActive);
Log.d(TAG,"updatePrefs(): mSimpleHrAlarmThreshMin="+mSimpleHrAlarmThreshMin); Log.d(TAG, "updatePrefs(): mSimpleHrAlarmThreshMin=" + mSimpleHrAlarmThreshMin);
Log.d(TAG,"updatePrefs(): mSimpleHrAlarmThreshMax="+mSimpleHrAlarmThreshMax); Log.d(TAG, "updatePrefs(): mSimpleHrAlarmThreshMax=" + mSimpleHrAlarmThreshMax);
mAdaptiveHrAlarmActive = SP.getBoolean("HRAdaptiveAlarmActive", false); mAdaptiveHrAlarmActive = SP.getBoolean("HRAdaptiveAlarmActive", false);
mAdaptiveHrAlarmWindowSecs = readDoublePref(SP, "HRAdaptiveAlarmWindowSecs", "30"); mAdaptiveHrAlarmWindowSecs = readDoublePref(SP, "HRAdaptiveAlarmWindowSecs", "30");
mAdaptiveHrAlarmWindowDp = (int)Math.round(mAdaptiveHrAlarmWindowSecs/5.0); mAdaptiveHrAlarmWindowDp = (int) Math.round(mAdaptiveHrAlarmWindowSecs / 5.0);
mAdaptiveHrAlarmThresh = readDoublePref(SP, "HRAdaptiveAlarmThresh", "20"); mAdaptiveHrAlarmThresh = readDoublePref(SP, "HRAdaptiveAlarmThresh", "20");
Log.d(TAG,"updatePrefs(): mAdaptiveHrAlarmActive="+mAdaptiveHrAlarmActive); Log.d(TAG, "updatePrefs(): mAdaptiveHrAlarmActive=" + mAdaptiveHrAlarmActive);
Log.d(TAG,"updatePrefs(): mAdaptiveHrWindowSecs="+mAdaptiveHrAlarmWindowSecs); Log.d(TAG, "updatePrefs(): mAdaptiveHrWindowSecs=" + mAdaptiveHrAlarmWindowSecs);
Log.d(TAG,"updatePrefs(): mAdaptiveHrWindowDp="+mAdaptiveHrAlarmWindowDp); Log.d(TAG, "updatePrefs(): mAdaptiveHrWindowDp=" + mAdaptiveHrAlarmWindowDp);
Log.d(TAG,"updatePrefs(): mAdaptiveHrAlarmThresh="+mAdaptiveHrAlarmThresh); Log.d(TAG, "updatePrefs(): mAdaptiveHrAlarmThresh=" + mAdaptiveHrAlarmThresh);
mAverageHrAlarmActive = SP.getBoolean("HRAverageAlarmActive", false); mAverageHrAlarmActive = SP.getBoolean("HRAverageAlarmActive", false);
mAverageHrAlarmWindowSecs = readDoublePref(SP, "HRAverageAlarmWindowSecs", "120"); mAverageHrAlarmWindowSecs = readDoublePref(SP, "HRAverageAlarmWindowSecs", "120");
mAverageHrAlarmWindowDp = (int)Math.round(mAverageHrAlarmWindowSecs/5.0); mAverageHrAlarmWindowDp = (int) Math.round(mAverageHrAlarmWindowSecs / 5.0);
mAverageHrAlarmThreshMin = readDoublePref(SP, "HRAverageAlarmThreshMin", "40"); mAverageHrAlarmThreshMin = readDoublePref(SP, "HRAverageAlarmThreshMin", "40");
mAverageHrAlarmThreshMax = readDoublePref(SP, "HRAverageAlarmThreshMax", "120"); mAverageHrAlarmThreshMax = readDoublePref(SP, "HRAverageAlarmThreshMax", "120");
Log.d(TAG,"updatePrefs(): mAverageHrAlarmActive="+mAverageHrAlarmActive); Log.d(TAG, "updatePrefs(): mAverageHrAlarmActive=" + mAverageHrAlarmActive);
Log.d(TAG,"updatePrefs(): mAverageHrAlarmWindowSecs="+mAverageHrAlarmWindowSecs); Log.d(TAG, "updatePrefs(): mAverageHrAlarmWindowSecs=" + mAverageHrAlarmWindowSecs);
Log.d(TAG,"updatePrefs(): mAverageHrAlarmWindowDp="+mAverageHrAlarmWindowDp); Log.d(TAG, "updatePrefs(): mAverageHrAlarmWindowDp=" + mAverageHrAlarmWindowDp);
Log.d(TAG,"updatePrefs(): mAverageHrAlarmThreshMin="+mAverageHrAlarmThreshMin); Log.d(TAG, "updatePrefs(): mAverageHrAlarmThreshMin=" + mAverageHrAlarmThreshMin);
Log.d(TAG,"updatePrefs(): mAverageHrAlarmThreshMax="+mAverageHrAlarmThreshMax); Log.d(TAG, "updatePrefs(): mAverageHrAlarmThreshMax=" + mAverageHrAlarmThreshMax);
} }
private boolean checkSimpleHr(double hrVal) { private boolean checkSimpleHr(double hrVal) {
/** /**
* Check heart rate value against simple thresholds * Check heart rate value against simple thresholds
@@ -107,15 +106,16 @@ public class SdAlgHr {
boolean retVal = false; boolean retVal = false;
if (mSimpleHrAlarmActive) { if (mSimpleHrAlarmActive) {
if ((hrVal > mSimpleHrAlarmThreshMax) if ((hrVal > mSimpleHrAlarmThreshMax)
|| (hrVal <mSimpleHrAlarmThreshMin)) { || (hrVal < mSimpleHrAlarmThreshMin)) {
retVal = true; retVal = true;
} }
} }
return(retVal); return (retVal);
} }
/** /**
* Returns the average heart rate being used by the Adaptive heart rate algorithm * Returns the average heart rate being used by the Adaptive heart rate algorithm
*
* @return Average Heart reate in bpm. * @return Average Heart reate in bpm.
*/ */
public double getAdaptiveHrAverage() { public double getAdaptiveHrAverage() {
@@ -130,10 +130,13 @@ public class SdAlgHr {
return mAdaptiveHrBuff; return mAdaptiveHrBuff;
} }
public CircBuf getHrHistBuff() { return mHrHist; } public CircBuf getHrHistBuff() {
return mHrHist;
}
/** /**
* Returns the average heart rate being used by the Average heart rate algorithm * Returns the average heart rate being used by the Average heart rate algorithm
*
* @return Average Heart rate in bpm. * @return Average Heart rate in bpm.
*/ */
public double getAverageHrAverage() { public double getAverageHrAverage() {
@@ -156,9 +159,9 @@ public class SdAlgHr {
if (hrVal > hrThreshMax) { if (hrVal > hrThreshMax) {
retVal = true; retVal = true;
} }
Log.d(TAG, "checkAdaptiveHr() - hrVal="+hrVal+", avHr="+avHr+", thresholds=("+hrThreshMin+", "+hrThreshMax+"): Alarm="+retVal); Log.d(TAG, "checkAdaptiveHr() - hrVal=" + hrVal + ", avHr=" + avHr + ", thresholds=(" + hrThreshMin + ", " + hrThreshMax + "): Alarm=" + retVal);
return(retVal); return (retVal);
} }
private boolean checkAverageHr(double hrVal) { private boolean checkAverageHr(double hrVal) {
@@ -172,12 +175,11 @@ public class SdAlgHr {
if (avHr > mAverageHrAlarmThreshMax) { if (avHr > mAverageHrAlarmThreshMax) {
retVal = true; retVal = true;
} }
Log.d(TAG, "checkAverageHr() - hrVal="+hrVal+", avHr="+avHr+", thresholds=("+mAverageHrAlarmThreshMin+", "+mAverageHrAlarmThreshMin+"): Alarm="+retVal); Log.d(TAG, "checkAverageHr() - hrVal=" + hrVal + ", avHr=" + avHr + ", thresholds=(" + mAverageHrAlarmThreshMin + ", " + mAverageHrAlarmThreshMin + "): Alarm=" + retVal);
return(retVal); return (retVal);
} }
public ArrayList<Boolean> checkHr(double hrVal) { public ArrayList<Boolean> checkHr(double hrVal) {
/** /**
* Checks the current Heart Rate reading hrVal against the * Checks the current Heart Rate reading hrVal against the
@@ -185,7 +187,7 @@ public class SdAlgHr {
* and returns an ArrayList of the alarm status of each algorithm in the above order. * and returns an ArrayList of the alarm status of each algorithm in the above order.
* true=ALARM, false=OK. * true=ALARM, false=OK.
*/ */
Log.v(TAG, "checkHr("+hrVal+")"); Log.v(TAG, "checkHr(" + hrVal + ")");
mAdaptiveHrBuff.add(hrVal); mAdaptiveHrBuff.add(hrVal);
mAverageHrBuff.add(hrVal); mAverageHrBuff.add(hrVal);
mHrHist.add(hrVal); mHrHist.add(hrVal);
@@ -193,7 +195,7 @@ public class SdAlgHr {
retVal.add(checkSimpleHr(hrVal)); retVal.add(checkSimpleHr(hrVal));
retVal.add(checkAdaptiveHr(hrVal)); retVal.add(checkAdaptiveHr(hrVal));
retVal.add(checkAverageHr(hrVal)); retVal.add(checkAverageHr(hrVal));
return(retVal); return (retVal);
} }
} }

View File

@@ -99,6 +99,7 @@ public class SdAlgNn {
* getPseizureFmt1 - calculate probability of sdData representing seizure-like movement * getPseizureFmt1 - calculate probability of sdData representing seizure-like movement
* using a model with input format #1, which is a simple vector of 125 accelerometer vector * using a model with input format #1, which is a simple vector of 125 accelerometer vector
* magnitude readings. * magnitude readings.
*
* @param sdData - seizure detector data as input to the model * @param sdData - seizure detector data as input to the model
* @return probability of data representing seizure-like movement. * @return probability of data representing seizure-like movement.
*/ */
@@ -125,7 +126,7 @@ public class SdAlgNn {
double stdDev; double stdDev;
stdDev = calcRawDataStd(sdData); stdDev = calcRawDataStd(sdData);
if (stdDev < mSdThresh) { if (stdDev < mSdThresh) {
Log.d(TAG, "getPseizure - acceleration stdev below movement threshold: std="+stdDev+", thresh="+mSdThresh); Log.d(TAG, "getPseizure - acceleration stdev below movement threshold: std=" + stdDev + ", thresh=" + mSdThresh);
return (0); return (0);
} }
@@ -135,11 +136,11 @@ public class SdAlgNn {
pSeizure = getPseizureFmt1(sdData); pSeizure = getPseizureFmt1(sdData);
break; break;
default: default:
Log.e(TAG,"getPSeizure - invalid model ID "+mModelId); Log.e(TAG, "getPSeizure - invalid model ID " + mModelId);
pSeizure = 0; pSeizure = 0;
} }
return(pSeizure); return (pSeizure);
} }
private double calcRawDataStd(SdData sdData) { private double calcRawDataStd(SdData sdData) {

View File

@@ -182,7 +182,7 @@ public class SdData implements Parcelable {
try { try {
mO2Sat = jo.optDouble("o2Sat"); mO2Sat = jo.optDouble("o2Sat");
} catch (Exception e) { } catch (Exception e) {
Log.w(TAG,"Error parsing o2Sat value"); Log.w(TAG, "Error parsing o2Sat value");
mO2Sat = -1; mO2Sat = -1;
} }
haveData = true; haveData = true;
@@ -249,7 +249,7 @@ public class SdData implements Parcelable {
jsonObj.put("rawData3D", raw3DArr); jsonObj.put("rawData3D", raw3DArr);
retval = jsonObj.toString(); retval = jsonObj.toString();
Log.v(TAG,"retval rawData="+retval); Log.v(TAG, "retval rawData=" + retval);
} catch (Exception ex) { } catch (Exception ex) {
Log.v(TAG, "Error Creating Data Object - " + ex.toString()); Log.v(TAG, "Error Creating Data Object - " + ex.toString());
retval = "Error Creating Data Object - " + ex.toString(); retval = "Error Creating Data Object - " + ex.toString();
@@ -302,7 +302,7 @@ public class SdData implements Parcelable {
jsonObj.put("o2SatAlarmStanding", mO2SatAlarmStanding); jsonObj.put("o2SatAlarmStanding", mO2SatAlarmStanding);
jsonObj.put("o2SatThreshMin", mO2SatThreshMin); jsonObj.put("o2SatThreshMin", mO2SatThreshMin);
jsonObj.put("dataSourceName", dataSourceName); jsonObj.put("dataSourceName", dataSourceName);
Log.v(TAG,"phoneAppVersion="+phoneAppVersion); Log.v(TAG, "phoneAppVersion=" + phoneAppVersion);
jsonObj.put("phoneAppVersion", phoneAppVersion); jsonObj.put("phoneAppVersion", phoneAppVersion);
jsonObj.put("watchPartNo", watchPartNo); jsonObj.put("watchPartNo", watchPartNo);
jsonObj.put("watchSdName", watchSdName); jsonObj.put("watchSdName", watchSdName);

View File

@@ -154,7 +154,6 @@ public abstract class SdDataSource {
} }
// Start timer to check status of watch regularly. // Start timer to check status of watch regularly.
mDataStatusTime = new Time(Time.getCurrentTimezone()); mDataStatusTime = new Time(Time.getCurrentTimezone());
// use a timer to check the status of the pebble app on the same frequency // use a timer to check the status of the pebble app on the same frequency
@@ -342,7 +341,7 @@ public abstract class SdDataSource {
} }
} catch (JSONException e) { } catch (JSONException e) {
// If we get an error, just set rawData3D to zero // If we get an error, just set rawData3D to zero
Log.i(TAG,"updateFromJSON - error parsing 3D data - setting it to zero"); Log.i(TAG, "updateFromJSON - error parsing 3D data - setting it to zero");
for (i = 0; i < mSdData.rawData3D.length; i++) { for (i = 0; i < mSdData.rawData3D.length; i++) {
mSdData.rawData3D[i] = 0.; mSdData.rawData3D[i] = 0.;
} }
@@ -449,7 +448,7 @@ public abstract class SdDataSource {
mSampleFreq = 25; mSampleFreq = 25;
double freqRes = 1.0 * mSampleFreq / mSdData.mNsamp; double freqRes = 1.0 * mSampleFreq / mSdData.mNsamp;
Log.v(TAG, "doAnalysis(): mSampleFreq=" + mSampleFreq + " mNSamp=" + mSdData.mNsamp + ": freqRes=" + freqRes); Log.v(TAG, "doAnalysis(): mSampleFreq=" + mSampleFreq + " mNSamp=" + mSdData.mNsamp + ": freqRes=" + freqRes);
Log.v(TAG,"doAnalysis(): rawData=" + Arrays.toString(mSdData.rawData)); Log.v(TAG, "doAnalysis(): rawData=" + Arrays.toString(mSdData.rawData));
// Set the frequency bounds for the analysis in fft output bin numbers. // Set the frequency bounds for the analysis in fft output bin numbers.
nMin = (int) (mAlarmFreqMin / freqRes); nMin = (int) (mAlarmFreqMin / freqRes);
nMax = (int) (mAlarmFreqMax / freqRes); nMax = (int) (mAlarmFreqMax / freqRes);
@@ -526,11 +525,11 @@ public abstract class SdDataSource {
Log.e(TAG, "doAnalysis - Exception during Analysis"); Log.e(TAG, "doAnalysis - Exception during Analysis");
mUtil.writeToSysLogFile("doAnalysis - Exception during analysis - " + e.toString()); mUtil.writeToSysLogFile("doAnalysis - Exception during analysis - " + e.toString());
mUtil.writeToSysLogFile("doAnalysis: Exception at Line Number: " + e.getCause().getStackTrace()[0].getLineNumber() + ", " + e.getCause().getStackTrace()[0].toString()); mUtil.writeToSysLogFile("doAnalysis: Exception at Line Number: " + e.getCause().getStackTrace()[0].getLineNumber() + ", " + e.getCause().getStackTrace()[0].toString());
mUtil.writeToSysLogFile("doAnalysis: mSdData.mNsamp="+mSdData.mNsamp); mUtil.writeToSysLogFile("doAnalysis: mSdData.mNsamp=" + mSdData.mNsamp);
mUtil.writeToSysLogFile("doAnalysis: alarmFreqMin="+mAlarmFreqMin+" nMin="+nMin); mUtil.writeToSysLogFile("doAnalysis: alarmFreqMin=" + mAlarmFreqMin + " nMin=" + nMin);
mUtil.writeToSysLogFile("doAnalysis: alarmFreqMax="+mAlarmFreqMax+" nMax="+nMax); mUtil.writeToSysLogFile("doAnalysis: alarmFreqMax=" + mAlarmFreqMax + " nMax=" + nMax);
mUtil.writeToSysLogFile("doAnalysis: nFreqCutoff.="+nFreqCutoff); mUtil.writeToSysLogFile("doAnalysis: nFreqCutoff.=" + nFreqCutoff);
mUtil.writeToSysLogFile("doAnalysis: fft.length="+fft.length); mUtil.writeToSysLogFile("doAnalysis: fft.length=" + fft.length);
mWatchAppRunningCheck = false; mWatchAppRunningCheck = false;
} }
@@ -547,7 +546,7 @@ public abstract class SdDataSource {
o2SatCheck(); o2SatCheck();
fallCheck(); fallCheck();
muteCheck(); muteCheck();
Log.v(TAG,"after fallCheck, mSdData.fallAlarmStanding="+mSdData.fallAlarmStanding); Log.v(TAG, "after fallCheck, mSdData.fallAlarmStanding=" + mSdData.fallAlarmStanding);
mSdDataReceiver.onSdDataReceived(mSdData); // and tell SdServer we have received data. mSdDataReceiver.onSdDataReceived(mSdData); // and tell SdServer we have received data.
} }
@@ -564,20 +563,20 @@ public abstract class SdDataSource {
// Avoid potential divide by zero issue // Avoid potential divide by zero issue
if (mSdData.specPower == 0) if (mSdData.specPower == 0)
mSdData.specPower = 1; mSdData.specPower = 1;
Log.v(TAG, "alarmCheck() - roiPower="+mSdData.roiPower+" specPower="+ mSdData.specPower+" ratio="+10*mSdData.roiPower/ mSdData.specPower); Log.v(TAG, "alarmCheck() - roiPower=" + mSdData.roiPower + " specPower=" + mSdData.specPower + " ratio=" + 10 * mSdData.roiPower / mSdData.specPower);
if (mSdData.mOsdAlarmActive) { if (mSdData.mOsdAlarmActive) {
// Is the current set of data representing an alarm state? // Is the current set of data representing an alarm state?
if ((mSdData.roiPower > mAlarmThresh) && ((10 * mSdData.roiPower / mSdData.specPower) > mAlarmRatioThresh)) { if ((mSdData.roiPower > mAlarmThresh) && ((10 * mSdData.roiPower / mSdData.specPower) > mAlarmRatioThresh)) {
inAlarm = true; inAlarm = true;
mSdData.alarmCause = mSdData.alarmCause+"OsdAlg "; mSdData.alarmCause = mSdData.alarmCause + "OsdAlg ";
} }
} }
if (mSdData.mCnnAlarmActive) { if (mSdData.mCnnAlarmActive) {
if (mSdData.mPseizure > 0.5) { if (mSdData.mPseizure > 0.5) {
inAlarm = true; inAlarm = true;
mSdData.alarmCause = mSdData.alarmCause+"CnnAlg "; mSdData.alarmCause = mSdData.alarmCause + "CnnAlg ";
} }
} }
@@ -646,7 +645,7 @@ public abstract class SdDataSource {
mSdData.mHRAlarmStanding = true; mSdData.mHRAlarmStanding = true;
mSdData.mAdaptiveHrAlarmStanding = false; mSdData.mAdaptiveHrAlarmStanding = false;
mSdData.mAverageHrAlarmStanding = false; mSdData.mAverageHrAlarmStanding = false;
mSdData.alarmCause = mSdData.alarmCause+"HrNull "; mSdData.alarmCause = mSdData.alarmCause + "HrNull ";
} else { } else {
Log.i(TAG, "Heart Rate Fault (HR<0)"); Log.i(TAG, "Heart Rate Fault (HR<0)");
@@ -659,13 +658,13 @@ public abstract class SdDataSource {
mSdData.mHRFaultStanding = false; mSdData.mHRFaultStanding = false;
mSdData.mHRAlarmStanding = checkResults.get(0); mSdData.mHRAlarmStanding = checkResults.get(0);
if (mSdData.mHRAlarmStanding) if (mSdData.mHRAlarmStanding)
mSdData.alarmCause = mSdData.alarmCause+"HR "; mSdData.alarmCause = mSdData.alarmCause + "HR ";
mSdData.mAdaptiveHrAlarmStanding = checkResults.get(1); mSdData.mAdaptiveHrAlarmStanding = checkResults.get(1);
if (mSdData.mAdaptiveHrAlarmStanding) if (mSdData.mAdaptiveHrAlarmStanding)
mSdData.alarmCause = mSdData.alarmCause+"HR_ADAPT "; mSdData.alarmCause = mSdData.alarmCause + "HR_ADAPT ";
mSdData.mAverageHrAlarmStanding = checkResults.get(2); mSdData.mAverageHrAlarmStanding = checkResults.get(2);
if (mSdData.mAverageHrAlarmStanding) if (mSdData.mAverageHrAlarmStanding)
mSdData.alarmCause = mSdData.alarmCause+"HR_AVG "; mSdData.alarmCause = mSdData.alarmCause + "HR_AVG ";
// Show an ALARM state if any of the HR alarms is standing. // Show an ALARM state if any of the HR alarms is standing.
if (mSdData.mHRAlarmStanding | mSdData.mAdaptiveHrAlarmStanding | mSdData.mAverageHrAlarmStanding) { if (mSdData.mHRAlarmStanding | mSdData.mAdaptiveHrAlarmStanding | mSdData.mAverageHrAlarmStanding) {
mSdData.alarmState = 2; mSdData.alarmState = 2;
@@ -693,7 +692,7 @@ public abstract class SdDataSource {
Log.i(TAG, "Oxygen Saturation Null - Alarming"); Log.i(TAG, "Oxygen Saturation Null - Alarming");
mSdData.mO2SatFaultStanding = false; mSdData.mO2SatFaultStanding = false;
mSdData.mO2SatAlarmStanding = true; mSdData.mO2SatAlarmStanding = true;
mSdData.alarmCause = mSdData.alarmCause+"O2_NULL "; mSdData.alarmCause = mSdData.alarmCause + "O2_NULL ";
} else { } else {
Log.i(TAG, "Oxygen Saturation Fault (O2Sat<0)"); Log.i(TAG, "Oxygen Saturation Fault (O2Sat<0)");
mSdData.mO2SatFaultStanding = true; mSdData.mO2SatFaultStanding = true;
@@ -703,7 +702,7 @@ public abstract class SdDataSource {
Log.i(TAG, "Oxygen Saturation Abnormal - " + mSdData.mO2Sat + " %"); Log.i(TAG, "Oxygen Saturation Abnormal - " + mSdData.mO2Sat + " %");
mSdData.mO2SatFaultStanding = false; mSdData.mO2SatFaultStanding = false;
mSdData.mO2SatAlarmStanding = true; mSdData.mO2SatAlarmStanding = true;
mSdData.alarmCause = mSdData.alarmCause+"O2SAT "; mSdData.alarmCause = mSdData.alarmCause + "O2SAT ";
} else { } else {
mSdData.mO2SatFaultStanding = false; mSdData.mO2SatFaultStanding = false;
mSdData.mO2SatAlarmStanding = false; mSdData.mO2SatAlarmStanding = false;
@@ -740,12 +739,12 @@ public abstract class SdDataSource {
if (mSdData.rawData[i + j] < minAcc) minAcc = mSdData.rawData[i + j]; if (mSdData.rawData[i + j] < minAcc) minAcc = mSdData.rawData[i + j];
if (mSdData.rawData[i + j] > maxAcc) maxAcc = mSdData.rawData[i + j]; if (mSdData.rawData[i + j] > maxAcc) maxAcc = mSdData.rawData[i + j];
} }
Log.d(TAG, "check_fall() - minAcc=" + minAcc +" (mFallThreshMin="+mFallThreshMin+ "), maxAcc=" + maxAcc+" (mFallThreshMax="+mFallThreshMax+")") ; Log.d(TAG, "check_fall() - minAcc=" + minAcc + " (mFallThreshMin=" + mFallThreshMin + "), maxAcc=" + maxAcc + " (mFallThreshMax=" + mFallThreshMax + ")");
if ((minAcc < mFallThreshMin) && (maxAcc > mFallThreshMax)) { if ((minAcc < mFallThreshMin) && (maxAcc > mFallThreshMax)) {
Log.d(TAG, "check_fall() ****FALL DETECTED***** minAcc=" + minAcc + ", maxAcc=" + maxAcc); Log.d(TAG, "check_fall() ****FALL DETECTED***** minAcc=" + minAcc + ", maxAcc=" + maxAcc);
Log.d(TAG, "check_fall() - ****FALL DETECTED****"); Log.d(TAG, "check_fall() - ****FALL DETECTED****");
mSdData.fallAlarmStanding = true; mSdData.fallAlarmStanding = true;
mSdData.alarmCause = mSdData.alarmCause+"FALL "; mSdData.alarmCause = mSdData.alarmCause + "FALL ";
return; return;
} }
if (mMute != 0) { if (mMute != 0) {
@@ -825,13 +824,14 @@ public abstract class SdDataSource {
// Check we have seen a fidget within the required period, or else assume a fault because watch is not being worn // Check we have seen a fidget within the required period, or else assume a fault because watch is not being worn
if (mFidgetDetectorEnabled) { if (mFidgetDetectorEnabled) {
if (mLastFidget == null) mLastFidget = tnow; // Initialise last fidget time on startup. if (mLastFidget == null)
mLastFidget = tnow; // Initialise last fidget time on startup.
double accStd = calcRawDataStd(mSdData); double accStd = calcRawDataStd(mSdData);
if (accStd > mFidgetThreshold) { if (accStd > mFidgetThreshold) {
mLastFidget = tnow; mLastFidget = tnow;
} else { } else {
Log.d(TAG,"onStatus() - Fidget Detector - low movement - is watch being worn?"); Log.d(TAG, "onStatus() - Fidget Detector - low movement - is watch being worn?");
tdiff = (tnow.toMillis(false) - mLastFidget.toMillis(false)); tdiff = (tnow.toMillis(false) - mLastFidget.toMillis(false));
if (tdiff > (mFidgetPeriod) * 60 * 1000) { if (tdiff > (mFidgetPeriod) * 60 * 1000) {
Log.e(TAG, "onStatus() - Fidget Not Detected - is watch being worn?"); Log.e(TAG, "onStatus() - Fidget Not Detected - is watch being worn?");
@@ -878,7 +878,7 @@ public abstract class SdDataSource {
mSdData.mHrFrozenFaultStanding = false; mSdData.mHrFrozenFaultStanding = false;
} else { } else {
tdiff = (tnow.toMillis(false) - mHrStatusTime.toMillis(false)); tdiff = (tnow.toMillis(false) - mHrStatusTime.toMillis(false));
if (tdiff > mHrFrozenPeriod *1000.) { if (tdiff > mHrFrozenPeriod * 1000.) {
mSdData.mHrFrozenFaultStanding = true; mSdData.mHrFrozenFaultStanding = true;
} else { } else {
mSdData.mHrFrozenFaultStanding = false; mSdData.mHrFrozenFaultStanding = false;
@@ -889,7 +889,7 @@ public abstract class SdDataSource {
void nnAnalysis() { void nnAnalysis() {
//Check the current set of data using the neural network model to look for alarms. //Check the current set of data using the neural network model to look for alarms.
Log.d(TAG,"nnAnalysis"); Log.d(TAG, "nnAnalysis");
if (mSdData.mCnnAlarmActive) { if (mSdData.mCnnAlarmActive) {
float pSeizure = mSdAlgNn.getPseizure(mSdData); float pSeizure = mSdAlgNn.getPseizure(mSdData);
Log.d(TAG, "nnAnalysis - nnResult=" + pSeizure); Log.d(TAG, "nnAnalysis - nnResult=" + pSeizure);
@@ -937,10 +937,10 @@ public abstract class SdDataSource {
String appRestartTimeoutStr = SP.getString("AppRestartTimeout", "10"); String appRestartTimeoutStr = SP.getString("AppRestartTimeout", "10");
mAppRestartTimeout = Integer.parseInt(appRestartTimeoutStr); mAppRestartTimeout = Integer.parseInt(appRestartTimeoutStr);
Log.v(TAG, "updatePrefs() - mAppRestartTimeout = " + mAppRestartTimeout); Log.v(TAG, "updatePrefs() - mAppRestartTimeout = " + mAppRestartTimeout);
mUtil.writeToSysLogFile( "updatePrefs() - mAppRestartTimeout = " + mAppRestartTimeout); mUtil.writeToSysLogFile("updatePrefs() - mAppRestartTimeout = " + mAppRestartTimeout);
} catch (Exception ex) { } catch (Exception ex) {
Log.v(TAG, "updatePrefs() - Problem with AppRestartTimeout preference!"); Log.v(TAG, "updatePrefs() - Problem with AppRestartTimeout preference!");
mUtil.writeToSysLogFile( "updatePrefs() - Problem with AppRestartTimeout preference!"); mUtil.writeToSysLogFile("updatePrefs() - Problem with AppRestartTimeout preference!");
Toast toast = Toast.makeText(mContext, "Problem Parsing AppRestartTimeout Preference", Toast.LENGTH_SHORT); Toast toast = Toast.makeText(mContext, "Problem Parsing AppRestartTimeout Preference", Toast.LENGTH_SHORT);
toast.show(); toast.show();
} }
@@ -950,10 +950,10 @@ public abstract class SdDataSource {
String faultTimerPeriodStr = SP.getString("FaultTimerPeriod", "30"); String faultTimerPeriodStr = SP.getString("FaultTimerPeriod", "30");
mFaultTimerPeriod = Integer.parseInt(faultTimerPeriodStr); mFaultTimerPeriod = Integer.parseInt(faultTimerPeriodStr);
Log.v(TAG, "updatePrefs() - mFaultTimerPeriod = " + mFaultTimerPeriod); Log.v(TAG, "updatePrefs() - mFaultTimerPeriod = " + mFaultTimerPeriod);
mUtil.writeToSysLogFile( "updatePrefs() - mFaultTimerPeriod = " + mFaultTimerPeriod); mUtil.writeToSysLogFile("updatePrefs() - mFaultTimerPeriod = " + mFaultTimerPeriod);
} catch (Exception ex) { } catch (Exception ex) {
Log.v(TAG, "updatePrefs() - Problem with FaultTimerPeriod preference!"); Log.v(TAG, "updatePrefs() - Problem with FaultTimerPeriod preference!");
mUtil.writeToSysLogFile( "updatePrefs() - Problem with FaultTimerPeriod preference!"); mUtil.writeToSysLogFile("updatePrefs() - Problem with FaultTimerPeriod preference!");
Toast toast = Toast.makeText(mContext, "Problem Parsing FaultTimerPeriod Preference", Toast.LENGTH_SHORT); Toast toast = Toast.makeText(mContext, "Problem Parsing FaultTimerPeriod Preference", Toast.LENGTH_SHORT);
toast.show(); toast.show();
} }
@@ -964,7 +964,7 @@ public abstract class SdDataSource {
mFidgetPeriod = readDoublePref(SP, "FidgetDetectorPeriod", "20"); // minutes mFidgetPeriod = readDoublePref(SP, "FidgetDetectorPeriod", "20"); // minutes
Log.v(TAG, "updatePrefs() - mFidgetPeriod = " + mFidgetPeriod); Log.v(TAG, "updatePrefs() - mFidgetPeriod = " + mFidgetPeriod);
mFidgetThreshold = readDoublePref(SP, "FidgetDetectorThreshold", "0.6 "); mFidgetThreshold = readDoublePref(SP, "FidgetDetectorThreshold", "0.6 ");
Log.d(TAG,"updatePrefs(): mFidgetThreshold="+mFidgetThreshold); Log.d(TAG, "updatePrefs(): mFidgetThreshold=" + mFidgetThreshold);
} catch (Exception ex) { } catch (Exception ex) {
Log.v(TAG, "updatePrefs() - Problem with FidgetDetector preferences!"); Log.v(TAG, "updatePrefs() - Problem with FidgetDetector preferences!");
@@ -978,57 +978,57 @@ public abstract class SdDataSource {
prefStr = SP.getString("BLE_Device_Addr", "SET_FROM_XML"); prefStr = SP.getString("BLE_Device_Addr", "SET_FROM_XML");
mBleDeviceAddr = prefStr; mBleDeviceAddr = prefStr;
Log.v(TAG, "mBLEDeviceAddr=" + mBleDeviceAddr); Log.v(TAG, "mBLEDeviceAddr=" + mBleDeviceAddr);
mUtil.writeToSysLogFile( "mBLEDeviceAddr=" + mBleDeviceAddr); mUtil.writeToSysLogFile("mBLEDeviceAddr=" + mBleDeviceAddr);
prefStr = SP.getString("BLE_Device_Name", "SET_FROM_XML"); prefStr = SP.getString("BLE_Device_Name", "SET_FROM_XML");
mBleDeviceName = prefStr; mBleDeviceName = prefStr;
Log.v(TAG, "mBLEDeviceName=" + mBleDeviceName); Log.v(TAG, "mBLEDeviceName=" + mBleDeviceName);
mUtil.writeToSysLogFile( "mBLEDeviceName=" + mBleDeviceName); mUtil.writeToSysLogFile("mBLEDeviceName=" + mBleDeviceName);
prefStr = SP.getString("PebbleDebug", "SET_FROM_XML"); prefStr = SP.getString("PebbleDebug", "SET_FROM_XML");
if (prefStr != null) { if (prefStr != null) {
mDebug = (short) Integer.parseInt(prefStr); mDebug = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() Debug = " + mDebug); Log.v(TAG, "updatePrefs() Debug = " + mDebug);
mUtil.writeToSysLogFile( "updatePrefs() Debug = " + mDebug); mUtil.writeToSysLogFile("updatePrefs() Debug = " + mDebug);
prefStr = SP.getString("PebbleDisplaySpectrum", "SET_FROM_XML"); prefStr = SP.getString("PebbleDisplaySpectrum", "SET_FROM_XML");
mDisplaySpectrum = (short) Integer.parseInt(prefStr); mDisplaySpectrum = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() DisplaySpectrum = " + mDisplaySpectrum); Log.v(TAG, "updatePrefs() DisplaySpectrum = " + mDisplaySpectrum);
mUtil.writeToSysLogFile( "updatePrefs() DisplaySpectrum = " + mDisplaySpectrum); mUtil.writeToSysLogFile("updatePrefs() DisplaySpectrum = " + mDisplaySpectrum);
prefStr = SP.getString("PebbleUpdatePeriod", "SET_FROM_XML"); 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);
mUtil.writeToSysLogFile( "updatePrefs() DataUpdatePeriod = " + mDataUpdatePeriod); mUtil.writeToSysLogFile("updatePrefs() DataUpdatePeriod = " + mDataUpdatePeriod);
prefStr = SP.getString("MutePeriod", "SET_FROM_XML"); 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);
mUtil.writeToSysLogFile( "updatePrefs() MutePeriod = " + mMutePeriod); mUtil.writeToSysLogFile("updatePrefs() MutePeriod = " + mMutePeriod);
prefStr = SP.getString("ManAlarmPeriod", "SET_FROM_XML"); 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);
mUtil.writeToSysLogFile( "updatePrefs() ManAlarmPeriod = " + mManAlarmPeriod); mUtil.writeToSysLogFile("updatePrefs() ManAlarmPeriod = " + mManAlarmPeriod);
prefStr = SP.getString("PebbleSdMode", "SET_FROM_XML"); prefStr = SP.getString("PebbleSdMode", "SET_FROM_XML");
mPebbleSdMode = (short) Integer.parseInt(prefStr); mPebbleSdMode = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() PebbleSdMode = " + mPebbleSdMode); Log.v(TAG, "updatePrefs() PebbleSdMode = " + mPebbleSdMode);
mUtil.writeToSysLogFile( "updatePrefs() PebbleSdMode = " + mPebbleSdMode); mUtil.writeToSysLogFile("updatePrefs() PebbleSdMode = " + mPebbleSdMode);
prefStr = SP.getString("SampleFreq", "SET_FROM_XML"); prefStr = SP.getString("SampleFreq", "SET_FROM_XML");
mSampleFreq = (short) Integer.parseInt(prefStr); mSampleFreq = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() SampleFreq = " + mSampleFreq); Log.v(TAG, "updatePrefs() SampleFreq = " + mSampleFreq);
mUtil.writeToSysLogFile( "updatePrefs() SampleFreq = " + mSampleFreq); mUtil.writeToSysLogFile("updatePrefs() SampleFreq = " + mSampleFreq);
prefStr = SP.getString("SamplePeriod", "SET_FROM_XML"); prefStr = SP.getString("SamplePeriod", "SET_FROM_XML");
mSamplePeriod = (short) Integer.parseInt(prefStr); mSamplePeriod = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AnalysisPeriod = " + mSamplePeriod); Log.v(TAG, "updatePrefs() AnalysisPeriod = " + mSamplePeriod);
mUtil.writeToSysLogFile( "updatePrefs() AnalysisPeriod = " + mSamplePeriod); mUtil.writeToSysLogFile("updatePrefs() AnalysisPeriod = " + mSamplePeriod);
prefStr = SP.getString("AlarmFreqMin", "SET_FROM_XML"); 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);
mUtil.writeToSysLogFile( "updatePrefs() AlarmFreqMin = " + mAlarmFreqMin); mUtil.writeToSysLogFile("updatePrefs() AlarmFreqMin = " + mAlarmFreqMin);
prefStr = SP.getString("AlarmFreqMax", "SET_FROM_XML"); prefStr = SP.getString("AlarmFreqMax", "SET_FROM_XML");
mAlarmFreqMax = (short) Integer.parseInt(prefStr); mAlarmFreqMax = (short) Integer.parseInt(prefStr);
@@ -1038,58 +1038,58 @@ public abstract class SdDataSource {
prefStr = SP.getString("WarnTime", "SET_FROM_XML"); 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);
mUtil.writeToSysLogFile( "updatePrefs() WarnTime = " + mWarnTime); mUtil.writeToSysLogFile("updatePrefs() WarnTime = " + mWarnTime);
prefStr = SP.getString("AlarmTime", "SET_FROM_XML"); 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);
mUtil.writeToSysLogFile( "updatePrefs() AlarmTime = " + mAlarmTime); mUtil.writeToSysLogFile("updatePrefs() AlarmTime = " + mAlarmTime);
prefStr = SP.getString("AlarmThresh", "SET_FROM_XML"); 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);
mUtil.writeToSysLogFile( "updatePrefs() AlarmThresh = " + mAlarmThresh); mUtil.writeToSysLogFile("updatePrefs() AlarmThresh = " + mAlarmThresh);
prefStr = SP.getString("AlarmRatioThresh", "SET_FROM_XML"); 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);
mUtil.writeToSysLogFile( "updatePrefs() AlarmRatioThresh = " + mAlarmRatioThresh); mUtil.writeToSysLogFile("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);
mUtil.writeToSysLogFile( "updatePrefs() FallActive = " + mFallActive); mUtil.writeToSysLogFile("updatePrefs() FallActive = " + mFallActive);
prefStr = SP.getString("FallThreshMin", "SET_FROM_XML"); 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);
mUtil.writeToSysLogFile( "updatePrefs() FallThreshMin = " + mFallThreshMin); mUtil.writeToSysLogFile("updatePrefs() FallThreshMin = " + mFallThreshMin);
prefStr = SP.getString("FallThreshMax", "SET_FROM_XML"); 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);
mUtil.writeToSysLogFile( "updatePrefs() FallThreshMax = " + mFallThreshMax); mUtil.writeToSysLogFile("updatePrefs() FallThreshMax = " + mFallThreshMax);
prefStr = SP.getString("FallWindow", "SET_FROM_XML"); 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);
mUtil.writeToSysLogFile( "updatePrefs() FallWindow = " + mFallWindow); mUtil.writeToSysLogFile("updatePrefs() FallWindow = " + mFallWindow);
mSdData.mOsdAlarmActive = SP.getBoolean("OsdAlarmActive", false); mSdData.mOsdAlarmActive = SP.getBoolean("OsdAlarmActive", false);
Log.v(TAG, "updatePrefs() OsdAlarmActive = " + mSdData.mOsdAlarmActive); Log.v(TAG, "updatePrefs() OsdAlarmActive = " + mSdData.mOsdAlarmActive);
mUtil.writeToSysLogFile( "updatePrefs() OsdAlarmActive = " + mSdData.mOsdAlarmActive); mUtil.writeToSysLogFile("updatePrefs() OsdAlarmActive = " + mSdData.mOsdAlarmActive);
mSdData.mCnnAlarmActive = SP.getBoolean("CnnAlarmActive", false); mSdData.mCnnAlarmActive = SP.getBoolean("CnnAlarmActive", false);
Log.v(TAG, "updatePrefs() CnnAlarmActive = " + mSdData.mCnnAlarmActive); Log.v(TAG, "updatePrefs() CnnAlarmActive = " + mSdData.mCnnAlarmActive);
mUtil.writeToSysLogFile( "updatePrefs() CnnAlarmActive = " + mSdData.mCnnAlarmActive); mUtil.writeToSysLogFile("updatePrefs() CnnAlarmActive = " + mSdData.mCnnAlarmActive);
mSdData.mHRAlarmActive = SP.getBoolean("HRAlarmActive", false); mSdData.mHRAlarmActive = SP.getBoolean("HRAlarmActive", false);
Log.v(TAG, "updatePrefs() HRAlarmActive = " + mSdData.mHRAlarmActive); Log.v(TAG, "updatePrefs() HRAlarmActive = " + mSdData.mHRAlarmActive);
mUtil.writeToSysLogFile( "updatePrefs() HRAlarmActive = " + mSdData.mHRAlarmActive); mUtil.writeToSysLogFile("updatePrefs() HRAlarmActive = " + mSdData.mHRAlarmActive);
mSdData.mHRNullAsAlarm = SP.getBoolean("HRNullAsAlarm", false); mSdData.mHRNullAsAlarm = SP.getBoolean("HRNullAsAlarm", false);
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); mHrFrozenAlarm = SP.getBoolean("HrFrozenAlarm", true);
Log.v(TAG, "updatePrefs() - mHrFrozenAlarm = " + mHrFrozenAlarm); Log.v(TAG, "updatePrefs() - mHrFrozenAlarm = " + mHrFrozenAlarm);
@@ -1098,42 +1098,42 @@ public abstract class SdDataSource {
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);
mUtil.writeToSysLogFile( "updatePrefs() HRThreshMin = " + mSdData.mHRThreshMin); mUtil.writeToSysLogFile("updatePrefs() HRThreshMin = " + mSdData.mHRThreshMin);
prefStr = SP.getString("HRThreshMax", "SET_FROM_XML"); prefStr = SP.getString("HRThreshMax", "SET_FROM_XML");
mSdData.mHRThreshMax = (short) Integer.parseInt(prefStr); mSdData.mHRThreshMax = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() HRThreshMax = " + mSdData.mHRThreshMax); Log.v(TAG, "updatePrefs() HRThreshMax = " + mSdData.mHRThreshMax);
mUtil.writeToSysLogFile( "updatePrefs() HRThreshMax = " + mSdData.mHRThreshMax); mUtil.writeToSysLogFile("updatePrefs() HRThreshMax = " + mSdData.mHRThreshMax);
mSdData.mAdaptiveHrAlarmActive = SP.getBoolean("HRAdaptiveAlarmActive", false); mSdData.mAdaptiveHrAlarmActive = SP.getBoolean("HRAdaptiveAlarmActive", false);
mSdData.mAdaptiveHrAlarmWindowSecs = readDoublePref(SP, "HRAdaptiveAlarmWindowSecs", "30"); mSdData.mAdaptiveHrAlarmWindowSecs = readDoublePref(SP, "HRAdaptiveAlarmWindowSecs", "30");
mSdData.mAdaptiveHrAlarmThresh = readDoublePref(SP, "HRAdaptiveAlarmThresh", "20"); mSdData.mAdaptiveHrAlarmThresh = readDoublePref(SP, "HRAdaptiveAlarmThresh", "20");
Log.d(TAG,"updatePrefs(): mAdaptiveHrAlarmActive="+mSdData.mAdaptiveHrAlarmActive); Log.d(TAG, "updatePrefs(): mAdaptiveHrAlarmActive=" + mSdData.mAdaptiveHrAlarmActive);
Log.d(TAG,"updatePrefs(): mAdaptiveHrWindowSecs="+mSdData.mAdaptiveHrAlarmWindowSecs); Log.d(TAG, "updatePrefs(): mAdaptiveHrWindowSecs=" + mSdData.mAdaptiveHrAlarmWindowSecs);
Log.d(TAG,"updatePrefs(): mAdaptiveHrAlarmThresh="+mSdData.mAdaptiveHrAlarmThresh); Log.d(TAG, "updatePrefs(): mAdaptiveHrAlarmThresh=" + mSdData.mAdaptiveHrAlarmThresh);
mSdData.mAverageHrAlarmActive = SP.getBoolean("HRAverageAlarmActive", false); mSdData.mAverageHrAlarmActive = SP.getBoolean("HRAverageAlarmActive", false);
mSdData.mAverageHrAlarmWindowSecs = readDoublePref(SP, "HRAverageAlarmWindowSecs", "120"); mSdData.mAverageHrAlarmWindowSecs = readDoublePref(SP, "HRAverageAlarmWindowSecs", "120");
mSdData.mAverageHrAlarmThreshMin = readDoublePref(SP, "HRAverageAlarmThreshMin", "40"); mSdData.mAverageHrAlarmThreshMin = readDoublePref(SP, "HRAverageAlarmThreshMin", "40");
mSdData.mAverageHrAlarmThreshMax = readDoublePref(SP, "HRAverageAlarmThreshMax", "120"); mSdData.mAverageHrAlarmThreshMax = readDoublePref(SP, "HRAverageAlarmThreshMax", "120");
Log.d(TAG,"updatePrefs(): mAverageHrAlarmActive="+mSdData.mAverageHrAlarmActive); Log.d(TAG, "updatePrefs(): mAverageHrAlarmActive=" + mSdData.mAverageHrAlarmActive);
Log.d(TAG,"updatePrefs(): mAverageHrAlarmWindowSecs="+mSdData.mAverageHrAlarmWindowSecs); Log.d(TAG, "updatePrefs(): mAverageHrAlarmWindowSecs=" + mSdData.mAverageHrAlarmWindowSecs);
Log.d(TAG,"updatePrefs(): mAverageHrAlarmThreshMin="+mSdData.mAverageHrAlarmThreshMin); Log.d(TAG, "updatePrefs(): mAverageHrAlarmThreshMin=" + mSdData.mAverageHrAlarmThreshMin);
Log.d(TAG,"updatePrefs(): mAverageHrAlarmThreshMax="+mSdData.mAverageHrAlarmThreshMax); Log.d(TAG, "updatePrefs(): mAverageHrAlarmThreshMax=" + mSdData.mAverageHrAlarmThreshMax);
mSdData.mO2SatAlarmActive = SP.getBoolean("O2SatAlarmActive", false); mSdData.mO2SatAlarmActive = SP.getBoolean("O2SatAlarmActive", false);
Log.v(TAG, "updatePrefs() O2SatAlarmActive = " + mSdData.mO2SatAlarmActive); Log.v(TAG, "updatePrefs() O2SatAlarmActive = " + mSdData.mO2SatAlarmActive);
mUtil.writeToSysLogFile( "updatePrefs() O2SatAlarmActive = " + mSdData.mO2SatAlarmActive); mUtil.writeToSysLogFile("updatePrefs() O2SatAlarmActive = " + mSdData.mO2SatAlarmActive);
mSdData.mO2SatNullAsAlarm = SP.getBoolean("O2SatNullAsAlarm", false); mSdData.mO2SatNullAsAlarm = SP.getBoolean("O2SatNullAsAlarm", false);
Log.v(TAG, "updatePrefs() O2SatNullAsAlarm = " + mSdData.mO2SatNullAsAlarm); Log.v(TAG, "updatePrefs() O2SatNullAsAlarm = " + mSdData.mO2SatNullAsAlarm);
mUtil.writeToSysLogFile( "updatePrefs() O2SatNullAsAlarm = " + mSdData.mO2SatNullAsAlarm); mUtil.writeToSysLogFile("updatePrefs() O2SatNullAsAlarm = " + mSdData.mO2SatNullAsAlarm);
prefStr = SP.getString("O2SatThreshMin", "SET_FROM_XML"); prefStr = SP.getString("O2SatThreshMin", "SET_FROM_XML");
mSdData.mO2SatThreshMin = (short) Integer.parseInt(prefStr); mSdData.mO2SatThreshMin = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() O2SatThreshMin = " + mSdData.mO2SatThreshMin); Log.v(TAG, "updatePrefs() O2SatThreshMin = " + mSdData.mO2SatThreshMin);
mUtil.writeToSysLogFile( "updatePrefs() O2SatThreshMin = " + mSdData.mO2SatThreshMin); mUtil.writeToSysLogFile("updatePrefs() O2SatThreshMin = " + mSdData.mO2SatThreshMin);
} else { } else {
Log.v(TAG, "updatePrefs() - prefStr is null - WHY????"); Log.v(TAG, "updatePrefs() - prefStr is null - WHY????");

File diff suppressed because one or more lines are too long

View File

@@ -101,7 +101,7 @@ public class SdDataSourceBLE extends SdDataSource {
public static String CHAR_OSD_BATT_DATA = "000085e9-0002-1000-8000-00805f9b34fb"; public static String CHAR_OSD_BATT_DATA = "000085e9-0002-1000-8000-00805f9b34fb";
public static String CHAR_OSD_WATCH_ID = "000085e9-0003-1000-8000-00805f9b34fb"; public static String CHAR_OSD_WATCH_ID = "000085e9-0003-1000-8000-00805f9b34fb";
public static String CHAR_OSD_WATCH_FW = "000085e9-0004-1000-8000-00805f9b34fb"; public static String CHAR_OSD_WATCH_FW = "000085e9-0004-1000-8000-00805f9b34fb";
public static String CHAR_OSD_ACC_FMT= "000085e9-0005-1000-8000-00805f9b34fb"; public static String CHAR_OSD_ACC_FMT = "000085e9-0005-1000-8000-00805f9b34fb";
// Valid values are 0: 8 bit vector magnitude scaled so 1g=44 // Valid values are 0: 8 bit vector magnitude scaled so 1g=44
public final static int ACC_FMT_8BIT = 0; public final static int ACC_FMT_8BIT = 0;
@@ -319,7 +319,7 @@ public class SdDataSourceBLE extends SdDataSource {
Log.v(TAG, "Battery Data Service Service Discovered"); Log.v(TAG, "Battery Data Service Service Discovered");
for (BluetoothGattCharacteristic gattCharacteristic : gattCharacteristics) { for (BluetoothGattCharacteristic gattCharacteristic : gattCharacteristics) {
String charUuidStr = gattCharacteristic.getUuid().toString(); String charUuidStr = gattCharacteristic.getUuid().toString();
Log.v(TAG,"batt char="+charUuidStr); Log.v(TAG, "batt char=" + charUuidStr);
if (charUuidStr.equals(CHAR_BATT_DATA)) { if (charUuidStr.equals(CHAR_BATT_DATA)) {
Log.v(TAG, "Subscribing to Battery Data Change Notifications"); Log.v(TAG, "Subscribing to Battery Data Change Notifications");
setCharacteristicNotification(gattCharacteristic, true); setCharacteristicNotification(gattCharacteristic, true);
@@ -357,9 +357,9 @@ public class SdDataSourceBLE extends SdDataSource {
private void executeReadCharacteristic(BluetoothGattCharacteristic gattCharacteristic) { private void executeReadCharacteristic(BluetoothGattCharacteristic gattCharacteristic) {
boolean retVal = mBluetoothGatt.readCharacteristic(gattCharacteristic); boolean retVal = mBluetoothGatt.readCharacteristic(gattCharacteristic);
if (retVal) { if (retVal) {
Log.d(TAG,"executeReadCharacteristic - read initiated successfully"); Log.d(TAG, "executeReadCharacteristic - read initiated successfully");
} else { } else {
Log.d(TAG,"executeReadCharacteristic - read initiation failed - waiting, then re-trying"); Log.d(TAG, "executeReadCharacteristic - read initiation failed - waiting, then re-trying");
mHandler.postDelayed(new Runnable() { mHandler.postDelayed(new Runnable() {
public void run() { public void run() {
Log.w(TAG, "Executing delayed read of characteristic"); Log.w(TAG, "Executing delayed read of characteristic");
@@ -368,6 +368,7 @@ public class SdDataSourceBLE extends SdDataSource {
}, 100); }, 100);
} }
} }
private boolean permissionsOK() { private boolean permissionsOK() {
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling // TODO: Consider calling
@@ -377,7 +378,7 @@ public class SdDataSourceBLE extends SdDataSource {
// int[] grantResults) // int[] grantResults)
// to handle the case where the user grants the permission. See the documentation // to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details. // for ActivityCompat#requestPermissions for more details.
Log.e(TAG,"permissionsOK() - Bluetooth Permmission Not Granted"); Log.e(TAG, "permissionsOK() - Bluetooth Permmission Not Granted");
mUtil.showToast("ERROR - Bluetooth Permission not Granted"); mUtil.showToast("ERROR - Bluetooth Permission not Granted");
return (false); return (false);
} else { } else {
@@ -392,7 +393,7 @@ public class SdDataSourceBLE extends SdDataSource {
* If the data is acceleration data, we add it to a buffer - it is analysed once the buffer is full. * If the data is acceleration data, we add it to a buffer - it is analysed once the buffer is full.
* Heart rate data is written directly to sdData to be used in future analysis. * Heart rate data is written directly to sdData to be used in future analysis.
*/ */
Log.v(TAG,"onDataReceived: Characteristic="+characteristic.getUuid().toString()); Log.v(TAG, "onDataReceived: Characteristic=" + characteristic.getUuid().toString());
if (characteristic.getUuid().toString().equals(CHAR_HEART_RATE_MEASUREMENT)) { if (characteristic.getUuid().toString().equals(CHAR_HEART_RATE_MEASUREMENT)) {
int flag = characteristic.getProperties(); int flag = characteristic.getProperties();
//Log.d(TAG,"onDataReceived() - flag = "+flag); //Log.d(TAG,"onDataReceived() - flag = "+flag);
@@ -413,17 +414,16 @@ public class SdDataSourceBLE extends SdDataSource {
mSdData.mHR = (double) heartRate; mSdData.mHR = (double) heartRate;
} }
Log.d(TAG, String.format("onDataReceived(): CHAR_HEART_RATE_MEASUREMENT: %d", heartRate)); Log.d(TAG, String.format("onDataReceived(): CHAR_HEART_RATE_MEASUREMENT: %d", heartRate));
} } else if (characteristic.getUuid().toString().equals(CHAR_OSD_ACC_DATA)
else if (characteristic.getUuid().toString().equals(CHAR_OSD_ACC_DATA)
|| characteristic.getUuid().toString().equals(CHAR_INFINITIME_ACC_DATA)) { || characteristic.getUuid().toString().equals(CHAR_INFINITIME_ACC_DATA)) {
//Log.v(TAG,"Received OSD ACC DATA"+characteristic.getValue()); //Log.v(TAG,"Received OSD ACC DATA"+characteristic.getValue());
byte[] rawDataBytes = characteristic.getValue(); byte[] rawDataBytes = characteristic.getValue();
short[] newAccVals = parseDataToAccVals(rawDataBytes); short[] newAccVals = parseDataToAccVals(rawDataBytes);
Log.v(TAG, "onDataReceived(): CHAR_OSD_ACC_DATA: numSamples = " + rawDataBytes.length+" nRawData="+nRawData); Log.v(TAG, "onDataReceived(): CHAR_OSD_ACC_DATA: numSamples = " + rawDataBytes.length + " nRawData=" + nRawData);
//Log.v(TAG, "onDataReceived() - rawDataBytes="+ Arrays.toString(rawDataBytes)); //Log.v(TAG, "onDataReceived() - rawDataBytes="+ Arrays.toString(rawDataBytes));
//Log.v(TAG, "onDataReceived() - newAccVals="+Arrays.toString(newAccVals)); //Log.v(TAG, "onDataReceived() - newAccVals="+Arrays.toString(newAccVals));
for (int i = 0; i < newAccVals.length;i++) { for (int i = 0; i < newAccVals.length; i++) {
if (nRawData < MAX_RAW_DATA ) { if (nRawData < MAX_RAW_DATA) {
switch (mAccFmt) { switch (mAccFmt) {
case ACC_FMT_8BIT: case ACC_FMT_8BIT:
case ACC_FMT_16BIT: case ACC_FMT_16BIT:
@@ -433,7 +433,7 @@ public class SdDataSourceBLE extends SdDataSource {
case ACC_FMT_3D: case ACC_FMT_3D:
// 3d data is x1,y1,z1, x2,y2,z2 ... xn,yn,zn // 3d data is x1,y1,z1, x2,y2,z2 ... xn,yn,zn
// We only do this every third value, then process x, y and z simultaneously. // We only do this every third value, then process x, y and z simultaneously.
if (i+2 < newAccVals.length) { if (i + 2 < newAccVals.length) {
if (i % 3 == 0) { if (i % 3 == 0) {
short x, y, z; short x, y, z;
x = newAccVals[i]; x = newAccVals[i];
@@ -450,8 +450,8 @@ public class SdDataSourceBLE extends SdDataSource {
} }
break; break;
default: default:
Log.e(TAG,"INVALID ACCELERATION FORMAT"+mAccFmt); Log.e(TAG, "INVALID ACCELERATION FORMAT" + mAccFmt);
mUtil.showToast("INVALID ACCELERATION FORMAT "+mAccFmt); mUtil.showToast("INVALID ACCELERATION FORMAT " + mAccFmt);
} }
} else { } else {
@@ -459,9 +459,9 @@ public class SdDataSourceBLE extends SdDataSource {
mSdData.watchAppRunning = true; mSdData.watchAppRunning = true;
for (i = 0; i < rawData.length; i++) { for (i = 0; i < rawData.length; i++) {
mSdData.rawData[i] = rawData[i]; mSdData.rawData[i] = rawData[i];
mSdData.rawData3D[i*3] = rawData3d[i*3]; mSdData.rawData3D[i * 3] = rawData3d[i * 3];
mSdData.rawData3D[i*3 +1] = rawData3d[i*3 +1]; mSdData.rawData3D[i * 3 + 1] = rawData3d[i * 3 + 1];
mSdData.rawData3D[i*3 +2] = rawData3d[i*3 +2]; mSdData.rawData3D[i * 3 + 2] = rawData3d[i * 3 + 2];
//Log.v(TAG,"onDataReceived() i="+i+", "+rawData[i]); //Log.v(TAG,"onDataReceived() i="+i+", "+rawData[i]);
} }
mSdData.mNsamp = rawData.length; mSdData.mNsamp = rawData.length;
@@ -473,37 +473,31 @@ public class SdDataSourceBLE extends SdDataSource {
nRawData = 0; nRawData = 0;
} }
} }
} } else if (characteristic.getUuid().toString().equals(CHAR_OSD_BATT_DATA)) {
else if (characteristic.getUuid().toString().equals(CHAR_OSD_BATT_DATA)) {
byte batteryPc = characteristic.getValue()[0]; byte batteryPc = characteristic.getValue()[0];
mSdData.batteryPc = batteryPc; mSdData.batteryPc = batteryPc;
Log.v(TAG,"onDataReceived(): CHAR_OSD_BATT_DATA: " + String.format("%d", batteryPc)); Log.v(TAG, "onDataReceived(): CHAR_OSD_BATT_DATA: " + String.format("%d", batteryPc));
mSdData.haveSettings = true; mSdData.haveSettings = true;
} } else if (characteristic.getUuid().toString().equals(CHAR_BATT_DATA)) {
else if (characteristic.getUuid().toString().equals(CHAR_BATT_DATA)) {
byte batteryPc = characteristic.getValue()[0]; byte batteryPc = characteristic.getValue()[0];
mSdData.batteryPc = batteryPc; mSdData.batteryPc = batteryPc;
Log.v(TAG,"onDataReceived(): CHAR_BATT_DATA: " + String.format("%d", batteryPc)); Log.v(TAG, "onDataReceived(): CHAR_BATT_DATA: " + String.format("%d", batteryPc));
mSdData.haveSettings = true; mSdData.haveSettings = true;
} } else if (characteristic.getUuid().toString().equals(CHAR_OSD_WATCH_ID)) {
else if (characteristic.getUuid().toString().equals(CHAR_OSD_WATCH_ID)) {
byte[] rawDataBytes = characteristic.getValue(); byte[] rawDataBytes = characteristic.getValue();
String watchId = new String(rawDataBytes, StandardCharsets.UTF_8); String watchId = new String(rawDataBytes, StandardCharsets.UTF_8);
Log.v(TAG,"Received Watch ID: "+watchId); Log.v(TAG, "Received Watch ID: " + watchId);
mSdData.watchSdName = watchId; mSdData.watchSdName = watchId;
} } else if (characteristic.getUuid().toString().equals(CHAR_OSD_WATCH_FW)) {
else if (characteristic.getUuid().toString().equals(CHAR_OSD_WATCH_FW)) {
byte[] rawDataBytes = characteristic.getValue(); byte[] rawDataBytes = characteristic.getValue();
String watchFwVer = new String(rawDataBytes, StandardCharsets.UTF_8); String watchFwVer = new String(rawDataBytes, StandardCharsets.UTF_8);
Log.v(TAG,"Received Watch Firmware Version: "+watchFwVer); Log.v(TAG, "Received Watch Firmware Version: " + watchFwVer);
mSdData.watchSdVersion = watchFwVer; mSdData.watchSdVersion = watchFwVer;
} } else if (characteristic.getUuid().toString().equals(CHAR_OSD_ACC_FMT)) {
else if (characteristic.getUuid().toString().equals(CHAR_OSD_ACC_FMT)) {
mAccFmt = characteristic.getValue()[0]; mAccFmt = characteristic.getValue()[0];
Log.v(TAG,"Received Acceleration format code: "+mAccFmt); Log.v(TAG, "Received Acceleration format code: " + mAccFmt);
} } else {
else { Log.v(TAG, "Unrecognised Characteristic Updated " +
Log.v(TAG,"Unrecognised Characteristic Updated "+
characteristic.getUuid().toString()); characteristic.getUuid().toString());
} }
} }
@@ -513,14 +507,14 @@ public class SdDataSourceBLE extends SdDataSource {
switch (mAccFmt) { switch (mAccFmt) {
case ACC_FMT_8BIT: case ACC_FMT_8BIT:
retArr = new short[rawDataBytes.length]; retArr = new short[rawDataBytes.length];
for (int i = 0; i < rawDataBytes.length;i++) { for (int i = 0; i < rawDataBytes.length; i++) {
retArr[i] = (short) (1000 * rawDataBytes[i] / 64); // Scale to mg retArr[i] = (short) (1000 * rawDataBytes[i] / 64); // Scale to mg
} }
break; break;
case ACC_FMT_16BIT: case ACC_FMT_16BIT:
case ACC_FMT_3D: case ACC_FMT_3D:
// from https://stackoverflow.com/questions/5625573/byte-array-to-short-array-and-back-again-in-java // from https://stackoverflow.com/questions/5625573/byte-array-to-short-array-and-back-again-in-java
retArr = new short[rawDataBytes.length/2]; retArr = new short[rawDataBytes.length / 2];
// to turn bytes to shorts as either big endian or little endian. // to turn bytes to shorts as either big endian or little endian.
ByteBuffer.wrap(rawDataBytes) ByteBuffer.wrap(rawDataBytes)
.order(ByteOrder.LITTLE_ENDIAN) .order(ByteOrder.LITTLE_ENDIAN)
@@ -528,17 +522,18 @@ public class SdDataSourceBLE extends SdDataSource {
.get(retArr); .get(retArr);
break; break;
default: default:
Log.e(TAG,"INVALID ACCELERATION FORMAT"+mAccFmt); Log.e(TAG, "INVALID ACCELERATION FORMAT" + mAccFmt);
mUtil.showToast("INVALID ACCELERATION FORMAT "+mAccFmt); mUtil.showToast("INVALID ACCELERATION FORMAT " + mAccFmt);
retArr = new short[0]; retArr = new short[0];
} }
return(retArr); return (retArr);
} }
@Override @Override
public void onCharacteristicRead(BluetoothGatt gatt, public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic, BluetoothGattCharacteristic characteristic,
int status) { int status) {
Log.v(TAG,"onCharacteristicRead"); Log.v(TAG, "onCharacteristicRead");
if (status == BluetoothGatt.GATT_SUCCESS) { if (status == BluetoothGatt.GATT_SUCCESS) {
onDataReceived(characteristic); onDataReceived(characteristic);
} }
@@ -553,7 +548,7 @@ public class SdDataSourceBLE extends SdDataSource {
@Override @Override
public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) { public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
Log.v(TAG,"onDescriptorWrite(): Characteristic " + descriptor.getUuid() + " changed"); Log.v(TAG, "onDescriptorWrite(): Characteristic " + descriptor.getUuid() + " changed");
waitForDescriptorWrite = false; waitForDescriptorWrite = false;
} }
}; };

View File

@@ -38,17 +38,18 @@ public class SdDataSourceNetwork extends SdDataSource {
mName = "Network"; mName = "Network";
} }
@Override public void start() { @Override
public void start() {
// Update preferences. // Update preferences.
Log.v(TAG,"start(): calling updatePrefs()"); Log.v(TAG, "start(): calling updatePrefs()");
mUtil.writeToSysLogFile("SdDataSourceNetwork().start()"); mUtil.writeToSysLogFile("SdDataSourceNetwork().start()");
updatePrefs(); updatePrefs();
// Start timer to retrieve seizure detector data regularly. // Start timer to retrieve seizure detector data regularly.
mStatusTime = new Time(Time.getCurrentTimezone()); mStatusTime = new Time(Time.getCurrentTimezone());
mStatusTime.setToNow(); mStatusTime.setToNow();
if (mDataUpdateTimer ==null) { if (mDataUpdateTimer == null) {
Log.v(TAG,"start(): starting data update timer"); Log.v(TAG, "start(): starting data update timer");
mDataUpdateTimer = new Timer(); mDataUpdateTimer = new Timer();
mDataUpdateTimer.schedule(new TimerTask() { mDataUpdateTimer.schedule(new TimerTask() {
@Override @Override
@@ -57,17 +58,18 @@ public class SdDataSourceNetwork extends SdDataSource {
} }
}, 0, mDataUpdatePeriod); }, 0, mDataUpdatePeriod);
} else { } else {
Log.v(TAG,"start(): data update timer already running."); Log.v(TAG, "start(): data update timer already running.");
} }
} }
@Override public void stop() { @Override
public void stop() {
mUtil.writeToSysLogFile("SdDataSourceNetwork().stop()"); mUtil.writeToSysLogFile("SdDataSourceNetwork().stop()");
// Stop the data update timer // Stop the data update timer
if (mDataUpdateTimer !=null) { if (mDataUpdateTimer != null) {
Log.v(TAG,"stop(): cancelling status timer"); Log.v(TAG, "stop(): cancelling status timer");
mDataUpdateTimer.cancel(); mDataUpdateTimer.cancel();
mDataUpdateTimer.purge(); mDataUpdateTimer.purge();
mDataUpdateTimer = null; mDataUpdateTimer = null;
@@ -76,7 +78,6 @@ public class SdDataSourceNetwork extends SdDataSource {
} }
/** /**
* updatePrefs() - update basic settings from the SharedPreferences * updatePrefs() - update basic settings from the SharedPreferences
* - defined in res/xml/prefs.xml * - defined in res/xml/prefs.xml
@@ -86,21 +87,21 @@ public class SdDataSourceNetwork extends SdDataSource {
mUtil.writeToSysLogFile("SdDataSourceNetwork().updatePrefs()"); mUtil.writeToSysLogFile("SdDataSourceNetwork().updatePrefs()");
SharedPreferences SP = PreferenceManager SharedPreferences SP = PreferenceManager
.getDefaultSharedPreferences(mContext); .getDefaultSharedPreferences(mContext);
mServerIP = SP.getString("ServerIP","192.168.1.175"); mServerIP = SP.getString("ServerIP", "192.168.1.175");
Log.v(TAG,"updatePrefs() - mServerIP = "+mServerIP); Log.v(TAG, "updatePrefs() - mServerIP = " + mServerIP);
try { try {
String dataUpdatePeriodStr = SP.getString("DataUpdatePeriod","2000"); String dataUpdatePeriodStr = SP.getString("DataUpdatePeriod", "2000");
mDataUpdatePeriod = Integer.parseInt(dataUpdatePeriodStr); mDataUpdatePeriod = Integer.parseInt(dataUpdatePeriodStr);
Log.v(TAG,"updatePrefs() - mDataUpdatePeriod = "+mDataUpdatePeriod); Log.v(TAG, "updatePrefs() - mDataUpdatePeriod = " + mDataUpdatePeriod);
String connectTimeoutPeriodStr = SP.getString("ConnectTimeoutPeriod","5000"); String connectTimeoutPeriodStr = SP.getString("ConnectTimeoutPeriod", "5000");
mConnnectTimeoutPeriod = Integer.parseInt(connectTimeoutPeriodStr); mConnnectTimeoutPeriod = Integer.parseInt(connectTimeoutPeriodStr);
Log.v(TAG,"updatePrefs() - mConnectTimeoutPeriod = "+mConnnectTimeoutPeriod); Log.v(TAG, "updatePrefs() - mConnectTimeoutPeriod = " + mConnnectTimeoutPeriod);
String readTimeoutPeriodStr = SP.getString("ReadTimeoutPeriod","5000"); String readTimeoutPeriodStr = SP.getString("ReadTimeoutPeriod", "5000");
mReadTimeoutPeriod = Integer.parseInt(readTimeoutPeriodStr); mReadTimeoutPeriod = Integer.parseInt(readTimeoutPeriodStr);
Log.v(TAG,"updatePrefs() - mReadTimeoutPeriod = "+mReadTimeoutPeriod); Log.v(TAG, "updatePrefs() - mReadTimeoutPeriod = " + mReadTimeoutPeriod);
} catch (Exception ex) { } catch (Exception ex) {
Log.v(TAG,"updatePrefs() - Problem parsing preferences!"); Log.v(TAG, "updatePrefs() - Problem parsing preferences!");
mUtil.writeToSysLogFile("SdDataSourceNetwork().updatePrefs() - " +ex.toString()); mUtil.writeToSysLogFile("SdDataSourceNetwork().updatePrefs() - " + ex.toString());
showToast("Problem Parsing Preferences - Something won't work"); showToast("Problem Parsing Preferences - Something won't work");
} }
} }
@@ -117,6 +118,7 @@ public class SdDataSourceNetwork extends SdDataSource {
private class DownloadSdDataTask extends AsyncTask<String, Void, SdData> { private class DownloadSdDataTask extends AsyncTask<String, Void, SdData> {
private SdData sdData; private SdData sdData;
@Override @Override
protected SdData doInBackground(String... urls) { protected SdData doInBackground(String... urls) {
// params comes from the execute() call: params[0] is the url. // params comes from the execute() call: params[0] is the url.
@@ -124,23 +126,23 @@ public class SdDataSourceNetwork extends SdDataSource {
try { try {
String result = downloadUrl(urls[0]); String result = downloadUrl(urls[0]);
if (result.startsWith("Unable to retrieve web page")) { if (result.startsWith("Unable to retrieve web page")) {
Log.v(TAG,"doInBackground() - Unable to retrieve data"); Log.v(TAG, "doInBackground() - Unable to retrieve data");
sdData.serverOK = false; sdData.serverOK = false;
sdData.watchConnected = false; sdData.watchConnected = false;
sdData.watchAppRunning = false; sdData.watchAppRunning = false;
sdData.alarmState = ALARM_STATE_NETFAULT; sdData.alarmState = ALARM_STATE_NETFAULT;
sdData.alarmPhrase = "Warning - No Connection to Server"; sdData.alarmPhrase = "Warning - No Connection to Server";
Log.v(TAG,"doInBackground(): No Connection to Server - sdData = "+sdData.toString()); Log.v(TAG, "doInBackground(): No Connection to Server - sdData = " + sdData.toString());
} else { } else {
Log.v(TAG,"doInBackground - result = "+result); Log.v(TAG, "doInBackground - result = " + result);
sdData.fromJSON(result); sdData.fromJSON(result);
// Populate mSdData using the received data. // Populate mSdData using the received data.
sdData.serverOK = true; sdData.serverOK = true;
if (sdData.batteryPc>0) { if (sdData.batteryPc > 0) {
sdData.haveSettings = true; sdData.haveSettings = true;
} }
mStatusTime.setToNow(); mStatusTime.setToNow();
Log.v(TAG,"doInBackground(): sdData = "+sdData.toString()); Log.v(TAG, "doInBackground(): sdData = " + sdData.toString());
} }
return (sdData); return (sdData);
@@ -150,14 +152,15 @@ public class SdDataSourceNetwork extends SdDataSource {
sdData.watchAppRunning = false; sdData.watchAppRunning = false;
sdData.alarmState = ALARM_STATE_NETFAULT; sdData.alarmState = ALARM_STATE_NETFAULT;
sdData.alarmPhrase = "Warning - No Connection to Server"; sdData.alarmPhrase = "Warning - No Connection to Server";
Log.v(TAG,"doInBackground(): IOException - "+e.toString()); Log.v(TAG, "doInBackground(): IOException - " + e.toString());
return sdData; return sdData;
} }
} }
// onPostExecute displays the results of the AsyncTask. // onPostExecute displays the results of the AsyncTask.
@Override @Override
protected void onPostExecute(SdData sdData) { protected void onPostExecute(SdData sdData) {
Log.v(TAG,"onPostExecute() - sdData = "+sdData.toString()); Log.v(TAG, "onPostExecute() - sdData = " + sdData.toString());
mSdDataReceiver.onSdDataReceived(sdData); mSdDataReceiver.onSdDataReceived(sdData);
} }
} }
@@ -178,24 +181,24 @@ public class SdDataSourceNetwork extends SdDataSource {
try { try {
String result = downloadUrl(urls[0]); String result = downloadUrl(urls[0]);
if (result.startsWith("Unable to retrieve web page")) { if (result.startsWith("Unable to retrieve web page")) {
Log.v(TAG,"doInBackground() - Error accepting alarm"); Log.v(TAG, "doInBackground() - Error accepting alarm");
} else { } else {
Log.v(TAG,"doInBackground(): Alarm Accepted"); Log.v(TAG, "doInBackground(): Alarm Accepted");
} }
} catch (IOException e) { } catch (IOException e) {
Log.v(TAG,"doInBackground(): IOException - "+e.toString()); Log.v(TAG, "doInBackground(): IOException - " + e.toString());
} }
return "Done"; return "Done";
} }
// onPostExecute displays the results of the AsyncTask. // onPostExecute displays the results of the AsyncTask.
@Override @Override
protected void onPostExecute(String s) { protected void onPostExecute(String s) {
Log.v(TAG,"onPostExecute() - s="+s); Log.v(TAG, "onPostExecute() - s=" + s);
} }
} }
// Given a URL, establishes an HttpUrlConnection and retrieves // Given a URL, establishes an HttpUrlConnection and retrieves
// the web page content as a InputStream, which it returns as // the web page content as a InputStream, which it returns as
// a string. // a string.
@@ -241,6 +244,4 @@ public class SdDataSourceNetwork extends SdDataSource {
} }
} }

View File

@@ -45,7 +45,6 @@ import java.util.TimerTask;
import java.util.UUID; import java.util.UUID;
/** /**
* Abstract class for a seizure detector data source. Subclasses include a pebble smart watch data source and a * Abstract class for a seizure detector data source. Subclasses include a pebble smart watch data source and a
* network data source. * network data source.
@@ -166,7 +165,7 @@ public class SdDataSourcePebble extends SdDataSource {
// use a timer to check the status of the pebble app on the same frequency // use a timer to check the status of the pebble app on the same frequency
// as we get app data. // as we get app data.
if (mStatusTimer == null) { if (mStatusTimer == null) {
Log.v(TAG, "start(): starting status timer with period "+mDataUpdatePeriod*1000 + " ms"); Log.v(TAG, "start(): starting status timer with period " + mDataUpdatePeriod * 1000 + " ms");
mUtil.writeToSysLogFile("SdDataSourcePebble.start() - starting status timer"); mUtil.writeToSysLogFile("SdDataSourcePebble.start() - starting status timer");
mStatusTimer = new Timer(); mStatusTimer = new Timer();
mStatusTimer.schedule(new TimerTask() { mStatusTimer.schedule(new TimerTask() {
@@ -185,7 +184,7 @@ public class SdDataSourcePebble extends SdDataSource {
getPebbleSdSettings(); getPebbleSdSettings();
if (mSettingsTimer == null) { if (mSettingsTimer == null) {
Log.v(TAG, "start(): starting settings timer"); Log.v(TAG, "start(): starting settings timer");
mUtil.writeToSysLogFile("SdDataSourcePebble.start() - starting settings timer with period "+1000*mSettingsPeriod); mUtil.writeToSysLogFile("SdDataSourcePebble.start() - starting settings timer with period " + 1000 * mSettingsPeriod);
mSettingsTimer = new Timer(); mSettingsTimer = new Timer();
mSettingsTimer.schedule(new TimerTask() { mSettingsTimer.schedule(new TimerTask() {
@Override @Override
@@ -230,7 +229,7 @@ public class SdDataSourcePebble extends SdDataSource {
} catch (Exception e) { } catch (Exception e) {
Log.v(TAG, "Error in stop() - " + e.toString()); Log.v(TAG, "Error in stop() - " + e.toString());
mUtil.writeToSysLogFile("SdDataSourcePebble.stop() - error - "+e.toString()); mUtil.writeToSysLogFile("SdDataSourcePebble.stop() - error - " + e.toString());
} }
} }
@@ -343,8 +342,8 @@ public class SdDataSourcePebble extends SdDataSource {
Log.v(TAG, "updatePrefs() FallWindow = " + mFallWindow); Log.v(TAG, "updatePrefs() FallWindow = " + mFallWindow);
} catch (Exception ex) { } catch (Exception ex) {
Log.v(TAG, "updatePrefs() - Problem parsing preferences! - prefStr="+prefStr); Log.v(TAG, "updatePrefs() - Problem parsing preferences! - prefStr=" + prefStr);
mUtil.writeToSysLogFile("SdDataSourcePebble.updatePrefs() - ERROR "+ex.toString()); mUtil.writeToSysLogFile("SdDataSourcePebble.updatePrefs() - ERROR " + ex.toString());
Toast toast = Toast.makeText(mContext, "Problem Parsing Preferences - Something won't work - Please go back to Settings and correct it!", Toast.LENGTH_SHORT); Toast toast = Toast.makeText(mContext, "Problem Parsing Preferences - Something won't work - Please go back to Settings and correct it!", Toast.LENGTH_SHORT);
toast.show(); toast.show();
} }
@@ -437,16 +436,16 @@ public class SdDataSourcePebble extends SdDataSource {
byte[] rawDataBytes = data.getBytes(KEY_RAW_DATA); byte[] rawDataBytes = data.getBytes(KEY_RAW_DATA);
for (int i = 0; i < rawDataBytes.length - 4; i += 4) { // 4 bytes per sample for (int i = 0; i < rawDataBytes.length - 4; i += 4) { // 4 bytes per sample
int b0 = rawDataBytes[i]; int b0 = rawDataBytes[i];
int b1 = rawDataBytes[i+1] & 0xff; int b1 = rawDataBytes[i + 1] & 0xff;
int b2 = rawDataBytes[i+2] & 0xff; int b2 = rawDataBytes[i + 2] & 0xff;
int b3 = rawDataBytes[i+3] & 0xff; int b3 = rawDataBytes[i + 3] & 0xff;
int x = (b3 | b2 << 8 | b1 << 16 | b0 << 24); int x = (b3 | b2 << 8 | b1 << 16 | b0 << 24);
//int y = (rawDataBytes[i+2] & 0xff) | (rawDataBytes[i+3] << 8); //int y = (rawDataBytes[i+2] & 0xff) | (rawDataBytes[i+3] << 8);
//int z = (rawDataBytes[i+4] & 0xff) | (rawDataBytes[i+5] << 8); //int z = (rawDataBytes[i+4] & 0xff) | (rawDataBytes[i+5] << 8);
//Log.v(TAG,"x="+x+", y="+y+", z="+z); //Log.v(TAG,"x="+x+", y="+y+", z="+z);
Log.v(TAG,"b0="+b0+", b1="+b1+", b2="+b2+", b3="+b3+", x="+x); Log.v(TAG, "b0=" + b0 + ", b1=" + b1 + ", b2=" + b2 + ", b3=" + b3 + ", x=" + x);
if (nRawData < MAX_RAW_DATA) { if (nRawData < MAX_RAW_DATA) {
rawData[nRawData] = (int)Math.sqrt(x); rawData[nRawData] = (int) Math.sqrt(x);
} else { } else {
Log.i(TAG, "WARNING - rawData Buffer Full"); Log.i(TAG, "WARNING - rawData Buffer Full");
} }
@@ -727,7 +726,7 @@ public class SdDataSourcePebble extends SdDataSource {
* ignored! * ignored!
*/ */
private void analyseRawData() { private void analyseRawData() {
Log.v(TAG,"analyserawData()"); Log.v(TAG, "analyserawData()");
//DoubleFFT_1D fft = new DoubleFFT_1D(MAX_RAW_DATA); //DoubleFFT_1D fft = new DoubleFFT_1D(MAX_RAW_DATA);
//fft.realForward(rawData); //fft.realForward(rawData);
// FIXME - rawData should really be a circular buffer. // FIXME - rawData should really be a circular buffer.
@@ -774,7 +773,6 @@ public class SdDataSourcePebble extends SdDataSource {
} }
} }

View File

@@ -79,7 +79,7 @@ public class SdDataSourcePhone extends SdDataSource implements SensorEventListen
mUtil.writeToSysLogFile("SdDataSourcePhone.start()"); mUtil.writeToSysLogFile("SdDataSourcePhone.start()");
mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE); mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mSensor , SensorManager.SENSOR_DELAY_GAME); mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_GAME);
super.start(); super.start();
} }
@@ -95,22 +95,19 @@ public class SdDataSourcePhone extends SdDataSource implements SensorEventListen
} }
@Override @Override
public void onSensorChanged(SensorEvent event) { public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
// we initially start in mMode=0, which calculates the sample frequency returned by the sensor, then enters mMode=1, which is normal operation. // we initially start in mMode=0, which calculates the sample frequency returned by the sensor, then enters mMode=1, which is normal operation.
if (mMode == 0) { if (mMode == 0) {
if (mStartEvent==null) { if (mStartEvent == null) {
Log.v(TAG,"onSensorChanged(): mMode=0 - Starting Sample Rate Check - mNSamp = "+mSdData.mNsamp); Log.v(TAG, "onSensorChanged(): mMode=0 - Starting Sample Rate Check - mNSamp = " + mSdData.mNsamp);
Log.v(TAG,"onSensorChanged(): saving initial event data"); Log.v(TAG, "onSensorChanged(): saving initial event data");
mStartEvent = event; mStartEvent = event;
mStartTs = event.timestamp; mStartTs = event.timestamp;
mSdData.mNsamp = 0; mSdData.mNsamp = 0;
} else { } else {
mSdData.mNsamp ++; mSdData.mNsamp++;
} }
Log.v(TAG, "onSensorChanged - mMode=" + mMode + " mNSamp=" + mSdData.mNsamp); Log.v(TAG, "onSensorChanged - mMode=" + mMode + " mNSamp=" + mSdData.mNsamp);
if (mSdData.mNsamp >= mSdData.rawData.length) { if (mSdData.mNsamp >= mSdData.rawData.length) {
@@ -179,12 +176,10 @@ public class SdDataSourcePhone extends SdDataSource implements SensorEventListen
@Override @Override
public void onAccuracyChanged(Sensor sensor, int accuracy) { public void onAccuracyChanged(Sensor sensor, int accuracy) {
Log.v(TAG,"onAccuracyChanged()"); Log.v(TAG, "onAccuracyChanged()");
} }
} }

View File

@@ -260,7 +260,7 @@ public class SdServer extends Service implements SdDataReceiver {
Log.v(TAG, "onStartCommand() - calling updatePrefs()"); Log.v(TAG, "onStartCommand() - calling updatePrefs()");
updatePrefs(); updatePrefs();
Log.v(TAG, "onStartCommand: Datasource =" + mSdDataSourceName + ", phoneAppVersion="+mUtil.getAppVersionName()); Log.v(TAG, "onStartCommand: Datasource =" + mSdDataSourceName + ", phoneAppVersion=" + mUtil.getAppVersionName());
mSdData.dataSourceName = mSdDataSourceName; mSdData.dataSourceName = mSdDataSourceName;
mSdData.phoneAppVersion = mUtil.getAppVersionName(); mSdData.phoneAppVersion = mUtil.getAppVersionName();
switch (mSdDataSourceName) { switch (mSdDataSourceName) {
@@ -278,7 +278,7 @@ public class SdServer extends Service implements SdDataReceiver {
Log.v(TAG, "Selecting Network DataSource"); Log.v(TAG, "Selecting Network DataSource");
mUtil.writeToSysLogFile("SdServer.onStartCommand() - creating SdDataSourceNetwork"); mUtil.writeToSysLogFile("SdServer.onStartCommand() - creating SdDataSourceNetwork");
mSdDataSource = new SdDataSourceNetwork(this.getApplicationContext(), mHandler, this); mSdDataSource = new SdDataSourceNetwork(this.getApplicationContext(), mHandler, this);
Log.i(TAG,"Disabling remote logging when using network data source"); Log.i(TAG, "Disabling remote logging when using network data source");
mLogDataRemote = false; mLogDataRemote = false;
break; break;
case "Garmin": case "Garmin":
@@ -306,7 +306,7 @@ public class SdServer extends Service implements SdDataReceiver {
// Create our log manager. // Create our log manager.
mLm = new LogManager(this, mLogDataRemote, mLogDataRemoteMobile, mAuthToken, mEventDuration, mLm = new LogManager(this, mLogDataRemote, mLogDataRemoteMobile, mAuthToken, mEventDuration,
mRemoteLogPeriod, mLogNDA ,mAutoPruneDb, mDataRetentionPeriod, mSdData); mRemoteLogPeriod, mLogNDA, mAutoPruneDb, mDataRetentionPeriod, mSdData);
if (mSMSAlarm) { if (mSMSAlarm) {
Log.v(TAG, "Creating LocationFinder"); Log.v(TAG, "Creating LocationFinder");
@@ -316,7 +316,6 @@ public class SdServer extends Service implements SdDataReceiver {
mSdDataSource.start(); mSdDataSource.start();
// Record last time we sent an SMS so we can limit rate of SMS // Record last time we sent an SMS so we can limit rate of SMS
// sending to one per minute. We set it to one minute ago (60000 milliseconds) // sending to one per minute. We set it to one minute ago (60000 milliseconds)
mSMSTime = new Time(Time.getCurrentTimezone()); mSMSTime = new Time(Time.getCurrentTimezone());
@@ -478,7 +477,7 @@ public class SdServer extends Service implements SdDataReceiver {
Uri soundUri = null; Uri soundUri = null;
if ((alarmLevel == mCurrentNotificationAlarmLevel) && (isNotificationShown(NOTIFICATION_ID))) { if ((alarmLevel == mCurrentNotificationAlarmLevel) && (isNotificationShown(NOTIFICATION_ID))) {
Log.v(TAG,"showNotification - notification already shown at specified alarm level - not doing anything"); Log.v(TAG, "showNotification - notification already shown at specified alarm level - not doing anything");
return; return;
} }
Log.v(TAG, "showNotification() - alarmLevel=" + alarmLevel); Log.v(TAG, "showNotification() - alarmLevel=" + alarmLevel);
@@ -586,7 +585,7 @@ public class SdServer extends Service implements SdDataReceiver {
} }
} else { } else {
mUtil.showToast("OpenSeizureDetector: showMainActvity Failed to Display Activity"); mUtil.showToast("OpenSeizureDetector: showMainActvity Failed to Display Activity");
Log.e(TAG,"OpenSeizureDetector: showMainActvity Failed to Display Activity"); Log.e(TAG, "OpenSeizureDetector: showMainActvity Failed to Display Activity");
} }
} }
@@ -1345,7 +1344,7 @@ public class SdServer extends Service implements SdDataReceiver {
Log.i(TAG, "SmsTimer.onFinish() - Last Location is Null so sending first SMS without location."); Log.i(TAG, "SmsTimer.onFinish() - Last Location is Null so sending first SMS without location.");
} }
} else { } else {
Log.e(TAG,"SmsTimer.onFinish - mLocationFinder is null - this should not happen!"); Log.e(TAG, "SmsTimer.onFinish - mLocationFinder is null - this should not happen!");
mUtil.showToast(getString(R.string.mLocationFinder_is_null_msg)); mUtil.showToast(getString(R.string.mLocationFinder_is_null_msg));
} }
Log.i(TAG, "SmsTimer.onFinish() - Sending to " + mSMSNumbers.length + " Numbers"); Log.i(TAG, "SmsTimer.onFinish() - Sending to " + mSMSNumbers.length + " Numbers");
@@ -1373,7 +1372,6 @@ public class SdServer extends Service implements SdDataReceiver {
/** /**
* onSdLocationReceived - called with the best estimate location after mLocationReceiver times out. * onSdLocationReceived - called with the best estimate location after mLocationReceiver times out.
*
*/ */
private void sendSMS(String phoneNo, String msgStr) { private void sendSMS(String phoneNo, String msgStr) {
Log.i(TAG, "sendSMS() - Sending to " + phoneNo); Log.i(TAG, "sendSMS() - Sending to " + phoneNo);
@@ -1618,11 +1616,11 @@ public class SdServer extends Service implements SdDataReceiver {
Log.v(TAG, "checkEvents() - haveUnvalidatedEvent = " + Log.v(TAG, "checkEvents() - haveUnvalidatedEvent = " +
haveUnvalidatedEvent); haveUnvalidatedEvent);
if (haveUnvalidatedEvent) { if (haveUnvalidatedEvent) {
Log.v(TAG,"checkEvents() - showing event notification and cancelling datashare notification."); Log.v(TAG, "checkEvents() - showing event notification and cancelling datashare notification.");
showEventNotification(); showEventNotification();
mNM.cancel(DATASHARE_NOTIFICATION_ID); mNM.cancel(DATASHARE_NOTIFICATION_ID);
} else { } else {
Log.v(TAG,"checkEvents() - cancelling event and datashare notifications"); Log.v(TAG, "checkEvents() - cancelling event and datashare notifications");
mNM.cancel(EVENT_NOTIFICATION_ID); mNM.cancel(EVENT_NOTIFICATION_ID);
mNM.cancel(DATASHARE_NOTIFICATION_ID); mNM.cancel(DATASHARE_NOTIFICATION_ID);
} }
@@ -1678,7 +1676,7 @@ public class SdServer extends Service implements SdDataReceiver {
Uri soundUri = null; Uri soundUri = null;
if (isNotificationShown(EVENT_NOTIFICATION_ID)) { if (isNotificationShown(EVENT_NOTIFICATION_ID)) {
Log.v(TAG,"showEventNotification() - notification is already shown, so not doing anything"); Log.v(TAG, "showEventNotification() - notification is already shown, so not doing anything");
return; return;
} }
@@ -1727,7 +1725,7 @@ public class SdServer extends Service implements SdDataReceiver {
Uri soundUri = null; Uri soundUri = null;
if (isNotificationShown(DATASHARE_NOTIFICATION_ID)) { if (isNotificationShown(DATASHARE_NOTIFICATION_ID)) {
Log.v(TAG,"showDataShareNotification() - notification is already shown, so not doing anything"); Log.v(TAG, "showDataShareNotification() - notification is already shown, so not doing anything");
return; return;
} }
@@ -1781,6 +1779,7 @@ public class SdServer extends Service implements SdDataReceiver {
/** /**
* isNotificationShown - returns true if the specified notificationID is shown, otherwise returns false. * isNotificationShown - returns true if the specified notificationID is shown, otherwise returns false.
*
* @param notificationId - Notification ID to check * @param notificationId - Notification ID to check
* @return true if the specified notification is displayed, otherwise false. * @return true if the specified notification is displayed, otherwise false.
*/ */
@@ -1789,10 +1788,10 @@ public class SdServer extends Service implements SdDataReceiver {
StatusBarNotification[] notifications = mNotificationManager.getActiveNotifications(); StatusBarNotification[] notifications = mNotificationManager.getActiveNotifications();
for (StatusBarNotification notification : notifications) { for (StatusBarNotification notification : notifications) {
if (notification.getId() == notificationId) { if (notification.getId() == notificationId) {
return(true); return (true);
} }
} }
return(false); return (false);
} }
} }

View File

@@ -31,7 +31,6 @@ import android.os.IBinder;
import android.util.Log; import android.util.Log;
/** /**
* Defines callbacks for service binding, passed to bindService() * Defines callbacks for service binding, passed to bindService()
*/ */
@@ -68,11 +67,12 @@ public class SdServiceConnection implements ServiceConnection {
/** /**
* Check if the service has received seizure detector data. * Check if the service has received seizure detector data.
*
* @return true if data has been received. * @return true if data has been received.
*/ */
public boolean hasSdData() { public boolean hasSdData() {
if (mSdServer!=null) { if (mSdServer != null) {
if (mSdServer.mSdData!=null) { if (mSdServer.mSdData != null) {
return mSdServer.mSdData.haveData; return mSdServer.mSdData.haveData;
} }
} }
@@ -81,11 +81,12 @@ public class SdServiceConnection implements ServiceConnection {
/** /**
* Check if the service has received seizure detector settings. * Check if the service has received seizure detector settings.
*
* @return true if settings have been received. * @return true if settings have been received.
*/ */
public boolean hasSdSettings() { public boolean hasSdSettings() {
if (mSdServer!=null) { if (mSdServer != null) {
if (mSdServer.mSdData!=null) { if (mSdServer.mSdData != null) {
if (mSdServer.mSdData.haveSettings) { if (mSdServer.mSdData.haveSettings) {
return true; return true;
} }
@@ -96,11 +97,12 @@ public class SdServiceConnection implements ServiceConnection {
/** /**
* Check if the pebble watch is connected to the server device via bluetooth. * Check if the pebble watch is connected to the server device via bluetooth.
*
* @return true if watch connected. * @return true if watch connected.
*/ */
public boolean watchConnected() { public boolean watchConnected() {
if (mSdServer!=null) { if (mSdServer != null) {
if (mSdServer.mSdData!=null) { if (mSdServer.mSdData != null) {
if (mSdServer.mSdData.watchConnected) { if (mSdServer.mSdData.watchConnected) {
return true; return true;
} }
@@ -111,11 +113,12 @@ public class SdServiceConnection implements ServiceConnection {
/** /**
* Check if the openseizuredetector pebble watch app is running.. * Check if the openseizuredetector pebble watch app is running..
*
* @return true if watch app running. * @return true if watch app running.
*/ */
public boolean pebbleAppRunning() { public boolean pebbleAppRunning() {
if (mSdServer!=null) { if (mSdServer != null) {
if (mSdServer.mSdData!=null) { if (mSdServer.mSdData != null) {
if (mSdServer.mSdData.watchAppRunning) { if (mSdServer.mSdData.watchAppRunning) {
return true; return true;
} }

View File

@@ -114,7 +114,7 @@ public class SdWebServer extends NanoHTTPD {
answer = mSdServer.mSdDataSource.updateFromJSON(files.get("postData")); answer = mSdServer.mSdDataSource.updateFromJSON(files.get("postData"));
} }
} else { } else {
Log.i(TAG,"Web server received data, but datasource is not set to 'Garmin' - Ignoring"); Log.i(TAG, "Web server received data, but datasource is not set to 'Garmin' - Ignoring");
mUtil.showToast("Web server received data, but datasource is not set to 'Garmin' - Ignoring"); mUtil.showToast("Web server received data, but datasource is not set to 'Garmin' - Ignoring");
} }
break; break;
@@ -152,10 +152,10 @@ public class SdWebServer extends NanoHTTPD {
Log.v(TAG, " files=" + files.toString()); Log.v(TAG, " files=" + files.toString());
// Send the data to the SdDataSource so the app can pick it up. // Send the data to the SdDataSource so the app can pick it up.
if (parameters != null) { if (parameters != null) {
Log.v(TAG,"passing parameters to data source"); Log.v(TAG, "passing parameters to data source");
answer = mSdServer.mSdDataSource.updateFromJSON(parameters.get("dataObj").toString()); answer = mSdServer.mSdDataSource.updateFromJSON(parameters.get("dataObj").toString());
} else { } else {
Log.v(TAG,"Passing postData to data source"); Log.v(TAG, "Passing postData to data source");
answer = mSdServer.mSdDataSource.updateFromJSON(files.get("postData")); answer = mSdServer.mSdDataSource.updateFromJSON(files.get("postData"));
} }
//mSdServer.mSdDataSource.updateFromJSON(parameters.toString()); //mSdServer.mSdDataSource.updateFromJSON(parameters.toString());
@@ -209,12 +209,12 @@ public class SdWebServer extends NanoHTTPD {
} else { } else {
Log.v(TAG, "WebServer.serve() - Unknown uri -" + Log.v(TAG, "WebServer.serve() - Unknown uri -" +
uri); uri);
answer = "{'msg' : 'Unknown URI: "+uri+"'}"; answer = "{'msg' : 'Unknown URI: " + uri + "'}";
} }
} }
res = new NanoHTTPD.Response(answer); res = new NanoHTTPD.Response(answer);
res.setMimeType(responseMimeType); res.setMimeType(responseMimeType);
Log.v(TAG,"WebServer.serve() - returning "+res.getData()+", mime="+res.getMimeType()+", status="+res.getStatus()); Log.v(TAG, "WebServer.serve() - returning " + res.getData() + ", mime=" + res.getMimeType() + ", status=" + res.getStatus());
return (res); return (res);
} }
@@ -248,7 +248,7 @@ public class SdWebServer extends NanoHTTPD {
try { try {
JSONObject jsonObj = new JSONObject(); JSONObject jsonObj = new JSONObject();
File[] fileList = mUtil.getDataFilesList(); File[] fileList = mUtil.getDataFilesList();
Log.v(TAG, "serveLogFile(): fileList=" + fileList.toString()+", length="+fileList.length); Log.v(TAG, "serveLogFile(): fileList=" + fileList.toString() + ", length=" + fileList.length);
JSONArray arr = new JSONArray(); JSONArray arr = new JSONArray();
for (int i = 0; i < fileList.length; i++) { for (int i = 0; i < fileList.length; i++) {
Log.v(TAG, "serveLogFile(): file[" + i + "]=" + fileList[i]); Log.v(TAG, "serveLogFile(): file[" + i + "]=" + fileList[i]);

View File

@@ -113,8 +113,6 @@ public class StartupActivity extends AppCompatActivity {
}; };
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@@ -205,17 +203,17 @@ public class StartupActivity extends AppCompatActivity {
if (mUtil.isServerRunning()) { if (mUtil.isServerRunning()) {
Log.i(TAG, "onStart() - server running - stopping it - isServerRunning="+mUtil.isServerRunning()); Log.i(TAG, "onStart() - server running - stopping it - isServerRunning=" + mUtil.isServerRunning());
mUtil.writeToSysLogFile("StartupActivity.onStart() - server already running - stopping it."); mUtil.writeToSysLogFile("StartupActivity.onStart() - server already running - stopping it.");
mUtil.stopServer(); mUtil.stopServer();
} else { } else {
Log.i(TAG, "onStart() - server not running - isServerRunning="+mUtil.isServerRunning()); Log.i(TAG, "onStart() - server not running - isServerRunning=" + mUtil.isServerRunning());
} }
// Wait 0.1 second to give the server chance to shutdown in case we have just shut it down below, then start it // Wait 0.1 second to give the server chance to shutdown in case we have just shut it down below, then start it
mHandler.postDelayed(new Runnable() { mHandler.postDelayed(new Runnable() {
public void run() { public void run() {
mUtil.writeToSysLogFile("StartupActivity.onStart() - starting server after delay - isServerRunning="+mUtil.isServerRunning()); mUtil.writeToSysLogFile("StartupActivity.onStart() - starting server after delay - isServerRunning=" + mUtil.isServerRunning());
Log.i(TAG, "onStart() - starting server after delay -isServerRunning="+mUtil.isServerRunning()); Log.i(TAG, "onStart() - starting server after delay -isServerRunning=" + mUtil.isServerRunning());
mUtil.startServer(); mUtil.startServer();
// Bind to the service. // Bind to the service.
Log.i(TAG, "onStart() - binding to server"); Log.i(TAG, "onStart() - binding to server");
@@ -232,7 +230,7 @@ public class StartupActivity extends AppCompatActivity {
} else { } else {
boolean preventBatteryOptWarning = SP.getBoolean("PreventBatteryOptWarning", false); boolean preventBatteryOptWarning = SP.getBoolean("PreventBatteryOptWarning", false);
if (preventBatteryOptWarning) { if (preventBatteryOptWarning) {
Log.i(TAG,"PreventBatteryOptWarning is true, so not displaying battery optimisation dialog"); Log.i(TAG, "PreventBatteryOptWarning is true, so not displaying battery optimisation dialog");
} else { } else {
Log.e(TAG, "Power Management Problem - not ignoring Battery Optimisations"); Log.e(TAG, "Power Management Problem - not ignoring Battery Optimisations");
//mUtil.showToast("WARNING - Phone is Optimising OpenSeizureDetector Battery Usage - this is likely to prevent it working correctly when running on battery!"); //mUtil.showToast("WARNING - Phone is Optimising OpenSeizureDetector Battery Usage - this is likely to prevent it working correctly when running on battery!");
@@ -302,7 +300,7 @@ public class StartupActivity extends AppCompatActivity {
pb = (ProgressBar) findViewById(R.id.progressBar1); pb = (ProgressBar) findViewById(R.id.progressBar1);
if (arePermissionsOK()) { if (arePermissionsOK()) {
if (smsAlarmsActive && !areSMSPermissions1OK()) { if (smsAlarmsActive && !areSMSPermissions1OK()) {
Log.i(TAG,"SMS permissions NOT OK"); Log.i(TAG, "SMS permissions NOT OK");
tv.setText(getString(R.string.SmsPermissionWarning)); tv.setText(getString(R.string.SmsPermissionWarning));
tv.setBackgroundColor(alarmColour); tv.setBackgroundColor(alarmColour);
tv.setTextColor(alarmTextColour); tv.setTextColor(alarmTextColour);
@@ -311,14 +309,14 @@ public class StartupActivity extends AppCompatActivity {
requestSMSPermissions(); requestSMSPermissions();
allOk = false; allOk = false;
} else if (smsAlarmsActive && !areLocationPermissions1OK()) { } else if (smsAlarmsActive && !areLocationPermissions1OK()) {
Log.i(TAG,"Location permissions NOT OK"); Log.i(TAG, "Location permissions NOT OK");
tv.setText(getString(R.string.SmsPermissionWarning)); tv.setText(getString(R.string.SmsPermissionWarning));
tv.setBackgroundColor(alarmColour); tv.setBackgroundColor(alarmColour);
tv.setTextColor(alarmTextColour); tv.setTextColor(alarmTextColour);
requestLocationPermissions1(); requestLocationPermissions1();
allOk = false; allOk = false;
} else if (smsAlarmsActive && !areLocationPermissions2OK()) { } else if (smsAlarmsActive && !areLocationPermissions2OK()) {
Log.i(TAG,"Location permissions2 NOT OK"); Log.i(TAG, "Location permissions2 NOT OK");
tv.setText(getString(R.string.SmsPermissionWarning)); tv.setText(getString(R.string.SmsPermissionWarning));
tv.setBackgroundColor(alarmColour); tv.setBackgroundColor(alarmColour);
tv.setTextColor(alarmTextColour); tv.setTextColor(alarmTextColour);
@@ -640,7 +638,7 @@ public class StartupActivity extends AppCompatActivity {
for (int i = 0; i < SMS_PERMISSIONS_1.length; i++) { for (int i = 0; i < SMS_PERMISSIONS_1.length; i++) {
if (ContextCompat.checkSelfPermission(this, SMS_PERMISSIONS_1[i]) if (ContextCompat.checkSelfPermission(this, SMS_PERMISSIONS_1[i])
!= PackageManager.PERMISSION_GRANTED) { != PackageManager.PERMISSION_GRANTED) {
Log.i(TAG, "areSMSPermissions1OK: "+SMS_PERMISSIONS_1[i] + " Permission Not Granted"); Log.i(TAG, "areSMSPermissions1OK: " + SMS_PERMISSIONS_1[i] + " Permission Not Granted");
allOk = false; allOk = false;
} }
} }
@@ -663,7 +661,7 @@ public class StartupActivity extends AppCompatActivity {
public boolean areLocationPermissions2OK() { public boolean areLocationPermissions2OK() {
boolean allOk = true; boolean allOk = true;
Log.v(TAG, "areSMSPermissions2OK() - SDK="+android.os.Build.VERSION.SDK_INT); Log.v(TAG, "areSMSPermissions2OK() - SDK=" + android.os.Build.VERSION.SDK_INT);
if (android.os.Build.VERSION.SDK_INT < 29) { if (android.os.Build.VERSION.SDK_INT < 29) {
Log.d(TAG, "areLocationPermission2OK() - SDK <29 (Android 10) so permission not required"); Log.d(TAG, "areLocationPermission2OK() - SDK <29 (Android 10) so permission not required");
allOk = true; allOk = true;
@@ -712,7 +710,7 @@ public class StartupActivity extends AppCompatActivity {
.setPositiveButton(getString(R.string.okBtnTxt), new DialogInterface.OnClickListener() { .setPositiveButton(getString(R.string.okBtnTxt), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) { public void onClick(DialogInterface dialog, int id) {
dialog.cancel(); dialog.cancel();
Log.i(TAG,"requestSMSPermissions(): Launching ActivityCompat.requestPermissions()"); Log.i(TAG, "requestSMSPermissions(): Launching ActivityCompat.requestPermissions()");
ActivityCompat.requestPermissions(StartupActivity.this, ActivityCompat.requestPermissions(StartupActivity.this,
SMS_PERMISSIONS_1, SMS_PERMISSIONS_1,
45); 45);
@@ -773,7 +771,7 @@ public class StartupActivity extends AppCompatActivity {
.setPositiveButton(getString(R.string.okBtnTxt), new DialogInterface.OnClickListener() { .setPositiveButton(getString(R.string.okBtnTxt), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) { public void onClick(DialogInterface dialog, int id) {
dialog.cancel(); dialog.cancel();
Log.i(TAG,"requestSMSPermissions(): Launching ActivityCompat.requestPermissions()"); Log.i(TAG, "requestSMSPermissions(): Launching ActivityCompat.requestPermissions()");
ActivityCompat.requestPermissions(StartupActivity.this, ActivityCompat.requestPermissions(StartupActivity.this,
LOCATION_PERMISSIONS_2, LOCATION_PERMISSIONS_2,
44); 44);

View File

@@ -139,19 +139,20 @@ public abstract class WebApiConnection {
/** /**
* Mark all of the events with IDs contained in eventList as the specified type and subtype. * Mark all of the events with IDs contained in eventList as the specified type and subtype.
*
* @param eventList list of String IDs of the events to mark as unknown. * @param eventList list of String IDs of the events to mark as unknown.
* @param typeStr * @param typeStr
* @param subTypeStr * @param subTypeStr
* @return true if request sent successfully or false. * @return true if request sent successfully or false.
*/ */
private boolean markEventsAsTypeSubType(ArrayList<String>eventList, String typeStr, String subTypeStr) { private boolean markEventsAsTypeSubType(ArrayList<String> eventList, String typeStr, String subTypeStr) {
if (eventList.size()>0) { if (eventList.size() > 0) {
Log.i(TAG,"markEventsAsTypeSubtype - eventList.size()="+eventList.size()); Log.i(TAG, "markEventsAsTypeSubtype - eventList.size()=" + eventList.size());
Log.i(TAG,"markEventsAsSypeSubtype - eventList(0) = "+eventList.get(0)); Log.i(TAG, "markEventsAsSypeSubtype - eventList(0) = " + eventList.get(0));
getEvent(eventList.get(0), new WebApiConnection.JSONObjectCallback() { getEvent(eventList.get(0), new WebApiConnection.JSONObjectCallback() {
@Override @Override
public void accept(JSONObject eventObj) { public void accept(JSONObject eventObj) {
Log.v(TAG, "markEventsAsTypeSubtype.getEvent.callback: "+eventObj); Log.v(TAG, "markEventsAsTypeSubtype.getEvent.callback: " + eventObj);
if (eventObj != null) { if (eventObj != null) {
Log.v(TAG, "markEventsAsTypeSubtype.getEvent.callback: eventObj=" + eventObj.toString()); Log.v(TAG, "markEventsAsTypeSubtype.getEvent.callback: eventObj=" + eventObj.toString());
try { try {
@@ -161,7 +162,7 @@ public abstract class WebApiConnection {
if (notesStr == null) notesStr = new String(""); if (notesStr == null) notesStr = new String("");
notesStr = notesStr + " bulk type/subtype set"; notesStr = notesStr + " bulk type/subtype set";
eventObj.put("desc", notesStr); eventObj.put("desc", notesStr);
updateEvent(eventObj,new WebApiConnection.JSONObjectCallback() { updateEvent(eventObj, new WebApiConnection.JSONObjectCallback() {
@Override @Override
public void accept(JSONObject eventObj) { public void accept(JSONObject eventObj) {
if (eventObj != null) { if (eventObj != null) {
@@ -176,7 +177,7 @@ public abstract class WebApiConnection {
} }
}); });
} catch (JSONException e) { } catch (JSONException e) {
Log.e(TAG,"markEventsAsTypeSubtype.getEvent.callback: Error editing eventObj"); Log.e(TAG, "markEventsAsTypeSubtype.getEvent.callback: Error editing eventObj");
mUtil.showToast("markEventsAsTypeSubtype.getEvent.callback: Error editing eventObj"); mUtil.showToast("markEventsAsTypeSubtype.getEvent.callback: Error editing eventObj");
} }
} else { } else {
@@ -186,11 +187,11 @@ public abstract class WebApiConnection {
} }
}); });
} else { } else {
Log.i(TAG,"markEventsAsTypeSubtype(): No more events to Modify"); Log.i(TAG, "markEventsAsTypeSubtype(): No more events to Modify");
mUtil.showToast("No more unvalidated events to modify."); mUtil.showToast("No more unvalidated events to modify.");
} }
return(true); return (true);
} }
/** /**
@@ -240,6 +241,7 @@ public abstract class WebApiConnection {
markUnverifiedEventsAsTypeSubtype("Unknown", ""); markUnverifiedEventsAsTypeSubtype("Unknown", "");
return true; return true;
} }
public boolean markUnverifiedEventsAsFalseAlarm() { public boolean markUnverifiedEventsAsFalseAlarm() {
markUnverifiedEventsAsTypeSubtype("False Alarm", ""); markUnverifiedEventsAsTypeSubtype("False Alarm", "");
return true; return true;

View File

@@ -95,7 +95,7 @@ public class WebApiConnection_firebase extends WebApiConnection {
} else { } else {
try { try {
JSONObject retObj = new JSONObject(); JSONObject retObj = new JSONObject();
retObj.put("id",auth.getCurrentUser().getUid()); retObj.put("id", auth.getCurrentUser().getUid());
retObj.put("username", auth.getCurrentUser().getDisplayName()); retObj.put("username", auth.getCurrentUser().getDisplayName());
retObj.put("email", auth.getCurrentUser().getEmail()); retObj.put("email", auth.getCurrentUser().getEmail());
callback.accept(retObj); callback.accept(retObj);
@@ -424,7 +424,7 @@ public class WebApiConnection_firebase extends WebApiConnection {
} }
public boolean getCnnModelInfo(JSONObjectCallback callback) { public boolean getCnnModelInfo(JSONObjectCallback callback) {
Log.w(TAG,"getCnnModelInfo() - FIXME - not implemented yet!"); Log.w(TAG, "getCnnModelInfo() - FIXME - not implemented yet!");
return false; return false;
} }

View File

@@ -41,7 +41,7 @@ public class WebApiConnection_osdapi extends WebApiConnection {
public void close() { public void close() {
super.close(); super.close();
Log.i(TAG,"stop()"); Log.i(TAG, "stop()");
mQueue.stop(); mQueue.stop();
} }
@@ -110,8 +110,6 @@ public class WebApiConnection_osdapi extends WebApiConnection {
} }
public boolean isLoggedIn() { public boolean isLoggedIn() {
String authToken = getStoredToken(); String authToken = getStoredToken();
Log.v(TAG, "isLoggedIn(): token=" + authToken); Log.v(TAG, "isLoggedIn(): token=" + authToken);
@@ -119,7 +117,7 @@ public class WebApiConnection_osdapi extends WebApiConnection {
Log.v(TAG, "isLogged in - not logged in"); Log.v(TAG, "isLogged in - not logged in");
return (false); return (false);
} else { } else {
Log.v(TAG,"isLoggedIn - logged in ok"); Log.v(TAG, "isLoggedIn - logged in ok");
return (true); return (true);
} }
@@ -315,7 +313,7 @@ public class WebApiConnection_osdapi extends WebApiConnection {
} else { } else {
Log.e(TAG, "getEvents(): Error: - request returned null networkResponse"); Log.e(TAG, "getEvents(): Error: - request returned null networkResponse");
} }
} else{ } else {
Log.e(TAG, "getEvents(): Error: - request returned null response"); Log.e(TAG, "getEvents(): Error: - request returned null response");
} }
callback.accept(null); callback.accept(null);
@@ -517,6 +515,7 @@ public class WebApiConnection_osdapi extends WebApiConnection {
/** /**
* Retieve the user profile of the authenticated user from the server, and return it to the callback function. * Retieve the user profile of the authenticated user from the server, and return it to the callback function.
*
* @param callback - function to be called with a JSONObject as a parameter that contains the user profile data. * @param callback - function to be called with a JSONObject as a parameter that contains the user profile data.
* @return true if request sent successfully, or else false. * @return true if request sent successfully, or else false.
*/ */
@@ -572,8 +571,6 @@ public class WebApiConnection_osdapi extends WebApiConnection {
} }
/** /**
* Retrieve the file containing the standard event types from the server. * Retrieve the file containing the standard event types from the server.
* Calls the specified callback function, passing a JSONObject as a parameter when the data has been received and parsed. * Calls the specified callback function, passing a JSONObject as a parameter when the data has been received and parsed.
@@ -680,11 +677,10 @@ public class WebApiConnection_osdapi extends WebApiConnection {
} }
/** /**
* Retrieve a trivial file from the server to check we have a good server connection. * Retrieve a trivial file from the server to check we have a good server connection.
* sets mServerConnectionOk. * sets mServerConnectionOk.
*
* @return true if request sent successfully or else false. * @return true if request sent successfully or else false.
*/ */
public boolean checkServerConnection() { public boolean checkServerConnection() {
@@ -714,7 +710,7 @@ public class WebApiConnection_osdapi extends WebApiConnection {
} }
public boolean getCnnModelInfo(JSONObjectCallback callback) { public boolean getCnnModelInfo(JSONObjectCallback callback) {
Log.w(TAG,"getCnnModelInfo() - FIXME - not implemented yet!"); Log.w(TAG, "getCnnModelInfo() - FIXME - not implemented yet!");
return false; return false;
} }