From 89ed43301882aa2b84cdc9405d73cd5e9404f32a Mon Sep 17 00:00:00 2001 From: Volker Richert <v.richert@addmore.de> Date: Fri, 25 Nov 2016 10:57:49 +0100 Subject: [PATCH] - consider time gap between phone and pump --- app/app.iml | 19 ++++++++++--------- app/src/main/AndroidManifest.xml | 4 +--- .../android/medtronic/MainActivity.java | 11 +++-------- .../service/MedtronicCnlIntentService.java | 2 ++ .../model/medtronicNg/PumpStatusEvent.java | 12 ++++++++++++ .../NightscoutUploadIntentService.java | 1 - 6 files changed, 28 insertions(+), 21 deletions(-) diff --git a/app/app.iml b/app/app.iml index e92165a..5fefeca 100644 --- a/app/app.iml +++ b/app/app.iml @@ -67,14 +67,6 @@ <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" /> @@ -83,10 +75,17 @@ <sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/23.4.0/jars" /> @@ -115,6 +114,7 @@ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> @@ -164,6 +164,7 @@ <orderEntry type="library" exported="" name="okhttp-3.3.0" level="project" /> <orderEntry type="library" exported="" name="answers-1.3.8" level="project" /> <orderEntry type="library" exported="" name="iconics-core-2.6.0" level="project" /> + <orderEntry type="library" exported="" name="android-android-23" level="project" /> <orderEntry type="library" exported="" name="org.apache.http.legacy-android-23" level="project" /> </component> </module> \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9f14c5b..0da1cd4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,17 +63,15 @@ android:name=".medtronic.GetHmacAndKeyActivity" android:label="@string/title_activity_login" android:theme="@style/SettingsTheme" /> + <activity android:name=".medtronic.StatusActivity" /> <service android:name=".upload.nightscout.NightscoutUploadIntentService" android:icon="@drawable/ic_launcher" /> - <service android:name=".medtronic.service.MedtronicCnlIntentService" android:icon="@drawable/ic_launcher" /> - <activity android:name=".medtronic.StatusActivity" /> - <receiver android:name=".medtronic.service.MedtronicCnlAlarmReceiver" /> <receiver android:name=".upload.nightscout.NightscoutUploadReceiver" /> diff --git a/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java b/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java index 6905665..8a381cf 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java +++ b/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java @@ -15,7 +15,6 @@ import android.hardware.usb.UsbManager; import android.os.BatteryManager; import android.os.Bundle; import android.os.Handler; -import android.os.SystemClock; import android.preference.PreferenceManager; import android.support.v4.app.TaskStackBuilder; import android.support.v4.content.LocalBroadcastManager; @@ -305,7 +304,7 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc } private void startCgmService() { - startCgmService(System.currentTimeMillis()); + startCgmService(System.currentTimeMillis() + 1000); } private void startCgmService(long initialPoll) { @@ -524,8 +523,6 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc private class RefreshDisplayRunnable implements Runnable { @Override public void run() { - Log.d(TAG, "NOW " + new Date(System.currentTimeMillis()).toString()); - // UI elements - TODO do these need to be members? TextView textViewBg = (TextView) findViewById(R.id.textview_bg); TextView textViewBgTime = (TextView) findViewById(R.id.textview_bg_time); @@ -630,11 +627,9 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc return; } - long nextPoll = pumpStatusData.getEventDate().getTime() + MedtronicCnlIntentService.POLL_GRACE_PERIOD_MS + MedtronicCnlIntentService.POLL_PERIOD_MS; + long nextPoll = pumpStatusData.getEventDate().getTime() + pumpStatusData.getPumpTimeOffset() + + MedtronicCnlIntentService.POLL_GRACE_PERIOD_MS + MedtronicCnlIntentService.POLL_PERIOD_MS; startCgmService(nextPoll); - Log.d(TAG, "Local time " + new Date()); - Log.d(TAG, "Last event was " + new Date(pumpStatusData.getEventDate().getTime())); - Log.d(TAG, "Next Poll at " + new Date(nextPoll).toString()); // Delete invalid or old records from Realm // TODO - show an error message if the valid records haven't been uploaded diff --git a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java index 1a1f246..25245a7 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java +++ b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java @@ -209,8 +209,10 @@ public class MedtronicCnlIntentService extends IntentService { long pumpTime = cnlReader.getPumpTime().getTime(); long pumpOffset = pumpTime - System.currentTimeMillis(); + Log.d(TAG, "Time offset between pump and device: " + pumpOffset + " millis."); // TODO - send ACTION to MainActivity to show offset between pump and uploader. + pumpRecord.setPumpTimeOffset(pumpOffset); pumpRecord.setPumpDate(new Date(pumpTime - pumpOffset)); cnlReader.getPumpStatus(pumpRecord, pumpOffset); activePump.getPumpHistory().add(pumpRecord); diff --git a/app/src/main/java/info/nightscout/android/model/medtronicNg/PumpStatusEvent.java b/app/src/main/java/info/nightscout/android/model/medtronicNg/PumpStatusEvent.java index 496a85b..ab95d50 100644 --- a/app/src/main/java/info/nightscout/android/model/medtronicNg/PumpStatusEvent.java +++ b/app/src/main/java/info/nightscout/android/model/medtronicNg/PumpStatusEvent.java @@ -3,6 +3,7 @@ package info.nightscout.android.model.medtronicNg; import java.util.Date; import io.realm.RealmObject; +import io.realm.annotations.Ignore; import io.realm.annotations.Index; /** @@ -38,6 +39,9 @@ public class PumpStatusEvent extends RealmObject { private boolean recentBolusWizard; // Whether a bolus wizard has been run recently private int bolusWizardBGL; // in mg/dL. 0 means no recent bolus wizard reading. + @Ignore + private long pumpTimeOffset; // millis the pump is ahead + @Index private boolean uploaded = false; @@ -249,6 +253,14 @@ public class PumpStatusEvent extends RealmObject { this.recentBolusWizard = recentBolusWizard; } + public long getPumpTimeOffset() { + return pumpTimeOffset; + } + + public void setPumpTimeOffset(long pumpTimeOffset) { + this.pumpTimeOffset = pumpTimeOffset; + } + public enum CGM_TREND { NONE, DOUBLE_UP, diff --git a/app/src/main/java/info/nightscout/android/upload/nightscout/NightscoutUploadIntentService.java b/app/src/main/java/info/nightscout/android/upload/nightscout/NightscoutUploadIntentService.java index 3fcefde..ff4bb71 100644 --- a/app/src/main/java/info/nightscout/android/upload/nightscout/NightscoutUploadIntentService.java +++ b/app/src/main/java/info/nightscout/android/upload/nightscout/NightscoutUploadIntentService.java @@ -31,7 +31,6 @@ import java.util.regex.Pattern; import info.nightscout.android.R; import info.nightscout.android.medtronic.MainActivity; -import info.nightscout.android.medtronic.service.MedtronicCnlIntentService; import info.nightscout.android.model.medtronicNg.PumpStatusEvent; import info.nightscout.android.upload.nightscout.serializer.EntriesSerializer; import io.realm.Realm; -- GitLab