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 897723f2ec..266184595c 100644 --- a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/DiaconnG8Pump.kt +++ b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/DiaconnG8Pump.kt @@ -19,6 +19,9 @@ class DiaconnG8Pump @Inject constructor( private val aapsLogger: AAPSLogger, private val dateUtil: DateUtil ) { + + var isPumplogUploadFailed: Boolean = false + //var bleResultInfo: Pair = Pair(null, false) var bolusConfirmMessage: Byte = 0 var isReadyToBolus: Boolean = false diff --git a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/BigLogInquireResponsePacket.kt b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/BigLogInquireResponsePacket.kt index fe347adbf0..2f638fbc3a 100644 --- a/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/BigLogInquireResponsePacket.kt +++ b/diaconn/src/main/java/info/nightscout/androidaps/diaconn/packet/BigLogInquireResponsePacket.kt @@ -846,6 +846,8 @@ class BigLogInquireResponsePacket( } } override fun onFailure(call: Call, t: Throwable) { + aapsLogger.error(LTag.PUMPCOMM, "api uploadPumplogs failed") + diaconnG8Pump.isPumplogUploadFailed = true t.printStackTrace() } } 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 723d50752b..44b53851e7 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 @@ -270,6 +270,11 @@ class BLECommonService @Inject internal constructor( val bytes = message.encode(sequence) processedMessageByte = bytes + if (bluetoothGatt == null) { + aapsLogger.debug(LTag.PUMPBTCOMM, ">>>>> IGNORING (NOT CONNECTED) " + message.friendlyName ) + return + } + aapsLogger.debug(LTag.PUMPBTCOMM, "sendMessage() before mSendQueue.size :: ${mSendQueue.size}") // 펌프에 요청 보내기. writeCharacteristicNoResponse(uartWriteBTGattChar, bytes) 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 a2c0e2e4de..011b09ae0c 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 @@ -293,7 +293,7 @@ class DiaconnG8Service : DaggerService() { // pump log loop size val pumpLogPageSize = 11 - val (start, end, loopSize) = getLogLoopCount(apsLastLogNum, apsWrappingCount, pumpLastNum, pumpWrappingCount, false) + val (start, end, loopSize) = getLogLoopCount(apsLastLogNum, apsWrappingCount, pumpLastNum, pumpWrappingCount) aapsLogger.debug(LTag.PUMPCOMM, "loopinfo start : $start, end : $end, loopSize : $loopSize") // log sync start! if (loopSize > 0) { @@ -326,10 +326,13 @@ class DiaconnG8Service : DaggerService() { aapsLogger.debug(LTag.PUMPCOMM, "platformLogNo: $platformLogNo, platformWrappingCount: $platformWrappingCount") // 페이지 사이즈로 처리할 때 루핑 횟수 계산 - val (platformStart, platformEnd, platformLoopSize) = getLogLoopCount(platformLogNo, platformWrappingCount, pumpLastNum, pumpWrappingCount, true) + val (platformStart, platformEnd, platformLoopSize) = getCloudLogLoopCount(platformLastNo.toInt(), platformLogNo, platformWrappingCount, pumpLastNum, pumpWrappingCount) if(platformLoopSize > 0) { diaconnG8Pump.isPlatformUploadStarted = true for (i in 0 until platformLoopSize) { + if(diaconnG8Pump.isPumplogUploadFailed) { + break + } rxBus.send(EventPumpStatusChanged("클라우드동기화 진행 중 : $i / $platformLoopSize")) val startLogNo: Int = platformStart + i * pumpLogPageSize val endLogNo: Int = startLogNo + min(platformEnd - startLogNo, pumpLogPageSize) @@ -338,6 +341,7 @@ class DiaconnG8Service : DaggerService() { } SystemClock.sleep(1000) diaconnG8Pump.isPlatformUploadStarted = false + diaconnG8Pump.isPumplogUploadFailed = false } } } catch (e:Exception) { @@ -347,22 +351,39 @@ class DiaconnG8Service : DaggerService() { return result } - private fun getLogLoopCount(lastLogNum: Int, wrappingCount: Int, pumpLastNum: Int, pumpWrappingCount: Int, isPlatform: Boolean): Triple { + private fun getLogLoopCount(lastLogNum: Int, wrappingCount: Int, pumpLastNum: Int, pumpWrappingCount: Int): Triple { val start: Int// log sync start number val end: Int // log sync end number1311 aapsLogger.debug(LTag.PUMPCOMM, "lastLogNum : $lastLogNum, wrappingCount : $wrappingCount , pumpLastNum: $pumpLastNum, pumpWrappingCount : $pumpWrappingCount") - if ((pumpWrappingCount * 10000 + pumpLastNum - lastLogNum > 10000 && isPlatform)) { - start = pumpLastNum - end = 10000 - } else if (pumpWrappingCount > wrappingCount && lastLogNum < 9999) { + if (pumpWrappingCount > wrappingCount && lastLogNum < 9999) { start = (lastLogNum + 1) end = 10000 - } else if (pumpWrappingCount > wrappingCount && lastLogNum >= 9999 && isPlatform) { + } else { + start = (lastLogNum + 1) + end = pumpLastNum + } + val size = ceil((end - start) / 11.0).toInt() + // + return Triple(start, end, size) + } + + private fun getCloudLogLoopCount(platformLastNo:Int, PlatformPumpLogNum: Int, wrappingCount: Int, pumpLastNum: Int, pumpWrappingCount: Int): Triple { + val start: Int// log sync start number + val end: Int // log sync end number1311 + aapsLogger.debug(LTag.PUMPCOMM, "platformLastNo: $platformLastNo, PlatformPumpLogNum : $PlatformPumpLogNum, wrappingCount : $wrappingCount , pumpLastNum: $pumpLastNum, pumpWrappingCount :$pumpWrappingCount") + + if ((pumpWrappingCount * 10000 + pumpLastNum - platformLastNo > 10000 )) { + start = pumpLastNum + end = 10000 + } else if (pumpWrappingCount > wrappingCount && PlatformPumpLogNum < 9999) { + start = (PlatformPumpLogNum + 1) + end = 10000 + } else if (pumpWrappingCount > wrappingCount && PlatformPumpLogNum >= 9999 ) { start = 0 // 처음부터 시작 end = pumpLastNum } else { - start = (lastLogNum + 1) + start = (PlatformPumpLogNum + 1) end = pumpLastNum } val size = ceil((end - start) / 11.0).toInt()