From 82e5368624508671986b042b2050215588b235c1 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Thu, 11 Dec 2025 15:58:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yunqiinnovation/agent_service/AgentService.kt | 3 +-- .../com/yunqiinnovation/ble_service/BleService.kt | 4 ---- .../ble_service/BleWakeupVoicesUpgradeSender.kt | 14 +++++++++----- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt b/local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt index 8599c5962..33c38154b 100644 --- a/local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt +++ b/local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt @@ -704,8 +704,7 @@ object AgentService : CoroutineScope { _hasSpeechDetected.set(false) - - restartIdleCheck() + restartIdleCheck() } diff --git a/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleService.kt b/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleService.kt index fafb5de43..e34917374 100644 --- a/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleService.kt +++ b/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleService.kt @@ -980,10 +980,6 @@ object BleService { Log.i(TAG, "收到通知特征数据(命令和控制)") // 判断数据类型 when { - // 测试:唤醒词OTA升级通知 (0x20-0x2F开头) - data.isNotEmpty() && data[0] == BleConst.DEVICE_RESPONSE_HEADER && data[1] >= 0x20 -> { - wakeupVoicesUpgradeSender.processDeviceNotification(data) - } // 设备响应 (0xBB开头) data.isNotEmpty() && data[0] == BleConst.DEVICE_RESPONSE_HEADER -> { commandSender.processDeviceResponse(data) diff --git a/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleWakeupVoicesUpgradeSender.kt b/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleWakeupVoicesUpgradeSender.kt index 569fc7aa9..4ffc124bd 100644 --- a/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleWakeupVoicesUpgradeSender.kt +++ b/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleWakeupVoicesUpgradeSender.kt @@ -145,7 +145,7 @@ class BleWakeupVoicesUpgradeSender { // 初始化状态 otaBytes = bytes otaTotalPackets = ((bytes.size + MAX_DATA_PER_PACKET - 1) / MAX_DATA_PER_PACKET) - currentSeq = 1 // 序号按文档使用1基准 + currentSeq = 0 // 序号改为从0起步 handshakeAcked = false isUpgrading = true @@ -248,18 +248,22 @@ class BleWakeupVoicesUpgradeSender { 0x22 -> { // 数据包确认: 0xBB + 0x22 + 0x03 + OTA包序号(2Byte) + 0x01 + CRC 成功 // 数据包确认: 0xBB + 0x22 + 0x03 + OTA包序号(2Byte) + 0x00 + CRC 失败 + if (data.size < 7) { + Log.d(TAG, "liwei------------- 数据包确认: 消息异常 长度不够") + return + } val seqHi = data[3].toInt() and 0xFF val seqLo = data[4].toInt() and 0xFF val status = data[5].toInt() and 0xFF val ackSeq = (seqHi shl 8) or seqLo Log.d(TAG, "liwei------------- 数据包确认: seq=$ackSeq, status=$status") if (status == 0x01) { //成功 发送下一包 - // 更新进度(1基准) - val progress = ((ackSeq.coerceAtMost(otaTotalPackets)) * 100) / (otaTotalPackets.coerceAtLeast(1)) + // 更新进度(0基准,显示为1..N) + val progress = (((ackSeq + 1).coerceAtMost(otaTotalPackets)) * 100) / (otaTotalPackets.coerceAtLeast(1)) Log.i(TAG, "liwei------------- OTA进度: $progress%") callback?.notifyUpgradeProgressReceived(progress) // 继续发送下一包 - if (ackSeq >= otaTotalPackets) { + if (ackSeq >= otaTotalPackets - 1) { Log.i(TAG, "liwei------------- OTA完成,共发送${otaTotalPackets}包") callback?.notifyUpgradeProgressReceived(100) sendEndDataPacket() @@ -520,7 +524,7 @@ class BleWakeupVoicesUpgradeSender { return } // 计算当前分片范围 - val start = (currentSeq - 1) * MAX_DATA_PER_PACKET + val start = currentSeq * MAX_DATA_PER_PACKET val end = minOf(start + MAX_DATA_PER_PACKET, bytes.size) if (start >= end) { Log.w(TAG, "没有更多数据可发送 start=$start end=$end")