Added dataJSON field to events table so we can store watch app version etc. with the event rather than every datapoint.
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.3">
|
android:versionName="4.0.4">
|
||||||
<!-- 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" />
|
||||||
|
|||||||
@@ -207,6 +207,10 @@ public class LogManager {
|
|||||||
event.put("id", c.getString(c.getColumnIndex("id")));
|
event.put("id", c.getString(c.getColumnIndex("id")));
|
||||||
event.put("dataTime", c.getString(c.getColumnIndex("dataTime")));
|
event.put("dataTime", c.getString(c.getColumnIndex("dataTime")));
|
||||||
event.put("status", c.getString(c.getColumnIndex("status")));
|
event.put("status", c.getString(c.getColumnIndex("status")));
|
||||||
|
event.put("type", c.getString(c.getColumnIndex("type")));
|
||||||
|
event.put("subType", c.getString(c.getColumnIndex("subType")));
|
||||||
|
event.put("desc", c.getString(c.getColumnIndex("notes")));
|
||||||
|
event.put("dataJSON", c.getString(c.getColumnIndex("dataJSON")));
|
||||||
event.put("uploaded", c.getString(c.getColumnIndex("uploaded")));
|
event.put("uploaded", c.getString(c.getColumnIndex("uploaded")));
|
||||||
c.moveToNext();
|
c.moveToNext();
|
||||||
eventsArray.put(i, event);
|
eventsArray.put(i, event);
|
||||||
@@ -293,7 +297,7 @@ public class LogManager {
|
|||||||
|
|
||||||
if (sdData.alarmState != 0) {
|
if (sdData.alarmState != 0) {
|
||||||
Log.i(TAG, "writeDatapointToLocalDb(): adding event to local DB");
|
Log.i(TAG, "writeDatapointToLocalDb(): adding event to local DB");
|
||||||
createLocalEvent(dateStr, sdData.alarmState);
|
createLocalEvent(dateStr,sdData.alarmState,null, null, null, sdData.toSettingsJSON());
|
||||||
}
|
}
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
Log.e(TAG, "writeToLocalDb(): Error Writing Data: " + e.toString());
|
Log.e(TAG, "writeToLocalDb(): Error Writing Data: " + e.toString());
|
||||||
@@ -304,14 +308,22 @@ public class LogManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean createLocalEvent(String dataTime, long status) {
|
public boolean createLocalEvent(String dataTime, long status) {
|
||||||
|
return (createLocalEvent(dataTime, status, null, null, null, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
Log.d(TAG, "createLocalEvent() - dataTime=" + dataTime + ", status=" + status + ", dataJSON="+dataJSON);
|
||||||
// Write Datapoint to database
|
// Write Datapoint to database
|
||||||
String SQLStr = "INSERT INTO " + mEventsTableName
|
String SQLStr = "INSERT INTO " + mEventsTableName
|
||||||
+ "(dataTime, status)"
|
+ "(dataTime, status, type, subtype, notes, dataJSON)"
|
||||||
+ " VALUES("
|
+ " VALUES("
|
||||||
+ "'" + dataTime + "',"
|
+ "'" + dataTime + "',"
|
||||||
+ status
|
+ status + ","
|
||||||
|
+ "'" + type + "',"
|
||||||
|
+ "'" + subType + "',"
|
||||||
|
+ "'" + desc + "',"
|
||||||
|
+ "'" + dataJSON + "'"
|
||||||
+ ")";
|
+ ")";
|
||||||
mOsdDb.execSQL(SQLStr);
|
mOsdDb.execSQL(SQLStr);
|
||||||
return true;
|
return true;
|
||||||
@@ -371,7 +383,7 @@ public class LogManager {
|
|||||||
public boolean setDatapointToUploaded(int id, String eventId) {
|
public boolean setDatapointToUploaded(int id, String eventId) {
|
||||||
Log.d(TAG, "setDatapointToUploaded() - id=" + id);
|
Log.d(TAG, "setDatapointToUploaded() - id=" + id);
|
||||||
if (mOsdDb == null) {
|
if (mOsdDb == null) {
|
||||||
Log.e(TAG,"setDatapointToUploaded() - mOsdDb is null - not doing anything");
|
Log.e(TAG, "setDatapointToUploaded() - mOsdDb is null - not doing anything");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ContentValues cv = new ContentValues();
|
ContentValues cv = new ContentValues();
|
||||||
@@ -491,14 +503,14 @@ public class LogManager {
|
|||||||
/**
|
/**
|
||||||
* setEventToUploaded
|
* setEventToUploaded
|
||||||
*
|
*
|
||||||
* @param localEventId - local Event ID to change
|
* @param localEventId - local Event ID to change
|
||||||
* @param remoteEventId - the remote eventId associated with the uploaded datapoint - the 'uploaded' field is set to this value.
|
* @param remoteEventId - the remote eventId associated with the uploaded datapoint - the 'uploaded' field is set to this value.
|
||||||
* @return True on success or False on failure.
|
* @return True on success or False on failure.
|
||||||
*/
|
*/
|
||||||
public boolean setEventToUploaded(long localEventId, String remoteEventId) {
|
public boolean setEventToUploaded(long localEventId, String remoteEventId) {
|
||||||
Log.d(TAG, "setEventToUploaded() - local id=" + localEventId + " remote id="+remoteEventId);
|
Log.d(TAG, "setEventToUploaded() - local id=" + localEventId + " remote id=" + remoteEventId);
|
||||||
if (mOsdDb == null) {
|
if (mOsdDb == null) {
|
||||||
Log.e(TAG,"setEventToUploaded() - mOsdDb is null - not doing anything");
|
Log.e(TAG, "setEventToUploaded() - mOsdDb is null - not doing anything");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ContentValues cv = new ContentValues();
|
ContentValues cv = new ContentValues();
|
||||||
@@ -784,32 +796,46 @@ public class LogManager {
|
|||||||
int eventAlarmStatus;
|
int eventAlarmStatus;
|
||||||
String eventDateStr;
|
String eventDateStr;
|
||||||
Date eventDate;
|
Date eventDate;
|
||||||
|
String eventType;
|
||||||
|
String eventSubType;
|
||||||
|
String eventDesc;
|
||||||
|
String eventDataJSON;
|
||||||
try {
|
try {
|
||||||
JSONArray datapointJsonArr = new JSONArray(eventJsonStr);
|
JSONArray datapointJsonArr = new JSONArray(eventJsonStr);
|
||||||
eventObj = datapointJsonArr.getJSONObject(0); // We only look at the first (and hopefully only) item in the array.
|
eventObj = datapointJsonArr.getJSONObject(0); // We only look at the first (and hopefully only) item in the array.
|
||||||
eventAlarmStatus = Integer.parseInt(eventObj.getString("status"));
|
eventAlarmStatus = Integer.parseInt(eventObj.getString("status"));
|
||||||
eventDateStr = eventObj.getString("dataTime");
|
eventDateStr = eventObj.getString("dataTime");
|
||||||
|
eventType = eventObj.getString("type");
|
||||||
|
eventSubType = eventObj.getString("subType");
|
||||||
|
if (eventObj.has("desc"))
|
||||||
|
eventDesc = eventObj.getString("desc");
|
||||||
|
else
|
||||||
|
eventDesc = "";
|
||||||
|
eventDataJSON = eventObj.getString("dataJSON");
|
||||||
Log.d(TAG, "uploadSdData - data from local DB is:" + eventJsonStr + ", eventAlarmStatus="
|
Log.d(TAG, "uploadSdData - data from local DB is:" + eventJsonStr + ", eventAlarmStatus="
|
||||||
+ eventAlarmStatus + ", eventDateStr=" + eventDateStr);
|
+ eventAlarmStatus + ", eventDateStr=" + eventDateStr);
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
Log.e(TAG, "uploadSdData(): ERROR parsing event JSON Data" + eventJsonStr);
|
Log.e(TAG, "uploadSdData(): ERROR parsing event JSON Data" + eventJsonStr);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
mUploadInProgress = false;
|
||||||
return;
|
return;
|
||||||
} catch (NullPointerException e) {
|
} catch (NullPointerException e) {
|
||||||
Log.e(TAG, "uploadSdData(): ERROR null pointer exception parsing event JSON Data" + eventJsonStr);
|
Log.e(TAG, "uploadSdData(): ERROR null pointer exception parsing event JSON Data: " + eventJsonStr);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
mUploadInProgress = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
eventDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(eventDateStr);
|
eventDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(eventDateStr);
|
||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
Log.e(TAG, "UploadSdData(): Error parsing date " + eventDateStr);
|
Log.e(TAG, "UploadSdData(): Error parsing date " + eventDateStr);
|
||||||
|
mUploadInProgress = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.i(TAG, "uploadSdData - calling mWac.createEvent");
|
Log.i(TAG, "uploadSdData - calling mWac.createEvent");
|
||||||
mCurrentEventLocalId = eventId;
|
mCurrentEventLocalId = eventId;
|
||||||
mWac.createEvent(eventAlarmStatus, eventDate, "", this::createEventCallback);
|
mWac.createEvent(eventAlarmStatus, eventDate, eventType, eventSubType, eventDesc, eventDataJSON, this::createEventCallback);
|
||||||
} else {
|
} else {
|
||||||
Log.v(TAG, "uploadSdData - no data to upload "); //(warnings="+warningsVal+")");
|
Log.v(TAG, "uploadSdData - no data to upload "); //(warnings="+warningsVal+")");
|
||||||
mUploadInProgress = false;
|
mUploadInProgress = false;
|
||||||
@@ -839,14 +865,14 @@ public class LogManager {
|
|||||||
@Override
|
@Override
|
||||||
public void accept(JSONObject eventObj) {
|
public void accept(JSONObject eventObj) {
|
||||||
if (eventObj == null) {
|
if (eventObj == null) {
|
||||||
Log.e(TAG,"createEventCallback() - eventObj is null - failed to create event");
|
Log.e(TAG, "createEventCallback() - eventObj is null - failed to create event");
|
||||||
mUtil.showToast("Error Creating Remote Event");
|
mUtil.showToast("Error Creating Remote Event");
|
||||||
} else {
|
} else {
|
||||||
Log.v(TAG, "createEventCallback() - eventObj=" + eventObj.toString());
|
Log.v(TAG, "createEventCallback() - eventObj=" + eventObj.toString());
|
||||||
Date eventDate;
|
Date eventDate;
|
||||||
String eventDateStr = "";
|
String eventDateStr = "";
|
||||||
try {
|
try {
|
||||||
String dateStr= eventObj.getString("dataTime");
|
String dateStr = eventObj.getString("dataTime");
|
||||||
eventDate = mUtil.string2date(dateStr);
|
eventDate = mUtil.string2date(dateStr);
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
Log.e(TAG, "createEventCallback() - Error parsing JSONObject: " + eventObj.toString());
|
Log.e(TAG, "createEventCallback() - Error parsing JSONObject: " + eventObj.toString());
|
||||||
@@ -888,7 +914,7 @@ public class LogManager {
|
|||||||
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
Log.e(TAG,"createEventCallback() - Error - event date is null - not doing anything");
|
Log.e(TAG, "createEventCallback() - Error - event date is null - not doing anything");
|
||||||
mUtil.showToast("Error uploading event - date is null");
|
mUtil.showToast("Error uploading event - date is null");
|
||||||
finishUpload();
|
finishUpload();
|
||||||
}
|
}
|
||||||
@@ -922,7 +948,7 @@ public class LogManager {
|
|||||||
finishUpload();
|
finishUpload();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.w(TAG,"uploadNextDatapoint - mDatapointsToUploadList is null - I don't thin this should have happened!");
|
Log.w(TAG, "uploadNextDatapoint - mDatapointsToUploadList is null - I don't thin this should have happened!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -930,13 +956,13 @@ public class LogManager {
|
|||||||
// a datapoint based on mDatapointsToUploadList(0) so removes that from the list and calls UploadDatapoint()
|
// a datapoint based on mDatapointsToUploadList(0) so removes that from the list and calls UploadDatapoint()
|
||||||
// to upload the next one.
|
// to upload the next one.
|
||||||
public void datapointCallback(String datapointStr) {
|
public void datapointCallback(String datapointStr) {
|
||||||
Log.v(TAG, "datapointCallback() dataPointId="+mCurrentDatapointId+" remote datapointID=" + datapointStr + ", mCurrentEventId=" + mCurrentEventRemoteId);
|
Log.v(TAG, "datapointCallback() dataPointId=" + mCurrentDatapointId + " remote datapointID=" + datapointStr + ", mCurrentEventId=" + mCurrentEventRemoteId);
|
||||||
if (mDatapointsToUploadList != null) {
|
if (mDatapointsToUploadList != null) {
|
||||||
if (mDatapointsToUploadList.size() > 0) {
|
if (mDatapointsToUploadList.size() > 0) {
|
||||||
mDatapointsToUploadList.remove(0);
|
mDatapointsToUploadList.remove(0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.w(TAG,"datapointCallback - mDatapointsToUploadList is null - I don't thin this should have happened!");
|
Log.w(TAG, "datapointCallback - mDatapointsToUploadList is null - I don't thin this should have happened!");
|
||||||
}
|
}
|
||||||
setDatapointToUploaded(mCurrentDatapointId, mCurrentEventRemoteId);
|
setDatapointToUploaded(mCurrentDatapointId, mCurrentEventRemoteId);
|
||||||
uploadNextDatapoint();
|
uploadNextDatapoint();
|
||||||
@@ -1049,6 +1075,8 @@ public class LogManager {
|
|||||||
+ "status INT,"
|
+ "status INT,"
|
||||||
+ "type TEXT,"
|
+ "type TEXT,"
|
||||||
+ "subType TEXT,"
|
+ "subType TEXT,"
|
||||||
|
+ "notes TEXT," // avoiding using 'desc' as that is an sql name.
|
||||||
|
+ "dataJSON TEXT,"
|
||||||
+ "uploaded TEXT" // stores the id of the event in the remote dabase if uploaded, otherwise empty
|
+ "uploaded TEXT" // stores the id of the event in the remote dabase if uploaded, otherwise empty
|
||||||
+ ");";
|
+ ");";
|
||||||
db.execSQL(SQLStr);
|
db.execSQL(SQLStr);
|
||||||
|
|||||||
@@ -427,7 +427,7 @@ public class LogManagerControlActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_mark_unknown:
|
case R.id.action_mark_unknown:
|
||||||
Log.i(TAG,"action_mark_unknown");
|
Log.i(TAG, "action_mark_unknown");
|
||||||
new AlertDialog.Builder(this)
|
new AlertDialog.Builder(this)
|
||||||
.setTitle(R.string.mark_unverified_events_unknown_dialog_title)
|
.setTitle(R.string.mark_unverified_events_unknown_dialog_title)
|
||||||
.setMessage(R.string.mark_unverified_events_unknown_dialog_message)
|
.setMessage(R.string.mark_unverified_events_unknown_dialog_message)
|
||||||
@@ -435,7 +435,8 @@ public class LogManagerControlActivity extends AppCompatActivity {
|
|||||||
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
|
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
|
||||||
public void onClick(DialogInterface dialog, int whichButton) {
|
public void onClick(DialogInterface dialog, int whichButton) {
|
||||||
mLm.mWac.markUnverifiedEventsAsUnknown();
|
mLm.mWac.markUnverifiedEventsAsUnknown();
|
||||||
}})
|
}
|
||||||
|
})
|
||||||
.setNegativeButton(android.R.string.no, null)
|
.setNegativeButton(android.R.string.no, null)
|
||||||
.show();
|
.show();
|
||||||
default:
|
default:
|
||||||
@@ -624,6 +625,7 @@ public class LogManagerControlActivity extends AppCompatActivity {
|
|||||||
Log.v(TAG, "getView() " + dataItem.toString());
|
Log.v(TAG, "getView() " + dataItem.toString());
|
||||||
switch (dataItem.get("type").toString()) {
|
switch (dataItem.get("type").toString()) {
|
||||||
case "null":
|
case "null":
|
||||||
|
case "":
|
||||||
v.setBackgroundColor(Color.parseColor("#ffaaaa"));
|
v.setBackgroundColor(Color.parseColor("#ffaaaa"));
|
||||||
break;
|
break;
|
||||||
case "Seizure":
|
case "Seizure":
|
||||||
|
|||||||
@@ -147,7 +147,9 @@ public class ReportSeizureActivity extends AppCompatActivity {
|
|||||||
//SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
//SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
String dateStr=String.format("%4d-%02d-%02d %02d:%02d:30",mYear,mMonth+1,mDay, mHour, mMinute);
|
String dateStr=String.format("%4d-%02d-%02d %02d:%02d:30",mYear,mMonth+1,mDay, mHour, mMinute);
|
||||||
Log.v(TAG, "onOk() - dateSTr="+dateStr);
|
Log.v(TAG, "onOk() - dateSTr="+dateStr);
|
||||||
mLm.createLocalEvent(dateStr,5);
|
// FIXME - make new version of SdData.toJSON that gives watch details for in the event.
|
||||||
|
mLm.createLocalEvent(dateStr,5,null, null, null,
|
||||||
|
mConnection.mSdServer.mSdData.toSettingsJSON());
|
||||||
mUtil.showToast("Seizure Event Created");
|
mUtil.showToast("Seizure Event Created");
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,12 @@ public class SdData implements Parcelable {
|
|||||||
public boolean mO2SatNullAsAlarm = false;
|
public boolean mO2SatNullAsAlarm = false;
|
||||||
public double mO2SatThreshMin = 80.0;
|
public double mO2SatThreshMin = 80.0;
|
||||||
|
|
||||||
|
/* Watch App Settings */
|
||||||
|
public String watchPartNo = "";
|
||||||
|
public String watchFwVersion = "";
|
||||||
|
public String watchSdVersion = "";
|
||||||
|
public String watchSdName = "";
|
||||||
|
|
||||||
|
|
||||||
public double rawData[];
|
public double rawData[];
|
||||||
int mNsamp = 0;
|
int mNsamp = 0;
|
||||||
@@ -164,6 +170,48 @@ public class SdData implements Parcelable {
|
|||||||
return toDataString(includeRawData);
|
return toDataString(includeRawData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String toSettingsJSON() {
|
||||||
|
String retval;
|
||||||
|
retval = "SdData.toSettingsJSON() 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");
|
||||||
|
}
|
||||||
|
jsonObj.put("batteryPc", batteryPc);
|
||||||
|
jsonObj.put("alarmState", alarmState);
|
||||||
|
jsonObj.put("alarmPhrase", alarmPhrase);
|
||||||
|
jsonObj.put("sdMode",mSdMode);
|
||||||
|
jsonObj.put("sampleFreq",mSampleFreq);
|
||||||
|
jsonObj.put("analysisPeriod",analysisPeriod);
|
||||||
|
jsonObj.put("alarmFreqMin",alarmFreqMin);
|
||||||
|
jsonObj.put("alarmFreqMax",alarmFreqMax);
|
||||||
|
jsonObj.put("alarmThresh", alarmThresh);
|
||||||
|
jsonObj.put("alarmRatioThresh", alarmRatioThresh);
|
||||||
|
jsonObj.put("hrAlarmActive", mHRAlarmActive);
|
||||||
|
jsonObj.put("hrAlarmStanding", mHRAlarmStanding);
|
||||||
|
jsonObj.put("hrThreshMin",mHRThreshMin);
|
||||||
|
jsonObj.put("hrThreshMax", mHRThreshMax);
|
||||||
|
jsonObj.put("o2SatAlarmActive", mO2SatAlarmActive);
|
||||||
|
jsonObj.put("o2SatAlarmStanding", mO2SatAlarmStanding);
|
||||||
|
jsonObj.put("o2SatThreshMin",mO2SatThreshMin);
|
||||||
|
jsonObj.put("watchPartNo",watchPartNo);
|
||||||
|
jsonObj.put("watchSdName",watchSdName);
|
||||||
|
jsonObj.put("watchFwVersion",watchFwVersion);
|
||||||
|
jsonObj.put("watchSdVersion",watchSdVersion);
|
||||||
|
|
||||||
|
retval = jsonObj.toString();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Log.e(TAG, "toSettingsJSON(): Error Creating Data Object - " + ex.toString());
|
||||||
|
retval = "Error Creating Data Object - " + ex.toString();
|
||||||
|
}
|
||||||
|
return (retval);
|
||||||
|
}
|
||||||
|
|
||||||
public String toDataString(boolean includeRawData) {
|
public String toDataString(boolean includeRawData) {
|
||||||
String retval;
|
String retval;
|
||||||
retval = "SdData.toDataString() Output";
|
retval = "SdData.toDataString() Output";
|
||||||
|
|||||||
@@ -318,6 +318,10 @@ public abstract class SdDataSource {
|
|||||||
sdName = dataObject.getString("sdName");
|
sdName = dataObject.getString("sdName");
|
||||||
mUtil.writeToSysLogFile(" * sdName = " + sdName + " version " + sdVersion);
|
mUtil.writeToSysLogFile(" * sdName = " + sdName + " version " + sdVersion);
|
||||||
mUtil.writeToSysLogFile(" * watchPartNo = " + watchPartNo + " fwVersion " + watchFwVersion);
|
mUtil.writeToSysLogFile(" * watchPartNo = " + watchPartNo + " fwVersion " + watchFwVersion);
|
||||||
|
mSdData.watchPartNo = watchPartNo;
|
||||||
|
mSdData.watchFwVersion = watchFwVersion;
|
||||||
|
mSdData.watchSdVersion = sdVersion;
|
||||||
|
mSdData.watchSdName = sdName;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e(TAG, "updateFromJSON - Error Parsing V3.2 JSON String - " + e.toString());
|
Log.e(TAG, "updateFromJSON - Error Parsing V3.2 JSON String - " + e.toString());
|
||||||
mUtil.writeToSysLogFile("updateFromJSON - Error Parsing V3.2 JSON String - " + jsonStr + " - " + e.toString());
|
mUtil.writeToSysLogFile("updateFromJSON - Error Parsing V3.2 JSON String - " + jsonStr + " - " + e.toString());
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ public class SdServer extends Service implements SdDataReceiver {
|
|||||||
private long mEventsTimerPeriod = 60; // Number of seconds between checks to see if there are unvalidated remote events.
|
private long mEventsTimerPeriod = 60; // Number of seconds between checks to see if there are unvalidated remote events.
|
||||||
private long mEventDuration = 120; // event duration in seconds - uploads datapoints that cover this time range centred on the event time.
|
private long mEventDuration = 120; // event duration in seconds - uploads datapoints that cover this time range centred on the event time.
|
||||||
public long mDataRetentionPeriod = 1; // Prunes the local db so it only retains data younger than this duration (in days)
|
public long mDataRetentionPeriod = 1; // Prunes the local db so it only retains data younger than this duration (in days)
|
||||||
private long mRemoteLogPeriod = 20; // Period in seconds between uploads to the remote server.
|
private long mRemoteLogPeriod = 6; // Period in seconds between uploads to the remote server.
|
||||||
private long mAutoPrunePeriod = 3600; // Prune the database every hour
|
private long mAutoPrunePeriod = 3600; // Prune the database every hour
|
||||||
private boolean mAutoPruneDb;
|
private boolean mAutoPruneDb;
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,8 @@ public abstract class WebApiConnection {
|
|||||||
|
|
||||||
// Create a new event in the remote database, based on the provided parameters.
|
// Create a new event in the remote database, based on the provided parameters.
|
||||||
// passes the newly created documentId to function callback on successful completion, or null on error.
|
// passes the newly created documentId to function callback on successful completion, or null on error.
|
||||||
public abstract boolean createEvent(final int osdAlarmState, final Date eventDate, final String eventDesc, StringCallback callback);
|
public abstract boolean createEvent(final int osdAlarmState, final Date eventDate, final String type, final String subType,
|
||||||
|
final String eventDesc, final String dataJSON, StringCallback callback);
|
||||||
|
|
||||||
// calls function callback with a JSONObject representation of the event with id 'eventId'
|
// calls function callback with a JSONObject representation of the event with id 'eventId'
|
||||||
public abstract boolean getEvent(String eventId, JSONObjectCallback callback);
|
public abstract boolean getEvent(String eventId, JSONObjectCallback callback);
|
||||||
|
|||||||
@@ -119,7 +119,9 @@ public class WebApiConnection_firebase extends WebApiConnection {
|
|||||||
|
|
||||||
// Create a new event in the remote database, based on the provided parameters.
|
// Create a new event in the remote database, based on the provided parameters.
|
||||||
// passes the newly created documentId to function callback on successful completion, or null on error.
|
// 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 eventDesc, StringCallback callback) {
|
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
|
||||||
Log.v(TAG, "createEvent()");
|
Log.v(TAG, "createEvent()");
|
||||||
String userId = null;
|
String userId = null;
|
||||||
|
|
||||||
@@ -138,8 +140,9 @@ public class WebApiConnection_firebase extends WebApiConnection {
|
|||||||
event.put("dataTime", eventDate.getTime());
|
event.put("dataTime", eventDate.getTime());
|
||||||
event.put("osdAlarmState", osdAlarmState);
|
event.put("osdAlarmState", osdAlarmState);
|
||||||
event.put("desc", eventDesc);
|
event.put("desc", eventDesc);
|
||||||
event.put("type", null);
|
event.put("type", type);
|
||||||
event.put("subType", null);
|
event.put("subType", subType);
|
||||||
|
event.put("dataJSON", dataJSON);
|
||||||
event.put("userId", userId);
|
event.put("userId", userId);
|
||||||
|
|
||||||
mDb.collection("Events")
|
mDb.collection("Events")
|
||||||
|
|||||||
@@ -127,7 +127,8 @@ public class WebApiConnection_osdapi extends WebApiConnection {
|
|||||||
|
|
||||||
|
|
||||||
// Create a new event in the remote database, based on the provided parameters.
|
// Create a new event in the remote database, based on the provided parameters.
|
||||||
public boolean createEvent(final int osdAlarmState, final Date eventDate, final String eventDesc, StringCallback callback) {
|
public boolean createEvent(final int osdAlarmState, final Date eventDate, final String type, final String subType,
|
||||||
|
final String eventDesc, final String dataJSON, StringCallback callback) {
|
||||||
Log.v(TAG, "createEvent()");
|
Log.v(TAG, "createEvent()");
|
||||||
String urlStr = mUrlBase + "/api/events/";
|
String urlStr = mUrlBase + "/api/events/";
|
||||||
Log.v(TAG, "urlStr=" + urlStr);
|
Log.v(TAG, "urlStr=" + urlStr);
|
||||||
@@ -142,7 +143,10 @@ public class WebApiConnection_osdapi extends WebApiConnection {
|
|||||||
try {
|
try {
|
||||||
jsonObject.put("osdAlarmState", String.valueOf(osdAlarmState));
|
jsonObject.put("osdAlarmState", String.valueOf(osdAlarmState));
|
||||||
jsonObject.put("dataTime", dateFormat.format(eventDate));
|
jsonObject.put("dataTime", dateFormat.format(eventDate));
|
||||||
|
jsonObject.put("type", type);
|
||||||
|
jsonObject.put("subType", subType);
|
||||||
jsonObject.put("desc", eventDesc);
|
jsonObject.put("desc", eventDesc);
|
||||||
|
jsonObject.put("dataJSON", dataJSON);
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
Log.e(TAG, "Error generating event JSON string");
|
Log.e(TAG, "Error generating event JSON string");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
<string name="app_name">OpenSeizureDetector</string>
|
<string name="app_name">OpenSeizureDetector</string>
|
||||||
<string name="changelog">
|
<string name="changelog">
|
||||||
"\n
|
"\n
|
||||||
|
\nV4.0.4 - Added watch info to events data
|
||||||
\nV4.0.3 - Changed remote database to be compatible with either OSD webAPI or future Firebase database.<br/>
|
\nV4.0.3 - Changed remote database to be compatible with either OSD webAPI or future Firebase database.<br/>
|
||||||
- Performance improvement by having separate events and datapoints tables in local database
|
- Performance improvement by having separate events and datapoints tables in local database
|
||||||
\nV4.0.1, 4.0.2, - fixed repoted crashes
|
\nV4.0.1, 4.0.2, - fixed repoted crashes
|
||||||
|
|||||||
Reference in New Issue
Block a user