diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgGetUserOptions.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgGetUserOptions.java index 2238f5b9c2..aeffbd66df 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgGetUserOptions.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgGetUserOptions.java @@ -11,9 +11,25 @@ import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; */ public class MsgGetUserOptions extends MessageBase { + private int backlightOnTimeSec; + private int beepAndAlarm; + private int buttonScrollOnOff; + private int cannulaVolume; + private int glucoseUnit; + private int lcdOnTimeSec; + private int lowReservoirRate; + private int refillRate; + private int selectableLanguage1; + private int selectableLanguage2; + private int selectableLanguage3; + private int selectableLanguage4; + private int selectableLanguage5; + private int selectedLanguage; + private int shutdownHour; + private int timeDisplayType; private static Logger log = LoggerFactory.getLogger(MsgGetUserOptions.class); - private byte[] optionsInPump; + public MsgGetUserOptions() { SetCommand(0x320B); } @@ -21,9 +37,8 @@ public class MsgGetUserOptions extends MessageBase { public void handleMessage(byte[] packet) { DanaRPump pump = DanaRPump.getInstance(); byte[] bytes = getDataBytes(packet, 0, packet.length - 10); - this.optionsInPump = getDataBytes(packet, 0, packet.length - 10); - for(int pos=0; pos < packet.length; pos++) { - log.debug("[" + pos + "]" + packet[pos]); + for(int pos=0; pos < bytes.length; pos++) { + log.debug("[" + pos + "]" + bytes[pos]); } pump.timeDisplayType = bytes[0] == (byte) 1 ? 0 : 1; // 1 -> 24h 0 -> 12h pump.buttonScrollOnOff = bytes[1] == (byte) 1 ? 1 : 0; // 1 -> ON, 0-> OFF @@ -54,7 +69,6 @@ public class MsgGetUserOptions extends MessageBase { log.debug("Low reservoir: " + pump.lowReservoirRate); // } } - public static byte[] getDataBytes(byte[] bytes, int start, int len) { if (bytes == null) { return null; @@ -63,6 +77,4 @@ public class MsgGetUserOptions extends MessageBase { System.arraycopy(bytes, start + 6, ret, 0, len); return ret; } - - } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingUserOptions.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingUserOptions.java index f7fa834879..48a4493f28 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingUserOptions.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingUserOptions.java @@ -2,7 +2,6 @@ package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import android.support.v4.internal.view.SupportMenu; import info.nightscout.androidaps.Config; @@ -23,7 +22,7 @@ public class MsgSettingUserOptions extends MessageBase { private int selectedLanguage; private int shutdownHour; private int timeDisplayType; - byte[] newOptions; + public boolean done; public MsgSettingUserOptions(int timeDisplayType, int buttonScrollOnOff, int beepAndAlarm, int lcdOnTimeSec, int backlightOnTimeSec, int selectedLanguage, int glucoseUnit, int shutdownHour, int lowReservoirRate, int cannulaVolume, int refillRate) { @@ -49,19 +48,17 @@ public class MsgSettingUserOptions extends MessageBase { this.lowReservoirRate = lowReservoirRate; this.cannulaVolume = cannulaVolume; this.refillRate = refillRate; - newOptions[0] = (byte) (timeDisplayType == 1 ? 0 : 1); - newOptions[1] = (byte) buttonScrollOnOff; - newOptions[2] = (byte) beepAndAlarm; - newOptions[3] = (byte) lcdOnTimeSec; - newOptions[4] = (byte) backlightOnTimeSec; - newOptions[5] = (byte) selectedLanguage; - newOptions[8] = (byte) glucoseUnit; - newOptions[9] = (byte) shutdownHour; - newOptions[27] = (byte) lowReservoirRate; // need to organize here // glucoseunit is at pos 8 and lowReservoirRate is at pos 27 - // 6 extended bolus on/off - // 10 missed bolus + AddParamByte((byte) timeDisplayType); + AddParamByte((byte) buttonScrollOnOff); + AddParamByte((byte) beepAndAlarm); + AddParamByte((byte) lcdOnTimeSec); + AddParamByte((byte) backlightOnTimeSec); + AddParamByte((byte) selectedLanguage); + AddParamByte((byte) glucoseUnit); + AddParamByte((byte) shutdownHour); + AddParamByte((byte) lowReservoirRate); } private static Logger log = LoggerFactory.getLogger(MsgSettingUserOptions.class); @@ -72,7 +69,6 @@ public class MsgSettingUserOptions extends MessageBase { public void handleMessage(byte[] bytes) { log.debug("Entering handleMessage "); - newOptions = new byte[]{bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5], bytes[6], bytes[7], bytes[8], bytes[9], bytes[15], bytes[16], bytes[17], bytes[18], bytes[19], bytes[20], bytes[21], bytes[22], bytes[23], bytes[24], bytes[25], bytes[26], bytes[27], bytes[28], bytes[29], bytes[30], bytes[31], bytes[32]}; int result = intFromBuff(bytes, 0, 1); if (result != 1) { failed = true; @@ -83,49 +79,4 @@ public class MsgSettingUserOptions extends MessageBase { } } - public byte[] getCommByte(int cmd, byte[] data) { - int len = (data == null ? 0 : data.length) + 3; - byte[] btSendData = new byte[(len + 7)]; - byte[] csr = new byte[2]; - byte[] crcData = new byte[len]; - try { - Thread.sleep(200); - } catch (InterruptedException e) { - e.printStackTrace(); - } - btSendData[0] = (byte) 126; - btSendData[1] = (byte) 126; - btSendData[2] = (byte) len; - btSendData[3] = (byte) 241; - btSendData[4] = (byte) ((cmd >> 8) & 255); - btSendData[5] = (byte) (cmd & 255); - if (len > 3) { - System.arraycopy(data, 0, btSendData, 6, len - 3); - } - System.arraycopy(btSendData, 3, crcData, 0, len); - int crc_result = GenerateCrc(crcData, len) & SupportMenu.USER_MASK; - csr[0] = (byte) (crc_result & 255); - csr[1] = (byte) ((crc_result >> 8) & 255); - btSendData[len + 3] = csr[1]; - btSendData[len + 4] = csr[0]; - btSendData[len + 5] = (byte) 46; - btSendData[len + 6] = (byte) 46; - return btSendData; - } - - public static int GenerateCrc(byte[] send_buf, int len) { - int crc = 0; - for (int i = 0; i < len; i++) { - crc = Crc16(send_buf[i], crc); - } - return crc; - } - - static int Crc16(byte byte1, int crc) { - int li_crc = ((((crc >> 8) | (crc << 8)) & SupportMenu.USER_MASK) ^ (byte1 & 255)) & SupportMenu.USER_MASK; - li_crc = (li_crc ^ ((li_crc & 255) >> 4)) & SupportMenu.USER_MASK; - li_crc = (li_crc ^ ((li_crc << 8) << 4)) & SupportMenu.USER_MASK; - return (li_crc ^ (((li_crc & 255) << 4) << 1)) & SupportMenu.USER_MASK; - } - } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/DanaRv2Plugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/DanaRv2Plugin.java index 87b02c60ae..83d6b24a6b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/DanaRv2Plugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/DanaRv2Plugin.java @@ -392,6 +392,7 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin { @Override public PumpEnactResult setUserOptions() { DanaRv2ExecutionService service = new DanaRv2ExecutionService(); + log.debug("MsgSetUserOptions executed!"); return service.setUserOptions(); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/services/DanaRv2ExecutionService.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/services/DanaRv2ExecutionService.java index 0927baa49b..0b646fde48 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/services/DanaRv2ExecutionService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/services/DanaRv2ExecutionService.java @@ -201,7 +201,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService { mSerialIOThread.sendMessage(new MsgSettingGlucose()); mSerialIOThread.sendMessage(new MsgSettingActiveProfile()); mSerialIOThread.sendMessage(new MsgSettingProfileRatios()); - //added by Roumen for testing and + //added by Roumen for testing mSerialIOThread.sendMessage(new MsgGetUserOptions()); mSerialIOThread.sendMessage(new MsgSettingProfileRatiosAll()); MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumptime))); @@ -478,7 +478,9 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService { public PumpEnactResult setUserOptions() { if (!isConnected()) { - return new PumpEnactResult().success(false); + log.debug("MsgSetUserOptions - service is not connected"); +// return new PumpEnactResult().success(false); + connect(); } SystemClock.sleep(300); DanaRPump pump = DanaRPump.getInstance(); @@ -499,11 +501,14 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService { public PumpEnactResult getUserOptions() { if (!isConnected()) { - return new PumpEnactResult().success(false); + log.debug("MsgGetUserOptions fails - disconnected!"); + connect(); +// return new PumpEnactResult().success(false); } MsgGetUserOptions msg = new MsgGetUserOptions(); - mSerialIOThread.sendMessage(msg); +// mSerialIOThread.sendMessage(msg); // == null mDanaRPump.lastConnection = System.currentTimeMillis(); + log.debug("MsgGetUserOptions executed!"); return new PumpEnactResult().success(true); } }