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);
// Components required only for osdapi backend
if (LogManager.USE_FIREBASE_BACKEND) { }
else {
if (LogManager.USE_FIREBASE_BACKEND) {
} else {
mConnection = new SdServiceConnection(getApplicationContext());
Button registerBtn = (Button) findViewById(R.id.RegisterBtn);
@@ -84,7 +84,7 @@ public class AuthenticateActivity extends AppCompatActivity {
new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.v(TAG,"aboutDataSharingBtn.onClick()");
Log.v(TAG, "aboutDataSharingBtn.onClick()");
String url = OsdUtil.DATA_SHARING_URL;
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
@@ -97,7 +97,7 @@ public class AuthenticateActivity extends AppCompatActivity {
new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.v(TAG,"privacyPolicyBtn.onClick()");
Log.v(TAG, "privacyPolicyBtn.onClick()");
String url = OsdUtil.PRIVACY_POLICY_URL;
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
@@ -150,14 +150,13 @@ public class AuthenticateActivity extends AppCompatActivity {
}
private void initialiseServiceConnection() {
Log.v(TAG,"initialiseServiceConnection()");
Log.v(TAG, "initialiseServiceConnection()");
mLm = mConnection.mSdServer.mLm;
mWac = mConnection.mSdServer.mLm.mWac;
updateUi();
}
// Called after the Firebase Auth UI has completed
private ActivityResultLauncher<Intent> signInLauncher = registerForActivityResult(
new FirebaseAuthUIActivityResultContract(),
@@ -170,13 +169,13 @@ public class AuthenticateActivity extends AppCompatActivity {
private void updateUi() {
Log.v(TAG,"updateUi()");
Log.v(TAG, "updateUi()");
LinearLayout loginLl = (LinearLayout) findViewById(R.id.login_ui);
LinearLayout osdApiLoginLl = (LinearLayout) findViewById(R.id.login_osdapi_ui);
LinearLayout logoutLl = (LinearLayout) findViewById(R.id.logout_ui);
if (mWac == null) {
Log.i(TAG,"mWac is null - not updating UI");
Log.i(TAG, "mWac is null - not updating UI");
return;
}
@@ -204,7 +203,7 @@ public class AuthenticateActivity extends AppCompatActivity {
}
});
} else {
Log.v(TAG,"updateUi() - not logged in..");
Log.v(TAG, "updateUi() - not logged in..");
loginLl.setVisibility(View.VISIBLE);
logoutLl.setVisibility(View.GONE);
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.
String uname = mUnameEt.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() {
@Override
public void accept(String retVal) {
if (retVal != null) {
Log.d(TAG,"Authentication Success - token is "+retVal);
Log.d(TAG, "Authentication Success - token is " + retVal);
mUtil.showToast("Login Successful");
saveAuthToken(retVal);
updateUi();
} 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.writeToSysLogFile("AuthActivity - Authorisation failed for "+uname+", "+passwd);
mUtil.writeToSysLogFile("AuthActivity - Authorisation failed for " + uname + ", " + passwd);
}
}
});
@@ -273,29 +272,29 @@ public class AuthenticateActivity extends AppCompatActivity {
};
View.OnClickListener onLogout = new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.v(TAG, "onLogout");
if (LogManager.USE_FIREBASE_BACKEND) {
AuthUI.getInstance()
.signOut(getApplicationContext())
.addOnCompleteListener(new OnCompleteListener<Void>() {
public void onComplete(@NonNull Task<Void> task) {
// user is now signed out
updateUi();
}
});
@Override
public void onClick(View view) {
Log.v(TAG, "onLogout");
if (LogManager.USE_FIREBASE_BACKEND) {
AuthUI.getInstance()
.signOut(getApplicationContext())
.addOnCompleteListener(new OnCompleteListener<Void>() {
public void onComplete(@NonNull Task<Void> task) {
// user is now signed out
updateUi();
}
});
} else {
if (mWac != null) {
mWac.logout();
saveAuthToken(null);
} else {
if (mWac != null) {
mWac.logout();
saveAuthToken(null);
} else {
Log.e(TAG,"logout() - mWac is null - not doing anything");
}
Log.e(TAG, "logout() - mWac is null - not doing anything");
}
updateUi();
}
};
updateUi();
}
};
View.OnClickListener onRegister =
new View.OnClickListener() {

View File

@@ -292,7 +292,7 @@ public class BLEScanActivity extends ListActivity {
try {
mBluetoothLeScanner.startScan(mLeScanCallback);
} 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.show();
@@ -304,7 +304,7 @@ public class BLEScanActivity extends ListActivity {
try {
mBluetoothLeScanner.stopScan(mLeScanCallback);
} 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.show();
}
@@ -360,7 +360,7 @@ public class BLEScanActivity extends ListActivity {
try {
Log.v(TAG, "addDevice - " + device.getName());
} catch (SecurityException e) {
Log.e(TAG,"addDevice() - security exception getting device name");
Log.e(TAG, "addDevice() - security exception getting device name");
}
mLeDevices.add(device);
}
@@ -425,7 +425,7 @@ public class BLEScanActivity extends ListActivity {
try {
Log.v(TAG, "ScanCallback - " + result.getDevice().getName());
} 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.notifyDataSetChanged();

View File

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

View File

@@ -6,9 +6,9 @@ import java.util.ArrayList;
public class CircBuf {
/*
* A circular buffer used to calculate rolling averages
* Based loosely on https://gist.github.com/hardik-vala/dc2d19fa7c5108536fbbff96b4fcf105
*/
* A circular buffer used to calculate rolling averages
* Based loosely on https://gist.github.com/hardik-vala/dc2d19fa7c5108536fbbff96b4fcf105
*/
private final static String TAG = "CircBuf";
private double[] mBuff;
@@ -35,7 +35,7 @@ public class CircBuf {
/**
* 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);
if (mIsFull)
mHead = (mHead + 1) % mBuffLen;
@@ -44,7 +44,7 @@ public class CircBuf {
mTail = (mTail + 1) % mBuffLen;
if (mTail == mHead)
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);
}
@@ -60,7 +60,7 @@ public class CircBuf {
if (mHead > mTail) {
numElements = (mTail + mBuffLen) - mHead;
} else {
numElements = mTail-mHead;
numElements = mTail - mHead;
}
}
return numElements;
@@ -68,11 +68,12 @@ public class CircBuf {
/**
* Returns a double array of buffer items in order of their insertion time
*
* @return double[] of buffer items
*/
public double[] getVals () {
public double[] getVals() {
int numElements = getNumVals();
System.out.println(TAG+" getVals() - numElements=" + numElements);
System.out.println(TAG + " getVals() - numElements=" + numElements);
double[] retArr = new double[numElements];
for (int i = 0; i < numElements; i++) {
retArr[i] = mBuff[(mHead + i) % mBuffLen];
@@ -89,18 +90,18 @@ public class CircBuf {
int hrCount = 0;
double valArr[] = getVals();
double retVal;
for (int n=0; n<valArr.length; n++) {
for (int n = 0; n < valArr.length; n++) {
if (valArr[n] != mErrVal) {
hrSum += valArr[n];
hrCount++;
}
}
if (hrCount>0) {
if (hrCount > 0) {
retVal = hrSum / hrCount;
} else {
retVal = -1;
}
return(retVal);
return (retVal);
}
}

View File

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

View File

@@ -226,14 +226,14 @@ public class ExportDataActivity extends AppCompatActivity
public void hideProgressBar() {
runOnUiThread(new Runnable() {
public void run() {
ProgressBar pb = (ProgressBar) findViewById(R.id.exportPb);
pb.setIndeterminate(true);
pb.setVisibility(View.INVISIBLE);
mExportBtn.setEnabled(true);
mExportBtn.setVisibility(View.VISIBLE);
public void run() {
ProgressBar pb = (ProgressBar) findViewById(R.id.exportPb);
pb.setIndeterminate(true);
pb.setVisibility(View.INVISIBLE);
mExportBtn.setEnabled(true);
mExportBtn.setVisibility(View.VISIBLE);
}
}
});
}
@@ -265,8 +265,8 @@ public class ExportDataActivity extends AppCompatActivity
// Perform operations on the document using its URI.
//mUtil.showToast("URI="+uri.toString());
Log.v(TAG, "onActivityResult() - exporting to file " + uri.toString());
mLm.exportToCsvFile(mEndDate, mDuration,uri, (boolean b)-> {
Log.v(TAG,"onActivityResult callback");
mLm.exportToCsvFile(mEndDate, mDuration, uri, (boolean b) -> {
Log.v(TAG, "onActivityResult callback");
hideProgressBar();
});

View File

@@ -9,6 +9,7 @@ import android.widget.TextView;
public class FragmentDataSharing extends FragmentOsdBaseClass {
String TAG = "FragmentDataSharing";
public FragmentDataSharing() {
// Required empty public constructor
}
@@ -28,9 +29,9 @@ public class FragmentDataSharing extends FragmentOsdBaseClass {
@Override
protected void updateUi() {
Log.d(TAG,"updateUi()");
Log.d(TAG, "updateUi()");
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) {
tv.setText("Bound to Server");
} else {

View File

@@ -52,7 +52,7 @@ public class FragmentHrAlg extends FragmentOsdBaseClass {
@Override
public void onCreate(Bundle 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.setValueTextColor(Color.BLACK);
lineDataSet.setValueTextSize(18f);
@@ -99,6 +99,7 @@ public class FragmentHrAlg extends FragmentOsdBaseClass {
yAxis2.setDrawGridLines(false);
yAxis2.setEnabled(false);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
@@ -118,9 +119,9 @@ public class FragmentHrAlg extends FragmentOsdBaseClass {
tvCurrent = mRootView.findViewById(R.id.textView2);
if (Objects.nonNull(tvCurrent)) {
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))
tvAvgAHr.setText( String.valueOf((short)mConnection.mSdServer.mSdData
tvAvgAHr.setText(String.valueOf((short) mConnection.mSdServer.mSdData
.mAdaptiveHrAverage));
tvCurrent.setText(new StringBuilder()
.append("\nResult of checks: Adaptive Hr Alarm Standing: ")
@@ -137,16 +138,16 @@ public class FragmentHrAlg extends FragmentOsdBaseClass {
int nHistArr = hrHist.getNumVals();
double hrHistArr[] = hrHist.getVals(); // This gives us a simple vector of hr values to plot.
if (Objects.nonNull(hrHist) && nHistArr > 0) {
Log.v(TAG, "hrHist.getNumVals="+nHistArr);
Log.v(TAG, "hrHist.getNumVals=" + nHistArr);
lineDataSet.clear();
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]);
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());
lineDataSet.setColors(new int[] {0xffff0000});
Log.d(TAG, "xVals=" + Arrays.toString(xVals) + ", lneDataSet=" + lineDataSet.toSimpleString());
lineDataSet.setColors(new int[]{0xffff0000});
LineData hrHistLineData = new LineData(xVals, lineDataSet);
@@ -154,7 +155,7 @@ public class FragmentHrAlg extends FragmentOsdBaseClass {
mLineChart.getData().notifyDataChanged();
mLineChart.notifyDataSetChanged();
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)
+ String.format("%.1f", xSpan)
+ " " + getString(R.string.minutes));

View File

@@ -9,6 +9,7 @@ import android.widget.TextView;
public class FragmentMlAlg extends FragmentOsdBaseClass {
String TAG = "FragmentMlAlg";
public FragmentMlAlg() {
// Required empty public constructor
}
@@ -28,9 +29,9 @@ public class FragmentMlAlg extends FragmentOsdBaseClass {
@Override
protected void updateUi() {
Log.d(TAG,"updateUi()");
Log.d(TAG, "updateUi()");
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) {
tv.setText("Bound to Server");
} else {

View File

@@ -23,6 +23,7 @@ import java.util.ArrayList;
public class FragmentOsdAlg extends FragmentOsdBaseClass {
String TAG = "FragmentOsdAlg";
public FragmentOsdAlg() {
// Required empty public constructor
}
@@ -71,7 +72,7 @@ public class FragmentOsdAlg extends FragmentOsdBaseClass {
} else
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 + ")");
ProgressBar pb;
@@ -86,7 +87,7 @@ public class FragmentOsdAlg extends FragmentOsdBaseClass {
pbDrawable = mRootView.getResources().getDrawable(R.drawable.progress_bar_red);
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 + ")");
pb = ((ProgressBar) mRootView.findViewById(R.id.spectrumProgressBar));

View File

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

View File

@@ -13,6 +13,7 @@ import androidx.appcompat.widget.LinearLayoutCompat;
public class FragmentSystem extends FragmentOsdBaseClass {
String TAG = "FragmentSystem";
public FragmentSystem() {
// Required empty public constructor
}
@@ -51,13 +52,12 @@ public class FragmentSystem extends FragmentOsdBaseClass {
}
@Override
protected void updateUi() {
//Log.d(TAG,"updateUi()");
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) {
tv.setText("Bound to Server");
tv.setTextColor(okTextColour);
@@ -66,7 +66,7 @@ public class FragmentSystem extends FragmentOsdBaseClass {
tv.setTextColor(warnTextColour);
return;
}
LinearLayoutCompat ll = (LinearLayoutCompat)mRootView.findViewById(R.id.fragment_ll);
LinearLayoutCompat ll = (LinearLayoutCompat) mRootView.findViewById(R.id.fragment_ll);
if (mUtil.isServerRunning()) {
ll.setBackgroundColor(okColour);
@@ -174,8 +174,8 @@ public class FragmentSystem extends FragmentOsdBaseClass {
}
}
} catch (Exception e) {
Log.e(TAG, "UpdateUi: Exception - ");
e.printStackTrace();
}
Log.e(TAG, "UpdateUi: Exception - ");
e.printStackTrace();
}
}
}

View File

@@ -9,6 +9,7 @@ import android.widget.TextView;
public class FragmentWebServer extends FragmentOsdBaseClass {
String TAG = "FragmentWebServer";
public FragmentWebServer() {
// Required empty public constructor
}
@@ -28,9 +29,9 @@ public class FragmentWebServer extends FragmentOsdBaseClass {
@Override
protected void updateUi() {
Log.d(TAG,"updateUi()");
Log.d(TAG, "updateUi()");
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) {
tv.setText("Bound to Server");
} else {

View File

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

View File

@@ -2,6 +2,7 @@ package uk.org.openseizuredetector;
/**
*
*/
import android.content.Context;
@@ -21,8 +22,7 @@ interface SdLocationReceiver {
}
public class LocationFinder implements LocationListener
{
public class LocationFinder implements LocationListener {
SdLocationReceiver mSdLocationReceiver = null;
Location mLastLocation = null;
OsdUtil mUtil;
@@ -33,7 +33,7 @@ public class LocationFinder implements LocationListener
LocationListener mLocationListener;
int mTimeoutPeriod = 60; // Location search timeout period in seconds.
String TAG="LocationFinder";
String TAG = "LocationFinder";
LocationFinder(Context context) {
mHandler = new Handler();
@@ -56,7 +56,6 @@ public class LocationFinder implements LocationListener
}
public Location getLastLocation() {
return mLastLocation;
}
@@ -82,7 +81,7 @@ public class LocationFinder implements LocationListener
mTimeoutTimer.schedule(new TimerTask() {
@Override
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");
mLocationManager.removeUpdates(mLocationListener);
mSdLocationReceiver.onSdLocationReceived(mLastLocation);
@@ -93,7 +92,7 @@ public class LocationFinder implements LocationListener
@Override
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 (mLastLocation == null) {

View File

@@ -498,7 +498,7 @@ public class LogManager {
* @param endDate end date of period to export (Date type)
* @param duration duration in hours of period to export (double)
* @param uri uri of file to save.
* @param callback function to be called on completion of the task (returns true on success, false on error)
* @param callback function to be called on completion of the task (returns true on success, false on error)
*/
public void exportToCsvFile(Date endDate, double duration, Uri uri, BooleanCallback callback) {
Log.v(TAG, "exportToCsvFile(): uri=" + uri.toString());
@@ -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.
*
@@ -807,7 +805,7 @@ public class LogManager {
ExportDataTask(Date endDate, double duration, Uri uri, BooleanCallback callback) {
Log.i(TAG,"ExportDataTask constructor()");
Log.i(TAG, "ExportDataTask constructor()");
this.mCallback = callback;
mEndDate = endDate;
mDuration = duration;
@@ -882,7 +880,7 @@ public class LogManager {
@Override
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);
}
@@ -923,12 +921,12 @@ public class LogManager {
} catch (IOException e) {
Log.e(TAG, "exportToFile() - ERROR Writing File: " + e.toString());
mUtil.showToast("ERROR WRITING FILE");
return(-1);
return (-1);
}
}
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;
} catch (JSONException | NullPointerException e) {
@@ -936,7 +934,7 @@ public class LogManager {
dataObj = null;
mUtil.showToast(mContext.getString(R.string.error_exporting_data));
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.mO2Sat > 0) {
tv.setText(getString(R.string.HR_Equals) + " " + Math.round(mConnection.mSdServer.mSdData.mHR) + " bpm\n"
+"(av = "
+Math.round(mConnection.mSdServer.mSdData.mAdaptiveHrAverage)+", "
+Math.round(mConnection.mSdServer.mSdData.mAverageHrAverage)+" bpm)\n"
+ getString(R.string.SpO2)+" = " + Math.round(mConnection.mSdServer.mSdData.mO2Sat) + "%");
+ "(av = "
+ Math.round(mConnection.mSdServer.mSdData.mAdaptiveHrAverage) + ", "
+ Math.round(mConnection.mSdServer.mSdData.mAverageHrAverage) + " bpm)\n"
+ getString(R.string.SpO2) + " = " + Math.round(mConnection.mSdServer.mSdData.mO2Sat) + "%");
} else {
tv.setText(getString(R.string.HR_Equals) + " " + Math.round(mConnection.mSdServer.mSdData.mHR) + " bpm\n"
+"(av = "
+Math.round(mConnection.mSdServer.mSdData.mAdaptiveHrAverage)+", "
+Math.round(mConnection.mSdServer.mSdData.mAverageHrAverage)+" bpm)\n"
+ getString(R.string.SpO2)+" = ---%");
+ "(av = "
+ Math.round(mConnection.mSdServer.mSdData.mAdaptiveHrAverage) + ", "
+ Math.round(mConnection.mSdServer.mSdData.mAverageHrAverage) + " bpm)\n"
+ getString(R.string.SpO2) + " = ---%");
}
if (mConnection.mSdServer.mSdData.mHRAlarmStanding
|| mConnection.mSdServer.mSdData.mAdaptiveHrAlarmStanding
@@ -821,7 +821,7 @@ public class MainActivity extends AppCompatActivity {
" (" + getString(R.string.Threshold) + "=" + mConnection.mSdServer.mSdData.alarmThresh + ")");
((TextView) findViewById(R.id.spectrumTv)).setText(getString(R.string.SpectrumRatioEquals) + specRatio +
" (" + 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;
Drawable pbDrawable;

View File

@@ -45,36 +45,37 @@ public class MainActivity2 extends AppCompatActivity {
private OsdUtil mUtil;
private SdServiceConnection mConnection;
final Handler serverStatusHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Log.i(TAG, "onCreate()");
Log.i(TAG, "onCreate()");
// Set our custom uncaught exception handler to report issues.
//Thread.setDefaultUncaughtExceptionHandler(new OsdUncaughtExceptionHandler(MainActivity.this));
new UCEHandler.Builder(this)
.addCommaSeparatedEmailAddresses("crashreports@openseizuredetector.org.uk,")
.build();
// Set our custom uncaught exception handler to report issues.
//Thread.setDefaultUncaughtExceptionHandler(new OsdUncaughtExceptionHandler(MainActivity.this));
new UCEHandler.Builder(this)
.addCommaSeparatedEmailAddresses("crashreports@openseizuredetector.org.uk,")
.build();
//int i = 5/0; // Force exception to test handler.
mUtil = new OsdUtil(getApplicationContext(), serverStatusHandler);
mConnection = new SdServiceConnection(getApplicationContext());
mUtil.writeToSysLogFile("MainActivity2.onCreate()");
mContext = this;
//int i = 5/0; // Force exception to test handler.
mUtil = new OsdUtil(getApplicationContext(), serverStatusHandler);
mConnection = new SdServiceConnection(getApplicationContext());
mUtil.writeToSysLogFile("MainActivity2.onCreate()");
mContext = this;
/**
if (savedInstanceState == null) {
// Instantiate a ViewPager2 and a PagerAdapter.
mFragmentPager = findViewById(R.id.fragment_pager);
mFragmentStateAdapter = new ScreenSlideFragmentPagerAdapter(this);
mFragmentPager.setAdapter(mFragmentStateAdapter);
getSupportFragmentManager().beginTransaction()
.setReorderingAllowed(true)
.add(R.id.fragment_common_container_view, FragmentCommon.class, null)
.commit();
}
if (savedInstanceState == null) {
// Instantiate a ViewPager2 and a PagerAdapter.
mFragmentPager = findViewById(R.id.fragment_pager);
mFragmentStateAdapter = new ScreenSlideFragmentPagerAdapter(this);
mFragmentPager.setAdapter(mFragmentStateAdapter);
getSupportFragmentManager().beginTransaction()
.setReorderingAllowed(true)
.add(R.id.fragment_common_container_view, FragmentCommon.class, null)
.commit();
}
*/
}
@@ -127,8 +128,6 @@ public class MainActivity2 extends AppCompatActivity {
}
@Override
protected void onPause() {
super.onPause();
@@ -151,7 +150,6 @@ public class MainActivity2 extends AppCompatActivity {
}
@Override
public void onBackPressed() {
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
* sequence.
*/
private class ScreenSlideFragmentPagerAdapter extends FragmentStateAdapter {
private String TAG = "ScreenSlideFragmentPagerAdapter";
public ScreenSlideFragmentPagerAdapter(FragmentActivity fa) {
super(fa);
}
@Override
public Fragment createFragment(int position) {
switch(position) {
switch (position) {
case 0:
return new FragmentOsdAlg();
case 1:
@@ -305,7 +302,7 @@ public class MainActivity2 extends AppCompatActivity {
return new FragmentDataSharing();
default:
Log.e(TAG,"createFragment() - invalid Position "+position);
Log.e(TAG, "createFragment() - invalid Position " + position);
return null;
}
}
@@ -329,7 +326,6 @@ public class MainActivity2 extends AppCompatActivity {
}
private void showAbout() {
mUtil.writeToSysLogFile("MainActivity.showAbout()");
View aboutView = getLayoutInflater().inflate(R.layout.about_layout, null, false);

View File

@@ -35,7 +35,7 @@ public class MlModelManager {
public boolean mModelReady = false;
private final String mUrlBase = "https://openseizuredetector.org.uk/static/MLmodels/";
private final String mModelIndexFname = "MLmodels.json";
RequestQueue mQueue;
RequestQueue mQueue;
public interface JSONObjectCallback {
public void accept(JSONObject retValObj);
@@ -43,7 +43,7 @@ public class MlModelManager {
public MlModelManager(Context context) {
Log.i(TAG,"MlModelManager Constructor");
Log.i(TAG, "MlModelManager Constructor");
mContext = context;
mUtil = new OsdUtil(mContext, new Handler());
mQueue = Volley.newRequestQueue(mContext);
@@ -55,7 +55,6 @@ public class MlModelManager {
}
/**
* 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.

View File

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

View File

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

View File

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

View File

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

View File

@@ -36,7 +36,7 @@ public class SdAlgHr {
mAdaptiveHrBuff = new CircBuf(mAdaptiveHrAlarmWindowDp, -1.0);
mAverageHrBuff = new CircBuf(mAverageHrAlarmWindowDp, -1.0);
// 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() {
@@ -72,34 +72,33 @@ public class SdAlgHr {
mSimpleHrAlarmActive = SP.getBoolean("HRAlarmActive", false);
mSimpleHrAlarmThreshMin = readDoublePref(SP, "HRThreshMin", "20");
mSimpleHrAlarmThreshMax = readDoublePref(SP, "HRThreshMax", "150");
Log.d(TAG,"updatePrefs(): mSimpleHrAlarmActive="+mSimpleHrAlarmActive);
Log.d(TAG,"updatePrefs(): mSimpleHrAlarmThreshMin="+mSimpleHrAlarmThreshMin);
Log.d(TAG,"updatePrefs(): mSimpleHrAlarmThreshMax="+mSimpleHrAlarmThreshMax);
Log.d(TAG, "updatePrefs(): mSimpleHrAlarmActive=" + mSimpleHrAlarmActive);
Log.d(TAG, "updatePrefs(): mSimpleHrAlarmThreshMin=" + mSimpleHrAlarmThreshMin);
Log.d(TAG, "updatePrefs(): mSimpleHrAlarmThreshMax=" + mSimpleHrAlarmThreshMax);
mAdaptiveHrAlarmActive = SP.getBoolean("HRAdaptiveAlarmActive", false);
mAdaptiveHrAlarmWindowSecs = readDoublePref(SP, "HRAdaptiveAlarmWindowSecs", "30");
mAdaptiveHrAlarmWindowDp = (int)Math.round(mAdaptiveHrAlarmWindowSecs/5.0);
mAdaptiveHrAlarmWindowDp = (int) Math.round(mAdaptiveHrAlarmWindowSecs / 5.0);
mAdaptiveHrAlarmThresh = readDoublePref(SP, "HRAdaptiveAlarmThresh", "20");
Log.d(TAG,"updatePrefs(): mAdaptiveHrAlarmActive="+mAdaptiveHrAlarmActive);
Log.d(TAG,"updatePrefs(): mAdaptiveHrWindowSecs="+mAdaptiveHrAlarmWindowSecs);
Log.d(TAG,"updatePrefs(): mAdaptiveHrWindowDp="+mAdaptiveHrAlarmWindowDp);
Log.d(TAG,"updatePrefs(): mAdaptiveHrAlarmThresh="+mAdaptiveHrAlarmThresh);
Log.d(TAG, "updatePrefs(): mAdaptiveHrAlarmActive=" + mAdaptiveHrAlarmActive);
Log.d(TAG, "updatePrefs(): mAdaptiveHrWindowSecs=" + mAdaptiveHrAlarmWindowSecs);
Log.d(TAG, "updatePrefs(): mAdaptiveHrWindowDp=" + mAdaptiveHrAlarmWindowDp);
Log.d(TAG, "updatePrefs(): mAdaptiveHrAlarmThresh=" + mAdaptiveHrAlarmThresh);
mAverageHrAlarmActive = SP.getBoolean("HRAverageAlarmActive", false);
mAverageHrAlarmWindowSecs = readDoublePref(SP, "HRAverageAlarmWindowSecs", "120");
mAverageHrAlarmWindowDp = (int)Math.round(mAverageHrAlarmWindowSecs/5.0);
mAverageHrAlarmWindowDp = (int) Math.round(mAverageHrAlarmWindowSecs / 5.0);
mAverageHrAlarmThreshMin = readDoublePref(SP, "HRAverageAlarmThreshMin", "40");
mAverageHrAlarmThreshMax = readDoublePref(SP, "HRAverageAlarmThreshMax", "120");
Log.d(TAG,"updatePrefs(): mAverageHrAlarmActive="+mAverageHrAlarmActive);
Log.d(TAG,"updatePrefs(): mAverageHrAlarmWindowSecs="+mAverageHrAlarmWindowSecs);
Log.d(TAG,"updatePrefs(): mAverageHrAlarmWindowDp="+mAverageHrAlarmWindowDp);
Log.d(TAG,"updatePrefs(): mAverageHrAlarmThreshMin="+mAverageHrAlarmThreshMin);
Log.d(TAG,"updatePrefs(): mAverageHrAlarmThreshMax="+mAverageHrAlarmThreshMax);
Log.d(TAG, "updatePrefs(): mAverageHrAlarmActive=" + mAverageHrAlarmActive);
Log.d(TAG, "updatePrefs(): mAverageHrAlarmWindowSecs=" + mAverageHrAlarmWindowSecs);
Log.d(TAG, "updatePrefs(): mAverageHrAlarmWindowDp=" + mAverageHrAlarmWindowDp);
Log.d(TAG, "updatePrefs(): mAverageHrAlarmThreshMin=" + mAverageHrAlarmThreshMin);
Log.d(TAG, "updatePrefs(): mAverageHrAlarmThreshMax=" + mAverageHrAlarmThreshMax);
}
private boolean checkSimpleHr(double hrVal) {
/**
* Check heart rate value against simple thresholds
@@ -107,15 +106,16 @@ public class SdAlgHr {
boolean retVal = false;
if (mSimpleHrAlarmActive) {
if ((hrVal > mSimpleHrAlarmThreshMax)
|| (hrVal <mSimpleHrAlarmThreshMin)) {
|| (hrVal < mSimpleHrAlarmThreshMin)) {
retVal = true;
}
}
return(retVal);
return (retVal);
}
/**
* Returns the average heart rate being used by the Adaptive heart rate algorithm
*
* @return Average Heart reate in bpm.
*/
public double getAdaptiveHrAverage() {
@@ -130,10 +130,13 @@ public class SdAlgHr {
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
*
* @return Average Heart rate in bpm.
*/
public double getAverageHrAverage() {
@@ -156,9 +159,9 @@ public class SdAlgHr {
if (hrVal > hrThreshMax) {
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) {
@@ -172,12 +175,11 @@ public class SdAlgHr {
if (avHr > mAverageHrAlarmThreshMax) {
retVal = true;
}
Log.d(TAG, "checkAverageHr() - hrVal="+hrVal+", avHr="+avHr+", thresholds=("+mAverageHrAlarmThreshMin+", "+mAverageHrAlarmThreshMin+"): Alarm="+retVal);
return(retVal);
Log.d(TAG, "checkAverageHr() - hrVal=" + hrVal + ", avHr=" + avHr + ", thresholds=(" + mAverageHrAlarmThreshMin + ", " + mAverageHrAlarmThreshMin + "): Alarm=" + retVal);
return (retVal);
}
public ArrayList<Boolean> checkHr(double hrVal) {
/**
* 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.
* true=ALARM, false=OK.
*/
Log.v(TAG, "checkHr("+hrVal+")");
Log.v(TAG, "checkHr(" + hrVal + ")");
mAdaptiveHrBuff.add(hrVal);
mAverageHrBuff.add(hrVal);
mHrHist.add(hrVal);
@@ -193,7 +195,7 @@ public class SdAlgHr {
retVal.add(checkSimpleHr(hrVal));
retVal.add(checkAdaptiveHr(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
* using a model with input format #1, which is a simple vector of 125 accelerometer vector
* magnitude readings.
*
* @param sdData - seizure detector data as input to the model
* @return probability of data representing seizure-like movement.
*/
@@ -125,7 +126,7 @@ public class SdAlgNn {
double stdDev;
stdDev = calcRawDataStd(sdData);
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);
}
@@ -135,11 +136,11 @@ public class SdAlgNn {
pSeizure = getPseizureFmt1(sdData);
break;
default:
Log.e(TAG,"getPSeizure - invalid model ID "+mModelId);
Log.e(TAG, "getPSeizure - invalid model ID " + mModelId);
pSeizure = 0;
}
return(pSeizure);
return (pSeizure);
}
private double calcRawDataStd(SdData sdData) {

View File

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

View File

@@ -154,7 +154,6 @@ public abstract class SdDataSource {
}
// Start timer to check status of watch regularly.
mDataStatusTime = new Time(Time.getCurrentTimezone());
// 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) {
// 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++) {
mSdData.rawData3D[i] = 0.;
}
@@ -449,7 +448,7 @@ public abstract class SdDataSource {
mSampleFreq = 25;
double freqRes = 1.0 * mSampleFreq / mSdData.mNsamp;
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.
nMin = (int) (mAlarmFreqMin / freqRes);
nMax = (int) (mAlarmFreqMax / freqRes);
@@ -526,11 +525,11 @@ public abstract class SdDataSource {
Log.e(TAG, "doAnalysis - Exception during Analysis");
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: mSdData.mNsamp="+mSdData.mNsamp);
mUtil.writeToSysLogFile("doAnalysis: alarmFreqMin="+mAlarmFreqMin+" nMin="+nMin);
mUtil.writeToSysLogFile("doAnalysis: alarmFreqMax="+mAlarmFreqMax+" nMax="+nMax);
mUtil.writeToSysLogFile("doAnalysis: nFreqCutoff.="+nFreqCutoff);
mUtil.writeToSysLogFile("doAnalysis: fft.length="+fft.length);
mUtil.writeToSysLogFile("doAnalysis: mSdData.mNsamp=" + mSdData.mNsamp);
mUtil.writeToSysLogFile("doAnalysis: alarmFreqMin=" + mAlarmFreqMin + " nMin=" + nMin);
mUtil.writeToSysLogFile("doAnalysis: alarmFreqMax=" + mAlarmFreqMax + " nMax=" + nMax);
mUtil.writeToSysLogFile("doAnalysis: nFreqCutoff.=" + nFreqCutoff);
mUtil.writeToSysLogFile("doAnalysis: fft.length=" + fft.length);
mWatchAppRunningCheck = false;
}
@@ -547,7 +546,7 @@ public abstract class SdDataSource {
o2SatCheck();
fallCheck();
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.
}
@@ -564,20 +563,20 @@ public abstract class SdDataSource {
// Avoid potential divide by zero issue
if (mSdData.specPower == 0)
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) {
// Is the current set of data representing an alarm state?
if ((mSdData.roiPower > mAlarmThresh) && ((10 * mSdData.roiPower / mSdData.specPower) > mAlarmRatioThresh)) {
inAlarm = true;
mSdData.alarmCause = mSdData.alarmCause+"OsdAlg ";
mSdData.alarmCause = mSdData.alarmCause + "OsdAlg ";
}
}
if (mSdData.mCnnAlarmActive) {
if (mSdData.mPseizure > 0.5) {
inAlarm = true;
mSdData.alarmCause = mSdData.alarmCause+"CnnAlg ";
mSdData.alarmCause = mSdData.alarmCause + "CnnAlg ";
}
}
@@ -646,7 +645,7 @@ public abstract class SdDataSource {
mSdData.mHRAlarmStanding = true;
mSdData.mAdaptiveHrAlarmStanding = false;
mSdData.mAverageHrAlarmStanding = false;
mSdData.alarmCause = mSdData.alarmCause+"HrNull ";
mSdData.alarmCause = mSdData.alarmCause + "HrNull ";
} else {
Log.i(TAG, "Heart Rate Fault (HR<0)");
@@ -659,13 +658,13 @@ public abstract class SdDataSource {
mSdData.mHRFaultStanding = false;
mSdData.mHRAlarmStanding = checkResults.get(0);
if (mSdData.mHRAlarmStanding)
mSdData.alarmCause = mSdData.alarmCause+"HR ";
mSdData.alarmCause = mSdData.alarmCause + "HR ";
mSdData.mAdaptiveHrAlarmStanding = checkResults.get(1);
if (mSdData.mAdaptiveHrAlarmStanding)
mSdData.alarmCause = mSdData.alarmCause+"HR_ADAPT ";
mSdData.alarmCause = mSdData.alarmCause + "HR_ADAPT ";
mSdData.mAverageHrAlarmStanding = checkResults.get(2);
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.
if (mSdData.mHRAlarmStanding | mSdData.mAdaptiveHrAlarmStanding | mSdData.mAverageHrAlarmStanding) {
mSdData.alarmState = 2;
@@ -693,17 +692,17 @@ public abstract class SdDataSource {
Log.i(TAG, "Oxygen Saturation Null - Alarming");
mSdData.mO2SatFaultStanding = false;
mSdData.mO2SatAlarmStanding = true;
mSdData.alarmCause = mSdData.alarmCause+"O2_NULL ";
mSdData.alarmCause = mSdData.alarmCause + "O2_NULL ";
} else {
Log.i(TAG, "Oxygen Saturation Fault (O2Sat<0)");
mSdData.mO2SatFaultStanding = true;
mSdData.mO2SatAlarmStanding = false;
}
} else if (mSdData.mO2Sat < mSdData.mO2SatThreshMin) {
} else if (mSdData.mO2Sat < mSdData.mO2SatThreshMin) {
Log.i(TAG, "Oxygen Saturation Abnormal - " + mSdData.mO2Sat + " %");
mSdData.mO2SatFaultStanding = false;
mSdData.mO2SatAlarmStanding = true;
mSdData.alarmCause = mSdData.alarmCause+"O2SAT ";
mSdData.alarmCause = mSdData.alarmCause + "O2SAT ";
} else {
mSdData.mO2SatFaultStanding = 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] > 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)) {
Log.d(TAG, "check_fall() ****FALL DETECTED***** minAcc=" + minAcc + ", maxAcc=" + maxAcc);
Log.d(TAG, "check_fall() - ****FALL DETECTED****");
mSdData.fallAlarmStanding = true;
mSdData.alarmCause = mSdData.alarmCause+"FALL ";
mSdData.alarmCause = mSdData.alarmCause + "FALL ";
return;
}
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
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);
if (accStd > mFidgetThreshold) {
mLastFidget = tnow;
} 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));
if (tdiff > (mFidgetPeriod) * 60 * 1000) {
Log.e(TAG, "onStatus() - Fidget Not Detected - is watch being worn?");
@@ -878,7 +878,7 @@ public abstract class SdDataSource {
mSdData.mHrFrozenFaultStanding = false;
} else {
tdiff = (tnow.toMillis(false) - mHrStatusTime.toMillis(false));
if (tdiff > mHrFrozenPeriod *1000.) {
if (tdiff > mHrFrozenPeriod * 1000.) {
mSdData.mHrFrozenFaultStanding = true;
} else {
mSdData.mHrFrozenFaultStanding = false;
@@ -889,7 +889,7 @@ public abstract class SdDataSource {
void nnAnalysis() {
//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) {
float pSeizure = mSdAlgNn.getPseizure(mSdData);
Log.d(TAG, "nnAnalysis - nnResult=" + pSeizure);
@@ -904,9 +904,9 @@ public abstract class SdDataSource {
* Read a preference value, and return it as a double.
* FIXME - this should be in osdUtil so other classes can use it.
*
* @param SP - Shared Preferences object
* @param SP - Shared Preferences object
* @param prefName - name of preference to read.
* @param defVal - default value if it is not stored.
* @param defVal - default value if it is not stored.
* @return double value of the stored specified preference, or the default value.
*/
private double readDoublePref(SharedPreferences SP, String prefName, String defVal) {
@@ -937,10 +937,10 @@ public abstract class SdDataSource {
String appRestartTimeoutStr = SP.getString("AppRestartTimeout", "10");
mAppRestartTimeout = Integer.parseInt(appRestartTimeoutStr);
Log.v(TAG, "updatePrefs() - mAppRestartTimeout = " + mAppRestartTimeout);
mUtil.writeToSysLogFile( "updatePrefs() - mAppRestartTimeout = " + mAppRestartTimeout);
mUtil.writeToSysLogFile("updatePrefs() - mAppRestartTimeout = " + mAppRestartTimeout);
} catch (Exception ex) {
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.show();
}
@@ -950,10 +950,10 @@ public abstract class SdDataSource {
String faultTimerPeriodStr = SP.getString("FaultTimerPeriod", "30");
mFaultTimerPeriod = Integer.parseInt(faultTimerPeriodStr);
Log.v(TAG, "updatePrefs() - mFaultTimerPeriod = " + mFaultTimerPeriod);
mUtil.writeToSysLogFile( "updatePrefs() - mFaultTimerPeriod = " + mFaultTimerPeriod);
mUtil.writeToSysLogFile("updatePrefs() - mFaultTimerPeriod = " + mFaultTimerPeriod);
} catch (Exception ex) {
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.show();
}
@@ -964,7 +964,7 @@ public abstract class SdDataSource {
mFidgetPeriod = readDoublePref(SP, "FidgetDetectorPeriod", "20"); // minutes
Log.v(TAG, "updatePrefs() - mFidgetPeriod = " + mFidgetPeriod);
mFidgetThreshold = readDoublePref(SP, "FidgetDetectorThreshold", "0.6 ");
Log.d(TAG,"updatePrefs(): mFidgetThreshold="+mFidgetThreshold);
Log.d(TAG, "updatePrefs(): mFidgetThreshold=" + mFidgetThreshold);
} catch (Exception ex) {
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");
mBleDeviceAddr = prefStr;
Log.v(TAG, "mBLEDeviceAddr=" + mBleDeviceAddr);
mUtil.writeToSysLogFile( "mBLEDeviceAddr=" + mBleDeviceAddr);
mUtil.writeToSysLogFile("mBLEDeviceAddr=" + mBleDeviceAddr);
prefStr = SP.getString("BLE_Device_Name", "SET_FROM_XML");
mBleDeviceName = prefStr;
Log.v(TAG, "mBLEDeviceName=" + mBleDeviceName);
mUtil.writeToSysLogFile( "mBLEDeviceName=" + mBleDeviceName);
mUtil.writeToSysLogFile("mBLEDeviceName=" + mBleDeviceName);
prefStr = SP.getString("PebbleDebug", "SET_FROM_XML");
if (prefStr != null) {
mDebug = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() Debug = " + mDebug);
mUtil.writeToSysLogFile( "updatePrefs() Debug = " + mDebug);
mUtil.writeToSysLogFile("updatePrefs() Debug = " + mDebug);
prefStr = SP.getString("PebbleDisplaySpectrum", "SET_FROM_XML");
mDisplaySpectrum = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() DisplaySpectrum = " + mDisplaySpectrum);
mUtil.writeToSysLogFile( "updatePrefs() DisplaySpectrum = " + mDisplaySpectrum);
mUtil.writeToSysLogFile("updatePrefs() DisplaySpectrum = " + mDisplaySpectrum);
prefStr = SP.getString("PebbleUpdatePeriod", "SET_FROM_XML");
mDataUpdatePeriod = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() DataUpdatePeriod = " + mDataUpdatePeriod);
mUtil.writeToSysLogFile( "updatePrefs() DataUpdatePeriod = " + mDataUpdatePeriod);
mUtil.writeToSysLogFile("updatePrefs() DataUpdatePeriod = " + mDataUpdatePeriod);
prefStr = SP.getString("MutePeriod", "SET_FROM_XML");
mMutePeriod = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() MutePeriod = " + mMutePeriod);
mUtil.writeToSysLogFile( "updatePrefs() MutePeriod = " + mMutePeriod);
mUtil.writeToSysLogFile("updatePrefs() MutePeriod = " + mMutePeriod);
prefStr = SP.getString("ManAlarmPeriod", "SET_FROM_XML");
mManAlarmPeriod = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() ManAlarmPeriod = " + mManAlarmPeriod);
mUtil.writeToSysLogFile( "updatePrefs() ManAlarmPeriod = " + mManAlarmPeriod);
mUtil.writeToSysLogFile("updatePrefs() ManAlarmPeriod = " + mManAlarmPeriod);
prefStr = SP.getString("PebbleSdMode", "SET_FROM_XML");
mPebbleSdMode = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() PebbleSdMode = " + mPebbleSdMode);
mUtil.writeToSysLogFile( "updatePrefs() PebbleSdMode = " + mPebbleSdMode);
mUtil.writeToSysLogFile("updatePrefs() PebbleSdMode = " + mPebbleSdMode);
prefStr = SP.getString("SampleFreq", "SET_FROM_XML");
mSampleFreq = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() SampleFreq = " + mSampleFreq);
mUtil.writeToSysLogFile( "updatePrefs() SampleFreq = " + mSampleFreq);
mUtil.writeToSysLogFile("updatePrefs() SampleFreq = " + mSampleFreq);
prefStr = SP.getString("SamplePeriod", "SET_FROM_XML");
mSamplePeriod = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AnalysisPeriod = " + mSamplePeriod);
mUtil.writeToSysLogFile( "updatePrefs() AnalysisPeriod = " + mSamplePeriod);
mUtil.writeToSysLogFile("updatePrefs() AnalysisPeriod = " + mSamplePeriod);
prefStr = SP.getString("AlarmFreqMin", "SET_FROM_XML");
mAlarmFreqMin = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AlarmFreqMin = " + mAlarmFreqMin);
mUtil.writeToSysLogFile( "updatePrefs() AlarmFreqMin = " + mAlarmFreqMin);
mUtil.writeToSysLogFile("updatePrefs() AlarmFreqMin = " + mAlarmFreqMin);
prefStr = SP.getString("AlarmFreqMax", "SET_FROM_XML");
mAlarmFreqMax = (short) Integer.parseInt(prefStr);
@@ -1038,58 +1038,58 @@ public abstract class SdDataSource {
prefStr = SP.getString("WarnTime", "SET_FROM_XML");
mWarnTime = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() WarnTime = " + mWarnTime);
mUtil.writeToSysLogFile( "updatePrefs() WarnTime = " + mWarnTime);
mUtil.writeToSysLogFile("updatePrefs() WarnTime = " + mWarnTime);
prefStr = SP.getString("AlarmTime", "SET_FROM_XML");
mAlarmTime = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AlarmTime = " + mAlarmTime);
mUtil.writeToSysLogFile( "updatePrefs() AlarmTime = " + mAlarmTime);
mUtil.writeToSysLogFile("updatePrefs() AlarmTime = " + mAlarmTime);
prefStr = SP.getString("AlarmThresh", "SET_FROM_XML");
mAlarmThresh = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AlarmThresh = " + mAlarmThresh);
mUtil.writeToSysLogFile( "updatePrefs() AlarmThresh = " + mAlarmThresh);
mUtil.writeToSysLogFile("updatePrefs() AlarmThresh = " + mAlarmThresh);
prefStr = SP.getString("AlarmRatioThresh", "SET_FROM_XML");
mAlarmRatioThresh = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AlarmRatioThresh = " + mAlarmRatioThresh);
mUtil.writeToSysLogFile( "updatePrefs() AlarmRatioThresh = " + mAlarmRatioThresh);
mUtil.writeToSysLogFile("updatePrefs() AlarmRatioThresh = " + mAlarmRatioThresh);
mFallActive = SP.getBoolean("FallActive", false);
Log.v(TAG, "updatePrefs() FallActive = " + mFallActive);
mUtil.writeToSysLogFile( "updatePrefs() FallActive = " + mFallActive);
mUtil.writeToSysLogFile("updatePrefs() FallActive = " + mFallActive);
prefStr = SP.getString("FallThreshMin", "SET_FROM_XML");
mFallThreshMin = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() FallThreshMin = " + mFallThreshMin);
mUtil.writeToSysLogFile( "updatePrefs() FallThreshMin = " + mFallThreshMin);
mUtil.writeToSysLogFile("updatePrefs() FallThreshMin = " + mFallThreshMin);
prefStr = SP.getString("FallThreshMax", "SET_FROM_XML");
mFallThreshMax = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() FallThreshMax = " + mFallThreshMax);
mUtil.writeToSysLogFile( "updatePrefs() FallThreshMax = " + mFallThreshMax);
mUtil.writeToSysLogFile("updatePrefs() FallThreshMax = " + mFallThreshMax);
prefStr = SP.getString("FallWindow", "SET_FROM_XML");
mFallWindow = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() FallWindow = " + mFallWindow);
mUtil.writeToSysLogFile( "updatePrefs() FallWindow = " + mFallWindow);
mUtil.writeToSysLogFile("updatePrefs() FallWindow = " + mFallWindow);
mSdData.mOsdAlarmActive = SP.getBoolean("OsdAlarmActive", false);
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);
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);
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);
Log.v(TAG, "updatePrefs() HRNullAsAlarm = " + mSdData.mHRNullAsAlarm);
mUtil.writeToSysLogFile( "updatePrefs() HRNullAsAlarm = " + mSdData.mHRNullAsAlarm);
mUtil.writeToSysLogFile("updatePrefs() HRNullAsAlarm = " + mSdData.mHRNullAsAlarm);
mHrFrozenAlarm = SP.getBoolean("HrFrozenAlarm", true);
Log.v(TAG, "updatePrefs() - mHrFrozenAlarm = " + mHrFrozenAlarm);
@@ -1098,42 +1098,42 @@ public abstract class SdDataSource {
prefStr = SP.getString("HRThreshMin", "SET_FROM_XML");
mSdData.mHRThreshMin = (short) Integer.parseInt(prefStr);
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");
mSdData.mHRThreshMax = (short) Integer.parseInt(prefStr);
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.mAdaptiveHrAlarmWindowSecs = readDoublePref(SP, "HRAdaptiveAlarmWindowSecs", "30");
mSdData.mAdaptiveHrAlarmThresh = readDoublePref(SP, "HRAdaptiveAlarmThresh", "20");
Log.d(TAG,"updatePrefs(): mAdaptiveHrAlarmActive="+mSdData.mAdaptiveHrAlarmActive);
Log.d(TAG,"updatePrefs(): mAdaptiveHrWindowSecs="+mSdData.mAdaptiveHrAlarmWindowSecs);
Log.d(TAG,"updatePrefs(): mAdaptiveHrAlarmThresh="+mSdData.mAdaptiveHrAlarmThresh);
Log.d(TAG, "updatePrefs(): mAdaptiveHrAlarmActive=" + mSdData.mAdaptiveHrAlarmActive);
Log.d(TAG, "updatePrefs(): mAdaptiveHrWindowSecs=" + mSdData.mAdaptiveHrAlarmWindowSecs);
Log.d(TAG, "updatePrefs(): mAdaptiveHrAlarmThresh=" + mSdData.mAdaptiveHrAlarmThresh);
mSdData.mAverageHrAlarmActive = SP.getBoolean("HRAverageAlarmActive", false);
mSdData.mAverageHrAlarmWindowSecs = readDoublePref(SP, "HRAverageAlarmWindowSecs", "120");
mSdData.mAverageHrAlarmThreshMin = readDoublePref(SP, "HRAverageAlarmThreshMin", "40");
mSdData.mAverageHrAlarmThreshMax = readDoublePref(SP, "HRAverageAlarmThreshMax", "120");
Log.d(TAG,"updatePrefs(): mAverageHrAlarmActive="+mSdData.mAverageHrAlarmActive);
Log.d(TAG,"updatePrefs(): mAverageHrAlarmWindowSecs="+mSdData.mAverageHrAlarmWindowSecs);
Log.d(TAG,"updatePrefs(): mAverageHrAlarmThreshMin="+mSdData.mAverageHrAlarmThreshMin);
Log.d(TAG,"updatePrefs(): mAverageHrAlarmThreshMax="+mSdData.mAverageHrAlarmThreshMax);
Log.d(TAG, "updatePrefs(): mAverageHrAlarmActive=" + mSdData.mAverageHrAlarmActive);
Log.d(TAG, "updatePrefs(): mAverageHrAlarmWindowSecs=" + mSdData.mAverageHrAlarmWindowSecs);
Log.d(TAG, "updatePrefs(): mAverageHrAlarmThreshMin=" + mSdData.mAverageHrAlarmThreshMin);
Log.d(TAG, "updatePrefs(): mAverageHrAlarmThreshMax=" + mSdData.mAverageHrAlarmThreshMax);
mSdData.mO2SatAlarmActive = SP.getBoolean("O2SatAlarmActive", false);
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);
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");
mSdData.mO2SatThreshMin = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() O2SatThreshMin = " + mSdData.mO2SatThreshMin);
mUtil.writeToSysLogFile( "updatePrefs() O2SatThreshMin = " + mSdData.mO2SatThreshMin);
mUtil.writeToSysLogFile("updatePrefs() O2SatThreshMin = " + mSdData.mO2SatThreshMin);
} else {
Log.v(TAG, "updatePrefs() - prefStr is null - WHY????");

File diff suppressed because one or more lines are too long

View File

@@ -101,8 +101,8 @@ public class SdDataSourceBLE extends SdDataSource {
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_FW = "000085e9-0004-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
public static String CHAR_OSD_ACC_FMT = "000085e9-0005-1000-8000-00805f9b34fb";
// 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_16BIT = 1;
@@ -245,13 +245,13 @@ public class SdDataSourceBLE extends SdDataSource {
mSdData.watchConnected = false;
Log.i(TAG, "onConnectionStateChange(): Disconnected from GATT server");
/**Log.i(TAG, "onConnectionStateChange(): Disconnected from GATT server - reconnecting after delay...");
bleDisconnect(); // Tidy up connections
// Wait 2 seconds to give the server chance to shutdown, then re-start it
mHandler.postDelayed(new Runnable() {
public void run() {
bleConnect();
}
}, 2000);
bleDisconnect(); // Tidy up connections
// Wait 2 seconds to give the server chance to shutdown, then re-start it
mHandler.postDelayed(new Runnable() {
public void run() {
bleConnect();
}
}, 2000);
*/
}
}
@@ -319,7 +319,7 @@ public class SdDataSourceBLE extends SdDataSource {
Log.v(TAG, "Battery Data Service Service Discovered");
for (BluetoothGattCharacteristic gattCharacteristic : gattCharacteristics) {
String charUuidStr = gattCharacteristic.getUuid().toString();
Log.v(TAG,"batt char="+charUuidStr);
Log.v(TAG, "batt char=" + charUuidStr);
if (charUuidStr.equals(CHAR_BATT_DATA)) {
Log.v(TAG, "Subscribing to Battery Data Change Notifications");
setCharacteristicNotification(gattCharacteristic, true);
@@ -352,14 +352,14 @@ public class SdDataSourceBLE extends SdDataSource {
* of a given characteristic.
* Because only one BLE operation can be taking place at a time, it may fail, in which case
* the read is re-tried after a 100ms delay.
* @param gattCharacteristic - the characteristic to be read.
* @param gattCharacteristic - the characteristic to be read.
*/
private void executeReadCharacteristic(BluetoothGattCharacteristic gattCharacteristic) {
boolean retVal = mBluetoothGatt.readCharacteristic(gattCharacteristic);
if (retVal) {
Log.d(TAG,"executeReadCharacteristic - read initiated successfully");
Log.d(TAG, "executeReadCharacteristic - read initiated successfully");
} 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() {
public void run() {
Log.w(TAG, "Executing delayed read of characteristic");
@@ -368,6 +368,7 @@ public class SdDataSourceBLE extends SdDataSource {
}, 100);
}
}
private boolean permissionsOK() {
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
@@ -377,7 +378,7 @@ public class SdDataSourceBLE extends SdDataSource {
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// 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");
return (false);
} 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.
* 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)) {
int flag = characteristic.getProperties();
//Log.d(TAG,"onDataReceived() - flag = "+flag);
@@ -413,17 +414,16 @@ public class SdDataSourceBLE extends SdDataSource {
mSdData.mHR = (double) 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)) {
//Log.v(TAG,"Received OSD ACC DATA"+characteristic.getValue());
byte[] rawDataBytes = characteristic.getValue();
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() - newAccVals="+Arrays.toString(newAccVals));
for (int i = 0; i < newAccVals.length;i++) {
if (nRawData < MAX_RAW_DATA ) {
for (int i = 0; i < newAccVals.length; i++) {
if (nRawData < MAX_RAW_DATA) {
switch (mAccFmt) {
case ACC_FMT_8BIT:
case ACC_FMT_16BIT:
@@ -433,7 +433,7 @@ public class SdDataSourceBLE extends SdDataSource {
case ACC_FMT_3D:
// 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.
if (i+2 < newAccVals.length) {
if (i + 2 < newAccVals.length) {
if (i % 3 == 0) {
short x, y, z;
x = newAccVals[i];
@@ -450,8 +450,8 @@ public class SdDataSourceBLE extends SdDataSource {
}
break;
default:
Log.e(TAG,"INVALID ACCELERATION FORMAT"+mAccFmt);
mUtil.showToast("INVALID ACCELERATION FORMAT "+mAccFmt);
Log.e(TAG, "INVALID ACCELERATION FORMAT" + mAccFmt);
mUtil.showToast("INVALID ACCELERATION FORMAT " + mAccFmt);
}
} else {
@@ -459,9 +459,9 @@ public class SdDataSourceBLE extends SdDataSource {
mSdData.watchAppRunning = true;
for (i = 0; i < rawData.length; i++) {
mSdData.rawData[i] = rawData[i];
mSdData.rawData3D[i*3] = rawData3d[i*3];
mSdData.rawData3D[i*3 +1] = rawData3d[i*3 +1];
mSdData.rawData3D[i*3 +2] = rawData3d[i*3 +2];
mSdData.rawData3D[i * 3] = rawData3d[i * 3];
mSdData.rawData3D[i * 3 + 1] = rawData3d[i * 3 + 1];
mSdData.rawData3D[i * 3 + 2] = rawData3d[i * 3 + 2];
//Log.v(TAG,"onDataReceived() i="+i+", "+rawData[i]);
}
mSdData.mNsamp = rawData.length;
@@ -473,37 +473,31 @@ public class SdDataSourceBLE extends SdDataSource {
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];
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;
}
else if (characteristic.getUuid().toString().equals(CHAR_BATT_DATA)) {
} else if (characteristic.getUuid().toString().equals(CHAR_BATT_DATA)) {
byte batteryPc = characteristic.getValue()[0];
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;
}
else if (characteristic.getUuid().toString().equals(CHAR_OSD_WATCH_ID)) {
} else if (characteristic.getUuid().toString().equals(CHAR_OSD_WATCH_ID)) {
byte[] rawDataBytes = characteristic.getValue();
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;
}
else if (characteristic.getUuid().toString().equals(CHAR_OSD_WATCH_FW)) {
} else if (characteristic.getUuid().toString().equals(CHAR_OSD_WATCH_FW)) {
byte[] rawDataBytes = characteristic.getValue();
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;
}
else if (characteristic.getUuid().toString().equals(CHAR_OSD_ACC_FMT)) {
} else if (characteristic.getUuid().toString().equals(CHAR_OSD_ACC_FMT)) {
mAccFmt = characteristic.getValue()[0];
Log.v(TAG,"Received Acceleration format code: "+mAccFmt);
}
else {
Log.v(TAG,"Unrecognised Characteristic Updated "+
Log.v(TAG, "Received Acceleration format code: " + mAccFmt);
} else {
Log.v(TAG, "Unrecognised Characteristic Updated " +
characteristic.getUuid().toString());
}
}
@@ -513,14 +507,14 @@ public class SdDataSourceBLE extends SdDataSource {
switch (mAccFmt) {
case ACC_FMT_8BIT:
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
}
break;
case ACC_FMT_16BIT:
case ACC_FMT_3D:
// 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.
ByteBuffer.wrap(rawDataBytes)
.order(ByteOrder.LITTLE_ENDIAN)
@@ -528,17 +522,18 @@ public class SdDataSourceBLE extends SdDataSource {
.get(retArr);
break;
default:
Log.e(TAG,"INVALID ACCELERATION FORMAT"+mAccFmt);
mUtil.showToast("INVALID ACCELERATION FORMAT "+mAccFmt);
Log.e(TAG, "INVALID ACCELERATION FORMAT" + mAccFmt);
mUtil.showToast("INVALID ACCELERATION FORMAT " + mAccFmt);
retArr = new short[0];
}
return(retArr);
return (retArr);
}
@Override
public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic,
int status) {
Log.v(TAG,"onCharacteristicRead");
Log.v(TAG, "onCharacteristicRead");
if (status == BluetoothGatt.GATT_SUCCESS) {
onDataReceived(characteristic);
}
@@ -553,7 +548,7 @@ public class SdDataSourceBLE extends SdDataSource {
@Override
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;
}
};

View File

@@ -38,17 +38,18 @@ public class SdDataSourceNetwork extends SdDataSource {
mName = "Network";
}
@Override public void start() {
@Override
public void start() {
// Update preferences.
Log.v(TAG,"start(): calling updatePrefs()");
Log.v(TAG, "start(): calling updatePrefs()");
mUtil.writeToSysLogFile("SdDataSourceNetwork().start()");
updatePrefs();
// Start timer to retrieve seizure detector data regularly.
mStatusTime = new Time(Time.getCurrentTimezone());
mStatusTime.setToNow();
if (mDataUpdateTimer ==null) {
Log.v(TAG,"start(): starting data update timer");
if (mDataUpdateTimer == null) {
Log.v(TAG, "start(): starting data update timer");
mDataUpdateTimer = new Timer();
mDataUpdateTimer.schedule(new TimerTask() {
@Override
@@ -57,17 +58,18 @@ public class SdDataSourceNetwork extends SdDataSource {
}
}, 0, mDataUpdatePeriod);
} 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()");
// Stop the data update timer
if (mDataUpdateTimer !=null) {
Log.v(TAG,"stop(): cancelling status timer");
if (mDataUpdateTimer != null) {
Log.v(TAG, "stop(): cancelling status timer");
mDataUpdateTimer.cancel();
mDataUpdateTimer.purge();
mDataUpdateTimer = null;
@@ -76,7 +78,6 @@ public class SdDataSourceNetwork extends SdDataSource {
}
/**
* updatePrefs() - update basic settings from the SharedPreferences
* - defined in res/xml/prefs.xml
@@ -86,21 +87,21 @@ public class SdDataSourceNetwork extends SdDataSource {
mUtil.writeToSysLogFile("SdDataSourceNetwork().updatePrefs()");
SharedPreferences SP = PreferenceManager
.getDefaultSharedPreferences(mContext);
mServerIP = SP.getString("ServerIP","192.168.1.175");
Log.v(TAG,"updatePrefs() - mServerIP = "+mServerIP);
mServerIP = SP.getString("ServerIP", "192.168.1.175");
Log.v(TAG, "updatePrefs() - mServerIP = " + mServerIP);
try {
String dataUpdatePeriodStr = SP.getString("DataUpdatePeriod","2000");
String dataUpdatePeriodStr = SP.getString("DataUpdatePeriod", "2000");
mDataUpdatePeriod = Integer.parseInt(dataUpdatePeriodStr);
Log.v(TAG,"updatePrefs() - mDataUpdatePeriod = "+mDataUpdatePeriod);
String connectTimeoutPeriodStr = SP.getString("ConnectTimeoutPeriod","5000");
Log.v(TAG, "updatePrefs() - mDataUpdatePeriod = " + mDataUpdatePeriod);
String connectTimeoutPeriodStr = SP.getString("ConnectTimeoutPeriod", "5000");
mConnnectTimeoutPeriod = Integer.parseInt(connectTimeoutPeriodStr);
Log.v(TAG,"updatePrefs() - mConnectTimeoutPeriod = "+mConnnectTimeoutPeriod);
String readTimeoutPeriodStr = SP.getString("ReadTimeoutPeriod","5000");
Log.v(TAG, "updatePrefs() - mConnectTimeoutPeriod = " + mConnnectTimeoutPeriod);
String readTimeoutPeriodStr = SP.getString("ReadTimeoutPeriod", "5000");
mReadTimeoutPeriod = Integer.parseInt(readTimeoutPeriodStr);
Log.v(TAG,"updatePrefs() - mReadTimeoutPeriod = "+mReadTimeoutPeriod);
Log.v(TAG, "updatePrefs() - mReadTimeoutPeriod = " + mReadTimeoutPeriod);
} catch (Exception ex) {
Log.v(TAG,"updatePrefs() - Problem parsing preferences!");
mUtil.writeToSysLogFile("SdDataSourceNetwork().updatePrefs() - " +ex.toString());
Log.v(TAG, "updatePrefs() - Problem parsing preferences!");
mUtil.writeToSysLogFile("SdDataSourceNetwork().updatePrefs() - " + ex.toString());
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 SdData sdData;
@Override
protected SdData doInBackground(String... urls) {
// params comes from the execute() call: params[0] is the url.
@@ -124,23 +126,23 @@ public class SdDataSourceNetwork extends SdDataSource {
try {
String result = downloadUrl(urls[0]);
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.watchConnected = false;
sdData.watchAppRunning = false;
sdData.alarmState = ALARM_STATE_NETFAULT;
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 {
Log.v(TAG,"doInBackground - result = "+result);
Log.v(TAG, "doInBackground - result = " + result);
sdData.fromJSON(result);
// Populate mSdData using the received data.
sdData.serverOK = true;
if (sdData.batteryPc>0) {
if (sdData.batteryPc > 0) {
sdData.haveSettings = true;
}
mStatusTime.setToNow();
Log.v(TAG,"doInBackground(): sdData = "+sdData.toString());
Log.v(TAG, "doInBackground(): sdData = " + sdData.toString());
}
return (sdData);
@@ -150,14 +152,15 @@ public class SdDataSourceNetwork extends SdDataSource {
sdData.watchAppRunning = false;
sdData.alarmState = ALARM_STATE_NETFAULT;
sdData.alarmPhrase = "Warning - No Connection to Server";
Log.v(TAG,"doInBackground(): IOException - "+e.toString());
Log.v(TAG, "doInBackground(): IOException - " + e.toString());
return sdData;
}
}
// onPostExecute displays the results of the AsyncTask.
@Override
protected void onPostExecute(SdData sdData) {
Log.v(TAG,"onPostExecute() - sdData = "+sdData.toString());
Log.v(TAG, "onPostExecute() - sdData = " + sdData.toString());
mSdDataReceiver.onSdDataReceived(sdData);
}
}
@@ -178,24 +181,24 @@ public class SdDataSourceNetwork extends SdDataSource {
try {
String result = downloadUrl(urls[0]);
if (result.startsWith("Unable to retrieve web page")) {
Log.v(TAG,"doInBackground() - Error accepting alarm");
Log.v(TAG, "doInBackground() - Error accepting alarm");
} else {
Log.v(TAG,"doInBackground(): Alarm Accepted");
Log.v(TAG, "doInBackground(): Alarm Accepted");
}
} catch (IOException e) {
Log.v(TAG,"doInBackground(): IOException - "+e.toString());
Log.v(TAG, "doInBackground(): IOException - " + e.toString());
}
return "Done";
}
// onPostExecute displays the results of the AsyncTask.
@Override
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
// the web page content as a InputStream, which it returns as
// 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;
/**
* Abstract class for a seizure detector data source. Subclasses include a pebble smart watch data source and a
* 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
// as we get app data.
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");
mStatusTimer = new Timer();
mStatusTimer.schedule(new TimerTask() {
@@ -185,7 +184,7 @@ public class SdDataSourcePebble extends SdDataSource {
getPebbleSdSettings();
if (mSettingsTimer == null) {
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.schedule(new TimerTask() {
@Override
@@ -230,7 +229,7 @@ public class SdDataSourcePebble extends SdDataSource {
} catch (Exception e) {
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);
} catch (Exception ex) {
Log.v(TAG, "updatePrefs() - Problem parsing preferences! - prefStr="+prefStr);
mUtil.writeToSysLogFile("SdDataSourcePebble.updatePrefs() - ERROR "+ex.toString());
Log.v(TAG, "updatePrefs() - Problem parsing preferences! - prefStr=" + prefStr);
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.show();
}
@@ -437,16 +436,16 @@ public class SdDataSourcePebble extends SdDataSource {
byte[] rawDataBytes = data.getBytes(KEY_RAW_DATA);
for (int i = 0; i < rawDataBytes.length - 4; i += 4) { // 4 bytes per sample
int b0 = rawDataBytes[i];
int b1 = rawDataBytes[i+1] & 0xff;
int b2 = rawDataBytes[i+2] & 0xff;
int b3 = rawDataBytes[i+3] & 0xff;
int b1 = rawDataBytes[i + 1] & 0xff;
int b2 = rawDataBytes[i + 2] & 0xff;
int b3 = rawDataBytes[i + 3] & 0xff;
int x = (b3 | b2 << 8 | b1 << 16 | b0 << 24);
//int y = (rawDataBytes[i+2] & 0xff) | (rawDataBytes[i+3] << 8);
//int z = (rawDataBytes[i+4] & 0xff) | (rawDataBytes[i+5] << 8);
//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) {
rawData[nRawData] = (int)Math.sqrt(x);
rawData[nRawData] = (int) Math.sqrt(x);
} else {
Log.i(TAG, "WARNING - rawData Buffer Full");
}
@@ -461,7 +460,7 @@ public class SdDataSourcePebble extends SdDataSource {
// } else {
// Log.i(TAG, "WARNING - rawData Buffer Full");
// }
// }
// }
}
}
@@ -498,7 +497,7 @@ public class SdDataSourcePebble extends SdDataSource {
// first close the watch app if it is running.
PebbleKit.closeAppOnPebble(mContext, SD_UUID);
Log.v(TAG, "startWatchApp() - starting watch app after 5 seconds delay...");
// Wait 5 seconds then start the app.
// Wait 5 seconds then start the app.
Timer appStartTimer = new Timer();
appStartTimer.schedule(new TimerTask() {
@Override
@@ -727,7 +726,7 @@ public class SdDataSourcePebble extends SdDataSource {
* ignored!
*/
private void analyseRawData() {
Log.v(TAG,"analyserawData()");
Log.v(TAG, "analyserawData()");
//DoubleFFT_1D fft = new DoubleFFT_1D(MAX_RAW_DATA);
//fft.realForward(rawData);
// 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()");
mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mSensor , SensorManager.SENSOR_DELAY_GAME);
mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_GAME);
super.start();
}
@@ -95,22 +95,19 @@ public class SdDataSourcePhone extends SdDataSource implements SensorEventListen
}
@Override
public void onSensorChanged(SensorEvent event) {
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.
if (mMode == 0) {
if (mStartEvent==null) {
Log.v(TAG,"onSensorChanged(): mMode=0 - Starting Sample Rate Check - mNSamp = "+mSdData.mNsamp);
Log.v(TAG,"onSensorChanged(): saving initial event data");
if (mStartEvent == null) {
Log.v(TAG, "onSensorChanged(): mMode=0 - Starting Sample Rate Check - mNSamp = " + mSdData.mNsamp);
Log.v(TAG, "onSensorChanged(): saving initial event data");
mStartEvent = event;
mStartTs = event.timestamp;
mSdData.mNsamp = 0;
} else {
mSdData.mNsamp ++;
mSdData.mNsamp++;
}
Log.v(TAG, "onSensorChanged - mMode=" + mMode + " mNSamp=" + mSdData.mNsamp);
if (mSdData.mNsamp >= mSdData.rawData.length) {
@@ -179,12 +176,10 @@ public class SdDataSourcePhone extends SdDataSource implements SensorEventListen
@Override
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()");
updatePrefs();
Log.v(TAG, "onStartCommand: Datasource =" + mSdDataSourceName + ", phoneAppVersion="+mUtil.getAppVersionName());
Log.v(TAG, "onStartCommand: Datasource =" + mSdDataSourceName + ", phoneAppVersion=" + mUtil.getAppVersionName());
mSdData.dataSourceName = mSdDataSourceName;
mSdData.phoneAppVersion = mUtil.getAppVersionName();
switch (mSdDataSourceName) {
@@ -278,7 +278,7 @@ public class SdServer extends Service implements SdDataReceiver {
Log.v(TAG, "Selecting Network DataSource");
mUtil.writeToSysLogFile("SdServer.onStartCommand() - creating SdDataSourceNetwork");
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;
break;
case "Garmin":
@@ -306,7 +306,7 @@ public class SdServer extends Service implements SdDataReceiver {
// Create our log manager.
mLm = new LogManager(this, mLogDataRemote, mLogDataRemoteMobile, mAuthToken, mEventDuration,
mRemoteLogPeriod, mLogNDA ,mAutoPruneDb, mDataRetentionPeriod, mSdData);
mRemoteLogPeriod, mLogNDA, mAutoPruneDb, mDataRetentionPeriod, mSdData);
if (mSMSAlarm) {
Log.v(TAG, "Creating LocationFinder");
@@ -316,7 +316,6 @@ public class SdServer extends Service implements SdDataReceiver {
mSdDataSource.start();
// 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)
mSMSTime = new Time(Time.getCurrentTimezone());
@@ -478,7 +477,7 @@ public class SdServer extends Service implements SdDataReceiver {
Uri soundUri = null;
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;
}
Log.v(TAG, "showNotification() - alarmLevel=" + alarmLevel);
@@ -586,7 +585,7 @@ public class SdServer extends Service implements SdDataReceiver {
}
} else {
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.");
}
} 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));
}
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.
*
*/
private void sendSMS(String phoneNo, String msgStr) {
Log.i(TAG, "sendSMS() - Sending to " + phoneNo);
@@ -1618,11 +1616,11 @@ public class SdServer extends Service implements SdDataReceiver {
Log.v(TAG, "checkEvents() - haveUnvalidatedEvent = " +
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();
mNM.cancel(DATASHARE_NOTIFICATION_ID);
} 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(DATASHARE_NOTIFICATION_ID);
}
@@ -1678,7 +1676,7 @@ public class SdServer extends Service implements SdDataReceiver {
Uri soundUri = null;
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;
}
@@ -1727,7 +1725,7 @@ public class SdServer extends Service implements SdDataReceiver {
Uri soundUri = null;
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;
}
@@ -1781,6 +1779,7 @@ public class SdServer extends Service implements SdDataReceiver {
/**
* isNotificationShown - returns true if the specified notificationID is shown, otherwise returns false.
*
* @param notificationId - Notification ID to check
* @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();
for (StatusBarNotification notification : notifications) {
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;
/**
* 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.
*
* @return true if data has been received.
*/
public boolean hasSdData() {
if (mSdServer!=null) {
if (mSdServer.mSdData!=null) {
if (mSdServer != null) {
if (mSdServer.mSdData != null) {
return mSdServer.mSdData.haveData;
}
}
@@ -81,11 +81,12 @@ public class SdServiceConnection implements ServiceConnection {
/**
* Check if the service has received seizure detector settings.
*
* @return true if settings have been received.
*/
public boolean hasSdSettings() {
if (mSdServer!=null) {
if (mSdServer.mSdData!=null) {
if (mSdServer != null) {
if (mSdServer.mSdData != null) {
if (mSdServer.mSdData.haveSettings) {
return true;
}
@@ -96,11 +97,12 @@ public class SdServiceConnection implements ServiceConnection {
/**
* Check if the pebble watch is connected to the server device via bluetooth.
*
* @return true if watch connected.
*/
public boolean watchConnected() {
if (mSdServer!=null) {
if (mSdServer.mSdData!=null) {
if (mSdServer != null) {
if (mSdServer.mSdData != null) {
if (mSdServer.mSdData.watchConnected) {
return true;
}
@@ -111,11 +113,12 @@ public class SdServiceConnection implements ServiceConnection {
/**
* Check if the openseizuredetector pebble watch app is running..
*
* @return true if watch app running.
*/
public boolean pebbleAppRunning() {
if (mSdServer!=null) {
if (mSdServer.mSdData!=null) {
if (mSdServer != null) {
if (mSdServer.mSdData != null) {
if (mSdServer.mSdData.watchAppRunning) {
return true;
}

View File

@@ -114,7 +114,7 @@ public class SdWebServer extends NanoHTTPD {
answer = mSdServer.mSdDataSource.updateFromJSON(files.get("postData"));
}
} 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");
}
break;
@@ -152,10 +152,10 @@ public class SdWebServer extends NanoHTTPD {
Log.v(TAG, " files=" + files.toString());
// Send the data to the SdDataSource so the app can pick it up.
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());
} else {
Log.v(TAG,"Passing postData to data source");
Log.v(TAG, "Passing postData to data source");
answer = mSdServer.mSdDataSource.updateFromJSON(files.get("postData"));
}
//mSdServer.mSdDataSource.updateFromJSON(parameters.toString());
@@ -209,12 +209,12 @@ public class SdWebServer extends NanoHTTPD {
} else {
Log.v(TAG, "WebServer.serve() - Unknown uri -" +
uri);
answer = "{'msg' : 'Unknown URI: "+uri+"'}";
answer = "{'msg' : 'Unknown URI: " + uri + "'}";
}
}
res = new NanoHTTPD.Response(answer);
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);
}
@@ -248,13 +248,13 @@ public class SdWebServer extends NanoHTTPD {
try {
JSONObject jsonObj = new JSONObject();
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();
for (int i = 0; i < fileList.length; i++) {
Log.v(TAG, "serveLogFile(): file[" + i + "]=" + fileList[i]);
arr.put(fileList[i].getName());
}
jsonObj.put("logFileList", arr);
for (int i = 0; i < fileList.length; i++) {
Log.v(TAG, "serveLogFile(): file[" + i + "]=" + fileList[i]);
arr.put(fileList[i].getName());
}
jsonObj.put("logFileList", arr);
res = new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK,
"text/html", jsonObj.toString());
} catch (Exception ex) {

View File

@@ -113,8 +113,6 @@ public class StartupActivity extends AppCompatActivity {
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -205,17 +203,17 @@ public class StartupActivity extends AppCompatActivity {
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.stopServer();
} 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
mHandler.postDelayed(new Runnable() {
public void run() {
mUtil.writeToSysLogFile("StartupActivity.onStart() - starting server after delay - isServerRunning="+mUtil.isServerRunning());
Log.i(TAG, "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());
mUtil.startServer();
// Bind to the service.
Log.i(TAG, "onStart() - binding to server");
@@ -232,7 +230,7 @@ public class StartupActivity extends AppCompatActivity {
} else {
boolean preventBatteryOptWarning = SP.getBoolean("PreventBatteryOptWarning", false);
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 {
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!");
@@ -302,7 +300,7 @@ public class StartupActivity extends AppCompatActivity {
pb = (ProgressBar) findViewById(R.id.progressBar1);
if (arePermissionsOK()) {
if (smsAlarmsActive && !areSMSPermissions1OK()) {
Log.i(TAG,"SMS permissions NOT OK");
Log.i(TAG, "SMS permissions NOT OK");
tv.setText(getString(R.string.SmsPermissionWarning));
tv.setBackgroundColor(alarmColour);
tv.setTextColor(alarmTextColour);
@@ -311,14 +309,14 @@ public class StartupActivity extends AppCompatActivity {
requestSMSPermissions();
allOk = false;
} 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.setBackgroundColor(alarmColour);
tv.setTextColor(alarmTextColour);
requestLocationPermissions1();
allOk = false;
} 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.setBackgroundColor(alarmColour);
tv.setTextColor(alarmTextColour);
@@ -479,10 +477,10 @@ public class StartupActivity extends AppCompatActivity {
}
}
/**
* checkFirstRun - checks to see if this is the first run of the app after installation or upgrade.
* if it is, the relevant dialog message is displayed. If not, the routine just exists so start-up can continue.
*/
/**
* checkFirstRun - checks to see if this is the first run of the app after installation or upgrade.
* if it is, the relevant dialog message is displayed. If not, the routine just exists so start-up can continue.
*/
public void checkFirstRun() {
String storedVersionName = "";
String versionName;
@@ -640,7 +638,7 @@ public class StartupActivity extends AppCompatActivity {
for (int i = 0; i < SMS_PERMISSIONS_1.length; i++) {
if (ContextCompat.checkSelfPermission(this, SMS_PERMISSIONS_1[i])
!= 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;
}
}
@@ -663,7 +661,7 @@ public class StartupActivity extends AppCompatActivity {
public boolean areLocationPermissions2OK() {
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) {
Log.d(TAG, "areLocationPermission2OK() - SDK <29 (Android 10) so permission not required");
allOk = true;
@@ -712,7 +710,7 @@ public class StartupActivity extends AppCompatActivity {
.setPositiveButton(getString(R.string.okBtnTxt), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
Log.i(TAG,"requestSMSPermissions(): Launching ActivityCompat.requestPermissions()");
Log.i(TAG, "requestSMSPermissions(): Launching ActivityCompat.requestPermissions()");
ActivityCompat.requestPermissions(StartupActivity.this,
SMS_PERMISSIONS_1,
45);
@@ -749,9 +747,9 @@ public class StartupActivity extends AppCompatActivity {
}
})
.setNegativeButton(getString(R.string.cancelBtnTxt), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
})
.create().show();
}
@@ -773,7 +771,7 @@ public class StartupActivity extends AppCompatActivity {
.setPositiveButton(getString(R.string.okBtnTxt), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
Log.i(TAG,"requestSMSPermissions(): Launching ActivityCompat.requestPermissions()");
Log.i(TAG, "requestSMSPermissions(): Launching ActivityCompat.requestPermissions()");
ActivityCompat.requestPermissions(StartupActivity.this,
LOCATION_PERMISSIONS_2,
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.
* @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 subTypeStr
* @return true if request sent successfully or false.
*/
private boolean markEventsAsTypeSubType(ArrayList<String>eventList, String typeStr, String subTypeStr) {
if (eventList.size()>0) {
Log.i(TAG,"markEventsAsTypeSubtype - eventList.size()="+eventList.size());
Log.i(TAG,"markEventsAsSypeSubtype - eventList(0) = "+eventList.get(0));
private boolean markEventsAsTypeSubType(ArrayList<String> eventList, String typeStr, String subTypeStr) {
if (eventList.size() > 0) {
Log.i(TAG, "markEventsAsTypeSubtype - eventList.size()=" + eventList.size());
Log.i(TAG, "markEventsAsSypeSubtype - eventList(0) = " + eventList.get(0));
getEvent(eventList.get(0), new WebApiConnection.JSONObjectCallback() {
@Override
public void accept(JSONObject eventObj) {
Log.v(TAG, "markEventsAsTypeSubtype.getEvent.callback: "+eventObj);
Log.v(TAG, "markEventsAsTypeSubtype.getEvent.callback: " + eventObj);
if (eventObj != null) {
Log.v(TAG, "markEventsAsTypeSubtype.getEvent.callback: eventObj=" + eventObj.toString());
try {
@@ -161,7 +162,7 @@ public abstract class WebApiConnection {
if (notesStr == null) notesStr = new String("");
notesStr = notesStr + " bulk type/subtype set";
eventObj.put("desc", notesStr);
updateEvent(eventObj,new WebApiConnection.JSONObjectCallback() {
updateEvent(eventObj, new WebApiConnection.JSONObjectCallback() {
@Override
public void accept(JSONObject eventObj) {
if (eventObj != null) {
@@ -176,7 +177,7 @@ public abstract class WebApiConnection {
}
});
} 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");
}
} else {
@@ -186,11 +187,11 @@ public abstract class WebApiConnection {
}
});
} 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.");
}
return(true);
return (true);
}
/**
@@ -240,6 +241,7 @@ public abstract class WebApiConnection {
markUnverifiedEventsAsTypeSubtype("Unknown", "");
return true;
}
public boolean markUnverifiedEventsAsFalseAlarm() {
markUnverifiedEventsAsTypeSubtype("False Alarm", "");
return true;

View File

@@ -95,7 +95,7 @@ public class WebApiConnection_firebase extends WebApiConnection {
} else {
try {
JSONObject retObj = new JSONObject();
retObj.put("id",auth.getCurrentUser().getUid());
retObj.put("id", auth.getCurrentUser().getUid());
retObj.put("username", auth.getCurrentUser().getDisplayName());
retObj.put("email", auth.getCurrentUser().getEmail());
callback.accept(retObj);
@@ -121,7 +121,7 @@ public class WebApiConnection_firebase extends WebApiConnection {
// passes the newly created documentId to function callback on successful completion, or null on error.
public boolean createEvent(final int osdAlarmState, final Date eventDate, final String type, final String subType,
final String eventDesc, final String dataJSON, StringCallback callback) {
// FIXME - save type, subtype, eventDesc and dataJSON
// FIXME - save type, subtype, eventDesc and dataJSON
Log.v(TAG, "createEvent()");
String userId = null;
@@ -424,7 +424,7 @@ public class WebApiConnection_firebase extends WebApiConnection {
}
public boolean getCnnModelInfo(JSONObjectCallback callback) {
Log.w(TAG,"getCnnModelInfo() - FIXME - not implemented yet!");
Log.w(TAG, "getCnnModelInfo() - FIXME - not implemented yet!");
return false;
}

View File

@@ -41,7 +41,7 @@ public class WebApiConnection_osdapi extends WebApiConnection {
public void close() {
super.close();
Log.i(TAG,"stop()");
Log.i(TAG, "stop()");
mQueue.stop();
}
@@ -110,8 +110,6 @@ public class WebApiConnection_osdapi extends WebApiConnection {
}
public boolean isLoggedIn() {
String authToken = getStoredToken();
Log.v(TAG, "isLoggedIn(): token=" + authToken);
@@ -119,7 +117,7 @@ public class WebApiConnection_osdapi extends WebApiConnection {
Log.v(TAG, "isLogged in - not logged in");
return (false);
} else {
Log.v(TAG,"isLoggedIn - logged in ok");
Log.v(TAG, "isLoggedIn - logged in ok");
return (true);
}
@@ -315,7 +313,7 @@ public class WebApiConnection_osdapi extends WebApiConnection {
} else {
Log.e(TAG, "getEvents(): Error: - request returned null networkResponse");
}
} else{
} else {
Log.e(TAG, "getEvents(): Error: - request returned null response");
}
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.
*
* @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.
*/
@@ -572,8 +571,6 @@ public class WebApiConnection_osdapi extends WebApiConnection {
}
/**
* 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.
@@ -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.
* sets mServerConnectionOk.
* sets mServerConnectionOk.
*
* @return true if request sent successfully or else false.
*/
public boolean checkServerConnection() {
@@ -714,7 +710,7 @@ public class WebApiConnection_osdapi extends WebApiConnection {
}
public boolean getCnnModelInfo(JSONObjectCallback callback) {
Log.w(TAG,"getCnnModelInfo() - FIXME - not implemented yet!");
Log.w(TAG, "getCnnModelInfo() - FIXME - not implemented yet!");
return false;
}