From f1c0555b1f4fbdf9a5e61f8a2a8bad74a00f24e8 Mon Sep 17 00:00:00 2001
From: Volker Richert <v.richert@addmore.de>
Date: Thu, 29 Dec 2016 18:12:06 +0100
Subject: [PATCH] starting configurable poll timings (normal & on low bat)

---
 .../android/medtronic/MainActivity.java       |  11 +++++---
 .../service/MedtronicCnlAlarmReceiver.java    |  11 +++++++-
 app/src/main/res/drawable/battery_0.png       | Bin 0 -> 253 bytes
 app/src/main/res/drawable/battery_100.png     | Bin 0 -> 267 bytes
 app/src/main/res/drawable/battery_25.png      | Bin 0 -> 261 bytes
 app/src/main/res/drawable/battery_50.png      | Bin 0 -> 262 bytes
 app/src/main/res/drawable/battery_75.png      | Bin 0 -> 262 bytes
 app/src/main/res/menu/menu.xml                |   1 +
 app/src/main/res/values/arrays.xml            |  24 ++++++++++++++++++
 app/src/main/res/values/strings.xml           |   5 +++-
 app/src/main/res/xml/preferences.xml          |  14 ++++++++++
 11 files changed, 61 insertions(+), 5 deletions(-)
 create mode 100644 app/src/main/res/drawable/battery_0.png
 create mode 100644 app/src/main/res/drawable/battery_100.png
 create mode 100644 app/src/main/res/drawable/battery_25.png
 create mode 100644 app/src/main/res/drawable/battery_50.png
 create mode 100644 app/src/main/res/drawable/battery_75.png
 create mode 100644 app/src/main/res/values/arrays.xml

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 5be35ed..c11b1a4 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java
@@ -90,6 +90,8 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc
     private Realm mRealm;
     private StatusMessageReceiver statusMessageReceiver = new StatusMessageReceiver();
     private MedtronicCnlAlarmReceiver medtronicCnlAlarmReceiver = new MedtronicCnlAlarmReceiver();
+    public static long pollInterval = 0;
+    public static long lowBatteryPollInterval = 0;
 
     public static void setActivePumpMac(long pumpMac) {
         activePumpMac = pumpMac;
@@ -416,6 +418,10 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc
             }
         } else if (key.equals("mmolxl")) {
             refreshDisplay();
+        } else if (key.equals("pollInterval")) {
+            String test = sharedPreferences.getString("pollInterval", "5 min");
+        } else if (key.equals("lowBatPollInterval")) {
+            MainActivity.lowBatteryPollInterval = sharedPreferences.getLong("lowBatPollInterval", MedtronicCnlIntentService.LOW_BATTERY_POLL_PERIOD_MS);
         }
     }
 
@@ -687,12 +693,12 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc
 
             if (pumpStatusData.getBatteryPercentage() > 25) {
                 // poll every 5 min
-                nextPoll += MedtronicCnlIntentService.POLL_PERIOD_MS;
+                nextPoll += MainActivity.pollInterval;
             } else {
                 // if pump battery seems to be empty reduce polling to save battery (every 15 min)
                 //TODO configurable???
                 //TODO add message & document it
-                nextPoll += MedtronicCnlIntentService.LOW_BATTERY_POLL_PERIOD_MS;
+                nextPoll += MainActivity.lowBatteryPollInterval;
             }
             startCgmService(nextPoll);
 
@@ -719,7 +725,6 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc
             // TODO - handle isOffline in NightscoutUploadIntentService?
             uploadCgmData();
 
-
             refreshDisplay();
         }
     }
diff --git a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlAlarmReceiver.java b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlAlarmReceiver.java
index 49e648c..1da9df6 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlAlarmReceiver.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlAlarmReceiver.java
@@ -1,15 +1,20 @@
 package info.nightscout.android.medtronic.service;
 
+import android.app.Activity;
 import android.app.AlarmManager;
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.os.Build;
+import android.preference.PreferenceManager;
 import android.support.v4.content.WakefulBroadcastReceiver;
 import android.util.Log;
 
 import java.util.Date;
 
+import info.nightscout.android.medtronic.MainActivity;
+
 /**
  * Created by lgoedhart on 14/07/2016.
  */
@@ -20,6 +25,10 @@ public class MedtronicCnlAlarmReceiver extends WakefulBroadcastReceiver {
     private static PendingIntent pendingIntent = null;
     private static AlarmManager alarmManager = null;
 
+    public MedtronicCnlAlarmReceiver() {
+        super();
+    }
+
     @Override
     public void onReceive(final Context context, Intent intent) {
         // Start the IntentService
@@ -64,7 +73,7 @@ public class MedtronicCnlAlarmReceiver extends WakefulBroadcastReceiver {
 
     // restarting the alarm after MedtronicCnlIntentService.POLL_PERIOD_MS from now
     public void restartAlarm() {
-        setAlarm(System.currentTimeMillis() + MedtronicCnlIntentService.POLL_PERIOD_MS + MedtronicCnlIntentService.POLL_GRACE_PERIOD_MS);
+        setAlarm(System.currentTimeMillis() + MainActivity.pollInterval + MedtronicCnlIntentService.POLL_GRACE_PERIOD_MS);
     }
 
     // Cancel the alarm.
diff --git a/app/src/main/res/drawable/battery_0.png b/app/src/main/res/drawable/battery_0.png
new file mode 100644
index 0000000000000000000000000000000000000000..16377a564141df832f1bbe472c42ab450173e2a5
GIT binary patch
literal 253
zcmV<Z00RGsP)<h;3K|Lk000e1NJLTq001Na000~a1^@s62`L>|0002QNkl<ZSV!%a
z!41Md3<M_~Kt<32ln^R|5}*Q7N>TxI0NN;)f<$m0oX!vD>$~-6?Q`4^>}!JYkU(BV
z<j@8<14r+0q4*Uz0Z-`*=nm`)C0i?dGeZRQnr>~4a;?fA&Z#<&NoVZmIZ&+zH$xI=
zslw(^ujY<aG6DAyfXunksRa5lD$*fuj;2H298!FU@XBm34nP|TDE_}J%=*y*JMT>v
zj(;p@T9Pinp>WbAdBL>v6}A$`_q4UP#6=Sl$m@?cn%gi|5X9F)00000NkvXXu0mjf
D5DsL?

literal 0
HcmV?d00001

diff --git a/app/src/main/res/drawable/battery_100.png b/app/src/main/res/drawable/battery_100.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8bbc2397dfe7ee2b820b1da644276b9ffbb9cd2
GIT binary patch
literal 267
zcmV+m0rdWfP)<h;3K|Lk000e1NJLTq001Na000~a1^@s62`L>|0002eNkl<ZSV!%a
z!41MN3`JizfQeuO7@<rCBftbON;?7FpvYA%g{WzIXcQmZYaILO`^R;Iv9B@4g9GI{
zA_^UVJ8;bf7dn3eH(-$b0`vyXg^F!W`%*y!Xq;~ym2zvA9pa=r-#O3Z=Mbot!BvnX
zkOu4^z-kH=z${QF=3Z)9ErmqR&H|A3brQmX0-MLL+7*gtfGd<6tnpx!_};=R)4A6J
zttBA)KUXvB#|Jp&99a1LZ$XnK=>c2{7fq!Xm^NHtD{(BBt+gd4MR1^;KYls6JXUmW
R<g)+(002ovPDHLkV1hC3XY&96

literal 0
HcmV?d00001

diff --git a/app/src/main/res/drawable/battery_25.png b/app/src/main/res/drawable/battery_25.png
new file mode 100644
index 0000000000000000000000000000000000000000..92de235a7724a7563dee6021a2822350457dbf0e
GIT binary patch
literal 261
zcmV+g0s8)lP)<h;3K|Lk000e1NJLTq001Na000~a1^@s62`L>|0002YNkl<ZSV!%a
z!41MN3`JizfQeuO7@<rCBftbON;?5;0CH7JL27U%62%Ai8rOdPcHH0L?CG5G5I|N(
zM4=6E298#6rSmIr0$!3|fbPJ)Qn9sZZz_lYz2~>KO1U;mfjH^TbIvo(a|+aIz*Uee
zkOt%gC=KowXprGvYFR6Vq$7g|ARUcKhyePrDncP^kA^}yh0--Mdbni@Gy=URApbvC
zH}>NJ?5sOk`TWbEiAlNuhss5B=>?`wEo>u><+7#C*54l&K$e6bJsCV!?eJ6N00000
LNkvXXu0mjfgTG~`

literal 0
HcmV?d00001

diff --git a/app/src/main/res/drawable/battery_50.png b/app/src/main/res/drawable/battery_50.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb037d0011c8cf75f73a0349d8c8e82cb4d613b9
GIT binary patch
literal 262
zcmV+h0r~!kP)<h;3K|Lk000e1NJLTq001Na000~a1^@s62`L>|0002ZNkl<ZSV!%a
z!41MN3`JizfQeuO7@<rCBftc7ly(Bx0OYEcg4Ezr5yc1R8pnS5wi7ovTa7aw0?5jU
zD6|32z|k@;w0{Loz*GDS&>h$p3bxekO$8C4*K}&DluNz*!A`RCnEZ_OoC4J<a1|sA
zqz1nVu=YZ3fqE(Kxs=sXNHWrU0MgPJg$ST8oe~OJ&qyegQz(6A1`l1PKm*Wv0`mX4
zx*0z@U}yDY;r)*RO@^cka3~x!=U!mibcC(MF&}pAP*v;_0c1)020QsYR;Q{h7ytkO
M07*qoM6N<$f?$nig#Z8m

literal 0
HcmV?d00001

diff --git a/app/src/main/res/drawable/battery_75.png b/app/src/main/res/drawable/battery_75.png
new file mode 100644
index 0000000000000000000000000000000000000000..f3898daa77f4d66f34cfc452e3f6fb640b537c24
GIT binary patch
literal 262
zcmV+h0r~!kP)<h;3K|Lk000e1NJLTq001Na000~a1^@s62`L>|0002ZNkl<ZSV!%a
z!41MN3`JizfQeuO7@<rCBftbON;?5;0CH4IL27Uh4e`Of#{GW%wo`XFdpc)41dvq`
zacBdafuj{%>HG?ufS2eC&>h%UO14z?riKX6dwOfDluK1sh?D9(C!N&KIZ&$xS3`<G
z8nA)^Ny7S2w?Kn5_gu+ZIV5fl9)Pqpk`V#)V^YE)>lz7%N)F}M%;;gt6ler`PeA^E
zu5Q+k2e7kdvhw-Yf+kDS1vperT9Ox-K3`!Qam=T+mZ!hN29Ra>2Rhk2R^<YuKmY&$
M07*qoM6N<$f_MvMrvLx|

literal 0
HcmV?d00001

diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml
index 081fb6a..04088a8 100644
--- a/app/src/main/res/menu/menu.xml
+++ b/app/src/main/res/menu/menu.xml
@@ -4,6 +4,7 @@
 
     <item
         android:id="@+id/status_battery"
+        android:icon="@drawable/battery_unknown"
         android:orderInCategory="99"
         app:showAsAction="always"
         android:title="@string/menu_name_battery_status"/>
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
new file mode 100644
index 0000000..d84a02f
--- /dev/null
+++ b/app/src/main/res/values/arrays.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string-array name="poll_interval">
+        <item>5 min</item>
+        <item>10 min</item>
+        <item>12 min</item>
+        <item>15 min</item>
+        <item>20 min</item>
+        <item>30 min</item>
+        <item>60 min</item>
+        <!--item>off</item-->
+    </string-array>
+
+    <string-array name="poll_interval_millis">
+        <item>300000</item>
+        <item>600000</item>
+        <item>720000</item>
+        <item>900000</item>
+        <item>1200000</item>
+        <item>1800000</item>
+        <item>3600000</item>
+        <!--item>0</item-->
+    </string-array>
+</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7045ebb..65beeaa 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -50,5 +50,8 @@
     <string name="dummy_button">Dummy Button</string>
     <string name="dummy_content">DUMMY\nCONTENT</string>
     <string name="menu_name_status">Status</string>
-    <string name="menu_name_battery_status"></string>
+    <string name="menu_name_battery_status">unknown</string>
+
+    <string name="preferences_poll_interval">poll interval</string>
+    <string name="preferences_low_battery_poll_interval">poll interval on low pump battery</string>
 </resources>
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 9e6793c..c42c9a0 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -18,6 +18,20 @@
             android:switchTextOff="1"
             android:switchTextOn="2"
             android:title="Decimals"/>
+        <ListPreference
+            android:key="pollInterval"
+            android:defaultValue="300000"
+            android:title="@string/preferences_poll_interval"
+            android:summary="%s"
+            android:entries="@array/poll_interval"
+            android:entryValues="@array/poll_interval_millis"/>
+        <ListPreference
+            android:key="lowBatPollInterval"
+            android:defaultValue="900000"
+            android:title="@string/preferences_low_battery_poll_interval"
+            android:summary="%s"
+            android:entries="@array/poll_interval"
+            android:entryValues="@array/poll_interval_millis"/>
     </PreferenceCategory>
     <PreferenceCategory android:title="Sharing">
         <CheckBoxPreference
-- 
GitLab