From 15e69a478e38a50bf722ae070021567a2d9ffd43 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Fri, 17 Aug 2018 13:58:06 +0200 Subject: [PATCH] RS,Rv2: thread safe history --- .../plugins/PumpDanaR/comm/MessageBase.java | 7 +-- .../plugins/PumpDanaR/comm/MsgHistoryAll.java | 20 +++---- .../PumpDanaR/comm/MsgInitConnStatusTime.java | 5 +- .../comm/MsgInitConnStatusTime_k.java | 5 +- .../PumpDanaRS/comm/DanaRS_Packet.java | 7 +-- .../DanaRS_Packet_APS_History_Events.java | 60 +++++++++---------- .../PumpDanaRv2/comm/MsgHistoryEvents_v2.java | 60 +++++++++---------- .../java/info/nightscout/utils/DateUtil.java | 12 ++-- 8 files changed, 90 insertions(+), 86 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MessageBase.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MessageBase.java index b48940807d..9bce37850b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MessageBase.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MessageBase.java @@ -142,8 +142,8 @@ public class MessageBase { return date; } - public static Date dateTimeSecFromBuff(byte[] buff, int offset) { - Date date = + public static synchronized long dateTimeSecFromBuff(byte[] buff, int offset) { + return new Date( 100 + intFromBuff(buff, offset, 1), intFromBuff(buff, offset + 1, 1) - 1, @@ -151,8 +151,7 @@ public class MessageBase { intFromBuff(buff, offset + 3, 1), intFromBuff(buff, offset + 4, 1), intFromBuff(buff, offset + 5, 1) - ); - return date; + ).getTime(); } public static Date dateFromBuff(byte[] buff, int offset) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryAll.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryAll.java index a0e1075056..67fe7a2837 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryAll.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryAll.java @@ -25,7 +25,7 @@ public class MsgHistoryAll extends MessageBase { byte recordCode = (byte) intFromBuff(bytes, 0, 1); Date date = dateFromBuff(bytes, 1); // 3 bytes Date datetime = dateTimeFromBuff(bytes, 1); // 5 bytes - Date datetimewihtsec = dateTimeSecFromBuff(bytes, 1); // 6 bytes + long datetimewihtsec = dateTimeSecFromBuff(bytes, 1); // 6 bytes double dailyBasal = intFromBuff(bytes, 4, 2) * 0.01d; double dailyBolus = intFromBuff(bytes, 6, 2) * 0.01d; @@ -79,42 +79,42 @@ public class MsgHistoryAll extends MessageBase { break; case RecordTypes.RECORD_TYPE_PRIME: messageType += "prime"; - danaRHistoryRecord.recordDate = datetimewihtsec.getTime(); + danaRHistoryRecord.recordDate = datetimewihtsec; danaRHistoryRecord.recordValue = value * 0.01; break; case RecordTypes.RECORD_TYPE_ERROR: messageType += "error"; - danaRHistoryRecord.recordDate = datetimewihtsec.getTime(); + danaRHistoryRecord.recordDate = datetimewihtsec; danaRHistoryRecord.recordValue = value * 0.01; break; case RecordTypes.RECORD_TYPE_REFILL: messageType += "refill"; - danaRHistoryRecord.recordDate = datetimewihtsec.getTime(); + danaRHistoryRecord.recordDate = datetimewihtsec; danaRHistoryRecord.recordValue = value * 0.01; break; case RecordTypes.RECORD_TYPE_BASALHOUR: messageType += "basal hour"; - danaRHistoryRecord.recordDate = datetimewihtsec.getTime(); + danaRHistoryRecord.recordDate = datetimewihtsec; danaRHistoryRecord.recordValue = value * 0.01; break; case RecordTypes.RECORD_TYPE_TB: messageType += "tb"; - danaRHistoryRecord.recordDate = datetimewihtsec.getTime(); + danaRHistoryRecord.recordDate = datetimewihtsec; danaRHistoryRecord.recordValue = value * 0.01; break; case RecordTypes.RECORD_TYPE_GLUCOSE: messageType += "glucose"; - danaRHistoryRecord.recordDate = datetimewihtsec.getTime(); + danaRHistoryRecord.recordDate = datetimewihtsec; danaRHistoryRecord.recordValue = value; break; case RecordTypes.RECORD_TYPE_CARBO: messageType += "carbo"; - danaRHistoryRecord.recordDate = datetimewihtsec.getTime(); + danaRHistoryRecord.recordDate = datetimewihtsec; danaRHistoryRecord.recordValue = value; break; case RecordTypes.RECORD_TYPE_ALARM: messageType += "alarm"; - danaRHistoryRecord.recordDate = datetimewihtsec.getTime(); + danaRHistoryRecord.recordDate = datetimewihtsec; String strAlarm = "None"; switch ((int) paramByte8) { case 67: @@ -135,7 +135,7 @@ public class MsgHistoryAll extends MessageBase { break; case RecordTypes.RECORD_TYPE_SUSPEND: messageType += "suspend"; - danaRHistoryRecord.recordDate = datetimewihtsec.getTime(); + danaRHistoryRecord.recordDate = datetimewihtsec; String strRecordValue = "Off"; if ((int) paramByte8 == 79) strRecordValue = "On"; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusTime.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusTime.java index 93bea19218..0bee5f84c8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusTime.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusTime.java @@ -16,6 +16,7 @@ import info.nightscout.androidaps.plugins.Overview.notifications.Notification; import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.utils.DateUtil; public class MsgInitConnStatusTime extends MessageBase { private static Logger log = LoggerFactory.getLogger(L.PUMPCOMM); @@ -52,11 +53,11 @@ public class MsgInitConnStatusTime extends MessageBase { return; } - Date time = dateTimeSecFromBuff(bytes, 0); + long time = dateTimeSecFromBuff(bytes, 0); int versionCode = intFromBuff(bytes, 6, 1); if (L.isEnabled(L.PUMPCOMM)) { - log.debug("Pump time: " + time); + log.debug("Pump time: " + DateUtil.dateAndTimeFullString(time)); log.debug("Version code: " + versionCode); } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgInitConnStatusTime_k.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgInitConnStatusTime_k.java index 5aadfeae42..84748b8fcf 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgInitConnStatusTime_k.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgInitConnStatusTime_k.java @@ -17,6 +17,7 @@ import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.utils.DateUtil; public class MsgInitConnStatusTime_k extends MessageBase { private static Logger log = LoggerFactory.getLogger(L.PUMPCOMM); @@ -54,14 +55,14 @@ public class MsgInitConnStatusTime_k extends MessageBase { return; } - Date time = dateTimeSecFromBuff(bytes, 0); + long time = dateTimeSecFromBuff(bytes, 0); int versionCode1 = intFromBuff(bytes, 6, 1); int versionCode2 = intFromBuff(bytes, 7, 1); int versionCode3 = intFromBuff(bytes, 8, 1); int versionCode4 = intFromBuff(bytes, 9, 1); if (L.isEnabled(L.PUMPCOMM)) { - log.debug("Pump time: " + time); + log.debug("Pump time: " + DateUtil.dateAndTimeFullString(time)); log.debug("Version code1: " + versionCode1); log.debug("Version code2: " + versionCode2); log.debug("Version code3: " + versionCode3); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRS/comm/DanaRS_Packet.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRS/comm/DanaRS_Packet.java index 8ac5bfac13..66858f980a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRS/comm/DanaRS_Packet.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRS/comm/DanaRS_Packet.java @@ -100,8 +100,8 @@ public class DanaRS_Packet { return ret; } - public static Date dateTimeSecFromBuff(byte[] buff, int offset) { - Date date = + public static synchronized long dateTimeSecFromBuff(byte[] buff, int offset) { + return new Date( 100 + intFromBuff(buff, offset, 1), intFromBuff(buff, offset + 1, 1) - 1, @@ -109,8 +109,7 @@ public class DanaRS_Packet { intFromBuff(buff, offset + 3, 1), intFromBuff(buff, offset + 4, 1), intFromBuff(buff, offset + 5, 1) - ); - return date; + ).getTime(); } protected static int intFromBuff(byte[] b, int srcStart, int srcLength) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRS/comm/DanaRS_Packet_APS_History_Events.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRS/comm/DanaRS_Packet_APS_History_Events.java index d3391be04f..965669b614 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRS/comm/DanaRS_Packet_APS_History_Events.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRS/comm/DanaRS_Packet_APS_History_Events.java @@ -83,23 +83,23 @@ public class DanaRS_Packet_APS_History_Events extends DanaRS_Packet { return; } - Date datetime = dateTimeSecFromBuff(data, 1); // 6 bytes + long datetime = dateTimeSecFromBuff(data, 1); // 6 bytes int param1 = ((intFromBuff(data, 7, 1) << 8) & 0xFF00) + (intFromBuff(data, 8, 1) & 0xFF); int param2 = ((intFromBuff(data, 9, 1) << 8) & 0xFF00) + (intFromBuff(data, 10, 1) & 0xFF); - TemporaryBasal temporaryBasal = new TemporaryBasal().date(datetime.getTime()).source(Source.PUMP).pumpId(datetime.getTime()); + TemporaryBasal temporaryBasal = new TemporaryBasal().date(datetime).source(Source.PUMP).pumpId(datetime); ExtendedBolus extendedBolus = new ExtendedBolus(); - extendedBolus.date = datetime.getTime(); + extendedBolus.date = datetime; extendedBolus.source = Source.PUMP; - extendedBolus.pumpId = datetime.getTime(); + extendedBolus.pumpId = datetime; String status; switch (recordCode) { case DanaRPump.TEMPSTART: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT TEMPSTART (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Ratio: " + param1 + "% Duration: " + param2 + "min"); + log.debug("EVENT TEMPSTART (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Ratio: " + param1 + "% Duration: " + param2 + "min"); temporaryBasal.percentRate = param1; temporaryBasal.durationInMinutes = param2; TreatmentsPlugin.getPlugin().addToHistoryTempBasal(temporaryBasal); @@ -107,13 +107,13 @@ public class DanaRS_Packet_APS_History_Events extends DanaRS_Packet { break; case DanaRPump.TEMPSTOP: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT TEMPSTOP (" + recordCode + ") " + datetime.toLocaleString()); + log.debug("EVENT TEMPSTOP (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime)); TreatmentsPlugin.getPlugin().addToHistoryTempBasal(temporaryBasal); status = "TEMPSTOP " + DateUtil.timeString(datetime); break; case DanaRPump.EXTENDEDSTART: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT EXTENDEDSTART (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Amount: " + (param1 / 100d) + "U Duration: " + param2 + "min"); + log.debug("EVENT EXTENDEDSTART (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Amount: " + (param1 / 100d) + "U Duration: " + param2 + "min"); extendedBolus.insulin = param1 / 100d; extendedBolus.durationInMinutes = param2; TreatmentsPlugin.getPlugin().addToHistoryExtendedBolus(extendedBolus); @@ -121,43 +121,43 @@ public class DanaRS_Packet_APS_History_Events extends DanaRS_Packet { break; case DanaRPump.EXTENDEDSTOP: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT EXTENDEDSTOP (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Delivered: " + (param1 / 100d) + "U RealDuration: " + param2 + "min"); + log.debug("EVENT EXTENDEDSTOP (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Delivered: " + (param1 / 100d) + "U RealDuration: " + param2 + "min"); TreatmentsPlugin.getPlugin().addToHistoryExtendedBolus(extendedBolus); status = "EXTENDEDSTOP " + DateUtil.timeString(datetime); break; case DanaRPump.BOLUS: - DetailedBolusInfo detailedBolusInfo = DetailedBolusInfoStorage.findDetailedBolusInfo(datetime.getTime()); + DetailedBolusInfo detailedBolusInfo = DetailedBolusInfoStorage.findDetailedBolusInfo(datetime); if (detailedBolusInfo == null) { detailedBolusInfo = new DetailedBolusInfo(); } - detailedBolusInfo.date = datetime.getTime(); + detailedBolusInfo.date = datetime; detailedBolusInfo.source = Source.PUMP; - detailedBolusInfo.pumpId = datetime.getTime(); + detailedBolusInfo.pumpId = datetime; detailedBolusInfo.insulin = param1 / 100d; boolean newRecord = TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, false); if (L.isEnabled(L.PUMPCOMM)) - log.debug((newRecord ? "**NEW** " : "") + "EVENT BOLUS (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Bolus: " + (param1 / 100d) + "U Duration: " + param2 + "min"); + log.debug((newRecord ? "**NEW** " : "") + "EVENT BOLUS (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Bolus: " + (param1 / 100d) + "U Duration: " + param2 + "min"); status = "BOLUS " + DateUtil.timeString(datetime); break; case DanaRPump.DUALBOLUS: - detailedBolusInfo = DetailedBolusInfoStorage.findDetailedBolusInfo(datetime.getTime()); + detailedBolusInfo = DetailedBolusInfoStorage.findDetailedBolusInfo(datetime); if (detailedBolusInfo == null) { detailedBolusInfo = new DetailedBolusInfo(); } - detailedBolusInfo.date = datetime.getTime(); + detailedBolusInfo.date = datetime; detailedBolusInfo.source = Source.PUMP; - detailedBolusInfo.pumpId = datetime.getTime(); + detailedBolusInfo.pumpId = datetime; detailedBolusInfo.insulin = param1 / 100d; newRecord = TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, false); if (L.isEnabled(L.PUMPCOMM)) - log.debug((newRecord ? "**NEW** " : "") + "EVENT DUALBOLUS (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Bolus: " + (param1 / 100d) + "U Duration: " + param2 + "min"); + log.debug((newRecord ? "**NEW** " : "") + "EVENT DUALBOLUS (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Bolus: " + (param1 / 100d) + "U Duration: " + param2 + "min"); status = "DUALBOLUS " + DateUtil.timeString(datetime); break; case DanaRPump.DUALEXTENDEDSTART: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT DUALEXTENDEDSTART (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Amount: " + (param1 / 100d) + "U Duration: " + param2 + "min"); + log.debug("EVENT DUALEXTENDEDSTART (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Amount: " + (param1 / 100d) + "U Duration: " + param2 + "min"); extendedBolus.insulin = param1 / 100d; extendedBolus.durationInMinutes = param2; TreatmentsPlugin.getPlugin().addToHistoryExtendedBolus(extendedBolus); @@ -165,60 +165,60 @@ public class DanaRS_Packet_APS_History_Events extends DanaRS_Packet { break; case DanaRPump.DUALEXTENDEDSTOP: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT DUALEXTENDEDSTOP (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Delivered: " + (param1 / 100d) + "U RealDuration: " + param2 + "min"); + log.debug("EVENT DUALEXTENDEDSTOP (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Delivered: " + (param1 / 100d) + "U RealDuration: " + param2 + "min"); TreatmentsPlugin.getPlugin().addToHistoryExtendedBolus(extendedBolus); status = "DUALEXTENDEDSTOP " + DateUtil.timeString(datetime); break; case DanaRPump.SUSPENDON: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT SUSPENDON (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")"); + log.debug("EVENT SUSPENDON (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")"); status = "SUSPENDON " + DateUtil.timeString(datetime); break; case DanaRPump.SUSPENDOFF: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT SUSPENDOFF (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")"); + log.debug("EVENT SUSPENDOFF (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")"); status = "SUSPENDOFF " + DateUtil.timeString(datetime); break; case DanaRPump.REFILL: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT REFILL (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Amount: " + param1 / 100d + "U"); + log.debug("EVENT REFILL (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100d + "U"); status = "REFILL " + DateUtil.timeString(datetime); break; case DanaRPump.PRIME: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT PRIME (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Amount: " + param1 / 100d + "U"); + log.debug("EVENT PRIME (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100d + "U"); status = "PRIME " + DateUtil.timeString(datetime); break; case DanaRPump.PROFILECHANGE: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT PROFILECHANGE (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " No: " + param1 + " CurrentRate: " + (param2 / 100d) + "U/h"); + log.debug("EVENT PROFILECHANGE (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " No: " + param1 + " CurrentRate: " + (param2 / 100d) + "U/h"); status = "PROFILECHANGE " + DateUtil.timeString(datetime); break; case DanaRPump.CARBS: DetailedBolusInfo emptyCarbsInfo = new DetailedBolusInfo(); emptyCarbsInfo.carbs = param1; - emptyCarbsInfo.date = datetime.getTime(); + emptyCarbsInfo.date = datetime; emptyCarbsInfo.source = Source.PUMP; - emptyCarbsInfo.pumpId = datetime.getTime(); + emptyCarbsInfo.pumpId = datetime; newRecord = TreatmentsPlugin.getPlugin().addToHistoryTreatment(emptyCarbsInfo, false); if (L.isEnabled(L.PUMPCOMM)) - log.debug((newRecord ? "**NEW** " : "") + "EVENT CARBS (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Carbs: " + param1 + "g"); + log.debug((newRecord ? "**NEW** " : "") + "EVENT CARBS (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Carbs: " + param1 + "g"); status = "CARBS " + DateUtil.timeString(datetime); break; case DanaRPump.PRIMECANNULA: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT PRIMECANNULA(" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Amount: " + param1 / 100d + "U"); + log.debug("EVENT PRIMECANNULA(" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100d + "U"); status = "PRIMECANNULA " + DateUtil.timeString(datetime); break; default: if (L.isEnabled(L.PUMPCOMM)) - log.debug("Event: " + recordCode + " " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Param1: " + param1 + " Param2: " + param2); + log.debug("Event: " + recordCode + " " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Param1: " + param1 + " Param2: " + param2); status = "UNKNOWN " + DateUtil.timeString(datetime); break; } - if (datetime.getTime() > lastEventTimeLoaded) - lastEventTimeLoaded = datetime.getTime(); + if (datetime > lastEventTimeLoaded) + lastEventTimeLoaded = datetime; MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.processinghistory) + ": " + status)); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/comm/MsgHistoryEvents_v2.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/comm/MsgHistoryEvents_v2.java index 79ecf0c82d..3c83d6e342 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/comm/MsgHistoryEvents_v2.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/comm/MsgHistoryEvents_v2.java @@ -58,26 +58,26 @@ public class MsgHistoryEvents_v2 extends MessageBase { return; } - Date datetime = dateTimeSecFromBuff(bytes, 1); // 6 bytes + long datetime = dateTimeSecFromBuff(bytes, 1); // 6 bytes int param1 = intFromBuff(bytes, 7, 2); int param2 = intFromBuff(bytes, 9, 2); TemporaryBasal temporaryBasal = new TemporaryBasal() - .date(datetime.getTime()) + .date(datetime) .source(Source.PUMP) - .pumpId(datetime.getTime()); + .pumpId(datetime); ExtendedBolus extendedBolus = new ExtendedBolus(); - extendedBolus.date = datetime.getTime(); + extendedBolus.date = datetime; extendedBolus.source = Source.PUMP; - extendedBolus.pumpId = datetime.getTime(); + extendedBolus.pumpId = datetime; String status = ""; switch (recordCode) { case DanaRPump.TEMPSTART: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT TEMPSTART (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Ratio: " + param1 + "% Duration: " + param2 + "min"); + log.debug("EVENT TEMPSTART (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Ratio: " + param1 + "% Duration: " + param2 + "min"); temporaryBasal.percentRate = param1; temporaryBasal.durationInMinutes = param2; TreatmentsPlugin.getPlugin().addToHistoryTempBasal(temporaryBasal); @@ -85,13 +85,13 @@ public class MsgHistoryEvents_v2 extends MessageBase { break; case DanaRPump.TEMPSTOP: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT TEMPSTOP (" + recordCode + ") " + datetime.toLocaleString()); + log.debug("EVENT TEMPSTOP (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime)); TreatmentsPlugin.getPlugin().addToHistoryTempBasal(temporaryBasal); status = "TEMPSTOP " + DateUtil.timeString(datetime); break; case DanaRPump.EXTENDEDSTART: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT EXTENDEDSTART (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Amount: " + (param1 / 100d) + "U Duration: " + param2 + "min"); + log.debug("EVENT EXTENDEDSTART (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Amount: " + (param1 / 100d) + "U Duration: " + param2 + "min"); extendedBolus.insulin = param1 / 100d; extendedBolus.durationInMinutes = param2; TreatmentsPlugin.getPlugin().addToHistoryExtendedBolus(extendedBolus); @@ -99,43 +99,43 @@ public class MsgHistoryEvents_v2 extends MessageBase { break; case DanaRPump.EXTENDEDSTOP: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT EXTENDEDSTOP (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Delivered: " + (param1 / 100d) + "U RealDuration: " + param2 + "min"); + log.debug("EVENT EXTENDEDSTOP (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Delivered: " + (param1 / 100d) + "U RealDuration: " + param2 + "min"); TreatmentsPlugin.getPlugin().addToHistoryExtendedBolus(extendedBolus); status = "EXTENDEDSTOP " + DateUtil.timeString(datetime); break; case DanaRPump.BOLUS: - DetailedBolusInfo detailedBolusInfo = DetailedBolusInfoStorage.findDetailedBolusInfo(datetime.getTime()); + DetailedBolusInfo detailedBolusInfo = DetailedBolusInfoStorage.findDetailedBolusInfo(datetime); if (detailedBolusInfo == null) { detailedBolusInfo = new DetailedBolusInfo(); } - detailedBolusInfo.date = datetime.getTime(); + detailedBolusInfo.date = datetime; detailedBolusInfo.source = Source.PUMP; - detailedBolusInfo.pumpId = datetime.getTime(); + detailedBolusInfo.pumpId = datetime; detailedBolusInfo.insulin = param1 / 100d; boolean newRecord = TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, false); if (L.isEnabled(L.PUMPCOMM)) - log.debug((newRecord ? "**NEW** " : "") + "EVENT BOLUS (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Bolus: " + (param1 / 100d) + "U Duration: " + param2 + "min"); + log.debug((newRecord ? "**NEW** " : "") + "EVENT BOLUS (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Bolus: " + (param1 / 100d) + "U Duration: " + param2 + "min"); status = "BOLUS " + DateUtil.timeString(datetime); break; case DanaRPump.DUALBOLUS: - detailedBolusInfo = DetailedBolusInfoStorage.findDetailedBolusInfo(datetime.getTime()); + detailedBolusInfo = DetailedBolusInfoStorage.findDetailedBolusInfo(datetime); if (detailedBolusInfo == null) { detailedBolusInfo = new DetailedBolusInfo(); } - detailedBolusInfo.date = datetime.getTime(); + detailedBolusInfo.date = datetime; detailedBolusInfo.source = Source.PUMP; - detailedBolusInfo.pumpId = datetime.getTime(); + detailedBolusInfo.pumpId = datetime; detailedBolusInfo.insulin = param1 / 100d; newRecord = TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, false); if (L.isEnabled(L.PUMPCOMM)) - log.debug((newRecord ? "**NEW** " : "") + "EVENT DUALBOLUS (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Bolus: " + (param1 / 100d) + "U Duration: " + param2 + "min"); + log.debug((newRecord ? "**NEW** " : "") + "EVENT DUALBOLUS (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Bolus: " + (param1 / 100d) + "U Duration: " + param2 + "min"); status = "DUALBOLUS " + DateUtil.timeString(datetime); break; case DanaRPump.DUALEXTENDEDSTART: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT DUALEXTENDEDSTART (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Amount: " + (param1 / 100d) + "U Duration: " + param2 + "min"); + log.debug("EVENT DUALEXTENDEDSTART (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Amount: " + (param1 / 100d) + "U Duration: " + param2 + "min"); extendedBolus.insulin = param1 / 100d; extendedBolus.durationInMinutes = param2; TreatmentsPlugin.getPlugin().addToHistoryExtendedBolus(extendedBolus); @@ -143,55 +143,55 @@ public class MsgHistoryEvents_v2 extends MessageBase { break; case DanaRPump.DUALEXTENDEDSTOP: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT DUALEXTENDEDSTOP (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Delivered: " + (param1 / 100d) + "U RealDuration: " + param2 + "min"); + log.debug("EVENT DUALEXTENDEDSTOP (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Delivered: " + (param1 / 100d) + "U RealDuration: " + param2 + "min"); TreatmentsPlugin.getPlugin().addToHistoryExtendedBolus(extendedBolus); status = "DUALEXTENDEDSTOP " + DateUtil.timeString(datetime); break; case DanaRPump.SUSPENDON: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT SUSPENDON (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")"); + log.debug("EVENT SUSPENDON (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")"); status = "SUSPENDON " + DateUtil.timeString(datetime); break; case DanaRPump.SUSPENDOFF: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT SUSPENDOFF (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")"); + log.debug("EVENT SUSPENDOFF (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")"); status = "SUSPENDOFF " + DateUtil.timeString(datetime); break; case DanaRPump.REFILL: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT REFILL (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Amount: " + param1 / 100d + "U"); + log.debug("EVENT REFILL (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100d + "U"); status = "REFILL " + DateUtil.timeString(datetime); break; case DanaRPump.PRIME: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT PRIME (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Amount: " + param1 / 100d + "U"); + log.debug("EVENT PRIME (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100d + "U"); status = "PRIME " + DateUtil.timeString(datetime); break; case DanaRPump.PROFILECHANGE: if (L.isEnabled(L.PUMPCOMM)) - log.debug("EVENT PROFILECHANGE (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " No: " + param1 + " CurrentRate: " + (param2 / 100d) + "U/h"); + log.debug("EVENT PROFILECHANGE (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " No: " + param1 + " CurrentRate: " + (param2 / 100d) + "U/h"); status = "PROFILECHANGE " + DateUtil.timeString(datetime); break; case DanaRPump.CARBS: DetailedBolusInfo emptyCarbsInfo = new DetailedBolusInfo(); emptyCarbsInfo.carbs = param1; - emptyCarbsInfo.date = datetime.getTime(); + emptyCarbsInfo.date = datetime; emptyCarbsInfo.source = Source.PUMP; - emptyCarbsInfo.pumpId = datetime.getTime(); + emptyCarbsInfo.pumpId = datetime; newRecord = TreatmentsPlugin.getPlugin().addToHistoryTreatment(emptyCarbsInfo, false); if (L.isEnabled(L.PUMPCOMM)) - log.debug((newRecord ? "**NEW** " : "") + "EVENT CARBS (" + recordCode + ") " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Carbs: " + param1 + "g"); + log.debug((newRecord ? "**NEW** " : "") + "EVENT CARBS (" + recordCode + ") " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Carbs: " + param1 + "g"); status = "CARBS " + DateUtil.timeString(datetime); break; default: if (L.isEnabled(L.PUMPCOMM)) - log.debug("Event: " + recordCode + " " + datetime.toLocaleString() + " (" + datetime.getTime() + ")" + " Param1: " + param1 + " Param2: " + param2); + log.debug("Event: " + recordCode + " " + DateUtil.dateAndTimeFullString(datetime) + " (" + datetime + ")" + " Param1: " + param1 + " Param2: " + param2); status = "UNKNOWN " + DateUtil.timeString(datetime); break; } - if (datetime.getTime() > lastEventTimeLoaded) - lastEventTimeLoaded = datetime.getTime(); + if (datetime > lastEventTimeLoaded) + lastEventTimeLoaded = datetime; MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.processinghistory) + ": " + status)); } diff --git a/app/src/main/java/info/nightscout/utils/DateUtil.java b/app/src/main/java/info/nightscout/utils/DateUtil.java index c2164fd40e..c5d5eed51c 100644 --- a/app/src/main/java/info/nightscout/utils/DateUtil.java +++ b/app/src/main/java/info/nightscout/utils/DateUtil.java @@ -97,27 +97,27 @@ public class DateUtil { } public static String dateString(Date date) { - //return DateUtils.formatDateTime(MainApp.instance(), date.getTime(), DateUtils.FORMAT_SHOW_DATE); this provide month name not number DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT); return df.format(date); } public static String dateString(long mills) { - //return DateUtils.formatDateTime(MainApp.instance(), mills, DateUtils.FORMAT_SHOW_DATE); this provide month name not number DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT); return df.format(mills); } public static String timeString(Date date) { - //return DateUtils.formatDateTime(MainApp.instance(), date.getTime(), DateUtils.FORMAT_SHOW_TIME); return new DateTime(date).toString(DateTimeFormat.shortTime()); } public static String timeString(long mills) { - //return DateUtils.formatDateTime(MainApp.instance(), mills, DateUtils.FORMAT_SHOW_TIME); return new DateTime(mills).toString(DateTimeFormat.shortTime()); } + public static String timeFullString(long mills) { + return new DateTime(mills).toString(DateTimeFormat.fullTime()); + } + public static String dateAndTimeString(Date date) { return dateString(date) + " " + timeString(date); } @@ -130,6 +130,10 @@ public class DateUtil { return dateString(mills) + " " + timeString(mills); } + public static String dateAndTimeFullString(long mills) { + return dateString(mills) + " " + timeFullString(mills); + } + public static String minAgo(long time) { int mins = (int) ((now() - time) / 1000 / 60); return MainApp.gs(R.string.minago, mins);