From dbd721319e9eac7e21bf46cac6875f48abffca84 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Mon, 26 Jun 2017 22:39:01 +0200 Subject: [PATCH] ns uploader status --- .../NSClientInternal/data/NSDeviceStatus.java | 73 ++++++++++++++++++- .../plugins/Overview/OverviewFragment.java | 13 ++++ .../PumpVirtual/VirtualPumpPlugin.java | 3 +- .../res/layout/overview_fragment_tablet.xml | 47 ++++++++++++ app/src/main/res/values/strings.xml | 1 + 5 files changed, 135 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSDeviceStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSDeviceStatus.java index 035a59c145..8ce3fc87e2 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSDeviceStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSDeviceStatus.java @@ -6,7 +6,9 @@ import android.text.Spanned; import org.json.JSONException; import org.json.JSONObject; +import java.util.HashMap; import java.util.Iterator; +import java.util.Map; import info.nightscout.androidaps.R; import info.nightscout.utils.DateUtil; @@ -86,13 +88,18 @@ public class NSDeviceStatus { this.data = obj; updatePumpData(obj); updateOpenApsData(obj); + updateUploaderData(obj); return this; } public String getDevice() { try { if (data.has("device")) { - return data.getString("device"); + String device = data.getString("device"); + if (device.startsWith("openaps://")) { + device = device.substring(10); + return device; + } } } catch (JSONException e) { e.printStackTrace(); @@ -313,4 +320,68 @@ public class NSDeviceStatus { return Html.fromHtml(""); } + // ********* Uploader data *********** + + public static HashMap uploaders = new HashMap<>(); + + static class Uploader { + long clock = 0L; + int battery = 0; + } + + public void updateUploaderData(JSONObject object) { + try { + + long clock = 0L; + if (object.has("created_at")) + clock = DateUtil.fromISODateString(object.getString("created_at")).getTime(); + String device = getDevice(); + Integer battery = null; + if (object.has("uploaderBattery")) + battery = object.getInt("uploaderBattery"); + else if (object.has("uploader")) { + if (object.getJSONObject("uploader").has("battery")) + battery = object.getJSONObject("uploader").getInt("battery"); + } + Uploader uploader = uploaders.get(device); + // check if this is new data + if (clock != 0 && (uploader != null && clock > uploader.clock || uploader == null)) { + if (uploader == null) + uploader = new Uploader(); + uploader.battery = battery; + uploader.clock = clock; + uploaders.put(device, uploader); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public String getUploaderStatus() { + Iterator iter = uploaders.entrySet().iterator(); + int minBattery = 100; + while(iter.hasNext()) { + Map.Entry pair = (Map.Entry) iter.next(); + Uploader uploader = (Uploader) pair.getValue(); + if (minBattery > uploader.battery) + minBattery = uploader.battery; + } + + return minBattery + "%"; + } + + public Spanned getExtendedUploaderStatus() { + StringBuilder string = new StringBuilder(); + + Iterator iter = uploaders.entrySet().iterator(); + while(iter.hasNext()) { + Map.Entry pair = (Map.Entry) iter.next(); + Uploader uploader = (Uploader) pair.getValue(); + String device = (String) pair.getKey(); + string.append("").append(device).append(": ").append(uploader.battery).append("%
"); + } + + return Html.fromHtml(string.toString()); + } + } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java index aa3c63a79e..04ce6f535a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java @@ -151,6 +151,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, TextView pumpStatusView; TextView pumpDeviceStatusView; TextView openapsDeviceStatusView; + TextView uploaderDeviceStatusView; LinearLayout loopStatusLayout; LinearLayout pumpStatusLayout; GraphView bgGraph; @@ -242,6 +243,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, pumpStatusView = (TextView) view.findViewById(R.id.overview_pumpstatus); pumpDeviceStatusView = (TextView) view.findViewById(R.id.overview_pump); openapsDeviceStatusView = (TextView) view.findViewById(R.id.overview_openaps); + uploaderDeviceStatusView = (TextView) view.findViewById(R.id.overview_uploader); loopStatusLayout = (LinearLayout) view.findViewById(R.id.overview_looplayout); pumpStatusLayout = (LinearLayout) view.findViewById(R.id.overview_pumpstatuslayout); @@ -1184,6 +1186,17 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, }); } + // Uploader status from ns + if (uploaderDeviceStatusView != null) { + uploaderDeviceStatusView.setText(NSDeviceStatus.getInstance().getUploaderStatus()); + uploaderDeviceStatusView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + OKDialog.show(getActivity(), MainApp.sResources.getString(R.string.uploader), NSDeviceStatus.getInstance().getExtendedUploaderStatus(), null); + } + }); + } + // ****** GRAPH ******* //log.debug("updateGUI checkpoint 1"); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpVirtual/VirtualPumpPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpVirtual/VirtualPumpPlugin.java index 17082eb273..b42d1abfd6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpVirtual/VirtualPumpPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpVirtual/VirtualPumpPlugin.java @@ -197,7 +197,8 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface { @Override public void refreshDataFromPump(String reason) { - NSUpload.uploadDeviceStatus(); + if (!BuildConfig.NSCLIENTOLNY) + NSUpload.uploadDeviceStatus(); lastDataTime = new Date(); } diff --git a/app/src/main/res/layout/overview_fragment_tablet.xml b/app/src/main/res/layout/overview_fragment_tablet.xml index 933371b337..b582cd0926 100644 --- a/app/src/main/res/layout/overview_fragment_tablet.xml +++ b/app/src/main/res/layout/overview_fragment_tablet.xml @@ -501,6 +501,53 @@ android:layout_marginTop="5dp" android:background="@color/listdelimiter" /> + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ecdd1a87ab..e795f03f62 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -649,4 +649,5 @@ Pump OpenAPS Device + Uploader