diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.java
index daf07f9e2f..0b3f66ea97 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.java
@@ -9,6 +9,7 @@ import android.telephony.SmsMessage;
import com.squareup.otto.Subscribe;
+import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -360,6 +361,51 @@ public class SmsCommunicatorPlugin extends PluginBase {
reply = MainApp.gs(R.string.smscommunicator_remotebasalnotallowed);
sendSMS(new Sms(receivedSms.phoneNumber, reply));
}
+ } else if (splited[1].endsWith("%")) {
+ int tempBasalPct = SafeParse.stringToInt(StringUtils.removeEnd(splited[1],"%"));
+ Profile profile = ProfileFunctions.getInstance().getProfile();
+ if (profile == null) {
+ reply = MainApp.gs(R.string.noprofile);
+ sendSMS(new Sms(receivedSms.phoneNumber, reply));
+ } else if (tempBasalPct == 0 && !splited[1].equals("0%")) {
+ reply = MainApp.gs(R.string.wrongformat);
+ sendSMS(new Sms(receivedSms.phoneNumber, reply));
+ } else {
+ tempBasalPct = MainApp.getConstraintChecker().applyBasalPercentConstraints(new Constraint<>(tempBasalPct), profile).value();
+ if (remoteCommandsAllowed) {
+ passCode = generatePasscode();
+ reply = String.format(MainApp.gs(R.string.smscommunicator_basalpctreplywithcode), tempBasalPct, passCode);
+ receivedSms.processed = true;
+ messageToConfirm = new AuthRequest(this, receivedSms, reply, passCode, new SmsAction(tempBasalPct) {
+ @Override
+ public void run() {
+ Profile profile = ProfileFunctions.getInstance().getProfile();
+ if (profile != null)
+ ConfigBuilderPlugin.getPlugin().getCommandQueue().tempBasalPercent(anInteger, 30, true, profile, new Callback() {
+ @Override
+ public void run() {
+ if (result.success) {
+ String reply;
+ if (result.isPercent)
+ reply = String.format(MainApp.gs(R.string.smscommunicator_tempbasalset_percent), result.percent, result.duration);
+ else
+ reply = String.format(MainApp.gs(R.string.smscommunicator_tempbasalset), result.absolute, result.duration);
+ reply += "\n" + ConfigBuilderPlugin.getPlugin().getActivePump().shortStatus(true);
+ sendSMSToAllNumbers(new Sms(receivedSms.phoneNumber, reply));
+ } else {
+ String reply = MainApp.gs(R.string.smscommunicator_tempbasalfailed);
+ reply += "\n" + ConfigBuilderPlugin.getPlugin().getActivePump().shortStatus(true);
+ sendSMS(new Sms(receivedSms.phoneNumber, reply));
+ }
+ }
+ });
+ }
+ });
+ } else {
+ reply = MainApp.gs(R.string.smscommunicator_remotebasalnotallowed);
+ sendSMS(new Sms(receivedSms.phoneNumber, reply));
+ }
+ }
} else {
Double tempBasal = SafeParse.stringToDouble(splited[1]);
Profile profile = ProfileFunctions.getInstance().getProfile();
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b97adda5c7..2974ee86d3 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -369,6 +369,7 @@
Remote basal setting is not allowed
Remote command is not allowed
To start basal %1$.2fU/h reply with code %2$s
+ To start basal %1$d%% reply with code %2$s
To suspend loop for %1$d minutes reply with code %2$s
Temp basal %1$.2fU/h for %2$d min started successfully
Temp basal %1$d %% for %2$d min started successfully
@@ -1315,6 +1316,7 @@
Dayligh Saving time change in less than 3 hours - Closed loop diabled
internal storage constraint
Free at least %1$d MB from internal storage! Loop disabled!
+ Wrong format
- %1$d day
- %1$d days