Add Encodable interface
This commit is contained in:
parent
d944df725f
commit
d1bf9cefad
8 changed files with 34 additions and 18 deletions
|
@ -1,7 +1,7 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command;
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command;
|
||||||
|
|
||||||
public interface Command {
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.Encodable;
|
||||||
CommandType getCommandType();
|
|
||||||
|
|
||||||
byte[] getEncoded();
|
public interface Command extends Encodable {
|
||||||
|
CommandType getCommandType();
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@ package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.BitSet;
|
import java.util.BitSet;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.Encodable;
|
||||||
|
|
||||||
public final class SilenceAlertsCommand extends CommandBase {
|
public final class SilenceAlertsCommand extends CommandBase {
|
||||||
private static final short LENGTH = (short) 7;
|
private static final short LENGTH = (short) 7;
|
||||||
private static final byte BODY_LENGTH = (byte) 5;
|
private static final byte BODY_LENGTH = (byte) 5;
|
||||||
|
@ -34,7 +36,7 @@ public final class SilenceAlertsCommand extends CommandBase {
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class SilenceAlertCommandParameters {
|
private static final class SilenceAlertCommandParameters implements Encodable {
|
||||||
private final boolean silenceAutoOffAlert;
|
private final boolean silenceAutoOffAlert;
|
||||||
private final boolean silenceMultiCommandAlert;
|
private final boolean silenceMultiCommandAlert;
|
||||||
private final boolean silenceExpirationImminentAlert;
|
private final boolean silenceExpirationImminentAlert;
|
||||||
|
@ -55,7 +57,8 @@ public final class SilenceAlertsCommand extends CommandBase {
|
||||||
this.silencePodExpirationAlert = silencePodExpirationAlert;
|
this.silencePodExpirationAlert = silencePodExpirationAlert;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] getEncoded() {
|
@Override
|
||||||
|
public byte[] getEncoded() {
|
||||||
BitSet bitSet = new BitSet(8);
|
BitSet bitSet = new BitSet(8);
|
||||||
bitSet.set(0, this.silenceAutoOffAlert);
|
bitSet.set(0, this.silenceAutoOffAlert);
|
||||||
bitSet.set(1, this.silenceMultiCommandAlert);
|
bitSet.set(1, this.silenceMultiCommandAlert);
|
||||||
|
|
|
@ -4,6 +4,7 @@ import java.nio.ByteBuffer;
|
||||||
import java.util.BitSet;
|
import java.util.BitSet;
|
||||||
|
|
||||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.BeepType;
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.BeepType;
|
||||||
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.Encodable;
|
||||||
|
|
||||||
public final class StopDeliveryCommand extends CommandBase {
|
public final class StopDeliveryCommand extends CommandBase {
|
||||||
private static final short LENGTH = 7;
|
private static final short LENGTH = 7;
|
||||||
|
@ -24,7 +25,7 @@ public final class StopDeliveryCommand extends CommandBase {
|
||||||
.put(commandType.getValue()) //
|
.put(commandType.getValue()) //
|
||||||
.put(BODY_LENGTH) //
|
.put(BODY_LENGTH) //
|
||||||
.putInt(1229869870) // FIXME ?? was: byte array of int 777211465 converted to little endian
|
.putInt(1229869870) // FIXME ?? was: byte array of int 777211465 converted to little endian
|
||||||
.put((byte) ((beepType.getValue() << 4) | deliveryType.getEncoded())) //
|
.put((byte) ((beepType.getValue() << 4) | deliveryType.getEncoded()[0])) //
|
||||||
.array());
|
.array());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +40,7 @@ public final class StopDeliveryCommand extends CommandBase {
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum DeliveryType {
|
public enum DeliveryType implements Encodable {
|
||||||
BASAL(true, false, false),
|
BASAL(true, false, false),
|
||||||
TEMP_BASAL(false, true, false),
|
TEMP_BASAL(false, true, false),
|
||||||
BOLUS(false, false, true),
|
BOLUS(false, false, true),
|
||||||
|
@ -55,12 +56,12 @@ public final class StopDeliveryCommand extends CommandBase {
|
||||||
this.bolus = bolus;
|
this.bolus = bolus;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte getEncoded() {
|
@Override public byte[] getEncoded() {
|
||||||
BitSet bitSet = new BitSet(8);
|
BitSet bitSet = new BitSet(8);
|
||||||
bitSet.set(0, this.basal);
|
bitSet.set(0, this.basal);
|
||||||
bitSet.set(1, this.tempBasal);
|
bitSet.set(1, this.tempBasal);
|
||||||
bitSet.set(2, this.bolus);
|
bitSet.set(2, this.bolus);
|
||||||
return bitSet.toByteArray()[0];
|
return bitSet.toByteArray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command.interlock;
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command.interlock;
|
||||||
|
|
||||||
public class BasalInterlock {
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.Encodable;
|
||||||
|
|
||||||
|
public class BasalInterlock implements Encodable {
|
||||||
|
@Override public byte[] getEncoded() {
|
||||||
|
return new byte[0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definiti
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
|
||||||
public class AlertConfiguration {
|
public class AlertConfiguration implements Encodable {
|
||||||
private AlertSlot slot;
|
private AlertSlot slot;
|
||||||
private boolean enabled;
|
private boolean enabled;
|
||||||
private short durationInMinutes;
|
private short durationInMinutes;
|
||||||
|
@ -23,7 +23,7 @@ public class AlertConfiguration {
|
||||||
this.beepRepetition = beepRepetition;
|
this.beepRepetition = beepRepetition;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] getEncoded() {
|
@Override public byte[] getEncoded() {
|
||||||
byte firstByte = (byte) (slot.getValue() << 4);
|
byte firstByte = (byte) (slot.getValue() << 4);
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
firstByte |= 1 << 3;
|
firstByte |= 1 << 3;
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition;
|
||||||
|
|
||||||
|
public interface Encodable {
|
||||||
|
byte[] getEncoded();
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition;
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition;
|
||||||
|
|
||||||
public class ProgramReminder {
|
public class ProgramReminder implements Encodable {
|
||||||
private final boolean atStart;
|
private final boolean atStart;
|
||||||
private final boolean atEnd;
|
private final boolean atEnd;
|
||||||
private final byte atInterval;
|
private final byte atInterval;
|
||||||
|
@ -11,9 +11,9 @@ public class ProgramReminder {
|
||||||
this.atInterval = atIntervalInMinutes;
|
this.atInterval = atIntervalInMinutes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte getEncoded() {
|
@Override public byte[] getEncoded() {
|
||||||
return (byte) (((this.atStart ? 0 : 1) << 7)
|
return new byte[]{(byte) (((this.atStart ? 0 : 1) << 7)
|
||||||
| ((this.atEnd ? 0 : 1) << 6)
|
| ((this.atEnd ? 0 : 1) << 6)
|
||||||
| (this.atInterval & 0x3f));
|
| (this.atInterval & 0x3f))};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,9 @@ package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definiti
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
|
||||||
public class InsulinProgramElement {
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.Encodable;
|
||||||
|
|
||||||
|
public class InsulinProgramElement implements Encodable {
|
||||||
private final byte numberOfHalfOurEntries; // 4 bits
|
private final byte numberOfHalfOurEntries; // 4 bits
|
||||||
private final short numberOfPulsesPerHalfOurEntry; // 10 bits
|
private final short numberOfPulsesPerHalfOurEntry; // 10 bits
|
||||||
private final boolean extraAlternatePulse;
|
private final boolean extraAlternatePulse;
|
||||||
|
@ -13,7 +15,7 @@ public class InsulinProgramElement {
|
||||||
this.extraAlternatePulse = extraAlternatePulse;
|
this.extraAlternatePulse = extraAlternatePulse;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] getEncoded() {
|
@Override public byte[] getEncoded() {
|
||||||
byte firstByte = (byte) ((((numberOfHalfOurEntries - 1) & 0x0f) << 4)
|
byte firstByte = (byte) ((((numberOfHalfOurEntries - 1) & 0x0f) << 4)
|
||||||
| ((extraAlternatePulse ? 1 : 0) << 3)
|
| ((extraAlternatePulse ? 1 : 0) << 3)
|
||||||
| ((numberOfPulsesPerHalfOurEntry >>> 8) & 0x03));
|
| ((numberOfPulsesPerHalfOurEntry >>> 8) & 0x03));
|
||||||
|
|
Loading…
Reference in a new issue