cleanup
This commit is contained in:
parent
59ecd1818d
commit
ddc37324a8
13 changed files with 526 additions and 345 deletions
|
@ -127,7 +127,7 @@
|
|||
</codeStyleSettings>
|
||||
<codeStyleSettings language="kotlin">
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
<option name="RIGHT_MARGIN" value="120" />
|
||||
<option name="RIGHT_MARGIN" value="200" />
|
||||
<option name="LINE_COMMENT_AT_FIRST_COLUMN" value="false" />
|
||||
<option name="LINE_COMMENT_ADD_SPACE" value="true" />
|
||||
<option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" />
|
||||
|
|
|
@ -18,6 +18,7 @@ import org.joda.time.DateTimeZone
|
|||
import org.json.JSONArray
|
||||
import org.json.JSONException
|
||||
import org.json.JSONObject
|
||||
import java.security.InvalidParameterException
|
||||
import java.text.DecimalFormat
|
||||
import java.util.concurrent.TimeUnit
|
||||
import javax.inject.Inject
|
||||
|
@ -25,6 +26,7 @@ import javax.inject.Singleton
|
|||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
import kotlin.math.roundToInt
|
||||
import kotlin.math.roundToLong
|
||||
|
||||
@Singleton
|
||||
class DanaPump @Inject constructor(
|
||||
|
@ -34,11 +36,13 @@ class DanaPump @Inject constructor(
|
|||
private val injector: HasAndroidInjector
|
||||
) {
|
||||
|
||||
@Suppress("unused")
|
||||
enum class ErrorState(val code: Int) {
|
||||
|
||||
NONE(0x00),
|
||||
SUSPENDED(0x01),
|
||||
DAILYMAX(0x02),
|
||||
BOLUSBLOCK(0x04),
|
||||
DAILY_MAX(0x02),
|
||||
BOLUS_BLOCK(0x04),
|
||||
ORDERDELIVERING(0x08),
|
||||
NOPRIME(0x10);
|
||||
|
||||
|
@ -104,8 +108,6 @@ class DanaPump @Inject constructor(
|
|||
var pumpSuspended = false
|
||||
var calculatorEnabled = false
|
||||
var dailyTotalUnits = 0.0
|
||||
var dailyTotalBolusUnits = 0.0 // RS only
|
||||
var dailyTotalBasalUnits = 0.0 // RS only
|
||||
var decRatio = 0 // RS v3: [%] for pump IOB calculation
|
||||
var maxDailyTotalUnits = 0
|
||||
var bolusStep = 0.1
|
||||
|
@ -147,7 +149,8 @@ class DanaPump @Inject constructor(
|
|||
fun temporaryBasalToString(): String {
|
||||
if (!isTempBasalInProgress) return ""
|
||||
|
||||
val passedMin = ((min(dateUtil.now(), tempBasalStart + tempBasalDuration) - tempBasalStart) / 60.0 / 1000).roundToInt()
|
||||
val passedMin =
|
||||
((min(dateUtil.now(), tempBasalStart + tempBasalDuration) - tempBasalStart) / 60.0 / 1000).roundToInt()
|
||||
return tempBasalPercent.toString() + "% @" +
|
||||
dateUtil.timeString(tempBasalStart) +
|
||||
" " + passedMin + "/" + T.msecs(tempBasalDuration).mins() + "'"
|
||||
|
@ -183,7 +186,7 @@ class DanaPump @Inject constructor(
|
|||
extendedBolusAmount = 0.0
|
||||
}
|
||||
}
|
||||
val extendedBolusPassedMinutes: Int
|
||||
private val extendedBolusPassedMinutes: Int
|
||||
get() = T.msecs(max(0, dateUtil.now() - extendedBolusStart)).mins().toInt()
|
||||
val extendedBolusRemainingMinutes: Int
|
||||
get() = max(T.msecs(extendedBolusStart + extendedBolusDuration - dateUtil.now()).mins().toInt(), 0)
|
||||
|
@ -237,8 +240,8 @@ class DanaPump @Inject constructor(
|
|||
var nightCF = 0.0
|
||||
|
||||
// Profile I
|
||||
var cf24 = Array<Double>(24) { 0.0 }
|
||||
var cir24 = Array<Double>(24) { 0.0 }
|
||||
var cf24 = Array(24) { 0.0 }
|
||||
var cir24 = Array(24) { 0.0 }
|
||||
|
||||
//var pumpProfiles = arrayOf<Array<Double>>()
|
||||
var pumpProfiles: Array<Array<Double>>? = null
|
||||
|
@ -263,7 +266,7 @@ class DanaPump @Inject constructor(
|
|||
var cannulaVolume = 0
|
||||
var refillAmount = 0
|
||||
var target = 0 // mgdl 40~400 mmol 2.2~22 => 220~2200
|
||||
var userOptionsFrompump: ByteArray? = null
|
||||
var userOptionsFromPump: ByteArray? = null
|
||||
var initialBolusAmount = 0.0
|
||||
|
||||
// Bolus settings
|
||||
|
@ -273,7 +276,7 @@ class DanaPump @Inject constructor(
|
|||
return if (units == UNITS_MGDL) Constants.MGDL else Constants.MMOL
|
||||
}
|
||||
|
||||
var bolusStartErrorCode: Int = 0 // last start bolus erroCode
|
||||
var bolusStartErrorCode: Int = 0 // last start bolus errorCode
|
||||
var bolusingTreatment: EventOverviewBolusProgress.Treatment? = null // actually delivered treatment
|
||||
var bolusAmountToBeDelivered = 0.0 // amount to be delivered
|
||||
var bolusProgressLastTimeStamp: Long = 0 // timestamp of last bolus progress message
|
||||
|
@ -282,7 +285,7 @@ class DanaPump @Inject constructor(
|
|||
var bolusDone = false // success end
|
||||
var lastEventTimeLoaded: Long = 0 // timestamp of last received event
|
||||
|
||||
// val lastKnownHistoryId: Int = 0 // hwver 7+, 1-2000
|
||||
// val lastKnownHistoryId: Int = 0 // hw ver 7+, 1-2000
|
||||
|
||||
fun createConvertedProfile(): ProfileStore? {
|
||||
pumpProfiles?.let {
|
||||
|
@ -297,19 +300,24 @@ class DanaPump @Inject constructor(
|
|||
json.put("defaultProfile", PROFILE_PREFIX + (activeProfile + 1))
|
||||
json.put("store", store)
|
||||
profile.put("dia", Constants.defaultDIA)
|
||||
val carbratios = JSONArray()
|
||||
val carbRatios = JSONArray()
|
||||
if (!profile24) {
|
||||
carbratios.put(JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", nightCIR))
|
||||
carbratios.put(JSONObject().put("time", "06:00").put("timeAsSeconds", 6 * 3600).put("value", morningCIR))
|
||||
carbratios.put(JSONObject().put("time", "11:00").put("timeAsSeconds", 11 * 3600).put("value", afternoonCIR))
|
||||
carbratios.put(JSONObject().put("time", "14:00").put("timeAsSeconds", 17 * 3600).put("value", eveningCIR))
|
||||
carbratios.put(JSONObject().put("time", "22:00").put("timeAsSeconds", 22 * 3600).put("value", nightCIR))
|
||||
carbRatios.put(JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", nightCIR))
|
||||
carbRatios.put(JSONObject().put("time", "06:00").put("timeAsSeconds", 6 * 3600).put("value", morningCIR))
|
||||
carbRatios.put(JSONObject().put("time", "11:00").put("timeAsSeconds", 11 * 3600).put("value", afternoonCIR))
|
||||
carbRatios.put(JSONObject().put("time", "14:00").put("timeAsSeconds", 17 * 3600).put("value", eveningCIR))
|
||||
carbRatios.put(JSONObject().put("time", "22:00").put("timeAsSeconds", 22 * 3600).put("value", nightCIR))
|
||||
} else { // 24 values
|
||||
for (i in 0..23) {
|
||||
carbratios.put(JSONObject().put("time", String.format("%02d", i) + ":00").put("timeAsSeconds", i * 3600).put("value", cir24[i]))
|
||||
carbRatios.put(
|
||||
JSONObject()
|
||||
.put("time", String.format("%02d", i) + ":00")
|
||||
.put("timeAsSeconds", i * 3600)
|
||||
.put("value", cir24[i])
|
||||
)
|
||||
}
|
||||
}
|
||||
profile.put("carbratio", carbratios)
|
||||
profile.put("carbratio", carbRatios)
|
||||
val sens = JSONArray()
|
||||
if (!profile24) {
|
||||
sens.put(JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", nightCF))
|
||||
|
@ -319,7 +327,12 @@ class DanaPump @Inject constructor(
|
|||
sens.put(JSONObject().put("time", "22:00").put("timeAsSeconds", 22 * 3600).put("value", nightCF))
|
||||
} else { // 24 values
|
||||
for (i in 0..23) {
|
||||
sens.put(JSONObject().put("time", String.format("%02d", i) + ":00").put("timeAsSeconds", i * 3600).put("value", cf24[i]))
|
||||
sens.put(
|
||||
JSONObject()
|
||||
.put("time", String.format("%02d", i) + ":00")
|
||||
.put("timeAsSeconds", i * 3600)
|
||||
.put("value", cf24[i])
|
||||
)
|
||||
}
|
||||
}
|
||||
profile.put("sens", sens)
|
||||
|
@ -334,11 +347,32 @@ class DanaPump @Inject constructor(
|
|||
} else {
|
||||
df.format(h.toLong()) + ":00"
|
||||
}
|
||||
basals.put(JSONObject().put("time", time).put("timeAsSeconds", h * basalIncrement).put("value", it[activeProfile][h]))
|
||||
basals.put(
|
||||
JSONObject()
|
||||
.put("time", time)
|
||||
.put("timeAsSeconds", h * basalIncrement)
|
||||
.put("value", it[activeProfile][h])
|
||||
)
|
||||
}
|
||||
profile.put("basal", basals)
|
||||
profile.put("target_low", JSONArray().put(JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", currentTarget)))
|
||||
profile.put("target_high", JSONArray().put(JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", currentTarget)))
|
||||
profile.put(
|
||||
"target_low",
|
||||
JSONArray().put(
|
||||
JSONObject()
|
||||
.put("time", "00:00")
|
||||
.put("timeAsSeconds", 0)
|
||||
.put("value", currentTarget)
|
||||
)
|
||||
)
|
||||
profile.put(
|
||||
"target_high",
|
||||
JSONArray().put(
|
||||
JSONObject()
|
||||
.put("time", "00:00")
|
||||
.put("timeAsSeconds", 0)
|
||||
.put("value", currentTarget)
|
||||
)
|
||||
)
|
||||
profile.put("units", if (units == UNITS_MGDL) Constants.MGDL else Constants.MMOL)
|
||||
store.put(PROFILE_PREFIX + (activeProfile + 1), profile)
|
||||
} catch (e: JSONException) {
|
||||
|
@ -356,7 +390,7 @@ class DanaPump @Inject constructor(
|
|||
for (hour in 0..23) {
|
||||
//Some values get truncated to the next lower one.
|
||||
// -> round them to two decimals and make sure we are a small delta larger (that will get truncated)
|
||||
val value = Math.round(100.0 * nsProfile.getBasalTimeFromMidnight((hour * 60 * 60))) / 100.0 + 0.00001
|
||||
val value = (100.0 * nsProfile.getBasalTimeFromMidnight((hour * 60 * 60))).roundToLong() / 100.0 + 0.00001
|
||||
aapsLogger.debug(LTag.PUMP, "NS basal value for $hour:00 is $value")
|
||||
record[hour] = value
|
||||
}
|
||||
|
@ -367,7 +401,10 @@ class DanaPump @Inject constructor(
|
|||
get() = password == sp.getInt(R.string.key_danar_password, -2)
|
||||
|
||||
val isRSPasswordOK: Boolean
|
||||
get() = rsPassword.equals(sp.getString(R.string.key_danars_password, ""), ignoreCase = true) || ignoreUserPassword
|
||||
get() = rsPassword.equals(
|
||||
sp.getString(R.string.key_danars_password, ""),
|
||||
ignoreCase = true
|
||||
) || ignoreUserPassword
|
||||
|
||||
fun reset() {
|
||||
aapsLogger.debug(LTag.PUMP, "DanaRPump reset")
|
||||
|
@ -410,6 +447,34 @@ class DanaPump @Inject constructor(
|
|||
else -> PumpType.USER
|
||||
}
|
||||
|
||||
// v2, RS history entries
|
||||
enum class HistoryEntry(val value: Int) {
|
||||
|
||||
TEMP_START(1),
|
||||
TEMP_STOP(2),
|
||||
EXTENDED_START(3),
|
||||
EXTENDED_STOP(4),
|
||||
BOLUS(5),
|
||||
DUAL_BOLUS(6),
|
||||
DUAL_EXTENDED_START(7),
|
||||
DUAL_EXTENDED_STOP(8),
|
||||
SUSPEND_ON(9),
|
||||
SUSPEND_OFF(10),
|
||||
REFILL(11),
|
||||
PRIME(12),
|
||||
PROFILE_CHANGE(13),
|
||||
CARBS(14),
|
||||
PRIME_CANNULA(15),
|
||||
TIME_CHANGE(16)
|
||||
;
|
||||
|
||||
companion object {
|
||||
|
||||
fun fromInt(value: Int) = values().firstOrNull { it.value == value } ?: throw InvalidParameterException()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
const val UNITS_MGDL = 0
|
||||
|
@ -420,24 +485,6 @@ class DanaPump @Inject constructor(
|
|||
const val DELIVERY_EXT_BOLUS = 0x08
|
||||
const val PROFILE_PREFIX = "DanaR-"
|
||||
|
||||
// v2 history entries
|
||||
const val TEMPSTART = 1
|
||||
const val TEMPSTOP = 2
|
||||
const val EXTENDEDSTART = 3
|
||||
const val EXTENDEDSTOP = 4
|
||||
const val BOLUS = 5
|
||||
const val DUALBOLUS = 6
|
||||
const val DUALEXTENDEDSTART = 7
|
||||
const val DUALEXTENDEDSTOP = 8
|
||||
const val SUSPENDON = 9
|
||||
const val SUSPENDOFF = 10
|
||||
const val REFILL = 11
|
||||
const val PRIME = 12
|
||||
const val PROFILECHANGE = 13
|
||||
const val CARBS = 14
|
||||
const val PRIMECANNULA = 15
|
||||
const val TIMECHANGE = 16
|
||||
|
||||
// Dana R btModel
|
||||
const val DOMESTIC_MODEL = 0x01
|
||||
const val EXPORT_MODEL = 0x03
|
||||
|
|
|
@ -67,7 +67,7 @@ class MessageHashTableRv2 @Inject constructor(
|
|||
put(MsgCheckValue_v2(injector)) // 0xF0F1 CMD_PUMP_CHECK_VALUE
|
||||
put(MsgStatusAPS_v2(injector)) // 0xE001 CMD_PUMPSTATUS_APS
|
||||
put(MsgSetAPSTempBasalStart_v2(injector, 0, false, false)) // 0xE002 CMD_PUMPSET_APSTEMP
|
||||
put(MsgHistoryEvents_v2(injector)) // 0xE003 CMD_GET_HISTORY
|
||||
put(MsgHistoryEventsV2(injector)) // 0xE003 CMD_GET_HISTORY
|
||||
put(MsgSetHistoryEntry_v2(injector, 0, 0, 0, 0)) // 0xE004 CMD_SET_HISTORY_ENTRY
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,276 @@
|
|||
package info.nightscout.androidaps.danaRv2.comm
|
||||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.dana.DanaPump
|
||||
import info.nightscout.androidaps.danar.R
|
||||
import info.nightscout.androidaps.danar.comm.MessageBase
|
||||
import info.nightscout.androidaps.events.EventPumpStatusChanged
|
||||
import info.nightscout.androidaps.logging.LTag
|
||||
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import java.util.*
|
||||
|
||||
class MsgHistoryEventsV2 constructor(
|
||||
injector: HasAndroidInjector,
|
||||
var from: Long = 0
|
||||
) : MessageBase(injector) {
|
||||
|
||||
companion object {
|
||||
|
||||
var messageBuffer = arrayListOf<ByteArray>() // for reversing order of incoming messages
|
||||
}
|
||||
|
||||
init {
|
||||
SetCommand(0xE003)
|
||||
if (from > dateUtil.now()) {
|
||||
aapsLogger.error("Asked to load from the future")
|
||||
from = 0
|
||||
}
|
||||
if (from == 0L) {
|
||||
AddParamByte(0.toByte())
|
||||
AddParamByte(1.toByte())
|
||||
AddParamByte(1.toByte())
|
||||
AddParamByte(0.toByte())
|
||||
AddParamByte(0.toByte())
|
||||
} else {
|
||||
val gFrom = GregorianCalendar()
|
||||
gFrom.timeInMillis = from
|
||||
AddParamDate(gFrom)
|
||||
}
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "Loading event history from: " + dateUtil.dateAndTimeString(from))
|
||||
danaPump.historyDoneReceived = false
|
||||
messageBuffer = arrayListOf()
|
||||
}
|
||||
|
||||
override fun handleMessage(data: ByteArray) {
|
||||
val recordCode = intFromBuff(data, 0, 1).toByte()
|
||||
// Last record
|
||||
if (recordCode == 0xFF.toByte()) {
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "Last record received")
|
||||
|
||||
val array: Array<ByteArray> = messageBuffer.toTypedArray()
|
||||
val sorted = array.sortedArrayWith { s1: ByteArray, s2: ByteArray -> (dateTime(s1) - dateTime(s2)).toInt() }
|
||||
for (message in sorted) processMessage(message)
|
||||
danaPump.historyDoneReceived = true
|
||||
} else messageBuffer.add(data)
|
||||
}
|
||||
|
||||
fun dateTime(data: ByteArray): Long =
|
||||
dateTimeSecFromBuff(data, 1) // 6 bytes
|
||||
|
||||
fun processMessage(bytes: ByteArray) {
|
||||
val recordCode = intFromBuff(bytes, 0, 1).toByte()
|
||||
|
||||
// Last record
|
||||
if (recordCode == 0xFF.toByte()) {
|
||||
return
|
||||
}
|
||||
val datetime = dateTimeSecFromBuff(bytes, 1) // 6 bytes
|
||||
val param1 = intFromBuff(bytes, 7, 2)
|
||||
val param2 = intFromBuff(bytes, 9, 2)
|
||||
val status: String
|
||||
when (DanaPump.HistoryEntry.fromInt(recordCode.toInt())) {
|
||||
DanaPump.HistoryEntry.TEMP_START -> {
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
"EVENT TEMP_START ($recordCode) " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Ratio: " + param1 + "% Duration: " + param2 + "min"
|
||||
)
|
||||
val temporaryBasalInfo = temporaryBasalStorage.findTemporaryBasal(datetime, param1.toDouble())
|
||||
pumpSync.syncTemporaryBasalWithPumpId(
|
||||
timestamp = datetime,
|
||||
rate = param1.toDouble(),
|
||||
duration = T.mins(param2.toLong()).msecs(),
|
||||
isAbsolute = false,
|
||||
type = temporaryBasalInfo?.type,
|
||||
pumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
status = "TEMP_START " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.HistoryEntry.TEMP_STOP -> {
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
"EVENT TEMP_STOP ($recordCode) " + dateUtil.dateAndTimeString(datetime)
|
||||
)
|
||||
pumpSync.syncStopTemporaryBasalWithPumpId(
|
||||
timestamp = datetime,
|
||||
endPumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
status = "TEMP_STOP " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.HistoryEntry.EXTENDED_START -> {
|
||||
val newRecord = pumpSync.syncExtendedBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
amount = param1 / 100.0,
|
||||
duration = T.mins(param2.toLong()).msecs(),
|
||||
isEmulatingTB = false,
|
||||
pumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
(if (newRecord) "**NEW** " else "") + "EVENT EXTENDED_START (" + recordCode + ") "
|
||||
+ dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U Duration: " + param2 + "min"
|
||||
)
|
||||
status = "EXTENDED_START " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.HistoryEntry.EXTENDED_STOP -> {
|
||||
val newRecord = pumpSync.syncStopExtendedBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
endPumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
(if (newRecord) "**NEW** " else "") + "EVENT EXTENDED_STOP (" + recordCode + ") "
|
||||
+ dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Delivered: " + param1 / 100.0 + "U RealDuration: " + param2 + "min"
|
||||
)
|
||||
status = "EXTENDED_STOP " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.HistoryEntry.BOLUS -> {
|
||||
val detailedBolusInfo = detailedBolusInfoStorage.findDetailedBolusInfo(datetime, param1 / 100.0)
|
||||
val newRecord = pumpSync.syncBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
amount = param1 / 100.0,
|
||||
type = detailedBolusInfo?.bolusType,
|
||||
pumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
(if (newRecord) "**NEW** " else "") + "EVENT BOLUS (" + recordCode + ") "
|
||||
+ dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Bolus: " + param1 / 100.0 + "U Duration: " + param2 + "min"
|
||||
)
|
||||
status = "BOLUS " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.HistoryEntry.DUAL_BOLUS -> {
|
||||
val detailedBolusInfo = detailedBolusInfoStorage.findDetailedBolusInfo(datetime, param1 / 100.0)
|
||||
val newRecord = pumpSync.syncBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
amount = param1 / 100.0,
|
||||
type = detailedBolusInfo?.bolusType,
|
||||
pumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
(if (newRecord) "**NEW** " else "") + "EVENT DUAL_BOLUS (" + recordCode + ") "
|
||||
+ dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Bolus: " + param1 / 100.0 + "U Duration: " + param2 + "min"
|
||||
)
|
||||
status = "DUAL_BOLUS " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.HistoryEntry.DUAL_EXTENDED_START -> {
|
||||
val newRecord = pumpSync.syncExtendedBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
amount = param1 / 100.0,
|
||||
duration = T.mins(param2.toLong()).msecs(),
|
||||
isEmulatingTB = false,
|
||||
pumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
(if (newRecord) "**NEW** " else "") + "EVENT DUAL_EXTENDED_START (" + recordCode + ") "
|
||||
+ dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U Duration: " + param2 + "min"
|
||||
)
|
||||
status = "DUAL_EXTENDED_START " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.HistoryEntry.DUAL_EXTENDED_STOP -> {
|
||||
val newRecord = pumpSync.syncStopExtendedBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
endPumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
(if (newRecord) "**NEW** " else "") + "EVENT DUAL_EXTENDED_STOP (" + recordCode + ") "
|
||||
+ dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Delivered: " + param1 / 100.0 + "U RealDuration: " + param2 + "min"
|
||||
)
|
||||
status = "DUAL_EXTENDED_STOP " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.HistoryEntry.SUSPEND_ON -> {
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
"EVENT SUSPEND_ON (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")"
|
||||
)
|
||||
status = "SUSPEND_ON " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.HistoryEntry.SUSPEND_OFF -> {
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
"EVENT SUSPEND_OFF (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")"
|
||||
)
|
||||
status = "SUSPEND_OFF " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.HistoryEntry.REFILL -> {
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
"EVENT REFILL (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U"
|
||||
)
|
||||
status = "REFILL " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.HistoryEntry.PRIME -> {
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
"EVENT PRIME (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U"
|
||||
)
|
||||
status = "PRIME " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.HistoryEntry.PROFILE_CHANGE -> {
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
"EVENT PROFILE_CHANGE (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " No: " + param1 + " CurrentRate: " + param2 / 100.0 + "U/h"
|
||||
)
|
||||
status = "PROFILE_CHANGE " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.HistoryEntry.CARBS -> {
|
||||
val newRecord = pumpSync.syncCarbsWithTimestamp(
|
||||
timestamp = datetime,
|
||||
amount = param1.toDouble(),
|
||||
pumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
(if (newRecord) "**NEW** " else "") + "EVENT CARBS (" + recordCode + ") " + dateUtil.dateAndTimeString(
|
||||
datetime
|
||||
) + " (" + datetime + ")" + " Carbs: " + param1 + "g"
|
||||
)
|
||||
status = "CARBS " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
else -> {
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPBTCOMM,
|
||||
"Event: " + recordCode + " " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Param1: " + param1 + " Param2: " + param2
|
||||
)
|
||||
status = "UNKNOWN " + dateUtil.timeString(datetime)
|
||||
}
|
||||
}
|
||||
if (datetime > danaPump.lastEventTimeLoaded) danaPump.lastEventTimeLoaded = datetime
|
||||
rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.processinghistory) + ": " + status))
|
||||
}
|
||||
}
|
|
@ -1,214 +0,0 @@
|
|||
package info.nightscout.androidaps.danaRv2.comm
|
||||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.dana.DanaPump
|
||||
import info.nightscout.androidaps.danar.R
|
||||
import info.nightscout.androidaps.danar.comm.MessageBase
|
||||
import info.nightscout.androidaps.events.EventPumpStatusChanged
|
||||
import info.nightscout.androidaps.logging.LTag
|
||||
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import java.util.*
|
||||
|
||||
class MsgHistoryEvents_v2 constructor(
|
||||
injector: HasAndroidInjector,
|
||||
var from: Long = 0
|
||||
) : MessageBase(injector) {
|
||||
|
||||
companion object {
|
||||
|
||||
var messageBuffer = arrayListOf<ByteArray>() // for reversing order of incoming messages
|
||||
}
|
||||
|
||||
init {
|
||||
SetCommand(0xE003)
|
||||
if (from > dateUtil.now()) {
|
||||
aapsLogger.error("Asked to load from the future")
|
||||
from = 0
|
||||
}
|
||||
if (from == 0L) {
|
||||
AddParamByte(0.toByte())
|
||||
AddParamByte(1.toByte())
|
||||
AddParamByte(1.toByte())
|
||||
AddParamByte(0.toByte())
|
||||
AddParamByte(0.toByte())
|
||||
} else {
|
||||
val gfrom = GregorianCalendar()
|
||||
gfrom.timeInMillis = from
|
||||
AddParamDate(gfrom)
|
||||
}
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "Loading event history from: " + dateUtil.dateAndTimeString(from))
|
||||
danaPump.historyDoneReceived = false
|
||||
messageBuffer = arrayListOf()
|
||||
}
|
||||
|
||||
override fun handleMessage(data: ByteArray) {
|
||||
val recordCode = intFromBuff(data, 0, 1).toByte()
|
||||
// Last record
|
||||
if (recordCode == 0xFF.toByte()) {
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "Last record received")
|
||||
|
||||
val array: Array<ByteArray> = messageBuffer.toTypedArray()
|
||||
val sorted = array.sortedArrayWith { s1: ByteArray, s2: ByteArray -> (dateTime(s1) - dateTime(s2)).toInt() }
|
||||
for (message in sorted) processMessage(message)
|
||||
danaPump.historyDoneReceived = true
|
||||
} else messageBuffer.add(data)
|
||||
}
|
||||
|
||||
fun dateTime(data: ByteArray): Long =
|
||||
dateTimeSecFromBuff(data, 1) // 6 bytes
|
||||
|
||||
fun processMessage(bytes: ByteArray) {
|
||||
val recordCode = intFromBuff(bytes, 0, 1).toByte()
|
||||
|
||||
// Last record
|
||||
if (recordCode == 0xFF.toByte()) {
|
||||
return
|
||||
}
|
||||
val datetime = dateTimeSecFromBuff(bytes, 1) // 6 bytes
|
||||
val param1 = intFromBuff(bytes, 7, 2)
|
||||
val param2 = intFromBuff(bytes, 9, 2)
|
||||
val status: String
|
||||
when (recordCode.toInt()) {
|
||||
DanaPump.TEMPSTART -> {
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT TEMPSTART (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Ratio: " + param1 + "% Duration: " + param2 + "min")
|
||||
val temporaryBasalInfo = temporaryBasalStorage.findTemporaryBasal(datetime, param1.toDouble())
|
||||
pumpSync.syncTemporaryBasalWithPumpId(
|
||||
timestamp = datetime,
|
||||
rate = param1.toDouble(),
|
||||
duration = T.mins(param2.toLong()).msecs(),
|
||||
isAbsolute = false,
|
||||
type = temporaryBasalInfo?.type,
|
||||
pumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
status = "TEMPSTART " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.TEMPSTOP -> {
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT TEMPSTOP (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime))
|
||||
pumpSync.syncStopTemporaryBasalWithPumpId(
|
||||
timestamp = datetime,
|
||||
endPumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
status = "TEMPSTOP " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.EXTENDEDSTART -> {
|
||||
val newRecord = pumpSync.syncExtendedBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
amount = param1 / 100.0,
|
||||
duration = T.mins(param2.toLong()).msecs(),
|
||||
isEmulatingTB = false,
|
||||
pumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, (if (newRecord) "**NEW** " else "") + "EVENT EXTENDEDSTART (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U Duration: " + param2 + "min")
|
||||
status = "EXTENDEDSTART " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.EXTENDEDSTOP -> {
|
||||
val newRecord = pumpSync.syncStopExtendedBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
endPumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, (if (newRecord) "**NEW** " else "") + "EVENT EXTENDEDSTOP (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Delivered: " + param1 / 100.0 + "U RealDuration: " + param2 + "min")
|
||||
status = "EXTENDEDSTOP " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.BOLUS -> {
|
||||
val detailedBolusInfo = detailedBolusInfoStorage.findDetailedBolusInfo(datetime, param1 / 100.0)
|
||||
val newRecord = pumpSync.syncBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
amount = param1 / 100.0,
|
||||
type = detailedBolusInfo?.bolusType,
|
||||
pumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, (if (newRecord) "**NEW** " else "") + "EVENT BOLUS (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Bolus: " + param1 / 100.0 + "U Duration: " + param2 + "min")
|
||||
status = "BOLUS " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.DUALBOLUS -> {
|
||||
val detailedBolusInfo = detailedBolusInfoStorage.findDetailedBolusInfo(datetime, param1 / 100.0)
|
||||
val newRecord = pumpSync.syncBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
amount = param1 / 100.0,
|
||||
type = detailedBolusInfo?.bolusType,
|
||||
pumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, (if (newRecord) "**NEW** " else "") + "EVENT DUALBOLUS (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Bolus: " + param1 / 100.0 + "U Duration: " + param2 + "min")
|
||||
status = "DUALBOLUS " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.DUALEXTENDEDSTART -> {
|
||||
val newRecord = pumpSync.syncExtendedBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
amount = param1 / 100.0,
|
||||
duration = T.mins(param2.toLong()).msecs(),
|
||||
isEmulatingTB = false,
|
||||
pumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, (if (newRecord) "**NEW** " else "") + "EVENT DUALEXTENDEDSTART (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U Duration: " + param2 + "min")
|
||||
status = "DUALEXTENDEDSTART " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.DUALEXTENDEDSTOP -> {
|
||||
val newRecord = pumpSync.syncStopExtendedBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
endPumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, (if (newRecord) "**NEW** " else "") + "EVENT DUALEXTENDEDSTOP (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Delivered: " + param1 / 100.0 + "U RealDuration: " + param2 + "min")
|
||||
status = "DUALEXTENDEDSTOP " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.SUSPENDON -> {
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT SUSPENDON (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")")
|
||||
status = "SUSPENDON " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.SUSPENDOFF -> {
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT SUSPENDOFF (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")")
|
||||
status = "SUSPENDOFF " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.REFILL -> {
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT REFILL (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U")
|
||||
status = "REFILL " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.PRIME -> {
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT PRIME (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U")
|
||||
status = "PRIME " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.PROFILECHANGE -> {
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT PROFILECHANGE (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " No: " + param1 + " CurrentRate: " + param2 / 100.0 + "U/h")
|
||||
status = "PROFILECHANGE " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.CARBS -> {
|
||||
val newRecord = pumpSync.syncCarbsWithTimestamp(
|
||||
timestamp = datetime,
|
||||
amount = param1.toDouble(),
|
||||
pumpId = datetime,
|
||||
pumpType = PumpType.DANA_RV2,
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, (if (newRecord) "**NEW** " else "") + "EVENT CARBS (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Carbs: " + param1 + "g")
|
||||
status = "CARBS " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
else -> {
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, "Event: " + recordCode + " " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Param1: " + param1 + " Param2: " + param2)
|
||||
status = "UNKNOWN " + dateUtil.timeString(datetime)
|
||||
}
|
||||
}
|
||||
if (datetime > danaPump.lastEventTimeLoaded) danaPump.lastEventTimeLoaded = datetime
|
||||
rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.processinghistory) + ": " + status))
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@ import info.nightscout.androidaps.danaRKorean.DanaRKoreanPlugin;
|
|||
import info.nightscout.androidaps.danaRv2.DanaRv2Plugin;
|
||||
import info.nightscout.androidaps.danaRv2.comm.MessageHashTableRv2;
|
||||
import info.nightscout.androidaps.danaRv2.comm.MsgCheckValue_v2;
|
||||
import info.nightscout.androidaps.danaRv2.comm.MsgHistoryEvents_v2;
|
||||
import info.nightscout.androidaps.danaRv2.comm.MsgHistoryEventsV2;
|
||||
import info.nightscout.androidaps.danaRv2.comm.MsgSetAPSTempBasalStart_v2;
|
||||
import info.nightscout.androidaps.danaRv2.comm.MsgSetHistoryEntry_v2;
|
||||
import info.nightscout.androidaps.danar.R;
|
||||
|
@ -344,7 +344,8 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
|
|||
if (carbs > 0) {
|
||||
MsgSetCarbsEntry msg = new MsgSetCarbsEntry(injector, carbtime, carbs);
|
||||
mSerialIOThread.sendMessage(msg);
|
||||
MsgSetHistoryEntry_v2 msgSetHistoryEntry_v2 = new MsgSetHistoryEntry_v2(injector, DanaPump.CARBS, carbtime, carbs, 0);
|
||||
MsgSetHistoryEntry_v2 msgSetHistoryEntry_v2 = new MsgSetHistoryEntry_v2(injector,
|
||||
DanaPump.HistoryEntry.CARBS.getValue(), carbtime, carbs, 0);
|
||||
mSerialIOThread.sendMessage(msgSetHistoryEntry_v2);
|
||||
danaPump.lastHistoryFetched = Math.min(danaPump.lastHistoryFetched, carbtime - T.Companion.mins(1).msecs());
|
||||
}
|
||||
|
@ -413,7 +414,8 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
|
|||
if (!isConnected()) return false;
|
||||
MsgSetCarbsEntry msg = new MsgSetCarbsEntry(injector, time, amount);
|
||||
mSerialIOThread.sendMessage(msg);
|
||||
MsgSetHistoryEntry_v2 msgSetHistoryEntry_v2 = new MsgSetHistoryEntry_v2(injector, DanaPump.CARBS, time, amount, 0);
|
||||
MsgSetHistoryEntry_v2 msgSetHistoryEntry_v2 = new MsgSetHistoryEntry_v2(injector,
|
||||
DanaPump.HistoryEntry.CARBS.getValue(), time, amount, 0);
|
||||
mSerialIOThread.sendMessage(msgSetHistoryEntry_v2);
|
||||
danaPump.lastHistoryFetched = Math.min(danaPump.lastHistoryFetched, time - T.Companion.mins(1).msecs());
|
||||
return true;
|
||||
|
@ -430,7 +432,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
|
|||
if (!isConnected())
|
||||
return new PumpEnactResult(injector).success(false);
|
||||
SystemClock.sleep(300);
|
||||
MsgHistoryEvents_v2 msg = new MsgHistoryEvents_v2(injector, danaPump.lastHistoryFetched);
|
||||
MsgHistoryEventsV2 msg = new MsgHistoryEventsV2(injector, danaPump.lastHistoryFetched);
|
||||
aapsLogger.debug(LTag.PUMP, "Loading event history from: " + dateUtil.dateAndTimeString(danaPump.lastHistoryFetched));
|
||||
|
||||
mSerialIOThread.sendMessage(msg);
|
||||
|
|
|
@ -9,20 +9,20 @@ class MsgSetUserOptions(
|
|||
|
||||
init {
|
||||
SetCommand(0x330B)
|
||||
if (danaPump.userOptionsFrompump == null) {
|
||||
if (danaPump.userOptionsFromPump == null) {
|
||||
// No options set -> Exiting
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "NO USER OPTIONS LOADED EXITING!")
|
||||
} else {
|
||||
danaPump.userOptionsFrompump!![0] = if( danaPump.timeDisplayType24) 0.toByte() else 1.toByte()
|
||||
danaPump.userOptionsFrompump!![1] = if (danaPump.buttonScrollOnOff) 1.toByte() else 0.toByte()
|
||||
danaPump.userOptionsFrompump!![2] = danaPump.beepAndAlarm.toByte()
|
||||
danaPump.userOptionsFrompump!![3] = danaPump.lcdOnTimeSec.toByte()
|
||||
danaPump.userOptionsFrompump!![4] = danaPump.backlightOnTimeSec.toByte()
|
||||
danaPump.userOptionsFrompump!![5] = danaPump.selectedLanguage.toByte()
|
||||
danaPump.userOptionsFrompump!![8] = danaPump.units.toByte()
|
||||
danaPump.userOptionsFrompump!![9] = danaPump.shutdownHour.toByte()
|
||||
danaPump.userOptionsFrompump!![27] = danaPump.lowReservoirRate.toByte()
|
||||
for (element in danaPump.userOptionsFrompump!!) {
|
||||
danaPump.userOptionsFromPump!![0] = if( danaPump.timeDisplayType24) 0.toByte() else 1.toByte()
|
||||
danaPump.userOptionsFromPump!![1] = if (danaPump.buttonScrollOnOff) 1.toByte() else 0.toByte()
|
||||
danaPump.userOptionsFromPump!![2] = danaPump.beepAndAlarm.toByte()
|
||||
danaPump.userOptionsFromPump!![3] = danaPump.lcdOnTimeSec.toByte()
|
||||
danaPump.userOptionsFromPump!![4] = danaPump.backlightOnTimeSec.toByte()
|
||||
danaPump.userOptionsFromPump!![5] = danaPump.selectedLanguage.toByte()
|
||||
danaPump.userOptionsFromPump!![8] = danaPump.units.toByte()
|
||||
danaPump.userOptionsFromPump!![9] = danaPump.shutdownHour.toByte()
|
||||
danaPump.userOptionsFromPump!![27] = danaPump.lowReservoirRate.toByte()
|
||||
for (element in danaPump.userOptionsFromPump!!) {
|
||||
AddParamByte(element)
|
||||
}
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "New message")
|
||||
|
|
|
@ -15,7 +15,7 @@ class MsgSettingUserOptions(
|
|||
|
||||
override fun handleMessage(packet: ByteArray) {
|
||||
val bytes = getDataBytes(packet, packet.size - 10)
|
||||
danaPump.userOptionsFrompump = bytes.copyOf(bytes.size) // saving pumpDataBytes to use it in MsgSetUserOptions
|
||||
danaPump.userOptionsFromPump = bytes.copyOf(bytes.size) // saving pumpDataBytes to use it in MsgSetUserOptions
|
||||
for (pos in bytes.indices) {
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pos + "]" + bytes[pos])
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import dagger.Module
|
|||
import dagger.android.ContributesAndroidInjector
|
||||
import info.nightscout.androidaps.danaRKorean.comm.*
|
||||
import info.nightscout.androidaps.danaRv2.comm.MsgCheckValue_v2
|
||||
import info.nightscout.androidaps.danaRv2.comm.MsgHistoryEvents_v2
|
||||
import info.nightscout.androidaps.danaRv2.comm.MsgHistoryEventsV2
|
||||
import info.nightscout.androidaps.danaRv2.comm.MsgSetAPSTempBasalStart_v2
|
||||
import info.nightscout.androidaps.danaRv2.comm.MsgSetHistoryEntry_v2
|
||||
import info.nightscout.androidaps.danaRv2.comm.MsgStatusAPS_v2
|
||||
|
@ -69,7 +69,7 @@ abstract class DanaRCommModule {
|
|||
@ContributesAndroidInjector abstract fun contributesMsgHistoryNew(): MsgHistoryNew
|
||||
|
||||
@ContributesAndroidInjector abstract fun contributesMsgCheckValue_v2(): MsgCheckValue_v2
|
||||
@ContributesAndroidInjector abstract fun contributesMsgHistoryEvents_v2(): MsgHistoryEvents_v2
|
||||
@ContributesAndroidInjector abstract fun contributesMsgHistoryEventsV2(): MsgHistoryEventsV2
|
||||
@ContributesAndroidInjector abstract fun contributesMsgSetAPSTempBasalStart_v2(): MsgSetAPSTempBasalStart_v2
|
||||
@ContributesAndroidInjector abstract fun contributesMsgSetHistoryEntry_v2(): MsgSetHistoryEntry_v2
|
||||
@ContributesAndroidInjector abstract fun contributesMsgStatusAPS_v2(): MsgStatusAPS_v2
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package info.nightscout.androidaps.plugins.pump.danaRv2.comm
|
||||
|
||||
import info.nightscout.androidaps.danaRv2.comm.MsgHistoryEvents_v2
|
||||
import info.nightscout.androidaps.danaRv2.comm.MsgHistoryEventsV2
|
||||
import info.nightscout.androidaps.plugins.pump.danaR.comm.DanaRTestBase
|
||||
import org.junit.Assert
|
||||
import org.junit.Test
|
||||
|
@ -8,7 +8,7 @@ import org.junit.Test
|
|||
class MsgHistoryEventsRv2Test : DanaRTestBase() {
|
||||
|
||||
@Test fun runTest() {
|
||||
val packet = MsgHistoryEvents_v2(injector, 0)
|
||||
val packet = MsgHistoryEventsV2(injector, 0)
|
||||
|
||||
// test message decoding
|
||||
val array = createArray(100, 2)
|
||||
|
|
|
@ -11,7 +11,6 @@ import info.nightscout.androidaps.logging.LTag
|
|||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
|
||||
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.TemporaryBasalStorage
|
||||
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
|
@ -85,10 +84,16 @@ open class DanaRSPacketAPSHistoryEvents(
|
|||
// sometimes TB is marked as canceled immediately
|
||||
// but on pump is running
|
||||
// at least on Model: 05 Protocol: 10 Code: 10
|
||||
if (index > 0 && recordCode(message) == DanaPump.TEMPSTOP) {
|
||||
if (index > 0 && recordCode(message) == DanaPump.HistoryEntry.TEMP_STOP.value) {
|
||||
val previous = sorted[index - 1]
|
||||
if (recordCode(previous) == DanaPump.TEMPSTART && dateTime(message) == dateTime(previous)) {
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "SKIPPING EVENT TEMPSTOP (" + recordCode(message) + ") " + dateUtil.dateAndTimeString(dateTime(message)) + " (" + dateTime(message) + ")")
|
||||
if (recordCode(previous) == DanaPump.HistoryEntry.TEMP_START.value && dateTime(message) == dateTime
|
||||
(previous)
|
||||
) {
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"SKIPPING EVENT TEMP_STOP (" + recordCode(message) + ") "
|
||||
+ dateUtil.dateAndTimeString(dateTime(message)) + " (" + dateTime(message) + ")"
|
||||
)
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
@ -127,8 +132,8 @@ open class DanaRSPacketAPSHistoryEvents(
|
|||
pumpId = datetime * 2 + id
|
||||
}
|
||||
val status: String
|
||||
when (recordCode) {
|
||||
DanaPump.TEMPSTART -> {
|
||||
when (DanaPump.HistoryEntry.fromInt(recordCode)) {
|
||||
DanaPump.HistoryEntry.TEMP_START -> {
|
||||
val temporaryBasalInfo = temporaryBasalStorage.findTemporaryBasal(datetime, param1.toDouble())
|
||||
val newRecord = pumpSync.syncTemporaryBasalWithPumpId(
|
||||
timestamp = datetime,
|
||||
|
@ -138,22 +143,30 @@ open class DanaRSPacketAPSHistoryEvents(
|
|||
type = temporaryBasalInfo?.type,
|
||||
pumpId = pumpId,
|
||||
pumpType = danaPump.pumpType(),
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + (if (newRecord) "**NEW** " else "") + "EVENT TEMPSTART (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Ratio: " + param1 + "% Duration: " + param2 + "min")
|
||||
status = "TEMPSTART " + dateUtil.timeString(datetime)
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] ${if (newRecord) "**NEW** " else ""}EVENT TEMP_START ($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime) Ratio: $param1% Duration: ${param2}min"
|
||||
)
|
||||
status = "TEMP_START " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.TEMPSTOP -> {
|
||||
DanaPump.HistoryEntry.TEMP_STOP -> {
|
||||
val newRecord = pumpSync.syncStopTemporaryBasalWithPumpId(
|
||||
timestamp = datetime,
|
||||
endPumpId = pumpId,
|
||||
pumpType = danaPump.pumpType(),
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + (if (newRecord) "**NEW** " else "") + "EVENT TEMPSTOP (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")")
|
||||
status = "TEMPSTOP " + dateUtil.timeString(datetime)
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] ${if (newRecord) "**NEW** " else ""}EVENT TEMP_STOP ($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime)"
|
||||
)
|
||||
status = "TEMP_STOP " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.EXTENDEDSTART -> {
|
||||
DanaPump.HistoryEntry.EXTENDED_START -> {
|
||||
val newRecord = pumpSync.syncExtendedBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
amount = param1 / 100.0,
|
||||
|
@ -161,22 +174,30 @@ open class DanaRSPacketAPSHistoryEvents(
|
|||
isEmulatingTB = false,
|
||||
pumpId = pumpId,
|
||||
pumpType = danaPump.pumpType(),
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + (if (newRecord) "**NEW** " else "") + "EVENT EXTENDEDSTART (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U Duration: " + param2 + "min")
|
||||
status = "EXTENDEDSTART " + dateUtil.timeString(datetime)
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] ${if (newRecord) "**NEW** " else ""}EVENT EXTENDED_START ($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime) Amount: ${param1 / 100.0}U Duration: ${param2}min"
|
||||
)
|
||||
status = "EXTENDED_START " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.EXTENDEDSTOP -> {
|
||||
DanaPump.HistoryEntry.EXTENDED_STOP -> {
|
||||
val newRecord = pumpSync.syncStopExtendedBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
endPumpId = pumpId,
|
||||
pumpType = danaPump.pumpType(),
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + (if (newRecord) "**NEW** " else "") + "EVENT EXTENDEDSTOP (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Delivered: " + param1 / 100.0 + "U RealDuration: " + param2 + "min")
|
||||
status = "EXTENDEDSTOP " + dateUtil.timeString(datetime)
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] ${if (newRecord) "**NEW** " else ""}EVENT EXTENDED_STOP ($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime) Delivered: ${param1 / 100.0}U RealDuration: ${param2}min"
|
||||
)
|
||||
status = "EXTENDED_STOP " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.BOLUS -> {
|
||||
DanaPump.HistoryEntry.BOLUS -> {
|
||||
val detailedBolusInfo = detailedBolusInfoStorage.findDetailedBolusInfo(datetime, param1 / 100.0)
|
||||
val newRecord = pumpSync.syncBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
|
@ -184,12 +205,16 @@ open class DanaRSPacketAPSHistoryEvents(
|
|||
type = detailedBolusInfo?.bolusType,
|
||||
pumpId = pumpId,
|
||||
pumpType = danaPump.pumpType(),
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + (if (newRecord) "**NEW** " else "") + "EVENT BOLUS (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Bolus: " + param1 / 100.0 + "U ")
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] ${if (newRecord) "**NEW** " else ""}EVENT BOLUS ($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime) Bolus: ${param1 / 100.0}U "
|
||||
)
|
||||
status = "BOLUS " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.DUALBOLUS -> {
|
||||
DanaPump.HistoryEntry.DUAL_BOLUS -> {
|
||||
val detailedBolusInfo = detailedBolusInfoStorage.findDetailedBolusInfo(datetime, param1 / 100.0)
|
||||
val newRecord = pumpSync.syncBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
|
@ -197,12 +222,16 @@ open class DanaRSPacketAPSHistoryEvents(
|
|||
type = detailedBolusInfo?.bolusType,
|
||||
pumpId = pumpId,
|
||||
pumpType = danaPump.pumpType(),
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + (if (newRecord) "**NEW** " else "") + "EVENT DUALBOLUS (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Bolus: " + param1 / 100.0 + "U Duration: " + param2 + "min")
|
||||
status = "DUALBOLUS " + dateUtil.timeString(datetime)
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] ${if (newRecord) "**NEW** " else ""}EVENT DUAL_BOLUS ($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime) Bolus: ${param1 / 100.0}U Duration: ${param2}min"
|
||||
)
|
||||
status = "DUAL_BOLUS " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.DUALEXTENDEDSTART -> {
|
||||
DanaPump.HistoryEntry.DUAL_EXTENDED_START -> {
|
||||
val newRecord = pumpSync.syncExtendedBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
amount = param1 / 100.0,
|
||||
|
@ -210,32 +239,46 @@ open class DanaRSPacketAPSHistoryEvents(
|
|||
isEmulatingTB = false,
|
||||
pumpId = pumpId,
|
||||
pumpType = danaPump.pumpType(),
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + (if (newRecord) "**NEW** " else "") + "EVENT DUALEXTENDEDSTART (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U Duration: " + param2 + "min")
|
||||
status = "DUALEXTENDEDSTART " + dateUtil.timeString(datetime)
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] ${if (newRecord) "**NEW** " else ""}EVENT DUAL_EXTENDED_START ($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime) Amount: ${param1 / 100.0}U Duration: ${param2}min"
|
||||
)
|
||||
status = "DUAL_EXTENDED_START " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.DUALEXTENDEDSTOP -> {
|
||||
DanaPump.HistoryEntry.DUAL_EXTENDED_STOP -> {
|
||||
val newRecord = pumpSync.syncStopExtendedBolusWithPumpId(
|
||||
timestamp = datetime,
|
||||
endPumpId = pumpId,
|
||||
pumpType = danaPump.pumpType(),
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + (if (newRecord) "**NEW** " else "") + "EVENT DUALEXTENDEDSTOP (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Delivered: " + param1 / 100.0 + "U RealDuration: " + param2 + "min")
|
||||
status = "DUALEXTENDEDSTOP " + dateUtil.timeString(datetime)
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] ${if (newRecord) "**NEW** " else ""}EVENT DUAL_EXTENDED_STOP ($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime) Delivered: ${param1 / 100.0}U RealDuration: ${param2}min"
|
||||
)
|
||||
status = "DUAL_EXTENDED_STOP " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.SUSPENDON -> {
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + "EVENT SUSPENDON (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")")
|
||||
status = "SUSPENDON " + dateUtil.timeString(datetime)
|
||||
DanaPump.HistoryEntry.SUSPEND_ON -> {
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] EVENT SUSPEND_ON ($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime)"
|
||||
)
|
||||
status = "SUSPEND_ON " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.SUSPENDOFF -> {
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + "EVENT SUSPENDOFF (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")")
|
||||
status = "SUSPENDOFF " + dateUtil.timeString(datetime)
|
||||
DanaPump.HistoryEntry.SUSPEND_OFF -> {
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] EVENT SUSPEND_OFF ($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime)"
|
||||
)
|
||||
status = "SUSPEND_OFF " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.REFILL -> {
|
||||
DanaPump.HistoryEntry.REFILL -> {
|
||||
if (sp.getBoolean(R.string.key_rs_loginsulinchange, true)) {
|
||||
val newRecord = pumpSync.insertTherapyEventIfNewWithTimestamp(
|
||||
timestamp = datetime,
|
||||
|
@ -244,33 +287,46 @@ open class DanaRSPacketAPSHistoryEvents(
|
|||
pumpType = danaPump.pumpType(),
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + (if (newRecord) "**NEW** " else "") + "EVENT REFILL (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U")
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] ${if (newRecord) "**NEW** " else ""}EVENT REFILL ($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime) Amount: ${param1 / 100.0}U"
|
||||
)
|
||||
}
|
||||
status = "REFILL " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.PRIME -> {
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + "EVENT PRIME (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U")
|
||||
DanaPump.HistoryEntry.PRIME -> {
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] EVENT PRIME ($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime) Amount: ${param1 / 100.0}U"
|
||||
)
|
||||
status = "PRIME " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.PROFILECHANGE -> {
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + "EVENT PROFILECHANGE (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " No: " + param1 + " CurrentRate: " + param2 / 100.0 + "U/h")
|
||||
status = "PROFILECHANGE " + dateUtil.timeString(datetime)
|
||||
DanaPump.HistoryEntry.PROFILE_CHANGE -> {
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] EVENT PROFILE_CHANGE ($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime) No: $param1 CurrentRate: ${param2 / 100.0}U/h"
|
||||
)
|
||||
status = "PROFILE_CHANGE " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.CARBS -> {
|
||||
DanaPump.HistoryEntry.CARBS -> {
|
||||
val newRecord = pumpSync.syncCarbsWithTimestamp(
|
||||
timestamp = datetime,
|
||||
amount = param1.toDouble(),
|
||||
pumpId = pumpId,
|
||||
pumpType = danaPump.pumpType(),
|
||||
pumpSerial = danaPump.serialNumber)
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + (if (newRecord) "**NEW** " else "") + "EVENT CARBS (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Carbs: " + param1 + "g")
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] ${if (newRecord) "**NEW** " else ""}EVENT CARBS ($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime) Carbs: ${param1}g"
|
||||
)
|
||||
status = "CARBS " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.PRIMECANNULA -> {
|
||||
DanaPump.HistoryEntry.PRIME_CANNULA -> {
|
||||
if (sp.getBoolean(R.string.key_rs_logcanulachange, true)) {
|
||||
val newRecord = pumpSync.insertTherapyEventIfNewWithTimestamp(
|
||||
timestamp = datetime,
|
||||
|
@ -279,19 +335,28 @@ open class DanaRSPacketAPSHistoryEvents(
|
|||
pumpType = danaPump.pumpType(),
|
||||
pumpSerial = danaPump.serialNumber
|
||||
)
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + (if (newRecord) "**NEW** " else "") + "EVENT PRIMECANNULA(" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U")
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] ${if (newRecord) "**NEW** " else ""}EVENT PRIME_CANNULA($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime) Amount: ${param1 / 100.0}U"
|
||||
)
|
||||
}
|
||||
status = "PRIMECANNULA " + dateUtil.timeString(datetime)
|
||||
status = "PRIME_CANNULA " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
DanaPump.TIMECHANGE -> {
|
||||
DanaPump.HistoryEntry.TIME_CHANGE -> {
|
||||
val oldDateTime = intFromBuffMsbLsb(data, 7, 4) * 1000L
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + "EVENT TIMECHANGE(" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Previous: " + dateUtil.dateAndTimeString(oldDateTime))
|
||||
status = "TIMECHANGE " + dateUtil.timeString(datetime)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] EVENT TIME_CHANGE($recordCode) ${dateUtil.dateAndTimeString(datetime)} ($datetime) Previous: ${dateUtil.dateAndTimeString(oldDateTime)}"
|
||||
)
|
||||
status = "TIME_CHANGE " + dateUtil.timeString(datetime)
|
||||
}
|
||||
|
||||
else -> {
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "[" + pumpId + "] " + "Event: " + recordCode + " " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Param1: " + param1 + " Param2: " + param2)
|
||||
aapsLogger.debug(
|
||||
LTag.PUMPCOMM,
|
||||
"[$pumpId] Event: $recordCode ${dateUtil.dateAndTimeString(datetime)} ($datetime) Param1: $param1 Param2: $param2"
|
||||
)
|
||||
status = "UNKNOWN " + dateUtil.timeString(datetime)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ class DanaRSPacketAPSSetEventHistory(
|
|||
|
||||
init {
|
||||
opCode = BleEncryption.DANAR_PACKET__OPCODE__APS_SET_EVENT_HISTORY
|
||||
if ((packetType == DanaPump.CARBS || packetType == DanaPump.BOLUS) && param1 <= 0) this.param1 = 0
|
||||
if ((packetType == DanaPump.HistoryEntry.CARBS.value || packetType == DanaPump.HistoryEntry.BOLUS.value) && param1 <= 0) param1 = 0
|
||||
aapsLogger.debug(LTag.PUMPCOMM, "Set history entry: " + dateUtil.dateAndTimeString(time) + " type: " + packetType + " param1: " + param1 + " param2: " + param2)
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,6 @@ import info.nightscout.androidaps.dana.events.EventDanaRNewStatus
|
|||
import info.nightscout.androidaps.danars.DanaRSPlugin
|
||||
import info.nightscout.androidaps.danars.R
|
||||
import info.nightscout.androidaps.danars.comm.*
|
||||
import info.nightscout.androidaps.interfaces.Profile
|
||||
import info.nightscout.androidaps.data.PumpEnactResult
|
||||
import info.nightscout.androidaps.dialogs.BolusProgressDialog
|
||||
import info.nightscout.androidaps.events.EventAppExit
|
||||
|
@ -25,6 +24,7 @@ import info.nightscout.androidaps.events.EventProfileSwitchChanged
|
|||
import info.nightscout.androidaps.events.EventPumpStatusChanged
|
||||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||
import info.nightscout.androidaps.interfaces.CommandQueueProvider
|
||||
import info.nightscout.androidaps.interfaces.Profile
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.interfaces.PumpSync
|
||||
import info.nightscout.androidaps.logging.AAPSLogger
|
||||
|
@ -44,6 +44,7 @@ import info.nightscout.androidaps.utils.resources.ResourceHelper
|
|||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
import io.reactivex.disposables.CompositeDisposable
|
||||
import io.reactivex.rxkotlin.plusAssign
|
||||
import org.joda.time.DateTime
|
||||
import org.joda.time.DateTimeZone
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
@ -79,11 +80,10 @@ class DanaRSService : DaggerService() {
|
|||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
disposable.add(rxBus
|
||||
disposable += rxBus
|
||||
.toObservable(EventAppExit::class.java)
|
||||
.observeOn(aapsSchedulers.io)
|
||||
.subscribe({ stopSelf() }, fabricPrivacy::logException)
|
||||
)
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
|
@ -204,7 +204,12 @@ class DanaRSService : DaggerService() {
|
|||
if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
|
||||
val reportFail = Notification(Notification.APPROACHING_DAILY_LIMIT, resourceHelper.gs(R.string.approachingdailylimit), Notification.URGENT)
|
||||
rxBus.send(EventNewNotification(reportFail))
|
||||
pumpSync.insertAnnouncement(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaPump.dailyTotalUnits + "/" + danaPump.maxDailyTotalUnits + "U", null, danaPump.pumpType(), danaPump.serialNumber)
|
||||
pumpSync.insertAnnouncement(
|
||||
resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaPump.dailyTotalUnits + "/" + danaPump.maxDailyTotalUnits + "U",
|
||||
null,
|
||||
danaPump.pumpType(),
|
||||
danaPump.serialNumber
|
||||
)
|
||||
lastApproachingDailyLimit = System.currentTimeMillis()
|
||||
}
|
||||
}
|
||||
|
@ -260,7 +265,7 @@ class DanaRSService : DaggerService() {
|
|||
if (carbs > 0) {
|
||||
// MsgSetCarbsEntry msg = new MsgSetCarbsEntry(carbTime, carbs); ####
|
||||
// sendMessage(msg);
|
||||
val msgSetHistoryEntryV2 = DanaRSPacketAPSSetEventHistory(injector, DanaPump.CARBS, carbTime, carbs, 0)
|
||||
val msgSetHistoryEntryV2 = DanaRSPacketAPSSetEventHistory(injector, DanaPump.HistoryEntry.CARBS.value, carbTime, carbs, 0)
|
||||
sendMessage(msgSetHistoryEntryV2)
|
||||
danaPump.lastHistoryFetched = min(danaPump.lastHistoryFetched, carbTime - T.mins(1).msecs())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue