diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/ProfileCircadianPercentage/CircadianPercentageProfilePlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileCircadianPercentage/CircadianPercentageProfilePlugin.java index 4137b0263b..51c761b1a0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/ProfileCircadianPercentage/CircadianPercentageProfilePlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileCircadianPercentage/CircadianPercentageProfilePlugin.java @@ -15,9 +15,11 @@ import info.nightscout.androidaps.Config; import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; +import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.ProfileInterface; import info.nightscout.androidaps.data.ProfileStore; +import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.NSUpload; import info.nightscout.utils.SP; @@ -159,6 +161,58 @@ public class CircadianPercentageProfilePlugin implements PluginBase, ProfileInte createConvertedProfile(); } + public String externallySetParameters(int timeshift, int percentage) { + + String msg = ""; + + //check for validity + if (percentage < Constants.CPP_MIN_PERCENTAGE || percentage > Constants.CPP_MAX_PERCENTAGE) { + msg+= String.format(MainApp.sResources.getString(R.string.openapsma_valueoutofrange), "Profile-Percentage") + "\n"; + } + if (timeshift < 0 || percentage > 23) { + msg+= String.format(MainApp.sResources.getString(R.string.openapsma_valueoutofrange), "Profile-Timeshift") + "\n"; + } + if(SP.getBoolean("syncprofiletopump", false)){ + msg+= MainApp.sResources.getString(R.string.syncprofiletopump_title) + " " + MainApp.sResources.getString(R.string.cpp_sync_setting_missing) + "\n"; + } + final PumpInterface pump = MainApp.getConfigBuilder(); + final Profile profile = MainApp.getConfigBuilder().getProfile(); + + if (pump != null && profile != null && profile.getBasal() != null){ + msg+= MainApp.sResources.getString(R.string.cpp_notloadedplugins) + "\n"; + } + if(!"".equals(msg)) { + msg += MainApp.sResources.getString(R.string.cpp_valuesnotstored); + return msg; + } + + //store profile + this.timeshift= timeshift; + this.percentage = percentage; + storeSettings(); + + + //send profile to pumpe + if (SP.getBoolean("syncprofiletopump", false) && !pump.isThisProfileSet(profile)) { + Thread t = new Thread(new Runnable() { + @Override + public void run() { + pump.setNewBasalProfile(profile); + } + }); + t.start(); + } + + //return formatted string + msg += "%: " + this.percentage + " h: +" + this.timeshift; + msg += "\n"; + msg += "\nBasal:\n" + basalString() + "\n"; + msg += "\nISF:\n" + isfString() + "\n"; + msg += "\nIC:\n" + isfString() + "\n"; + + return msg; + } + private void createConvertedProfile() { JSONObject json = new JSONObject(); JSONObject store = new JSONObject(); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d7f22e9ac3..f266668671 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -680,4 +680,7 @@ Sensitivity WeightedAverage OK Cancel + needs to be activated to send values to the pump! + Not all profiles loaded! + Values not stored!