Reduced amount of settings data stored in datapoints table to reduce storage. Modified sdserver so that remote logging is disabled when using network datasource to avoid duplication of data.
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
package="uk.org.openseizuredetector"
|
package="uk.org.openseizuredetector"
|
||||||
android:versionCode="100"
|
android:versionCode="100"
|
||||||
android:versionName="4.0.4">
|
android:versionName="4.0.4a">
|
||||||
<!-- android:allowBackup="false" -->
|
<!-- android:allowBackup="false" -->
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ public class LogManager {
|
|||||||
+ " VALUES("
|
+ " VALUES("
|
||||||
+ "'" + dateStr + "',"
|
+ "'" + dateStr + "',"
|
||||||
+ sdData.alarmState + ","
|
+ sdData.alarmState + ","
|
||||||
+ DatabaseUtils.sqlEscapeString(sdData.toJSON(true)) + ","
|
+ DatabaseUtils.sqlEscapeString(sdData.toDatapointJSON()) + ","
|
||||||
+ 0
|
+ 0
|
||||||
+ ")";
|
+ ")";
|
||||||
mOsdDb.execSQL(SQLStr);
|
mOsdDb.execSQL(SQLStr);
|
||||||
@@ -314,7 +314,7 @@ public class LogManager {
|
|||||||
public boolean createLocalEvent(String dataTime, long status, String type, String subType, String desc, String dataJSON) {
|
public boolean createLocalEvent(String dataTime, long status, String type, String subType, String desc, String dataJSON) {
|
||||||
// Expects dataTime to be in format: SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
// Expects dataTime to be in format: SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
Log.d(TAG, "createLocalEvent() - dataTime=" + dataTime + ", status=" + status + ", dataJSON="+dataJSON);
|
Log.d(TAG, "createLocalEvent() - dataTime=" + dataTime + ", status=" + status + ", dataJSON="+dataJSON);
|
||||||
// Write Datapoint to database
|
// Write Event to database
|
||||||
String SQLStr = "INSERT INTO " + mEventsTableName
|
String SQLStr = "INSERT INTO " + mEventsTableName
|
||||||
+ "(dataTime, status, type, subtype, notes, dataJSON)"
|
+ "(dataTime, status, type, subtype, notes, dataJSON)"
|
||||||
+ " VALUES("
|
+ " VALUES("
|
||||||
|
|||||||
@@ -139,12 +139,12 @@ public class SdData implements Parcelable {
|
|||||||
alarmPhrase = jo.optString("alarmPhrase");
|
alarmPhrase = jo.optString("alarmPhrase");
|
||||||
alarmThresh = jo.optInt("alarmThresh");
|
alarmThresh = jo.optInt("alarmThresh");
|
||||||
alarmRatioThresh = jo.optInt("alarmRatioThresh");
|
alarmRatioThresh = jo.optInt("alarmRatioThresh");
|
||||||
mHRAlarmActive=jo.optBoolean("hrAlarmActive");
|
mHRAlarmActive = jo.optBoolean("hrAlarmActive");
|
||||||
mHRAlarmStanding = jo.optBoolean("hrAlarmStanding");
|
mHRAlarmStanding = jo.optBoolean("hrAlarmStanding");
|
||||||
mHRThreshMin = jo.optDouble("hrThreshMin");
|
mHRThreshMin = jo.optDouble("hrThreshMin");
|
||||||
mHRThreshMax = jo.optDouble("hrThreshMax");
|
mHRThreshMax = jo.optDouble("hrThreshMax");
|
||||||
mHR = jo.optDouble("hr");
|
mHR = jo.optDouble("hr");
|
||||||
if (mHR>=0.0) {
|
if (mHR >= 0.0) {
|
||||||
mHRAlarmActive = true;
|
mHRAlarmActive = true;
|
||||||
}
|
}
|
||||||
JSONArray specArr = jo.optJSONArray("simpleSpec");
|
JSONArray specArr = jo.optJSONArray("simpleSpec");
|
||||||
@@ -155,7 +155,7 @@ public class SdData implements Parcelable {
|
|||||||
Log.v(TAG, "fromJSON(): sdData = " + this.toString());
|
Log.v(TAG, "fromJSON(): sdData = " + this.toString());
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.v(TAG, "fromJSON() - error parsing result"+e.toString());
|
Log.v(TAG, "fromJSON() - error parsing result" + e.toString());
|
||||||
haveData = false;
|
haveData = false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -170,6 +170,49 @@ public class SdData implements Parcelable {
|
|||||||
return toDataString(includeRawData);
|
return toDataString(includeRawData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String toDatapointJSON() {
|
||||||
|
String retval;
|
||||||
|
retval = "SdData.toDatapointJSON() Output";
|
||||||
|
try {
|
||||||
|
JSONObject jsonObj = new JSONObject();
|
||||||
|
if (dataTime != null) {
|
||||||
|
jsonObj.put("dataTime", dataTime.format("%d-%m-%Y %H:%M:%S"));
|
||||||
|
jsonObj.put("dataTimeStr", dataTime.format("%Y%m%dT%H%M%S"));
|
||||||
|
} else {
|
||||||
|
jsonObj.put("dataTimeStr", "00000000T000000");
|
||||||
|
jsonObj.put("dataTime", "00-00-00 00:00:00");
|
||||||
|
}
|
||||||
|
Log.v(TAG, "mSdData.dataTime = " + dataTime);
|
||||||
|
jsonObj.put("maxVal", maxVal);
|
||||||
|
jsonObj.put("maxFreq", maxFreq);
|
||||||
|
jsonObj.put("specPower", specPower);
|
||||||
|
jsonObj.put("roiPower", roiPower);
|
||||||
|
jsonObj.put("roiRatio", 10 * roiPower / specPower);
|
||||||
|
jsonObj.put("alarmState", alarmState);
|
||||||
|
jsonObj.put("alarmPhrase", alarmPhrase);
|
||||||
|
jsonObj.put("hr", mHR);
|
||||||
|
jsonObj.put("o2Sat", mO2Sat);
|
||||||
|
JSONArray arr = new JSONArray();
|
||||||
|
for (int i = 0; i < simpleSpec.length; i++) {
|
||||||
|
arr.put(simpleSpec[i]);
|
||||||
|
}
|
||||||
|
jsonObj.put("simpleSpec", arr);
|
||||||
|
JSONArray rawArr = new JSONArray();
|
||||||
|
for (int i = 0; i < rawData.length; i++) {
|
||||||
|
rawArr.put(rawData[i]);
|
||||||
|
}
|
||||||
|
jsonObj.put("rawData", rawArr);
|
||||||
|
|
||||||
|
retval = jsonObj.toString();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Log.v(TAG, "Error Creating Data Object - " + ex.toString());
|
||||||
|
retval = "Error Creating Data Object - " + ex.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
return (retval);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public String toSettingsJSON() {
|
public String toSettingsJSON() {
|
||||||
String retval;
|
String retval;
|
||||||
retval = "SdData.toSettingsJSON() Output";
|
retval = "SdData.toSettingsJSON() Output";
|
||||||
@@ -178,31 +221,31 @@ public class SdData implements Parcelable {
|
|||||||
if (dataTime != null) {
|
if (dataTime != null) {
|
||||||
jsonObj.put("dataTime", dataTime.format("%d-%m-%Y %H:%M:%S"));
|
jsonObj.put("dataTime", dataTime.format("%d-%m-%Y %H:%M:%S"));
|
||||||
jsonObj.put("dataTimeStr", dataTime.format("%Y%m%dT%H%M%S"));
|
jsonObj.put("dataTimeStr", dataTime.format("%Y%m%dT%H%M%S"));
|
||||||
}else{
|
} else {
|
||||||
jsonObj.put("dataTimeStr", "00000000T000000");
|
jsonObj.put("dataTimeStr", "00000000T000000");
|
||||||
jsonObj.put("dataTime", "00-00-00 00:00:00");
|
jsonObj.put("dataTime", "00-00-00 00:00:00");
|
||||||
}
|
}
|
||||||
jsonObj.put("batteryPc", batteryPc);
|
jsonObj.put("batteryPc", batteryPc);
|
||||||
jsonObj.put("alarmState", alarmState);
|
jsonObj.put("alarmState", alarmState);
|
||||||
jsonObj.put("alarmPhrase", alarmPhrase);
|
jsonObj.put("alarmPhrase", alarmPhrase);
|
||||||
jsonObj.put("sdMode",mSdMode);
|
jsonObj.put("sdMode", mSdMode);
|
||||||
jsonObj.put("sampleFreq",mSampleFreq);
|
jsonObj.put("sampleFreq", mSampleFreq);
|
||||||
jsonObj.put("analysisPeriod",analysisPeriod);
|
jsonObj.put("analysisPeriod", analysisPeriod);
|
||||||
jsonObj.put("alarmFreqMin",alarmFreqMin);
|
jsonObj.put("alarmFreqMin", alarmFreqMin);
|
||||||
jsonObj.put("alarmFreqMax",alarmFreqMax);
|
jsonObj.put("alarmFreqMax", alarmFreqMax);
|
||||||
jsonObj.put("alarmThresh", alarmThresh);
|
jsonObj.put("alarmThresh", alarmThresh);
|
||||||
jsonObj.put("alarmRatioThresh", alarmRatioThresh);
|
jsonObj.put("alarmRatioThresh", alarmRatioThresh);
|
||||||
jsonObj.put("hrAlarmActive", mHRAlarmActive);
|
jsonObj.put("hrAlarmActive", mHRAlarmActive);
|
||||||
jsonObj.put("hrAlarmStanding", mHRAlarmStanding);
|
jsonObj.put("hrAlarmStanding", mHRAlarmStanding);
|
||||||
jsonObj.put("hrThreshMin",mHRThreshMin);
|
jsonObj.put("hrThreshMin", mHRThreshMin);
|
||||||
jsonObj.put("hrThreshMax", mHRThreshMax);
|
jsonObj.put("hrThreshMax", mHRThreshMax);
|
||||||
jsonObj.put("o2SatAlarmActive", mO2SatAlarmActive);
|
jsonObj.put("o2SatAlarmActive", mO2SatAlarmActive);
|
||||||
jsonObj.put("o2SatAlarmStanding", mO2SatAlarmStanding);
|
jsonObj.put("o2SatAlarmStanding", mO2SatAlarmStanding);
|
||||||
jsonObj.put("o2SatThreshMin",mO2SatThreshMin);
|
jsonObj.put("o2SatThreshMin", mO2SatThreshMin);
|
||||||
jsonObj.put("watchPartNo",watchPartNo);
|
jsonObj.put("watchPartNo", watchPartNo);
|
||||||
jsonObj.put("watchSdName",watchSdName);
|
jsonObj.put("watchSdName", watchSdName);
|
||||||
jsonObj.put("watchFwVersion",watchFwVersion);
|
jsonObj.put("watchFwVersion", watchFwVersion);
|
||||||
jsonObj.put("watchSdVersion",watchSdVersion);
|
jsonObj.put("watchSdVersion", watchSdVersion);
|
||||||
|
|
||||||
retval = jsonObj.toString();
|
retval = jsonObj.toString();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
@@ -220,7 +263,7 @@ public class SdData implements Parcelable {
|
|||||||
if (dataTime != null) {
|
if (dataTime != null) {
|
||||||
jsonObj.put("dataTime", dataTime.format("%d-%m-%Y %H:%M:%S"));
|
jsonObj.put("dataTime", dataTime.format("%d-%m-%Y %H:%M:%S"));
|
||||||
jsonObj.put("dataTimeStr", dataTime.format("%Y%m%dT%H%M%S"));
|
jsonObj.put("dataTimeStr", dataTime.format("%Y%m%dT%H%M%S"));
|
||||||
}else{
|
} else {
|
||||||
jsonObj.put("dataTimeStr", "00000000T000000");
|
jsonObj.put("dataTimeStr", "00000000T000000");
|
||||||
jsonObj.put("dataTime", "00-00-00 00:00:00");
|
jsonObj.put("dataTime", "00-00-00 00:00:00");
|
||||||
}
|
}
|
||||||
@@ -235,22 +278,22 @@ public class SdData implements Parcelable {
|
|||||||
jsonObj.put("haveSettings", haveSettings);
|
jsonObj.put("haveSettings", haveSettings);
|
||||||
jsonObj.put("alarmState", alarmState);
|
jsonObj.put("alarmState", alarmState);
|
||||||
jsonObj.put("alarmPhrase", alarmPhrase);
|
jsonObj.put("alarmPhrase", alarmPhrase);
|
||||||
jsonObj.put("sdMode",mSdMode);
|
jsonObj.put("sdMode", mSdMode);
|
||||||
jsonObj.put("sampleFreq",mSampleFreq);
|
jsonObj.put("sampleFreq", mSampleFreq);
|
||||||
jsonObj.put("analysisPeriod",analysisPeriod);
|
jsonObj.put("analysisPeriod", analysisPeriod);
|
||||||
jsonObj.put("alarmFreqMin",alarmFreqMin);
|
jsonObj.put("alarmFreqMin", alarmFreqMin);
|
||||||
jsonObj.put("alarmFreqMax",alarmFreqMax);
|
jsonObj.put("alarmFreqMax", alarmFreqMax);
|
||||||
jsonObj.put("alarmThresh", alarmThresh);
|
jsonObj.put("alarmThresh", alarmThresh);
|
||||||
jsonObj.put("alarmRatioThresh", alarmRatioThresh);
|
jsonObj.put("alarmRatioThresh", alarmRatioThresh);
|
||||||
jsonObj.put("hrAlarmActive", mHRAlarmActive);
|
jsonObj.put("hrAlarmActive", mHRAlarmActive);
|
||||||
jsonObj.put("hrAlarmStanding", mHRAlarmStanding);
|
jsonObj.put("hrAlarmStanding", mHRAlarmStanding);
|
||||||
jsonObj.put("hrThreshMin",mHRThreshMin);
|
jsonObj.put("hrThreshMin", mHRThreshMin);
|
||||||
jsonObj.put("hrThreshMax", mHRThreshMax);
|
jsonObj.put("hrThreshMax", mHRThreshMax);
|
||||||
jsonObj.put("hr",mHR);
|
jsonObj.put("hr", mHR);
|
||||||
jsonObj.put("o2SatAlarmActive", mO2SatAlarmActive);
|
jsonObj.put("o2SatAlarmActive", mO2SatAlarmActive);
|
||||||
jsonObj.put("o2SatAlarmStanding", mO2SatAlarmStanding);
|
jsonObj.put("o2SatAlarmStanding", mO2SatAlarmStanding);
|
||||||
jsonObj.put("o2SatThreshMin",mO2SatThreshMin);
|
jsonObj.put("o2SatThreshMin", mO2SatThreshMin);
|
||||||
jsonObj.put("o2Sat",mO2Sat);
|
jsonObj.put("o2Sat", mO2Sat);
|
||||||
JSONArray arr = new JSONArray();
|
JSONArray arr = new JSONArray();
|
||||||
for (int i = 0; i < simpleSpec.length; i++) {
|
for (int i = 0; i < simpleSpec.length; i++) {
|
||||||
arr.put(simpleSpec[i]);
|
arr.put(simpleSpec[i]);
|
||||||
@@ -258,10 +301,10 @@ public class SdData implements Parcelable {
|
|||||||
jsonObj.put("simpleSpec", arr);
|
jsonObj.put("simpleSpec", arr);
|
||||||
if (includeRawData) {
|
if (includeRawData) {
|
||||||
JSONArray rawArr = new JSONArray();
|
JSONArray rawArr = new JSONArray();
|
||||||
for (int i = 0; i< rawData.length;i++) {
|
for (int i = 0; i < rawData.length; i++) {
|
||||||
rawArr.put(rawData[i]);
|
rawArr.put(rawData[i]);
|
||||||
}
|
}
|
||||||
jsonObj.put("rawData",rawArr);
|
jsonObj.put("rawData", rawArr);
|
||||||
}
|
}
|
||||||
|
|
||||||
retval = jsonObj.toString();
|
retval = jsonObj.toString();
|
||||||
@@ -279,7 +322,7 @@ public class SdData implements Parcelable {
|
|||||||
retval = "";
|
retval = "";
|
||||||
if (dataTime != null) {
|
if (dataTime != null) {
|
||||||
retval = dataTime.format("%d-%m-%Y %H:%M:%S");
|
retval = dataTime.format("%d-%m-%Y %H:%M:%S");
|
||||||
}else{
|
} else {
|
||||||
retval = "00-00-00 00:00:00";
|
retval = "00-00-00 00:00:00";
|
||||||
}
|
}
|
||||||
for (int i = 0; i < simpleSpec.length; i++) {
|
for (int i = 0; i < simpleSpec.length; i++) {
|
||||||
@@ -292,31 +335,35 @@ public class SdData implements Parcelable {
|
|||||||
retval = retval + ", " + mHR;
|
retval = retval + ", " + mHR;
|
||||||
retval = retval + ", " + mO2Sat;
|
retval = retval + ", " + mO2Sat;
|
||||||
if (includeRawData) {
|
if (includeRawData) {
|
||||||
for (int i = 0; i< mNsamp;i++) {
|
for (int i = 0; i < mNsamp; i++) {
|
||||||
retval = retval + ", " + rawData[i];
|
retval = retval + ", " + rawData[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return the average acceleration value in the dataset */
|
/**
|
||||||
|
* Return the average acceleration value in the dataset
|
||||||
|
*/
|
||||||
public double getAvAcc() {
|
public double getAvAcc() {
|
||||||
double sumAcc = 0.0;
|
double sumAcc = 0.0;
|
||||||
for (int i = 0; i< mNsamp;i++) {
|
for (int i = 0; i < mNsamp; i++) {
|
||||||
sumAcc += rawData[i];
|
sumAcc += rawData[i];
|
||||||
}
|
}
|
||||||
return(sumAcc/mNsamp);
|
return (sumAcc / mNsamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return the standard deviation of the acceleration values */
|
/**
|
||||||
|
* Return the standard deviation of the acceleration values
|
||||||
|
*/
|
||||||
public double getSdAcc() {
|
public double getSdAcc() {
|
||||||
double avAcc = 0.0;
|
double avAcc = 0.0;
|
||||||
double varAcc = 0.0;
|
double varAcc = 0.0;
|
||||||
avAcc = getAvAcc();
|
avAcc = getAvAcc();
|
||||||
for (int i = 0; i< mNsamp;i++) {
|
for (int i = 0; i < mNsamp; i++) {
|
||||||
varAcc += Math.pow(rawData[i]-avAcc,2);
|
varAcc += Math.pow(rawData[i] - avAcc, 2);
|
||||||
}
|
}
|
||||||
return(Math.sqrt(varAcc/(mNsamp-1)));
|
return (Math.sqrt(varAcc / (mNsamp - 1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -227,10 +227,6 @@ public class SdServer extends Service implements SdDataReceiver {
|
|||||||
Log.v(TAG, "onStartCommand() - calling updatePrefs()");
|
Log.v(TAG, "onStartCommand() - calling updatePrefs()");
|
||||||
updatePrefs();
|
updatePrefs();
|
||||||
|
|
||||||
// Create our log manager.
|
|
||||||
mLm = new LogManager(this, mLogDataRemote, mLogDataRemoteMobile, mAuthToken, mEventDuration,
|
|
||||||
mRemoteLogPeriod, mAutoPruneDb, mDataRetentionPeriod);
|
|
||||||
|
|
||||||
Log.v(TAG, "onStartCommand: Datasource =" + mSdDataSourceName);
|
Log.v(TAG, "onStartCommand: Datasource =" + mSdDataSourceName);
|
||||||
switch (mSdDataSourceName) {
|
switch (mSdDataSourceName) {
|
||||||
case "Pebble":
|
case "Pebble":
|
||||||
@@ -247,6 +243,8 @@ public class SdServer extends Service implements SdDataReceiver {
|
|||||||
Log.v(TAG, "Selecting Network DataSource");
|
Log.v(TAG, "Selecting Network DataSource");
|
||||||
mUtil.writeToSysLogFile("SdServer.onStartCommand() - creating SdDataSourceNetwork");
|
mUtil.writeToSysLogFile("SdServer.onStartCommand() - creating SdDataSourceNetwork");
|
||||||
mSdDataSource = new SdDataSourceNetwork(this.getApplicationContext(), mHandler, this);
|
mSdDataSource = new SdDataSourceNetwork(this.getApplicationContext(), mHandler, this);
|
||||||
|
Log.i(TAG,"Disabling remote logging when using network data source");
|
||||||
|
mLogDataRemote = false;
|
||||||
break;
|
break;
|
||||||
case "Garmin":
|
case "Garmin":
|
||||||
Log.v(TAG, "Selecting Garmin DataSource");
|
Log.v(TAG, "Selecting Garmin DataSource");
|
||||||
@@ -271,6 +269,10 @@ public class SdServer extends Service implements SdDataReceiver {
|
|||||||
mSdDataSource = new SdDataSourcePhone(this.getApplicationContext(), mHandler, this);
|
mSdDataSource = new SdDataSourcePhone(this.getApplicationContext(), mHandler, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create our log manager.
|
||||||
|
mLm = new LogManager(this, mLogDataRemote, mLogDataRemoteMobile, mAuthToken, mEventDuration,
|
||||||
|
mRemoteLogPeriod, mAutoPruneDb, mDataRetentionPeriod);
|
||||||
|
|
||||||
if (mSMSAlarm) {
|
if (mSMSAlarm) {
|
||||||
Log.v(TAG, "Creating LocationFinder");
|
Log.v(TAG, "Creating LocationFinder");
|
||||||
mLocationFinder = new LocationFinder(getApplicationContext());
|
mLocationFinder = new LocationFinder(getApplicationContext());
|
||||||
|
|||||||
BIN
releases/app-release-4.0.4a.apk
Normal file
BIN
releases/app-release-4.0.4a.apk
Normal file
Binary file not shown.
BIN
releases/app-release.apk
Normal file
BIN
releases/app-release.apk
Normal file
Binary file not shown.
20
releases/output-metadata.json
Normal file
20
releases/output-metadata.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"artifactType": {
|
||||||
|
"type": "APK",
|
||||||
|
"kind": "Directory"
|
||||||
|
},
|
||||||
|
"applicationId": "uk.org.openseizuredetector",
|
||||||
|
"variantName": "release",
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"type": "SINGLE",
|
||||||
|
"filters": [],
|
||||||
|
"attributes": [],
|
||||||
|
"versionCode": 100,
|
||||||
|
"versionName": "4.0.4a",
|
||||||
|
"outputFile": "app-release.apk"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"elementType": "File"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user