From e1903840ddc0ce945ab71ba034af13ebfad1ce1d Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Wed, 20 Sep 2017 10:20:50 +0200 Subject: [PATCH] handle received foods in nsclient --- .../androidaps/Services/Intents.java | 1 + .../broadcasts/BroadcastDeviceStatus.java | 27 +++++++++++++++++++ .../services/NSClientService.java | 12 +++++++++ 3 files changed, 40 insertions(+) diff --git a/app/src/main/java/info/nightscout/androidaps/Services/Intents.java b/app/src/main/java/info/nightscout/androidaps/Services/Intents.java index 77ef5139ae..2f5f44afe3 100644 --- a/app/src/main/java/info/nightscout/androidaps/Services/Intents.java +++ b/app/src/main/java/info/nightscout/androidaps/Services/Intents.java @@ -8,6 +8,7 @@ public interface Intents { String ACTION_NEW_PROFILE = "info.nightscout.client.NEW_PROFILE"; String ACTION_NEW_SGV = "info.nightscout.client.NEW_SGV"; String ACTION_NEW_DEVICESTATUS = "info.nightscout.client.NEW_DEVICESTATUS"; + String ACTION_NEW_FOOD = "info.nightscout.client.NEW_FOOD"; String ACTION_NEW_MBG = "info.nightscout.client.NEW_MBG"; String ACTION_NEW_CAL = "info.nightscout.client.NEW_CAL"; String ACTION_NEW_STATUS = "info.nightscout.client.NEW_STATUS"; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java index a912fc5d3c..59f5ab136c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java @@ -67,4 +67,31 @@ public class BroadcastDeviceStatus { } } } + + public static void handleNewFoods(JSONArray foods, Context context, boolean isDelta) { + + List splitted = BroadcastTreatment.splitArray(foods); + for (JSONArray part: splitted) { + Bundle bundle = new Bundle(); + bundle.putString("foods", part.toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_NEW_FOOD); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + LocalBroadcastManager.getInstance(MainApp.instance()).sendBroadcast(intent); + } + + if(SP.getBoolean(R.string.key_nsclient_localbroadcasts, true)) { + splitted = BroadcastTreatment.splitArray(foods); + for (JSONArray part : splitted) { + Bundle bundle = new Bundle(); + bundle.putString("foods", part.toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_NEW_FOOD); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + } + } + } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/services/NSClientService.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/services/NSClientService.java index 465d5e42c1..1cc4d394bc 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/services/NSClientService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/services/NSClientService.java @@ -519,6 +519,18 @@ public class NSClientService extends Service { BroadcastDeviceStatus.handleNewDeviceStatus(devicestatuses, MainApp.instance().getApplicationContext(), isDelta); } } + if (data.has("food")) { + JSONArray foods = data.getJSONArray("food"); + if (foods.length() > 0) { + MainApp.bus().post(new EventNSClientNewLog("DATA", "received " + foods.length() + " foods")); + for (Integer index = 0; index < foods.length(); index++) { + JSONObject jsonFood = foods.getJSONObject(index); + // remove from upload queue if Ack is failing + UploadQueue.removeID(jsonFood); + } + BroadcastDeviceStatus.handleNewFoods(foods, MainApp.instance().getApplicationContext(), isDelta); + } + } if (data.has("mbgs")) { JSONArray mbgs = data.getJSONArray("mbgs"); if (mbgs.length() > 0)