From e4d36c9fca5996dde17d64dd8cc077b7e5b02818 Mon Sep 17 00:00:00 2001 From: miyeongkim Date: Thu, 21 Jul 2022 16:05:47 +0900 Subject: [PATCH] add SerialNumInquirePacket.kt fix time difference error ble waitmilis time change --- .../androidaps/diaconn/DiaconnG8Pump.kt | 4 +- .../diaconn/di/DiaconnG8PacketModule.kt | 2 + .../packet/AppConfirmSettingResponsePacket.kt | 4 + .../DiaconnG8ResponseMessageHashTable.kt | 3 +- .../diaconn/packet/SerialNumInquirePacket.kt | 29 +++++++ .../packet/SerialNumInquireResponsePacket.kt | 69 ++++++++++++++++ .../packet/TimeInquireResponsePacket.kt | 16 ++-- .../diaconn/service/BLECommonService.kt | 7 +- .../diaconn/service/DiaconnG8Service.kt | 82 +++++++++---------- .../src/main/res/values-ko-rKR/strings.xml | 2 + diaconn/src/main/res/values/strings.xml | 2 +- 11 files changed, 167 insertions(+), 53 deletions(-) create mode 100644 diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/SerialNumInquirePacket.kt create mode 100644 diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/SerialNumInquireResponsePacket.kt diff --git a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/DiaconnG8Pump.kt b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/DiaconnG8Pump.kt index fcb383fa8c..897723f2ec 100644 --- a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/DiaconnG8Pump.kt +++ b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/DiaconnG8Pump.kt @@ -19,7 +19,9 @@ class DiaconnG8Pump @Inject constructor( private val aapsLogger: AAPSLogger, private val dateUtil: DateUtil ) { - + //var bleResultInfo: Pair = Pair(null, false) + var bolusConfirmMessage: Byte = 0 + var isReadyToBolus: Boolean = false var maxBolusePerDay: Double = 0.0 var pumpIncarnationNum: Int = 65536 var isPumpVersionGe2_63: Boolean = false // is pumpVersion higher then 2.63 diff --git a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/di/DiaconnG8PacketModule.kt b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/di/DiaconnG8PacketModule.kt index 86a27374ce..49ec0d9f30 100644 --- a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/di/DiaconnG8PacketModule.kt +++ b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/di/DiaconnG8PacketModule.kt @@ -77,6 +77,8 @@ abstract class DiaconnG8PacketModule { @ContributesAndroidInjector abstract fun contributesLanguageInquireResponsePacket(): LanguageInquireResponsePacket @ContributesAndroidInjector abstract fun contributesBigAPSMainInfoInquirePacket(): BigAPSMainInfoInquirePacket @ContributesAndroidInjector abstract fun contributesBigAPSMainInfoInquireResponsePacket(): BigAPSMainInfoInquireResponsePacket + @ContributesAndroidInjector abstract fun contributesSerialNumInquirePacket(): SerialNumInquirePacket + @ContributesAndroidInjector abstract fun contributesSerialNumInquireResponsePacket(): SerialNumInquireResponsePacket } diff --git a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/AppConfirmSettingResponsePacket.kt b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/AppConfirmSettingResponsePacket.kt index d45f174bf3..9f41cfde1b 100644 --- a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/AppConfirmSettingResponsePacket.kt +++ b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/AppConfirmSettingResponsePacket.kt @@ -35,6 +35,10 @@ class AppConfirmSettingResponsePacket( failed = true return } + // The bolus progress diallog opens only when the confirm result is successfull + if(diaconnG8Pump.bolusConfirmMessage == 0x07.toByte()) { + diaconnG8Pump.isReadyToBolus = true + } } override fun getFriendlyName(): String { diff --git a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/DiaconnG8ResponseMessageHashTable.kt b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/DiaconnG8ResponseMessageHashTable.kt index 7248d73530..e401d465a8 100644 --- a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/DiaconnG8ResponseMessageHashTable.kt +++ b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/DiaconnG8ResponseMessageHashTable.kt @@ -25,7 +25,6 @@ class DiaconnG8ResponseMessageHashTable @Inject constructor(val injector: HasAnd put(SneckLimitInquireResponsePacket(injector)) put(BasalLimitInquireResponsePacket(injector)) put(TempBasalInquireResponsePacket(injector)) - put(TimeInquirePacket(injector)) put(TimeInquireResponsePacket(injector)) put(TimeReportPacket(injector)) put(LogStatusInquireResponsePacket(injector)) @@ -34,6 +33,8 @@ class DiaconnG8ResponseMessageHashTable @Inject constructor(val injector: HasAnd put(SoundInquireResponsePacket(injector)) put(DisplayTimeInquireResponsePacket(injector)) put(LanguageInquireResponsePacket(injector)) + put(SerialNumInquireResponsePacket(injector)) + // Report Packet put(BasalPauseReportPacket(injector)) diff --git a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/SerialNumInquirePacket.kt b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/SerialNumInquirePacket.kt new file mode 100644 index 0000000000..0284c35029 --- /dev/null +++ b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/SerialNumInquirePacket.kt @@ -0,0 +1,29 @@ +package info.nightscout.androidaps.diaconn.packet + +import dagger.android.HasAndroidInjector +import info.nightscout.androidaps.diaconn.DiaconnG8Pump +import info.nightscout.shared.logging.LTag +import javax.inject.Inject + +/** + + * SerialNumInquirePacket + */ +class SerialNumInquirePacket( + injector: HasAndroidInjector +) : DiaconnG8Packet(injector ) { + @Inject lateinit var diaconnG8Pump: DiaconnG8Pump + init { + msgType = 0x6E + aapsLogger.debug(LTag.PUMPCOMM, "SeialNumInquirePacket init") + } + + override fun encode(msgSeq:Int): ByteArray { + val buffer = prefixEncode(msgType, msgSeq, MSG_CON_END) + return suffixEncode(buffer) + } + + override fun getFriendlyName(): String { + return "PUMP_SERIAL_NUM_INQUIRE" + } +} \ No newline at end of file diff --git a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/SerialNumInquireResponsePacket.kt b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/SerialNumInquireResponsePacket.kt new file mode 100644 index 0000000000..76306e54fa --- /dev/null +++ b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/SerialNumInquireResponsePacket.kt @@ -0,0 +1,69 @@ +package info.nightscout.androidaps.diaconn.packet + +import dagger.android.HasAndroidInjector +import info.nightscout.androidaps.diaconn.DiaconnG8Pump +import info.nightscout.androidaps.diaconn.R +import info.nightscout.androidaps.interfaces.ResourceHelper +import info.nightscout.shared.logging.LTag +import info.nightscout.shared.sharedPreferences.SP +import javax.inject.Inject + +/** + * SerialNumInquireResponsePacket + */ +class SerialNumInquireResponsePacket(injector: HasAndroidInjector) : DiaconnG8Packet(injector ) { + + @Inject lateinit var diaconnG8Pump: DiaconnG8Pump + @Inject lateinit var sp: SP + @Inject lateinit var rh: ResourceHelper + + + init { + msgType = 0xAE.toByte() + aapsLogger.debug(LTag.PUMPCOMM, "SerialNumInquireResponsePacket init") + } + + override fun handleMessage(data: ByteArray?) { + val result = defect(data) + if (result != 0) { + aapsLogger.debug(LTag.PUMPCOMM, "SerialNumInquireResponsePacket Got some Error") + failed = true + return + } else failed = false + + val bufferData = prefixDecode(data) + val result2 = getByteToInt(bufferData) + if(!isSuccInquireResponseResult(result2)) { + failed = true + return + } + + diaconnG8Pump.country = getByteToInt(bufferData).toChar().toString().toInt() // ASCII + diaconnG8Pump.productType = getByteToInt(bufferData).toChar().toString().toInt() // ASCII + diaconnG8Pump.makeYear = getByteToInt(bufferData) + diaconnG8Pump.makeMonth = getByteToInt(bufferData) + diaconnG8Pump.makeDay = getByteToInt(bufferData) + diaconnG8Pump.lotNo = getByteToInt(bufferData)// LOT NO + diaconnG8Pump.serialNo = getShortToInt(bufferData) + diaconnG8Pump.majorVersion = getByteToInt(bufferData) + diaconnG8Pump.minorVersion = getByteToInt(bufferData) + + + aapsLogger.debug(LTag.PUMPCOMM, "Result --> ${diaconnG8Pump.result}") + aapsLogger.debug(LTag.PUMPCOMM, "country --> ${diaconnG8Pump.country}") + aapsLogger.debug(LTag.PUMPCOMM, "productType --> ${diaconnG8Pump.productType}") + aapsLogger.debug(LTag.PUMPCOMM, "makeYear --> ${diaconnG8Pump.makeYear}") + aapsLogger.debug(LTag.PUMPCOMM, "makeMonth --> ${diaconnG8Pump.makeMonth}") + aapsLogger.debug(LTag.PUMPCOMM, "makeDay --> ${diaconnG8Pump.makeDay}") + aapsLogger.debug(LTag.PUMPCOMM, "lotNo --> ${diaconnG8Pump.lotNo}") + aapsLogger.debug(LTag.PUMPCOMM, "serialNo --> ${diaconnG8Pump.serialNo}") + aapsLogger.debug(LTag.PUMPCOMM, "majorVersion --> ${diaconnG8Pump.majorVersion}") + aapsLogger.debug(LTag.PUMPCOMM, "minorVersion --> ${diaconnG8Pump.minorVersion}") + + sp.putString(rh.gs(R.string.pumpversion), diaconnG8Pump.majorVersion.toString() + "." + diaconnG8Pump.minorVersion.toString()) + } + + override fun getFriendlyName(): String { + return "PUMP_SERIAL_NUM_INQUIRE_RESPONSE" + } +} \ No newline at end of file diff --git a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/TimeInquireResponsePacket.kt b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/TimeInquireResponsePacket.kt index 6b7882196c..a2f88429b5 100644 --- a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/TimeInquireResponsePacket.kt +++ b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/TimeInquireResponsePacket.kt @@ -15,24 +15,30 @@ class TimeInquireResponsePacket( @Inject lateinit var diaconnG8Pump: DiaconnG8Pump init { - msgType = 0x50.toByte() + msgType = 0x8F.toByte() aapsLogger.debug(LTag.PUMPCOMM, "TimeInquireResponsePacket init") } override fun handleMessage(data: ByteArray?) { - val result = defect(data) - if (result != 0) { + val defectCheck = defect(data) + if (defectCheck != 0) { aapsLogger.debug(LTag.PUMPCOMM, "TimeInquireResponsePacket Got some Error") failed = true return } else failed = false val bufferData = prefixDecode(data) - val result2 = getByteToInt(bufferData) - if(!isSuccInquireResponseResult(result2)) { + val result = getByteToInt(bufferData) + if(!isSuccInquireResponseResult(result)) { failed = true return } + diaconnG8Pump.year = getByteToInt(bufferData) + 2000 // 년 (18~99) + diaconnG8Pump.month = getByteToInt(bufferData) // 월 (1~12) + diaconnG8Pump.day = getByteToInt(bufferData) // 일 (1~31) + diaconnG8Pump.hour = getByteToInt(bufferData) // 시 (0~23) + diaconnG8Pump.minute = getByteToInt(bufferData) // 분 (0~59) + diaconnG8Pump.second = getByteToInt(bufferData) // 초 (0~59) } override fun getFriendlyName(): String { diff --git a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/service/BLECommonService.kt b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/service/BLECommonService.kt index 9c9d48a0fa..a86e3ded15 100644 --- a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/service/BLECommonService.kt +++ b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/service/BLECommonService.kt @@ -133,6 +133,9 @@ class BLECommonService @Inject internal constructor( aapsLogger.debug(LTag.PUMPBTCOMM, "onServicesDiscovered") if (status == BluetoothGatt.GATT_SUCCESS) { findCharacteristic() + SystemClock.sleep(1600) + isConnected = true + isConnecting = false } } @@ -206,6 +209,7 @@ class BLECommonService @Inject internal constructor( uartIndicate = gattCharacteristic //setCharacteristicNotification(uartIndicate, true) bluetoothGatt?.setCharacteristicNotification(uartIndicate, true) + // nRF Connect 참고하여 추가함 val descriptor: BluetoothGattDescriptor = uartIndicate!!.getDescriptor(UUID.fromString(CHARACTERISTIC_CONFIG_UUID)) descriptor.value = BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE @@ -223,8 +227,6 @@ class BLECommonService @Inject internal constructor( aapsLogger.debug(LTag.PUMPBTCOMM, "onConnectionStateChange newState : $newState") if (newState == BluetoothProfile.STATE_CONNECTED) { gatt.discoverServices() - isConnected = true - isConnecting = false rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.CONNECTED)) } else if (newState == BluetoothProfile.STATE_DISCONNECTED) { close() @@ -268,6 +270,7 @@ class BLECommonService @Inject internal constructor( // process common packet response private fun processResponseMessage(data: ByteArray) { isConnected = true + isConnecting = false //요청정보 val originalMessageSeq = processedMessage?.getSeq(processedMessageByte) diff --git a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/service/DiaconnG8Service.kt b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/service/DiaconnG8Service.kt index 85e84d4b29..a2c0e2e4de 100644 --- a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/service/DiaconnG8Service.kt +++ b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/service/DiaconnG8Service.kt @@ -136,13 +136,14 @@ class DiaconnG8Service : DaggerService() { } private fun sendMessage(message: DiaconnG8Packet) { - bleCommonService.sendMessage(message, 2000) + bleCommonService.sendMessage(message, 5000) } fun readPumpStatus() { try { val pump = activePlugin.activePump rxBus.send(EventPumpStatusChanged(rh.gs(R.string.gettingpumpsettings))) + sendMessage(SerialNumInquirePacket(injector)) val pumpFirmwareVersion = sp.getString(rh.gs(R.string.pumpversion), "") @@ -170,6 +171,7 @@ class DiaconnG8Service : DaggerService() { // 시간 설정 rxBus.send(EventPumpStatusChanged(rh.gs(R.string.gettingpumptime))) + sendMessage(TimeInquirePacket(injector)) var timeDiff = (diaconnG8Pump.getPumpTime() - System.currentTimeMillis()) / 1000L if (diaconnG8Pump.getPumpTime() == 0L) { // initial handshake was not successful @@ -239,14 +241,12 @@ class DiaconnG8Service : DaggerService() { } fun loadHistory(): PumpEnactResult { - if (!diaconnG8Plugin.isInitialized()) { val result = PumpEnactResult(injector).success(false) result.comment = "pump not initialized" return result } sendMessage(LogStatusInquirePacket(injector)) - // pump version check if (diaconnG8Pump.isPumpVersionGe2_63) { sendMessage(IncarnationInquirePacket(injector)) @@ -257,7 +257,7 @@ class DiaconnG8Service : DaggerService() { var apsWrappingCount = -1 // get saved last loginfo val diaconnHistoryRecord = diaconnHistoryRecordDao.getLastRecord(diaconnG8Pump.pumpUid) - aapsLogger.error(LTag.PUMPCOMM, "diaconnHistoryRecord :: $diaconnHistoryRecord") + aapsLogger.debug(LTag.PUMPCOMM, "diaconnHistoryRecord :: $diaconnHistoryRecord") if(diaconnHistoryRecord != null) { apsLastLogNum = diaconnHistoryRecord.lognum @@ -306,7 +306,6 @@ class DiaconnG8Service : DaggerService() { result.success(true) diaconnG8Pump.lastConnection = System.currentTimeMillis() } - // upload pump log to Diaconn Cloud if (sp.getBoolean(R.string.key_diaconn_g8_cloudsend, true)) { SystemClock.sleep(1000) @@ -399,13 +398,6 @@ class DiaconnG8Service : DaggerService() { fun bolus(insulin: Double, carbs: Int, carbTime: Long, t: EventOverviewBolusProgress.Treatment): Boolean { if (!isConnected) return false if (BolusProgressDialog.stopPressed) return false - - // Only Carbs - if (carbs > 0 && insulin == 0.0) { - pumpSync.syncCarbsWithTimestamp(carbTime, carbs.toDouble(), null, PumpType.DIACONN_G8, diaconnG8Pump.serialNo.toString()) - return true - } - rxBus.send(EventPumpStatusChanged(rh.gs(R.string.startingbolus))) // bolus speed setting @@ -435,7 +427,7 @@ class DiaconnG8Service : DaggerService() { val bolusStart = System.currentTimeMillis() if (insulin > 0) { if (!diaconnG8Pump.bolusStopped) { - sendMessage(start) + sendMessage(start, 100) // otp process if (!processConfirm(start.msgType)) return false } else { @@ -460,26 +452,29 @@ class DiaconnG8Service : DaggerService() { } val bolusDurationInMSec = (insulin * speed * 1000).toLong() - val expectedEnd = bolusStart + bolusDurationInMSec + 7500L + val expectedEnd = bolusStart + bolusDurationInMSec + 3500L val totalwaitTime = (expectedEnd - System.currentTimeMillis()) / 1000 - while (!diaconnG8Pump.bolusDone) { - val waitTime = (expectedEnd - System.currentTimeMillis()) / 1000 - bolusingEvent.status = rh.gs(R.string.waitingforestimatedbolusend, if (waitTime < 0) 0 else waitTime) - var progressPecent = 0 - if (totalwaitTime > waitTime) { - progressPecent = ((totalwaitTime - waitTime) * 100 / totalwaitTime).toInt() + if(diaconnG8Pump.isReadyToBolus) { + while (!diaconnG8Pump.bolusDone) { + val waitTime = (expectedEnd - System.currentTimeMillis()) / 1000 + bolusingEvent.status = String.format(rh.gs(R.string.waitingforestimatedbolusend), if (waitTime < 0) 0 else waitTime) + var progressPecent = 0 + if (totalwaitTime > waitTime) { + progressPecent = ((totalwaitTime - waitTime) * 100 / totalwaitTime).toInt() + } + bolusingEvent.percent = min(progressPecent, 100) + rxBus.send(bolusingEvent) + SystemClock.sleep(200) } - bolusingEvent.percent = min(progressPecent, 100) - rxBus.send(bolusingEvent) - SystemClock.sleep(200) } + diaconnG8Pump.isReadyToBolus = false // do not call loadHistory() directly, reconnection may be needed commandQueue.loadEvents(object : Callback() { override fun run() { // reread bolus status rxBus.send(EventPumpStatusChanged(rh.gs(R.string.gettingbolusstatus))) - sendMessage(InjectionSnackInquirePacket(injector), 1000) // last bolus + sendMessage(InjectionSnackInquirePacket(injector), 2000) // last bolus // 볼러스 결과 보고패킷에서 처리함. bolusingEvent.percent = 100 rxBus.send(EventPumpStatusChanged(rh.gs(R.string.disconnecting))) @@ -492,7 +487,7 @@ class DiaconnG8Service : DaggerService() { val stop = InjectionCancelSettingPacket(injector, 0x07.toByte()) diaconnG8Pump.bolusStopForced = true if (isConnected) { - sendMessage(stop) + sendMessage(stop, 100) // otp process if (!processConfirm(stop.msgType)) return while (!diaconnG8Pump.bolusStopped) { @@ -513,7 +508,7 @@ class DiaconnG8Service : DaggerService() { rxBus.send(EventPumpStatusChanged(rh.gs(R.string.stoppingtempbasal))) val msgPacket = TempBasalSettingPacket(injector, 2, diaconnG8Pump.tbTime, diaconnG8Pump.tbInjectRateRatio) // tempbasal stop - sendMessage(msgPacket) + sendMessage(msgPacket, 100) // otp process if (!processConfirm(msgPacket.msgType)) return false diaconnG8Pump.tempBasalStart = dateUtil.now() @@ -521,7 +516,7 @@ class DiaconnG8Service : DaggerService() { rxBus.send(EventPumpStatusChanged(rh.gs(R.string.settingtempbasal))) val tbInjectRate = ((absoluteRate * 100) + 1000).toInt() val msgTBR = TempBasalSettingPacket(injector, 1, ((durationInHours * 60) / 15).toInt(), tbInjectRate) - sendMessage(msgTBR) + sendMessage(msgTBR, 100) // otp process if (!processConfirm(msgTBR.msgType)) return false // pump tempbasal status inquire @@ -545,7 +540,7 @@ class DiaconnG8Service : DaggerService() { rxBus.send(EventPumpStatusChanged(rh.gs(R.string.stoppingtempbasal))) val msgPacket = TempBasalSettingPacket(injector, 2, diaconnG8Pump.tbTime, diaconnG8Pump.tbInjectRateRatio) // tempbasal stop - sendMessage(msgPacket) + sendMessage(msgPacket, 100) // otp process if (!processConfirm(msgPacket.msgType)) return false SystemClock.sleep(500) @@ -553,7 +548,7 @@ class DiaconnG8Service : DaggerService() { rxBus.send(EventPumpStatusChanged(rh.gs(R.string.settingtempbasal))) val tbInjectRate = absoluteRate * 100 + 1000 val msgTBR = TempBasalSettingPacket(injector, 1, 2, tbInjectRate.toInt()) - sendMessage(msgTBR) + sendMessage(msgTBR, 100) // otp process if (!processConfirm(msgTBR.msgType)) return false sendMessage(TempBasalInquirePacket(injector)) @@ -577,7 +572,7 @@ class DiaconnG8Service : DaggerService() { diaconnG8Pump.tbInjectRateRatio ) // tempbasal stop - sendMessage(msgPacket) + sendMessage(msgPacket, 500) // otp process if (!processConfirm(msgPacket.msgType)) return false SystemClock.sleep(500) @@ -593,7 +588,7 @@ class DiaconnG8Service : DaggerService() { fun extendedBolus(insulin: Double, durationInMinutes: Int): Boolean { if (!isConnected) return false rxBus.send(EventPumpStatusChanged(rh.gs(R.string.settingextendedbolus))) - aapsLogger.error(LTag.PUMPCOMM, "insulin: $insulin durationInMinutes: $durationInMinutes") + aapsLogger.debug(LTag.PUMPCOMM, "insulin: $insulin durationInMinutes: $durationInMinutes") val msgExtended = InjectionExtendedBolusSettingPacket(injector, (insulin * 100).toInt(), durationInMinutes, dateUtil.now()) sendMessage(msgExtended) @@ -672,6 +667,7 @@ class DiaconnG8Service : DaggerService() { (basalList[23] * 100).toInt() ) // setting basal pattern 1,2,3,4 + sendMessage(SerialNumInquirePacket(injector), 2000) sendMessage(requestReqPacket1, 500) sendMessage(requestReqPacket2, 500) sendMessage(requestReqPacket3, 500) @@ -694,22 +690,22 @@ class DiaconnG8Service : DaggerService() { private fun processConfirm(msgType: Byte): Boolean { // pump confirm + var loopCnt = 0 + // waiting 2 seconds for otp + while(loopCnt < 20) { + if (diaconnG8Pump.otpNumber == 0) { + SystemClock.sleep(100) + aapsLogger.error(LTag.PUMPCOMM, "OTP waiting 100ms $loopCnt / 20") + } + loopCnt++ + } + // after 2 second if (diaconnG8Pump.otpNumber == 0) { aapsLogger.error(LTag.PUMPCOMM, "otp is not received yet") - - // Comments are made as dialogs are exposed twice each in the event of an error. - // Thread { - // val i = Intent(context, ErrorHelperActivity::class.java) - // i.putExtra("soundid", R.raw.boluserror) - // i.putExtra("status", rh.gs(R.string.diaconn_g8_errotpreceivedyet)) - // i.putExtra("title", rh.gs(R.string.pumperror)) - // i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - // context.startActivity(i) - // }.start() - return false } - sendMessage(AppConfirmSettingPacket(injector, msgType, diaconnG8Pump.otpNumber)) + diaconnG8Pump.bolusConfirmMessage = msgType + sendMessage(AppConfirmSettingPacket(injector, msgType, diaconnG8Pump.otpNumber), 2000) diaconnG8Pump.otpNumber = 0 return true } diff --git a/diaconn/src/main/res/values-ko-rKR/strings.xml b/diaconn/src/main/res/values-ko-rKR/strings.xml index 29cb87c694..f17e4a3c77 100644 --- a/diaconn/src/main/res/values-ko-rKR/strings.xml +++ b/diaconn/src/main/res/values-ko-rKR/strings.xml @@ -89,6 +89,8 @@ 바늘 교체 로그 동기화 시 케어포털 \"위치 교체\" 정보 자동 업로드 로그 동기화 시 케어포털 \"베터리 교체\" 정보 자동 업로드 + 펌프 로그정보를 \"디아콘 클라우드\"로 자동 업로드 + 디아콘 클라우드 전송 베터리 교체 로그 동기화 진행 중 인슐린 부족 경고 diff --git a/diaconn/src/main/res/values/strings.xml b/diaconn/src/main/res/values/strings.xml index f74b46b0af..ea014d7ef3 100644 --- a/diaconn/src/main/res/values/strings.xml +++ b/diaconn/src/main/res/values/strings.xml @@ -169,5 +169,5 @@ Tempbasal stop is rejected when tempbasal is not running Send pump logs to the Diaconn Cloud. Diaconn Cloud Sync - diaconn_g8_appuid + diaconn_g8_appuid