package info.nightscout.androidaps.plugins.DanaR.comm;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import info.nightscout.androidaps.Config;
import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin;
import info.nightscout.androidaps.plugins.DanaR.DanaRPump;
public class MsgInitConnStatusBasic extends MessageBase {
private static Logger log = LoggerFactory.getLogger(MsgInitConnStatusBasic.class);
public MsgInitConnStatusBasic() {
SetCommand(0x0303);
}
@Override
public void handleMessage(byte[] bytes) {
if (bytes.length - 10 < 21) {
return;
}
DanaRPump pump = DanaRPlugin.getDanaRPump();
pump.pumpSuspended = intFromBuff(bytes, 0, 1) == 1;
pump.calculatorEnabled = intFromBuff(bytes, 1, 1) == 1;
pump.dailyTotalUnits = intFromBuff(bytes, 2, 3) / 750d;
pump.maxDailyTotalUnits = intFromBuff(bytes, 5, 2) / 100;
pump.reservoirRemainingUnits = intFromBuff(bytes, 7, 3) / 750d;
pump.bolusBlocked = intFromBuff(bytes, 10, 1) == 1;
pump.currentBasal = intFromBuff(bytes, 11, 2) / 100d;
pump.tempBasalPercent = intFromBuff(bytes, 13, 1);
pump.isExtendedInProgress = intFromBuff(bytes, 14, 1) == 1;
pump.isTempBasalInProgress = intFromBuff(bytes, 15, 1) == 1;
int statusBasalUDOption = intFromBuff(bytes, 16, 1);
pump.isDualBolusInProgress = intFromBuff(bytes, 17, 1) == 1;
double extendedBolusRate = intFromBuff(bytes, 18, 2) / 100d;
pump.batteryRemaining = intFromBuff(bytes, 20, 1);
try {
int bolusConfig = intFromBuff(bytes, 21, 1);
boolean deliveryPrime = (bolusConfig & DanaRPump.DELIVERY_PRIME) != 0;
boolean deliveryStepBolus = (bolusConfig & DanaRPump.DELIVERY_STEP_BOLUS) != 0;
boolean deliveryBasal = (bolusConfig & DanaRPump.DELIVERY_BASAL) != 0;
boolean deliveryExtBolus = (bolusConfig & DanaRPump.DELIVERY_EXT_BOLUS) != 0;
log.debug("Delivery prime: " + deliveryPrime);
log.debug("Delivery step bolus: " + deliveryStepBolus);
log.debug("Delivery basal: " + deliveryBasal);
log.debug("Delivery ext bolus: " + deliveryExtBolus);
} catch (Exception e) {
}
if (Config.logDanaMessageDetail) {
log.debug("Pump suspended: " + pump.pumpSuspended);
log.debug("Calculator enabled: " + pump.calculatorEnabled);
log.debug("Daily total units: " + pump.dailyTotalUnits);
log.debug("Max daily total units: " + pump.maxDailyTotalUnits);
log.debug("Reservoir remaining units: " + pump.reservoirRemainingUnits);
log.debug("Bolus blocked: " + pump.bolusBlocked);
log.debug("Current basal: " + pump.currentBasal);
log.debug("Current temp basal percent: " + pump.tempBasalPercent);
log.debug("Is extended bolus running: " + pump.isExtendedInProgress);
log.debug("statusBasalUDOption: " + statusBasalUDOption);
log.debug("Is dual bolus running: " + pump.isDualBolusInProgress);
log.debug("Extended bolus rate: " + extendedBolusRate);
log.debug("Battery remaining: " + pump.batteryRemaining);
}
}
}