diff --git a/app/build.gradle b/app/build.gradle index fba04a1fb56ac9bda515bfd66bd61d481ffbb444..d56d8ad55cc1a0a9301be4ed218ff180c6fae07c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,3 +1,5 @@ +import org.ajoberstar.grgit.Grgit + buildscript { repositories { maven { url 'https://maven.fabric.io/public' } @@ -6,6 +8,7 @@ buildscript { dependencies { classpath 'io.fabric.tools:gradle:1.21.6' classpath 'io.realm:realm-gradle-plugin:1.1.0' + classpath 'org.ajoberstar:grgit:1.5.0' } } plugins { @@ -23,8 +26,25 @@ apply plugin: 'io.fabric' apply plugin: 'realm-android' def gitVersion() { - def process = ['sh', '-c', 'git tag -l | grep -c ".*" -'].execute().text.trim() - return process.toInteger() + 1 + // current dir is <your proj>/app, so it's likely that all your git repo files are in the dir + // above. + ext.repo = Grgit.open(project.file('..')) + + // should result in the same value as running + // git tag -l | wc -l or git tag -l | grep -c ".*" - + def numOfTags = ext.repo.tag.list().size() + return numOfTags +} + +def gitCommitId() { + //def process = ['sh', '-c', 'git tag -l | grep -c ".*" -'].execute().text.trim() + //return process.toInteger() + 1 + //return 42 + // current dir is <your proj>/app, so it's likely that all your git repo files are in the dir + // above. + ext.repo = Grgit.open(project.file('..')) + + return ext.repo.log().first().id.substring(0, 7) } def getBugfenderApiKey() { @@ -47,7 +67,7 @@ android { applicationId "info.nightscout.android" minSdkVersion 14 targetSdkVersion 23 - versionName project.properties['version'] + versionName project.properties['version'] + "/" + gitCommitId() versionCode gitVersion() buildConfigField "String", "BUGFENDER_API_KEY", getBugfenderApiKey() } 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 6905665497f5f23e3f18498ffd4eff166fbbf795..8a381cf5a2df9916dad207c79da47fe2d8bde3cc 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 d21499004116e0f974647842f09f01fcfbef576b..fcce820840ae73e067100047c66ad7b7c9f5f94d 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 @@ -214,8 +214,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 496a85bacbf51966917c3c7463feed8a2d99ab43..ab95d50f6d346d506d3a6f03a992e53cfaa00804 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/NightScoutApi.java b/app/src/main/java/info/nightscout/android/upload/nightscout/NightscoutApi.java similarity index 100% rename from app/src/main/java/info/nightscout/android/upload/nightscout/NightScoutApi.java rename to app/src/main/java/info/nightscout/android/upload/nightscout/NightscoutApi.java 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 3fcefde12a486c2e2b5d71f48634cd60d1058fac..ff4bb71d4a17ffaa7260bcf21ae4c95baffb1527 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;