Pārlūkot izejas kodu

add:提交8000的蓝牙升级demo

mw 1 mēnesi atpakaļ
vecāks
revīzija
92b5780b35

+ 275 - 0
module/Air8000/demo/fota/ble_fota/ble_file_fota.lua

@@ -0,0 +1,275 @@
+--[[
+@module  ble_file_fota
+@summary 蓝牙FOTA升级功能模块(文件写入方式)
+@version 1.0
+@date    2025.12.08
+@author  孟伟
+@usage
+-- 蓝牙FOTA升级功能(文件写入方式)
+-- 提供通过蓝牙低功耗(BLE)接收升级包数据进行固件升级的功能
+
+本文件为FOTA业务逻辑处理模块,核心业务逻辑为:
+1. 处理接收到的BLE写入请求数据
+2. 实现FOTA升级流程的控制
+3. 管理升级状态和文件操作
+
+本文件的对外接口有1个:
+1. ble_file_fota.proc(service_uuid, char_uuid, data): 处理接收到的BLE写入请求数据
+
+依赖模块:
+- ble_main: 用于提供BLE服务和事件处理
+]]
+
+local ble_file_fota = {}
+
+-- 升级状态管理
+local upgrade_state = {
+    is_upgrading = false,          -- 是否正在升级
+    total_size = 0,                -- 总文件大小(字节)
+    received_size = 0,             -- 已接收大小(字节)
+    upgrade_file = "/ble_fota.bin" -- 临时升级文件路径
+}
+
+-- 配置参数
+local config = {
+    service_uuid = "F000",   -- FOTA服务UUID(短格式)
+    char_uuid_cmd = "F001",  -- 命令特征值UUID
+    char_uuid_data = "F002", -- 数据特征值UUID
+    max_packet_size = 200    -- BLE数据包最大长度(字节)
+}
+local function ble_reboot()
+    -- 完成FOTA流程并重启
+    fota.finish(true)
+    log.info("FOTA_CMD", "正在重启设备...")
+    rtos.reboot()
+end
+-- 处理FOTA命令
+-- @param cmd_data 命令数据,格式:[命令码(1字节)] 或 [命令码(1字节) + 文件大小(4字节)]
+local function handle_command(cmd_data)
+    log.info("FOTA_CMD", "收到命令数据:", cmd_data:toHex(), "长度:", #cmd_data)
+
+    -- 检查命令数据是否有效
+    if #cmd_data < 1 then
+        log.error("FOTA_CMD", "命令数据为空")
+        return
+    end
+
+    -- 解析命令码(第一个字节)
+    local cmd = cmd_data:byte(1)
+    log.info("FOTA_CMD", "解析命令码:", cmd, string.format("(0x%02X)", cmd))
+
+    -- 命令0x01:开始升级
+    if cmd == 0x01 then
+        log.info("FOTA_CMD", "处理开始升级命令")
+
+        -- 检查命令格式:需要至少5字节(1字节命令码 + 4字节文件大小)
+        if #cmd_data >= 5 then
+            -- 解析文件大小(小端序,从第2字节开始)
+            local total_size = string.unpack("<I4", cmd_data, 2)
+            log.info("FOTA_CMD", "文件总大小:", total_size, "字节")
+
+            -- 初始化FOTA子系统
+            log.info("FOTA_CMD", "初始化FOTA子系统...")
+            if fota.init() then
+                log.info("FOTA_CMD", "FOTA初始化成功")
+
+                -- 等待FOTA底层准备就绪
+                log.info("FOTA_CMD", "等待FOTA底层准备...")
+                -- 等待FOTA底层准备就绪,最多等待10秒
+                local wait_count = 0
+                local wait_ok = false
+                while wait_count < 100 do -- 最多轮询100次,每次100ms,共10秒
+                    if fota.wait() then
+                        wait_ok = true
+                        break
+                    end
+                    sys.wait(100)
+                    wait_count = wait_count + 1
+                end
+
+                if wait_ok then
+                    log.info("FOTA_CMD", "FOTA底层准备就绪")
+
+                    -- 删除旧的临时文件(如果存在)
+                    if os.remove(upgrade_state.upgrade_file) then
+                        log.info("FOTA_CMD", "已清理旧临时文件")
+                    end
+
+                    -- 更新升级状态
+                    upgrade_state.is_upgrading = true
+                    upgrade_state.total_size = total_size
+                    upgrade_state.received_size = 0
+
+                    log.info("FOTA_CMD", "升级状态已设置",
+                        "总大小:", upgrade_state.total_size,
+                        "临时文件:", upgrade_state.upgrade_file)
+                    log.info("FOTA_CMD", "准备接收固件数据...")
+                else
+                    log.error("FOTA_CMD", "FOTA底层准备超时")
+                    fota.finish(false)
+                    upgrade_state.is_upgrading = false
+                end
+            else
+                log.error("FOTA_CMD", "FOTA初始化失败")
+            end
+        else
+            log.error("FOTA_CMD", "开始命令格式错误,长度不足")
+        end
+
+        -- 命令0x02:结束升级
+    elseif cmd == 0x02 then
+        log.info("FOTA_CMD", "处理结束升级命令")
+
+        -- 检查是否处于升级状态
+        if not upgrade_state.is_upgrading then
+            log.warn("FOTA_CMD", "未处于升级状态,忽略结束命令")
+            return
+        end
+
+        -- 验证文件完整性
+        log.info("FOTA_CMD", "验证文件完整性...")
+        log.info("FOTA_CMD", "已接收:", upgrade_state.received_size, "字节")
+        log.info("FOTA_CMD", "应接收:", upgrade_state.total_size, "字节")
+
+        if upgrade_state.received_size == upgrade_state.total_size then
+            log.info("FOTA_CMD", "文件完整性验证通过")
+
+            -- 执行FOTA升级
+            log.info("FOTA_CMD", "开始执行FOTA升级...")
+            local result, isDone = fota.file(upgrade_state.upgrade_file)
+            log.info("FOTA_CMD", "FOTA升级结果:", "result:", result, "isDone:", isDone)
+
+            if result and isDone then
+                log.info("FOTA_CMD", " FOTA升级成功!")
+
+                -- 延迟重启,给用户一些反应时间
+                log.info("FOTA_CMD", "2秒后设备将自动重启...,重启后通过日志判断最终是否升级成功")
+
+                -- 延迟2秒后重启设备
+                sys.timerStart(ble_reboot, 2000)
+            else
+                log.error("FOTA_CMD", "FOTA升级失败")
+            end
+        else
+            log.error("FOTA_CMD", "文件不完整,升级失败")
+        end
+
+        -- 清理升级状态(无论成功还是失败)
+        log.info("FOTA_CMD", "清理升级状态...")
+        upgrade_state.is_upgrading = false
+
+        -- 删除临时文件
+        if upgrade_state.upgrade_file then
+            if os.remove(upgrade_state.upgrade_file) then
+                log.info("FOTA_CMD", "已删除临时文件")
+            else
+                log.warn("FOTA_CMD", "删除临时文件失败")
+            end
+        end
+
+        -- 结束FOTA流程
+        fota.finish(false)
+        log.info("FOTA_CMD", "升级流程结束")
+    else
+        log.warn("FOTA_CMD", "未知命令码:", cmd, string.format("(0x%02X)", cmd))
+    end
+end
+
+-- 处理FOTA数据
+-- @param data 固件数据块
+local function handle_data(data)
+    log.info("FOTA_DATA", "收到数据包,长度:", #data, "字节")
+
+    -- 检查是否处于升级状态
+    if not upgrade_state.is_upgrading then
+        log.warn("FOTA_DATA", "未处于升级状态,忽略数据")
+        return
+    end
+
+    -- 保存数据到临时文件
+    log.info("FOTA_DATA", "写入文件:", upgrade_state.upgrade_file)
+    local file = io.open(upgrade_state.upgrade_file, "ab")
+    if file then
+        -- 写入数据
+        file:write(data)
+        file:close()
+
+        -- 更新接收状态
+        upgrade_state.received_size = upgrade_state.received_size + #data
+
+        -- 计算并显示进度
+        local progress = math.floor((upgrade_state.received_size / upgrade_state.total_size) * 100)
+
+        -- 每50个数据包或完成时打印进度
+        if upgrade_state.received_size % (config.max_packet_size * 50) == 0 or
+            upgrade_state.received_size >= upgrade_state.total_size then
+            log.info("FOTA_DATA", "升级进度:", progress, "%",
+                "(", upgrade_state.received_size, "/", upgrade_state.total_size, ")")
+        end
+
+        log.info("FOTA_DATA", "数据写入成功,当前总计:", upgrade_state.received_size, "字节")
+    else
+        log.error("FOTA_DATA", "打开文件失败:", upgrade_state.upgrade_file)
+
+        -- 文件操作失败,终止升级
+        upgrade_state.is_upgrading = false
+        fota.finish(false)
+    end
+end
+
+-- 处理接收到的BLE写入请求数据
+-- @param service_uuid 服务UUID
+-- @param char_uuid 特征值UUID
+-- @param data 写入的数据
+function ble_file_fota.proc(service_uuid, char_uuid, data)
+    log.info("ble_file_fota", "处理写入数据", service_uuid, char_uuid, data:toHex())
+
+    -- 简化的UUID匹配逻辑:检查UUID是否包含我们的短UUID
+    local is_service_match = string.find(service_uuid:lower(), config.service_uuid:lower())
+    local is_cmd_match = string.find(char_uuid:lower(), config.char_uuid_cmd:lower())
+    local is_data_match = string.find(char_uuid:lower(), config.char_uuid_data:lower())
+
+    log.info("ble_file_fota", "UUID匹配结果:",
+        "服务匹配:", is_service_match,
+        "命令匹配:", is_cmd_match,
+        "数据匹配:", is_data_match)
+
+    if is_service_match then
+        if is_cmd_match then
+            -- 命令特征值:处理FOTA命令
+            log.info("ble_file_fota", "命令特征值匹配,处理命令")
+            handle_command(data)
+        elseif is_data_match then
+            -- 数据特征值:处理FOTA数据
+            log.info("ble_file_fota", "数据特征值匹配,处理数据")
+            handle_data(data)
+        else
+            log.warn("ble_file_fota", "未知的特征值UUID:", char_uuid)
+        end
+    else
+        log.warn("ble_file_fota", "未知的服务UUID:", service_uuid)
+    end
+end
+
+
+function ble_file_fota.proc_disconnect()
+    log.info("ble_file_fota", "处理连接断开事件")
+
+    -- 如果正在升级,连接断开则终止升级
+    if upgrade_state.is_upgrading then
+        log.error("ble_file_fota", "升级过程中连接断开,终止升级")
+        upgrade_state.is_upgrading = false
+
+        -- 删除临时文件
+        if upgrade_state.upgrade_file then
+            os.remove(upgrade_state.upgrade_file)
+        end
+
+        -- 结束FOTA流程
+        fota.finish(false)
+    end
+end
+
+
+
+return ble_file_fota

BIN
module/Air8000/demo/fota/ble_fota/ble_fota.bin


+ 246 - 0
module/Air8000/demo/fota/ble_fota/ble_fota_tool.py

@@ -0,0 +1,246 @@
+#!/usr/bin/env python3
+import asyncio
+import struct
+import time
+from bleak import BleakScanner, BleakClient
+
+# 完整UUID定义
+FOTA_SERVICE_UUID = "0000f000-0000-1000-8000-00805f9b34fb"  # 完整服务UUID
+FOTA_CMD_CHAR_UUID = "0000f001-0000-1000-8000-00805f9b34fb"  # 完整命令特征UUID
+FOTA_DATA_CHAR_UUID = "0000f002-0000-1000-8000-00805f9b34fb"  # 完整数据特征UUID
+
+# Command definitions
+CMD_START_UPGRADE = 0x01
+CMD_END_UPGRADE = 0x02
+
+# 每包数据大小
+MAX_PACKET_SIZE = 200
+
+class SimpleFotaTool:
+    def __init__(self, device_name, firmware_path):
+        self.device_name = device_name
+        self.firmware_path = firmware_path
+        self.client = None
+        self.firmware_data = None
+        self.total_size = 0
+        self.target_device = None
+
+    async def load_firmware(self):
+        """Load firmware file into memory"""
+        try:
+            with open(self.firmware_path, 'rb') as f:
+                self.firmware_data = f.read()
+            self.total_size = len(self.firmware_data)
+            print(f"   固件加载完成,大小: {self.total_size} 字节")
+            return True
+        except Exception as e:
+            print(f"   加载固件失败: {e}")
+            return False
+
+    async def scan_device(self):
+        """Scan for the target device"""
+        print("\n2. 扫描目标设备...")
+        print("   正在扫描,请等待...")
+
+        try:
+            devices = await BleakScanner.discover(timeout=10.0)
+
+            found_devices = []
+            for device in devices:
+                if device.name and self.device_name in device.name:
+                    found_devices.append(device)
+                    print(f"   找到匹配设备: {device.name} (地址: {device.address})")
+
+            if not found_devices:
+                print(f"   未找到设备: {self.device_name}")
+                return None
+
+            # 选择第一个匹配的设备
+            self.target_device = found_devices[0]
+            print(f"   选择设备: {self.target_device.name} (地址: {self.target_device.address})")
+            return self.target_device
+
+        except Exception as e:
+            print(f"   扫描失败: {e}")
+            return None
+
+    async def connect_device(self, device):
+        """Connect to the target device"""
+        print("\n3. 建立BLE连接...")
+        try:
+            self.client = BleakClient(device.address)
+            await self.client.connect(timeout=30.0)
+            print(f"   连接成功,状态: {self.client.is_connected}")
+
+            # 调试:打印所有服务和特征值
+            print("\n4. 发现服务和特征值...")
+
+            # 兼容不同版本的Bleak库
+            try:
+                # 新版本Bleak
+                services = self.client.services
+            except AttributeError:
+                # 旧版本Bleak
+                services = await self.client.get_services()
+
+            fota_service_found = False
+            for service in services:
+                if service.uuid.lower() == FOTA_SERVICE_UUID.lower():
+                    fota_service_found = True
+                    print(f"   找到FOTA服务: {service.uuid}")
+                    for char in service.characteristics:
+                        print(f"     特征值: {char.uuid} - 属性: {char.properties}")
+                        if char.uuid.lower() == FOTA_CMD_CHAR_UUID.lower():
+                            print(f"       -> 命令特征值 (可写)")
+                        elif char.uuid.lower() == FOTA_DATA_CHAR_UUID.lower():
+                            print(f"       -> 数据特征值 (可写)")
+
+            if not fota_service_found:
+                print("   警告: 未找到FOTA服务,但继续尝试...")
+
+            return True
+        except Exception as e:
+            print(f"   连接失败: {e}")
+            return False
+
+    async def write_characteristic(self, uuid, data):
+        """写入特征值"""
+        try:
+            await self.client.write_gatt_char(uuid, data, response=True)
+
+            # 正确提取短UUID(从完整UUID中提取f001/f002部分)
+            # 完整UUID格式: "0000f001-0000-1000-8000-00805f9b34fb"
+            # 我们想要提取 "f001" 部分
+            short_uuid = uuid.split('-')[0][-4:]
+            print(f"   写入特征值 {short_uuid},数据长度: {len(data)} 字节")
+            return True
+        except Exception as e:
+            print(f"   写入特征值失败: {e}")
+            return False
+
+    async def send_start_command(self):
+        """发送开始升级命令"""
+        print("\n5. 发送开始升级命令...")
+
+        # 连接成功后短暂延时
+        print("   连接成功,等待1秒...")
+        await asyncio.sleep(1)
+
+        # 发送开始升级命令
+        start_cmd = struct.pack("<BI", CMD_START_UPGRADE, self.total_size)
+        if not await self.write_characteristic(FOTA_CMD_CHAR_UUID, start_cmd):
+            return False
+
+        print("   开始命令发送完成")
+        await asyncio.sleep(1)  # 等待设备准备
+        return True
+
+    async def send_firmware_data(self):
+        """Send firmware data in chunks with optimized delay"""
+        print("\n6. 分块传输固件数据...")
+        sent_bytes = 0
+        start_time = time.time()
+        packet_count = 0
+
+        # 优化延时:减少到100ms以提高速度
+        PACKET_DELAY = 0.1
+
+        while sent_bytes < self.total_size:
+            chunk_size = min(MAX_PACKET_SIZE, self.total_size - sent_bytes)
+            chunk = self.firmware_data[sent_bytes:sent_bytes + chunk_size]
+
+            if not await self.write_characteristic(FOTA_DATA_CHAR_UUID, chunk):
+                return False
+
+            sent_bytes += chunk_size
+            packet_count += 1
+
+            # 短暂延时,避免数据丢失
+            await asyncio.sleep(PACKET_DELAY)
+
+            # 每20个数据包显示一次进度
+            if packet_count % 20 == 0 or sent_bytes >= self.total_size:
+                progress = (sent_bytes / self.total_size) * 100
+                elapsed = time.time() - start_time
+                speed = sent_bytes / elapsed / 1024 if elapsed > 0 else 0
+                remaining_time = (self.total_size - sent_bytes) / (sent_bytes / elapsed) if sent_bytes > 0 else 0
+                print(f"   进度: {progress:.1f}% - {speed:.1f} KB/s - 已发送 {packet_count} 包 - 预计剩余: {remaining_time:.1f}s")
+
+        total_time = time.time() - start_time
+        avg_speed = self.total_size / total_time / 1024
+        print(f"   数据传输完成! 总时间: {total_time:.1f}s, 平均速度: {avg_speed:.1f} KB/s")
+        return True
+
+    async def end_upgrade(self):
+        """Send end upgrade command"""
+        print("\n7. 发送结束升级命令...")
+        end_cmd = struct.pack("B", CMD_END_UPGRADE)
+        if not await self.write_characteristic(FOTA_CMD_CHAR_UUID, end_cmd):
+            return False
+
+        print("   结束命令发送完成")
+
+        # 等待设备处理
+        print("\n8. 等待设备处理升级...")
+        await asyncio.sleep(5)  # 给设备足够时间处理
+        return True
+
+    async def run(self):
+        """Main execution flow"""
+
+        # 1. 加载固件文件
+        print("\n1. 加载固件文件...")
+        if not await self.load_firmware():
+            return False
+
+        # 2. 扫描目标设备
+        device = await self.scan_device()
+        if not device:
+            return False
+
+        # 3. 连接设备
+        if not await self.connect_device(device):
+            return False
+
+        try:
+            # 4. 发送开始命令
+            if not await self.send_start_command():
+                return False
+
+            # 5. 发送固件数据
+            if not await self.send_firmware_data():
+                return False
+
+            # 6. 结束升级
+            if not await self.end_upgrade():
+                return False
+
+            print("\n" + "="*50)
+            print("升级流程完成! 设备应该正在重启...")
+            print("="*50)
+            return True
+
+        except Exception as e:
+            print(f"   升级过程中出现错误: {e}")
+            return False
+        finally:
+            # 断开连接
+            if self.client and self.client.is_connected:
+                await self.client.disconnect()
+                print("   已断开连接")
+
+async def main():
+    import argparse
+    parser = argparse.ArgumentParser(description="蓝牙FOTA升级工具")
+    parser.add_argument("-f", "--firmware", required=True, help="固件文件路径")
+    parser.add_argument("-d", "--device", default="Air8000_FOTA", help="设备名称")
+
+    args = parser.parse_args()
+
+    tool = SimpleFotaTool(args.device, args.firmware)
+    success = await tool.run()
+    return success
+
+if __name__ == "__main__":
+    success = asyncio.run(main())
+    exit(0 if success else 1)

+ 236 - 0
module/Air8000/demo/fota/ble_fota/ble_main.lua

@@ -0,0 +1,236 @@
+--[[
+@module  ble_main
+@summary BLE服务主功能模块
+@version 1.0
+@date    2025.12.08
+@author  孟伟
+@usage
+-- BLE服务主功能模块
+-- 提供BLE服务的初始化、配置和事件处理
+-- 不包含FOTA业务逻辑,仅处理BLE相关功能
+
+依赖模块:
+- ble_file_fota: 用于处理FOTA相关业务逻辑(文件写入方式)
+- ble_packet_fota: 用于处理FOTA相关业务逻辑(分段写入方式)
+]]
+
+-- 选择FOTA升级方式:"file" 或 "packet"
+-- 1. file方式:将升级包数据先写入本地文件,然后调用fota.file()进行升级
+-- 2. packet方式:直接使用fota.packet()处理分段数据,不写入文件,适合差分升级
+local fota_mode = "packet" -- 默认使用file方式
+
+-- 根据选择加载对应的FOTA模块
+local ble_fota_main
+if fota_mode == "file" then
+    ble_fota_main = require "ble_file_fota"
+else
+    ble_fota_main = require "ble_packet_fota"
+end
+
+-- ble_main的任务名
+local TASK_NAME = "BLE_MAIN"
+
+-- 配置参数
+config = {
+    device_name = "Air8000_FOTA", -- 设备广播名称
+    service_uuid = "F000",        -- FOTA服务UUID(短格式)
+    char_uuid_cmd = "F001",       -- 命令特征值UUID
+    char_uuid_data = "F002",      -- 数据特征值UUID
+    max_packet_size = 20          -- BLE数据包最大长度(字节)
+}
+
+local bluetooth_device = nil
+local ble_device = nil
+local adv_create = nil
+local gatt_create = nil
+
+-- GATT服务数据库定义
+-- 这里定义了BLE设备提供的服务和特征值
+local att_db = {
+    string.fromHex(config.service_uuid), -- Service UUID
+    {
+        string.fromHex(config.char_uuid_cmd),
+        ble.WRITE | ble.WRITE_CMD
+    },
+    {
+        string.fromHex(config.char_uuid_data),
+        ble.WRITE | ble.WRITE_CMD
+    }
+}
+
+-- BLE事件回调函数
+local function ble_event_cb(ble_dev, event, param)
+    log.info("BLE_EVENT", "收到BLE事件:", event)
+
+    -- 根据LuatOS BLE事件枚举处理不同事件
+    if event == ble.EVENT_CONN then
+        -- 连接成功事件
+        log.info("BLE_EVENT", "设备已连接", "地址:", param.addr and param.addr:toHex() or "未知")
+        sys.sendMsg(TASK_NAME, "BLE_EVENT", "CONNECT", param)
+    elseif event == ble.EVENT_DISCONN then
+        -- 连接断开事件
+        log.info("BLE_EVENT", "设备已断开连接", "原因:", param.reason or "未知")
+        sys.sendMsg(TASK_NAME, "BLE_EVENT", "DISCONNECTED", param.reason)
+    elseif event == ble.EVENT_WRITE then
+        -- 写入事件 - 这是关键事件!
+        log.info("BLE_EVENT", "处理写入事件")
+
+        -- 检查参数是否完整
+        if not param or not param.uuid_service or not param.uuid_characteristic or not param.data then
+            log.error("BLE_EVENT", "写入事件参数不完整")
+            return
+        end
+
+        -- 获取服务UUID和特征值UUID
+        local service_uuid = param.uuid_service:toHex()
+        local char_uuid = param.uuid_characteristic:toHex()
+        local data = param.data
+
+        log.info("BLE_EVENT", "服务UUID:", service_uuid)
+        log.info("BLE_EVENT", "特征值UUID:", char_uuid)
+        log.info("BLE_EVENT", "数据长度:", #data, "字节")
+        sys.sendMsg(TASK_NAME, "BLE_EVENT", "WRITE_REQ", param)
+    elseif event == ble.EVENT_READ then
+        -- 读取事件 - 外围设备收到主设备读请求
+        log.info("BLE_EVENT", "处理读取事件")
+    elseif event == ble.EVENT_READ_VALUE then
+        -- 读取操作完成事件 - 中心设备读取特征值完成
+        log.info("BLE_EVENT", "读取操作完成", "数据:", param.data and param.data:toHex() or "无数据")
+    elseif event == ble.EVENT_SCAN_REPORT then
+        -- 扫描报告事件 - 中心设备扫描到其他BLE设备
+        log.info("BLE_EVENT", "扫描报告", "RSSI:", param.rssi, "地址:", param.adv_addr and param.adv_addr:toHex() or "未知")
+    elseif event == ble.EVENT_SCAN_STOP then
+        -- 扫描停止事件
+        log.info("BLE_EVENT", "扫描停止")
+    else
+        -- 其他事件
+        log.info("BLE_EVENT", "其他事件类型:", event)
+        if param then
+            -- 尝试打印参数的基本信息,避免直接打印table导致错误
+            if type(param) == "table" then
+                log.info("BLE_EVENT", "事件参数为table,包含字段:", #param)
+                for k, v in pairs(param) do
+                    if type(v) == "string" then
+                        log.info("BLE_EVENT", "参数字段:", k, "值:", v:toHex())
+                    else
+                        log.info("BLE_EVENT", "参数字段:", k, "类型:", type(v))
+                    end
+                end
+            else
+                log.info("BLE_EVENT", "事件参数类型:", type(param))
+            end
+        end
+    end
+end
+
+-- 初始化BLE功能
+local function ble_init()
+    log.info("BLE_INIT", "开始初始化BLE...")
+
+    -- 初始化蓝牙核心
+    bluetooth_device = bluetooth.init()
+    if not bluetooth_device then
+        log.error("BLE_INIT", "蓝牙核心初始化失败")
+        return false
+    end
+    log.info("BLE_INIT", "蓝牙核心初始化成功")
+
+    -- 初始化BLE功能
+    ble_device = bluetooth_device:ble(ble_event_cb)
+    if not ble_device then
+        log.error("BLE_INIT", "BLE功能初始化失败")
+        return false
+    end
+    log.info("BLE_INIT", "BLE功能初始化成功")
+
+    -- 创建GATT服务
+    gatt_create = ble_device:gatt_create(att_db)
+    if not gatt_create then
+        log.error("BLE_INIT", "GATT服务创建失败")
+        return false
+    end
+    log.info("BLE_INIT", "GATT服务创建成功")
+
+    -- 配置广播数据
+    log.info("BLE_INIT", "配置广播数据...")
+    adv_create = ble_device:adv_create({
+        addr_mode = ble.PUBLIC,
+        channel_map = ble.CHNLS_ALL,
+        intv_min = 120,
+        intv_max = 120,
+        adv_data = {
+            { ble.FLAGS,               string.char(0x06) },  -- BLE标志
+            { ble.COMPLETE_LOCAL_NAME, config.device_name }, -- 设备名称
+        }
+    })
+
+    if not adv_create then
+        log.error("BLE_INIT", "广播配置失败")
+        return false
+    end
+    log.info("BLE_INIT", "广播配置成功")
+
+    -- 开始广播
+    ble_device:adv_start()
+    log.info("BLE_INIT", "BLE广播已启动,设备名称:", config.device_name)
+
+    return true
+end
+
+-- 主任务处理函数
+local function ble_main_task_func()
+    local result, msg
+
+    while true do
+        result = ble_init()
+        if not result then
+            log.error("ble_main_task_func", "ble_init error")
+            goto EXCEPTION_PROC
+        end
+
+        while true do
+            msg = sys.waitMsg(TASK_NAME, "BLE_EVENT")
+
+            if not msg then
+                log.error("ble_main_task_func", "waitMsg timeout")
+                goto EXCEPTION_PROC
+            end
+
+            if msg[2] == "CONNECT" then
+                local conn_param = msg[3]
+                log.info("BLE", "设备连接成功: " .. conn_param.addr:toHex())
+            elseif msg[2] == "DISCONNECTED" then
+                log.info("BLE", "设备断开连接,原因: " .. msg[3])
+                -- 通知FOTA模块连接断开
+                ble_fota_main.proc_disconnect()
+                break
+            -- 收到中心设备的写请求,将写的数据发给ble_fota_main模块处理
+            elseif msg[2] == "WRITE_REQ" then
+                local ble_param = msg[3]
+                local service_uuid = ble_param.uuid_service:toHex()
+                local char_uuid = ble_param.uuid_characteristic:toHex()
+                local data = ble_param.data
+
+                log.info("BLE", "收到写请求: " .. service_uuid .. " " .. char_uuid .. " " .. data:toHex())
+                ble_fota_main.proc(service_uuid, char_uuid, data)
+            end
+        end
+
+        ::EXCEPTION_PROC::
+        log.error("ble_main_task_func", "异常退出, 5秒后重新开启广播")
+
+        -- 停止广播
+        if ble_device then
+            ble_device:adv_stop()
+        end
+
+        -- 清空此task绑定的消息队列中的未处理的消息
+        sys.cleanMsg(TASK_NAME)
+
+        -- 5秒后跳转到循环体开始位置,自动重试
+        sys.wait(5000)
+    end
+end
+
+-- 启动主任务
+sys.taskInitEx(ble_main_task_func, TASK_NAME)

+ 270 - 0
module/Air8000/demo/fota/ble_fota/ble_packet_fota.lua

@@ -0,0 +1,270 @@
+--[[
+@module  ble_packet_fota
+@summary 蓝牙FOTA升级功能模块(分段写入方式)
+@version 1.0
+@date    2025.12.08
+@author  孟伟
+@usage
+-- 蓝牙FOTA升级功能(分段写入方式)
+-- 提供通过蓝牙低功耗(BLE)接收升级包数据进行固件升级的功能
+
+本文件为FOTA业务逻辑处理模块,核心业务逻辑为:
+1. 处理接收到的BLE写入请求数据
+2. 实现FOTA升级流程的控制(分段写入方式)
+3. 管理升级状态和分段数据操作
+
+本文件的对外接口有1个:
+1. ble_packet_fota.proc(service_uuid, char_uuid, data): 处理接收到的BLE写入请求数据
+
+依赖模块:
+- ble_main: 用于提供BLE服务和事件处理
+]]
+
+local ble_packet_fota = {}
+
+-- 升级状态管理
+local upgrade_state = {
+    is_upgrading = false, -- 是否正在升级
+    total_size = 0,       -- 总文件大小(字节)
+    received_size = 0,    -- 已接收大小(字节)
+    upgrade_packet = 0    -- 升级包计数器
+}
+
+-- 配置参数
+local config = {
+    service_uuid = "F000",   -- FOTA服务UUID(短格式)
+    char_uuid_cmd = "F001",  -- 命令特征值UUID
+    char_uuid_data = "F002", -- 数据特征值UUID
+    max_packet_size = 200    -- BLE数据包最大长度(字节)
+}
+local function ble_reboot()
+    -- 完成FOTA流程并重启
+    fota.finish(true)
+    log.info("FOTA_CMD", "正在重启设备...")
+    rtos.reboot()
+end
+-- 处理FOTA命令
+-- @param cmd_data 命令数据,格式:[命令码(1字节)] 或 [命令码(1字节) + 文件大小(4字节)]
+local function handle_command(cmd_data)
+    log.info("FOTA_CMD", "收到命令数据:", cmd_data:toHex(), "长度:", #cmd_data)
+
+    -- 检查命令数据是否有效
+    if #cmd_data < 1 then
+        log.error("FOTA_CMD", "命令数据为空")
+        return
+    end
+
+    -- 解析命令码(第一个字节)
+    local cmd = cmd_data:byte(1)
+    log.info("FOTA_CMD", "解析命令码:", cmd, string.format("(0x%02X)", cmd))
+
+    -- 命令0x01:开始升级
+    if cmd == 0x01 then
+        log.info("FOTA_CMD", "处理开始升级命令")
+
+        -- 检查命令格式:需要至少5字节(1字节命令码 + 4字节文件大小)
+        if #cmd_data >= 5 then
+            -- 解析文件大小(小端序,从第2字节开始)
+            local total_size = string.unpack("<I4", cmd_data, 2)
+            log.info("FOTA_CMD", "文件总大小:", total_size, "字节")
+
+            -- 初始化FOTA子系统
+            log.info("FOTA_CMD", "初始化FOTA子系统...")
+            if fota.init() then
+                log.info("FOTA_CMD", "FOTA初始化成功")
+
+                -- 等待FOTA底层准备就绪
+                log.info("FOTA_CMD", "等待FOTA底层准备...")
+                -- 等待FOTA底层准备就绪,最多等待10秒
+                local wait_count = 0
+                local wait_ok = false
+                while wait_count < 100 do -- 最多轮询100次,每次100ms,共10秒
+                    if fota.wait() then
+                        wait_ok = true
+                        break
+                    end
+                    sys.wait(100)
+                    wait_count = wait_count + 1
+                end
+
+                if wait_ok then
+                    log.info("FOTA_CMD", "FOTA底层准备就绪")
+
+                    -- 更新升级状态
+                    upgrade_state.is_upgrading = true
+                    upgrade_state.total_size = total_size
+                    upgrade_state.received_size = 0
+                    upgrade_state.upgrade_packet = 0
+
+                    log.info("FOTA_CMD", "升级状态已设置",
+                        "总大小:", upgrade_state.total_size)
+                    log.info("FOTA_CMD", "准备接收固件数据...")
+                else
+                    log.error("FOTA_CMD", "FOTA底层准备超时")
+                    fota.finish(false)
+                    upgrade_state.is_upgrading = false
+                end
+            else
+                log.error("FOTA_CMD", "FOTA初始化失败")
+            end
+        else
+            log.error("FOTA_CMD", "开始命令格式错误,长度不足")
+        end
+
+        -- 命令0x02:结束升级(通知升级包发完)
+    elseif cmd == 0x02 then
+        log.info("FOTA_CMD", "处理结束升级命令")
+
+        -- 检查是否处于升级状态
+        if not upgrade_state.is_upgrading then
+            log.warn("FOTA_CMD", "未处于升级状态,忽略结束命令")
+            return
+        end
+
+        -- 验证文件完整性
+        log.info("FOTA_CMD", "验证文件完整性...")
+        log.info("FOTA_CMD", "已接收:", upgrade_state.received_size, "字节")
+        log.info("FOTA_CMD", "应接收:", upgrade_state.total_size, "字节")
+
+        if upgrade_state.received_size == upgrade_state.total_size then
+            log.info("FOTA_CMD", "文件完整性验证通过")
+            log.info("FOTA_CMD", "升级数据已全部接收,等待升级完成...")
+
+            -- 等待底层校验结束
+            local success = false
+            for i = 1, 30 do -- 最多等待3秒
+                sys.wait(100)
+                local succ, fotaDone = fota.isDone()
+                if not succ then
+                    log.error("FOTA_CMD", "校验过程出错")
+                    fota.finish(false)
+                    upgrade_state.is_upgrading = false
+                    break
+                end
+                if fotaDone then
+                    log.info("FOTA_CMD", "FOTA升级成功!")
+
+                    -- 延迟重启,给用户一些反应时间
+                    log.info("FOTA_CMD", "2秒后设备将自动重启...,重启后通过日志判断最终是否升级成功")
+
+                    -- 延迟2秒后重启设备
+                    sys.timerStart(ble_reboot, 2000)
+                    success = true
+                    break
+                end
+            end
+
+            if not success then
+                log.error("FOTA_CMD", "校验超时")
+                fota.finish(false)
+                upgrade_state.is_upgrading = false
+            end
+        else
+            log.error("FOTA_CMD", "文件不完整,升级失败")
+            -- 清理升级状态
+            upgrade_state.is_upgrading = false
+            fota.finish(false)
+        end
+
+        log.info("FOTA_CMD", "结束升级命令处理完成")
+    else
+        log.warn("FOTA_CMD", "未知命令码:", cmd, string.format("(0x%02X)", cmd))
+    end
+end
+
+-- 处理FOTA数据
+-- @param data 固件数据块
+local function handle_data(data)
+    log.info("FOTA_DATA", "收到数据包,长度:", #data, "字节")
+
+    -- 检查是否处于升级状态
+    if not upgrade_state.is_upgrading then
+        log.warn("FOTA_DATA", "未处于升级状态,忽略数据")
+        return
+    end
+
+    -- 直接使用fota.run()处理分段数据,不写入文件
+    log.info("FOTA_DATA", "处理分段数据,包序号:", upgrade_state.upgrade_packet)
+    local result, isDone = fota.run(data)
+    log.info("FOTA_DATA", "分段写入结果:", "result:", result, "isDone:", isDone)
+
+    if result then
+        -- 更新接收状态
+        upgrade_state.received_size = upgrade_state.received_size + #data
+        upgrade_state.upgrade_packet = upgrade_state.upgrade_packet + 1
+
+        -- 计算并显示进度
+        local progress = math.floor((upgrade_state.received_size / upgrade_state.total_size) * 100)
+
+        -- 每50个数据包或完成时打印进度
+        if upgrade_state.received_size % (config.max_packet_size * 50) == 0 or
+            upgrade_state.received_size >= upgrade_state.total_size then
+            log.info("FOTA_DATA", "升级进度:", progress, "%",
+                "(", upgrade_state.received_size, "/", upgrade_state.total_size, ")")
+        end
+
+        log.info("FOTA_DATA", "数据写入成功,当前总计:", upgrade_state.received_size, "字节")
+
+        -- 如果所有数据都已接收,检查升级是否完成
+        if upgrade_state.received_size >= upgrade_state.total_size then
+            log.info("FOTA_DATA", "所有数据已接收,等待升级完成...")
+        end
+    else
+        log.error("FOTA_DATA", "分段写入失败")
+
+        -- 分段写入失败,终止升级
+        upgrade_state.is_upgrading = false
+        fota.finish(false)
+    end
+end
+
+-- 处理接收到的BLE写入请求数据
+-- @param service_uuid 服务UUID
+-- @param char_uuid 特征值UUID
+-- @param data 写入的数据
+function ble_packet_fota.proc(service_uuid, char_uuid, data)
+    log.info("ble_packet_fota", "处理写入数据", service_uuid, char_uuid, data:toHex())
+
+    -- 简化的UUID匹配逻辑:检查UUID是否包含我们的短UUID
+    local is_service_match = string.find(service_uuid:lower(), config.service_uuid:lower())
+    local is_cmd_match = string.find(char_uuid:lower(), config.char_uuid_cmd:lower())
+    local is_data_match = string.find(char_uuid:lower(), config.char_uuid_data:lower())
+
+    log.info("ble_packet_fota", "UUID匹配结果:",
+        "服务匹配:", is_service_match,
+        "命令匹配:", is_cmd_match,
+        "数据匹配:", is_data_match)
+
+    if is_service_match then
+        if is_cmd_match then
+            -- 命令特征值:处理FOTA命令
+            log.info("ble_packet_fota", "命令特征值匹配,处理命令")
+            handle_command(data)
+        elseif is_data_match then
+            -- 数据特征值:处理FOTA数据
+            log.info("ble_packet_fota", "数据特征值匹配,处理数据")
+            handle_data(data)
+        else
+            log.warn("ble_packet_fota", "未知的特征值UUID:", char_uuid)
+        end
+    else
+        log.warn("ble_packet_fota", "未知的服务UUID:", service_uuid)
+    end
+end
+
+-- 处理BLE连接断开事件
+-- @return nil
+function ble_packet_fota.proc_disconnect()
+    log.info("ble_packet_fota", "处理连接断开事件")
+
+    -- 如果正在升级,连接断开则终止升级
+    if upgrade_state.is_upgrading then
+        log.error("ble_packet_fota", "升级过程中连接断开,终止升级")
+        upgrade_state.is_upgrading = false
+
+        -- 结束FOTA流程
+        fota.finish(false)
+    end
+end
+
+return ble_packet_fota

+ 92 - 0
module/Air8000/demo/fota/ble_fota/main.lua

@@ -0,0 +1,92 @@
+--[[
+@module  main
+@summary LuatOS用户应用脚本文件入口,总体调度应用逻辑
+@version 1.0
+@date    2025.10.24
+@author  孟伟
+@usage
+Air8000模块的蓝牙FOTA升级功能演示;
+
+通过蓝牙低功耗(BLE)方式实现固件升级的应用场景:
+
+1、蓝牙分段升级:通过BLE连接将升级包文件分多个片段发送,每个片段接收并写入,代码演示通过蓝牙特征值传输固件数据进行升级;
+
+2、无需有线连接:利用BLE无线通信特性,实现设备固件的无线远程升级;
+
+适用场景:
+    - 蓝牙设备固件升级 -> 智能硬件、可穿戴设备等蓝牙连接设备
+    - 自定义升级流程 -> 通过BLE特征值实现命令控制和数据传输
+
+更多说明参考本目录下的readme.md文件
+]]
+
+--[[
+必须定义PROJECT和VERSION变量,Luatools工具会用到这两个变量,远程升级功能也会用到这两个变量
+PROJECT:项目名,ascii string类型
+        可以随便定义,只要不使用,就行
+VERSION:项目版本号,ascii string类型
+        如果使用合宙iot.openluat.com进行远程升级,必须按照"XXX.YYY.ZZZ"三段格式定义:
+            X、Y、Z各表示1位数字,三个X表示的数字可以相同,也可以不同,同理三个Y和三个Z表示的数字也是可以相同,可以不同
+            因为历史原因,YYY这三位数字必须存在,但是没有任何用处,可以一直写为000
+        如果不使用合宙iot.openluat.com进行远程升级,根据自己项目的需求,自定义格式即可
+]]
+PROJECT = "fota_test"
+VERSION = "001.000.000" --不同于使用libfota2扩展库来升级必须是xxx.xxx.xxx的格式,这里可以自定义版本号格式。
+
+
+-- 在日志中打印项目名和项目版本号
+log.info("main", PROJECT, VERSION)
+
+
+-- 如果内核固件支持wdt看门狗功能,此处对看门狗进行初始化和定时喂狗处理
+-- 如果脚本程序死循环卡死,就会无法及时喂狗,最终会自动重启
+if wdt then
+    --配置喂狗超时时间为9秒钟
+    wdt.init(9000)
+    --启动一个循环定时器,每隔3秒钟喂一次狗
+    sys.timerLoopStart(wdt.feed, 3000)
+end
+
+
+-- 如果内核固件支持errDump功能,此处进行配置,【强烈建议打开此处的注释】
+-- 因为此功能模块可以记录并且上传脚本在运行过程中出现的语法错误或者其他自定义的错误信息,可以初步分析一些设备运行异常的问题
+-- 以下代码是最基本的用法,更复杂的用法可以详细阅读API说明文档
+-- 启动errDump日志存储并且上传功能,600秒上传一次
+-- if errDump then
+--     errDump.config(true, 600)
+-- end
+
+
+-- 使用LuatOS开发的任何一个项目,都强烈建议使用远程升级FOTA功能
+-- 可以使用合宙的iot.openluat.com平台进行远程升级
+-- 也可以使用客户自己搭建的平台进行远程升级
+-- 远程升级的详细用法,可以参考fota的demo进行使用
+
+
+-- 启动一个循环定时器
+-- 每隔3秒钟打印一次总内存,实时的已使用内存,历史最高的已使用内存情况
+-- 方便分析内存使用是否有异常
+-- sys.timerLoopStart(function()
+--     log.info("mem.lua", rtos.meminfo())
+--     log.info("mem.sys", rtos.meminfo("sys"))
+-- end, 3000)
+
+
+
+-- 循环打印版本号, 方便看版本号变化, 非必须
+function print_version()
+    while 1 do
+        sys.wait(3000)
+        log.info("fota", "version", VERSION)
+        -- log.info("hezhou ble_fota test")
+    end
+end
+sys.taskInit(print_version)
+
+-- 加载蓝牙FOTA功能模块
+require "ble_main"
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 1297 - 0
module/Air8000/demo/fota/ble_fota/readme.md

@@ -0,0 +1,1297 @@
+## 功能模块介绍
+
+1、main.lua:主程序入口,负责初始化系统和启动蓝牙FOTA服务;
+
+2、ble_main.lua:BLE服务主功能模块,负责蓝牙连接管理、事件处理和数据传输;支持配置选择FOTA升级方式;
+
+3、ble_file_fota.lua:FOTA业务逻辑模块(文件写入方式),负责升级流程控制、命令处理和文件操作;
+
+4、ble_packet_fota.lua:FOTA业务逻辑模块(分段写入方式),负责升级流程控制、命令处理和分段数据操作;
+
+5、ble_fota_tool.py:Python脚本工具,用于通过蓝牙发送升级包,演示ble升级的完整流程;
+
+6、ble_fota.bin:演示蓝牙FOTA升级的升级包文件,用于测试升级功能的完整性;内容只升级了版本号,加了个打印
+
+## 演示功能概述
+
+本demo演示的核心功能为:
+
+Air8000系列模块通过BLE(蓝牙低功耗)进行固件远程升级(FOTA)的完整实现方案,支持两种升级方式:
+
+1. **文件写入方式**:将接收到的升级包数据先保存到本地临时文件,完成数据接收后再执行升级
+   - 优点:适合完整固件升级,逻辑清晰,易于调试
+   - 缺点:需要额外的文件系统分区存储空间保存完整固件
+   - 适用场景:存储空间充足的设备
+
+2. **分段写入方式**:直接将接收到的升级包数据通过fota.run()函数处理,无需保存到本地文件
+   - 优点:节省存储空间,适合差分升级
+   - 缺点:对内存要求较高,需要足够的内存缓冲区实时处理数据
+   - 适用场景:存储空间有限的设备
+
+适用场景:
+- 智能硬件、可穿戴设备等蓝牙连接设备的固件升级
+- 需要自定义升级流程的应用场景
+- 无网络环境下的设备固件更新
+
+## 演示硬件环境
+
+![](https://docs.openluat.com/air8000/luatos/common/hwenv/image/Air8000_core_board1.jpg)
+
+1、Air8000 核心板一块
+
+2、TYPE-C USB数据线一根 ,Air8000 核心板和数据线的硬件接线方式为:
+
+- Air8000 核心板通过TYPE-C USB口供电;(外部供电/USB供电 拨动开关 拨到 USB供电一端)
+
+- TYPE-C USB数据线直接插到核心板的TYPE-C USB座子,另外一端连接电脑USB口;
+
+## 演示软件环境
+
+1、Luatools下载调试工具
+
+2、[Air8000 V2016版本固件)](https://docs.openluat.com/air8000/luatos/firmware/)
+
+3、Python 3 环境(用于运行ble_fota_tool.py发送升级包)
+      注意需要安装bleak库,可通过pip安装:
+
+      ```bash
+         pip install bleak
+      ```
+
+## 蓝牙FOTA升级工具使用说明
+
+### 工具功能
+- 连接Air8000设备并发送升级包
+- 显示升级进度和状态信息
+- 支持自定义升级包文件名
+
+### 使用方法
+1. 确保Air8000设备处于蓝牙广播状态,设备名称为"Air8000_FOTA"
+2. 在命令行中运行ble_fota_tool.py脚本,指定升级包文件名
+   ```bash
+   python ble_fota_tool.py -f 升级包文件名
+   ```
+
+### 参数说明
+
+- -d 或 --device - 指定目标设备名称(默认值为"Air8000_FOTA")
+
+- -f 或 --firmware - 指定固件文件路径(必需参数)
+
+### 工作流程
+当运行脚本后,它会自动执行以下步骤:
+
+1. 加载指定的固件文件
+2. 扫描并发现蓝牙设备
+3. 连接到目标设备
+4. 发送开始升级命令
+5. 发送固件数据到设备
+6. 发送结束升级命令
+7. 等待设备处理升级
+8. 断开连接并完成升级过程
+
+脚本会在每个步骤显示详细的日志信息,包括连接状态、数据传输进度等,方便用户监控整个升级过程。
+
+## 蓝牙GATT服务设计
+
+### 服务与特征值定义
+| 类型 |UUID | 属性 | 功能描述 |
+|------|------------|------|----------|
+| Service | F000 | - | FOTA服务主UUID,用于标识升级服务 |
+| Characteristic | F001 | Write Without Response | 命令特征值,用于发送升级控制命令 |
+| Characteristic | F002 | Write Without Response | 数据特征值,用于发送升级包数据 |
+
+### 命令报文格式
+
+#### 开始升级命令
+- **命令码**:0x01
+- **格式**:`[命令码(1字节)] + [文件大小(4字节)]`
+- **示例**:`01 75 15 00 00` 表示开始升级,固件大小为5493字节
+- **说明**:
+  - 命令码固定为0x01
+  - 文件大小为4字节小端序
+  - 设备收到此命令后,初始化FOTA子系统并准备接收数据
+
+#### 结束升级命令
+- **命令码**:0x02
+- **格式**:`[命令码(1字节)]`
+- **示例**:`02`
+- **说明**:
+  - 命令码固定为0x02
+  - 设备收到此命令后,验证固件完整性并执行升级
+
+### 数据报文格式
+
+- **格式**:`[固件数据(n字节)]`
+- **默认长度**:200字节(可通过ble_fota_tool.py配置调整,最大256)
+- **说明**:
+  - 固件数据为二进制格式
+  - 每包数据大小不超过BLE数据包最大长度:Air8000系列模组硬件支持最大256字节,考虑到稳定性建议保持默认的200字节
+  - 设备收到数据后,根据所选的FOTA方式进行处理:
+    - 文件方式:将数据写入临时文件
+    - 分段方式:直接通过fota.run()处理数据
+
+### 升级流程
+
+#### 用法:
+1. 先把脚本和固件烧录到Air8000模块中,并确认设备正常启动
+2. 模块启动后会自动开启BLE广播,广播名称为"Air8000_FOTA"
+3. 在电脑端操作:运行ble_fota_tool.py脚本连接设备并发送升级固件
+    注意:确保升级文件名为正确格式,并且与ble_fota_tool.py在同一目录下
+4. 观察日志输出确认升级进度
+5. 模块接收并验证固件成功后,会自动重启并应用新固件
+
+#### BLE通讯过程说明
+蓝牙FOTA升级通过BLE特征值进行命令控制和数据传输:
+协议流程:
+1. 上位机通过BLE扫描并连接名为"Air8000_FOTA"的设备
+2. 上位机向命令特征值(F001)发送开始升级命令(0x01)和固件大小
+3. 设备初始化FOTA功能并准备接收数据
+4. 上位机向数据特征值(F002)分包发送固件数据
+5. 设备接收并保存数据到临时文件
+6. 上位机发送结束升级命令(0x02)
+7. 设备验证固件完整性并执行FOTA升级流程
+8. 升级成功后设备自动重启
+
+
+## 演示操作步骤
+
+1、搭建好演示硬件环境
+
+2、根据ble_main.lua中的fota_mode选择FOTA升级方式:"file" 或 "packet",默认是"packet"方式。
+   ```lua
+   -- 选择FOTA升级方式,"file" 或 "packet"
+   local fota_mode = "packet"
+   ```
+
+3、测试的时候可以直接使用demo目录下已经制作好的升级包,也可以自己制作升级包。
+
+   自己制作升级包时使用Luatools制作升级包,流程参考[升级包制作流程](https://docs.openluat.com/osapi/core/fota/#51)。将制作好的升级包放在ble_fota_tool.py同级目录下
+
+4、使用Luatools烧录内核固件和demo脚本代码,烧录成功后,自动开机运行。
+
+5、确认设备处于蓝牙广播状态(设备名称为"Air8000_FOTA")
+
+6、运行Python脚本发送升级包:
+
+```bash
+python ble_fota_tool.py -f ble_fota.bin
+```
+
+7、脚本会自动扫描并连接到目标设备,发送升级命令并传输固件文件
+
+8、设备接收并验证升级包,校验升级包没问题后会启动升级并重启,重启后项目版本号会从1.0.0更新为1.0.1
+
+9、可以看到如下日志:
+
+   蓝牙FOTA升级日志解读:
+
+   1. 设备启动,蓝牙服务初始化成功
+
+   2. 收到开始升级命令,初始化FOTA分区和缓冲区
+
+   3. 开始分段接收固件数据
+
+   4. 所有数据接收完成,验证固件完整性
+
+   5. 升级完成,设备重启
+
+   6. 重启后新版本正常运行,确认升级成功
+
+file方式升级日志如下:
+```lua
+[2025-12-09 14:43:26.113][000000000.416] I/user.BLE_INIT 开始初始化BLE...
+[2025-12-09 14:43:26.144][000000000.416] D/drv.bt 执行luat_bluetooth_init
+[2025-12-09 14:43:26.171][000000000.416] I/user.BLE_INIT 蓝牙核心初始化成功
+[2025-12-09 14:43:26.196][000000000.416] I/user.BLE_INIT BLE功能初始化成功
+[2025-12-09 14:43:26.241][000000000.417] I/user.BLE_INIT GATT服务创建成功
+[2025-12-09 14:43:26.259][000000000.417] I/user.BLE_INIT 配置广播数据...
+[2025-12-09 14:43:26.276][000000000.418] I/user.BLE_INIT 广播配置成功
+[2025-12-09 14:43:26.294][000000000.418] I/user.BLE_INIT BLE广播已启动,设备名称: Air8000_FOTA
+[2025-12-09 14:43:26.322][000000000.448] I/user.BLE_EVENT 收到BLE事件: 1
+[2025-12-09 14:43:26.350][000000000.448] I/user.BLE_EVENT 其他事件类型: 1
+[2025-12-09 14:43:26.386][000000000.474] I/user.BLE_EVENT 收到BLE事件: 3
+[2025-12-09 14:43:26.416][000000000.475] I/user.BLE_EVENT 其他事件类型: 3
+[2025-12-09 14:43:26.451][000000000.519] I/user.BLE_EVENT 收到BLE事件: 4
+[2025-12-09 14:43:26.490][000000000.520] I/user.BLE_EVENT 其他事件类型: 4
+[2025-12-09 14:43:26.805][000000001.663] D/mobile cid1, state0
+[2025-12-09 14:43:26.831][000000001.663] D/mobile bearer act 0, result 0
+[2025-12-09 14:43:26.851][000000001.664] D/mobile NETIF_LINK_ON -> IP_READY
+[2025-12-09 14:43:26.867][000000001.707] D/mobile TIME_SYNC 0
+[2025-12-09 14:43:28.031][000000003.383] I/user.fota version 001.000.000
+[2025-12-09 14:43:31.021][000000006.383] I/user.fota version 001.000.000
+[2025-12-09 14:43:34.027][000000009.383] I/user.fota version 001.000.000
+[2025-12-09 14:43:37.019][000000012.383] I/user.fota version 001.000.000
+[2025-12-09 14:43:40.018][000000015.383] I/user.fota version 001.000.000
+[2025-12-09 14:43:43.022][000000018.383] I/user.fota version 001.000.000
+[2025-12-09 14:43:46.031][000000021.383] I/user.fota version 001.000.000
+[2025-12-09 14:43:46.419][000000021.770] I/user.BLE_EVENT 收到BLE事件: 12
+[2025-12-09 14:43:46.430][000000021.771] I/user.BLE_EVENT 设备已连接 地址: 141333C76D92
+[2025-12-09 14:43:46.439][000000021.772] I/user.BLE 设备连接成功: 141333C76D92
+[2025-12-09 14:43:49.026][000000024.383] I/user.fota version 001.000.000
+[2025-12-09 14:43:49.135][000000024.495] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:49.145][000000024.495] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:49.155][000000024.496] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:49.165][000000024.496] I/user.BLE_EVENT 特征值UUID: F001
+[2025-12-09 14:43:49.174][000000024.496] I/user.BLE_EVENT 数据长度: 5 字节
+[2025-12-09 14:43:49.186][000000024.497] I/user.BLE 收到写请求: F000 F001 01871A0000
+[2025-12-09 14:43:49.200][000000024.498] I/user.ble_file_fota 处理写入数据 F000 F001 01871A0000 10
+[2025-12-09 14:43:49.207][000000024.498] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: 1 数据匹配: nil
+[2025-12-09 14:43:49.222][000000024.499] I/user.ble_file_fota 命令特征值匹配,处理命令
+[2025-12-09 14:43:49.233][000000024.499] I/user.FOTA_CMD 收到命令数据: 01871A0000 长度: 5
+[2025-12-09 14:43:49.244][000000024.500] I/user.FOTA_CMD 解析命令码: 1 (0x01)
+[2025-12-09 14:43:49.254][000000024.500] I/user.FOTA_CMD 处理开始升级命令
+[2025-12-09 14:43:49.266][000000024.500] I/user.FOTA_CMD 文件总大小: 6791 字节
+[2025-12-09 14:43:49.272][000000024.500] I/user.FOTA_CMD 初始化FOTA子系统...
+[2025-12-09 14:43:49.282][000000024.515] I/user.FOTA_CMD FOTA初始化成功
+[2025-12-09 14:43:49.292][000000024.516] I/user.FOTA_CMD 等待FOTA底层准备...
+[2025-12-09 14:43:49.300][000000024.516] I/user.FOTA_CMD FOTA底层准备就绪
+[2025-12-09 14:43:49.310][000000024.520] I/user.FOTA_CMD 升级状态已设置 总大小: 6791 临时文件: /ble_fota.bin
+[2025-12-09 14:43:49.319][000000024.520] I/user.FOTA_CMD 准备接收固件数据...
+[2025-12-09 14:43:50.194][000000025.555] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:50.203][000000025.556] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:50.212][000000025.556] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:50.222][000000025.556] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:50.233][000000025.556] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:50.246][000000025.558] I/user.BLE 收到写请求: F000 F002 1872C3EA2C25123600000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B1A00000000000024342525E2585E1B996AB9E251859848000000000000000000000000000000001872C3EA071A0000005C00000E4148EF5A243F7A94C524D49C393BE10000040000E05400056600000400FD19000000008109C7536188201E4070E4F8F94AA2C68473C100329390791CEB9BE96EC35E8E58408C2AC66F005FE972F833C5F3DA9A10A24DFFE32A2D8B93D3FA34
+[2025-12-09 14:43:50.258][000000025.558] I/user.ble_file_fota 处理写入数据 F000 F002 1872C3EA2C25123600000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B1A00000000000024342525E2585E1B996AB9E251859848000000000000000000000000000000001872C3EA071A0000005C00000E4148EF5A243F7A94C524D49C393BE10000040000E05400056600000400FD19000000008109C7536188201E4070E4F8F94AA2C68473C100329390791CEB9BE96EC35E8E58408C2AC66F005FE972F833C5F3DA9A10A24DFFE32A2D8B93D3FA34 400
+[2025-12-09 14:43:50.268][000000025.559] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:50.277][000000025.559] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:50.287][000000025.560] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:50.297][000000025.560] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:50.309][000000025.565] I/user.FOTA_DATA 数据写入成功,当前总计: 200 字节
+[2025-12-09 14:43:50.382][000000025.732] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:50.394][000000025.732] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:50.404][000000025.733] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:50.412][000000025.733] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:50.428][000000025.733] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:50.437][000000025.734] I/user.BLE 收到写请求: F000 F002 578326A8397A8359CFCDB2A5DF2D0F4B55688C2923877D02A65E6A9BEF12A5670C81644C22535802647B3D9DFA35855E2FBF332AA3D80A94E8999A561C368B017A27D3AE1A0CA7C12880C29DADDA628F33041F6E683EAFB72C42A510AB7F5F8DBE623F348D0BD82A12E5A73AE737E3F3AD3B200F768C91297D22E99F748C7E9DD6DE3A692DED4F8B2A0D70AF92ECD2AFD865E60404CBF122A59A5590EF494E4E9F4A9C703C976B1A63F6ECB8CB31146389BFFD8321D48D07B0DF4C3BE1CA40C1B6D6E7F3956BFC27
+[2025-12-09 14:43:50.454][000000025.735] I/user.ble_file_fota 处理写入数据 F000 F002 578326A8397A8359CFCDB2A5DF2D0F4B55688C2923877D02A65E6A9BEF12A5670C81644C22535802647B3D9DFA35855E2FBF332AA3D80A94E8999A561C368B017A27D3AE1A0CA7C12880C29DADDA628F33041F6E683EAFB72C42A510AB7F5F8DBE623F348D0BD82A12E5A73AE737E3F3AD3B200F768C91297D22E99F748C7E9DD6DE3A692DED4F8B2A0D70AF92ECD2AFD865E60404CBF122A59A5590EF494E4E9F4A9C703C976B1A63F6ECB8CB31146389BFFD8321D48D07B0DF4C3BE1CA40C1B6D6E7F3956BFC27 400
+[2025-12-09 14:43:50.468][000000025.736] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:50.482][000000025.736] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:50.494][000000025.736] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:50.502][000000025.736] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:50.514][000000025.802] I/user.FOTA_DATA 数据写入成功,当前总计: 400 字节
+[2025-12-09 14:43:50.585][000000025.950] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:50.594][000000025.950] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:50.602][000000025.951] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:50.611][000000025.951] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:50.621][000000025.951] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:50.633][000000025.953] I/user.BLE 收到写请求: F000 F002 BFAE6FA013B4867390CDA0870A6B7A3FB7F27C519343384418178F72CA8DD59C03C100DC9D5164426EAA229591718358C05796458854B37880CC94AE917BC8E803BB404BC29BB67C7D7079AACDEA8BE9F128332B4082C33022B5E9A381DC3C8E1DAFFDA7DADCEFFBB24E917E2300454A251E2BCDC42C37976E1E67CE95E1296DCC28E9647783D3BB69FD0D2FA8E21AB1A0C273801D4FA26ABE48B2DF7E2EBFACF919F76F7B16A7AEA63B5940D38DA7247DC55368F3FECA9C622E340C70A6E384959B0262F57BEB47
+[2025-12-09 14:43:50.643][000000025.953] I/user.ble_file_fota 处理写入数据 F000 F002 BFAE6FA013B4867390CDA0870A6B7A3FB7F27C519343384418178F72CA8DD59C03C100DC9D5164426EAA229591718358C05796458854B37880CC94AE917BC8E803BB404BC29BB67C7D7079AACDEA8BE9F128332B4082C33022B5E9A381DC3C8E1DAFFDA7DADCEFFBB24E917E2300454A251E2BCDC42C37976E1E67CE95E1296DCC28E9647783D3BB69FD0D2FA8E21AB1A0C273801D4FA26ABE48B2DF7E2EBFACF919F76F7B16A7AEA63B5940D38DA7247DC55368F3FECA9C622E340C70A6E384959B0262F57BEB47 400
+[2025-12-09 14:43:50.654][000000025.954] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:50.664][000000025.954] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:50.670][000000025.954] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:50.680][000000025.955] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:50.689][000000025.971] I/user.FOTA_DATA 数据写入成功,当前总计: 600 字节
+[2025-12-09 14:43:50.770][000000026.125] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:50.779][000000026.126] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:50.794][000000026.126] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:50.807][000000026.126] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:50.815][000000026.126] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:50.829][000000026.128] I/user.BLE 收到写请求: F000 F002 9F91D745FD569A414C89ABA1FADC28AEDBFC7914B989922EC7C2DD96B671A2EA0469B6E0D0C551667CBFB86181535A9B22FFC681501D9782AA99F4ACF3E2226B517EF94FCF225CA046FC4EBA70E295A124859F973CBD2BC54006E0A1C25C0CBF1429405D9A55BF8256947328E167EE7FD1189695C70F6570317586F61573509FE11BE46BAF25E84C9E8C635556B4E36D5E8577A0613B21E506CA71CCD0972C7339FD71B5038C1CDB183D2C7072123C0539CBBD7658B09A6678D79CBEBCC00B3349911BF90AC528E1
+[2025-12-09 14:43:50.840][000000026.128] I/user.ble_file_fota 处理写入数据 F000 F002 9F91D745FD569A414C89ABA1FADC28AEDBFC7914B989922EC7C2DD96B671A2EA0469B6E0D0C551667CBFB86181535A9B22FFC681501D9782AA99F4ACF3E2226B517EF94FCF225CA046FC4EBA70E295A124859F973CBD2BC54006E0A1C25C0CBF1429405D9A55BF8256947328E167EE7FD1189695C70F6570317586F61573509FE11BE46BAF25E84C9E8C635556B4E36D5E8577A0613B21E506CA71CCD0972C7339FD71B5038C1CDB183D2C7072123C0539CBBD7658B09A6678D79CBEBCC00B3349911BF90AC528E1 400
+[2025-12-09 14:43:50.851][000000026.129] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:50.860][000000026.129] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:50.872][000000026.130] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:50.880][000000026.130] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:50.892][000000026.142] I/user.FOTA_DATA 数据写入成功,当前总计: 800 字节
+[2025-12-09 14:43:50.943][000000026.299] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:50.956][000000026.299] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:50.967][000000026.300] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:50.977][000000026.300] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:50.987][000000026.300] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:50.997][000000026.302] I/user.BLE 收到写请求: F000 F002 E223812664DD4D928A3E8EDA95352501825004DA6A79B02F259CCCCD81E7EB6999E56EF07D72F0C89F93DE646E91FDD4F508ADEA6AAFC39653592D1135F981883C2B14DFCE97DFA8C63D8C99A78C46EFA6B7A2F07D3D372A025C2E4F7355FADCB664ED0C63ABF28DA2C73A5DB4693A296E2E0A0AEF8B0091EF1EB5B13B2EF9D662A5FC8B4DB84A4BB0229A1E82F9376A79D1DBD0EF770708EB8A4A6637EDB112DF402AA83089A33DC90E9911FA0C81AF39450ECE80C4B7BA580661286900635BE4A1F81583331816
+[2025-12-09 14:43:51.010][000000026.302] I/user.ble_file_fota 处理写入数据 F000 F002 E223812664DD4D928A3E8EDA95352501825004DA6A79B02F259CCCCD81E7EB6999E56EF07D72F0C89F93DE646E91FDD4F508ADEA6AAFC39653592D1135F981883C2B14DFCE97DFA8C63D8C99A78C46EFA6B7A2F07D3D372A025C2E4F7355FADCB664ED0C63ABF28DA2C73A5DB4693A296E2E0A0AEF8B0091EF1EB5B13B2EF9D662A5FC8B4DB84A4BB0229A1E82F9376A79D1DBD0EF770708EB8A4A6637EDB112DF402AA83089A33DC90E9911FA0C81AF39450ECE80C4B7BA580661286900635BE4A1F81583331816 400
+[2025-12-09 14:43:51.022][000000026.303] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:51.032][000000026.303] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:51.040][000000026.303] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:51.049][000000026.304] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:51.058][000000026.315] I/user.FOTA_DATA 数据写入成功,当前总计: 1000 字节
+[2025-12-09 14:43:51.114][000000026.477] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:51.125][000000026.477] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:51.135][000000026.478] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:51.144][000000026.478] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:51.155][000000026.478] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:51.167][000000026.479] I/user.BLE 收到写请求: F000 F002 E873D77EDC3E717CAA4CB2A7085406D8B4F680F9CF38F4193308A241CFE7F59AD54E7A9A5EB5D818D0C4D193C20318EB3AA118A3F485FB83183D1711B43B59672410A3838F7564CA912FAF597744A170AE45380D29773CDC72330AF7792D3A58E9395F3226B70462F739677B77347338CB374A4411CC3AD721931228728A3082E06B9742903999708C366C3EA2E35CCDF1E59F3B4BB94139B229A775E54D470FA10BC45DB934F73D36DFBE1E076247EDDA39A17A7F281C6B405EE564D144879021AE75435DA61B0B
+[2025-12-09 14:43:51.176][000000026.480] I/user.ble_file_fota 处理写入数据 F000 F002 E873D77EDC3E717CAA4CB2A7085406D8B4F680F9CF38F4193308A241CFE7F59AD54E7A9A5EB5D818D0C4D193C20318EB3AA118A3F485FB83183D1711B43B59672410A3838F7564CA912FAF597744A170AE45380D29773CDC72330AF7792D3A58E9395F3226B70462F739677B77347338CB374A4411CC3AD721931228728A3082E06B9742903999708C366C3EA2E35CCDF1E59F3B4BB94139B229A775E54D470FA10BC45DB934F73D36DFBE1E076247EDDA39A17A7F281C6B405EE564D144879021AE75435DA61B0B 400
+[2025-12-09 14:43:51.190][000000026.481] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:51.199][000000026.481] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:51.205][000000026.481] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:51.217][000000026.482] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:51.229][000000026.494] I/user.FOTA_DATA 数据写入成功,当前总计: 1200 字节
+[2025-12-09 14:43:51.302][000000026.652] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:51.310][000000026.653] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:51.322][000000026.653] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:51.330][000000026.653] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:51.339][000000026.653] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:51.349][000000026.655] I/user.BLE 收到写请求: F000 F002 410FFED6705B09EA71340D2EE49489909141E21CF9FCC15B26AE57779C8ADA469F3544578C2EB7C2AEB55B759AB3539322B1A3CA5670FAB659E5DEF3AC982485982C93F540C526F944C421DFC15E0246A5428FA23FD4EA607077CE1355FC00ED2522B0AB448A43A136D8FEDA5C756EF4D37D707E6CBC01046AA33B12B57AB1058AFF6ED30B6B86F664834CB287D62C1651EAB588EBEB903596CE12DD9E36E282E0F4B3BB2C17AA0B0E220B3088FF1542C89E18F4D621E438884D1A48F425888FC986F6589FF41553
+[2025-12-09 14:43:51.359][000000026.655] I/user.ble_file_fota 处理写入数据 F000 F002 410FFED6705B09EA71340D2EE49489909141E21CF9FCC15B26AE57779C8ADA469F3544578C2EB7C2AEB55B759AB3539322B1A3CA5670FAB659E5DEF3AC982485982C93F540C526F944C421DFC15E0246A5428FA23FD4EA607077CE1355FC00ED2522B0AB448A43A136D8FEDA5C756EF4D37D707E6CBC01046AA33B12B57AB1058AFF6ED30B6B86F664834CB287D62C1651EAB588EBEB903596CE12DD9E36E282E0F4B3BB2C17AA0B0E220B3088FF1542C89E18F4D621E438884D1A48F425888FC986F6589FF41553 400
+[2025-12-09 14:43:51.368][000000026.656] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:51.377][000000026.656] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:51.386][000000026.657] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:51.394][000000026.658] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:51.403][000000026.674] I/user.FOTA_DATA 数据写入成功,当前总计: 1400 字节
+[2025-12-09 14:43:51.474][000000026.825] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:51.487][000000026.826] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:51.497][000000026.826] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:51.511][000000026.826] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:51.525][000000026.826] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:51.534][000000026.828] I/user.BLE 收到写请求: F000 F002 AF8909FB5E3F2931D6AEA8AC8570EBDAE58D62286B0CB3D6EF5536EEA795DC4D7F116520A50DE34925E8253CD9476B67E8B9C7D3A7ED4EF074FA573E087A3F1DD0A7EE0241854D002016D33F56A54F56ED6CBB4207061FD64AF40AECCE0B33C96FDF83303E00A4413B1305516FF04C7052FA4B354EDFC9C8151DBCE50A56171CB112F11864F50045F8C70F0788ECF30AC28C67347A518CB032A2E9D7C10A8FCEA12190E46E3D11F896F18B8EB38CEE94FE8A32C44A14F827EA6E352BEA31D786943436AE5396CFE2
+[2025-12-09 14:43:51.544][000000026.828] I/user.ble_file_fota 处理写入数据 F000 F002 AF8909FB5E3F2931D6AEA8AC8570EBDAE58D62286B0CB3D6EF5536EEA795DC4D7F116520A50DE34925E8253CD9476B67E8B9C7D3A7ED4EF074FA573E087A3F1DD0A7EE0241854D002016D33F56A54F56ED6CBB4207061FD64AF40AECCE0B33C96FDF83303E00A4413B1305516FF04C7052FA4B354EDFC9C8151DBCE50A56171CB112F11864F50045F8C70F0788ECF30AC28C67347A518CB032A2E9D7C10A8FCEA12190E46E3D11F896F18B8EB38CEE94FE8A32C44A14F827EA6E352BEA31D786943436AE5396CFE2 400
+[2025-12-09 14:43:51.560][000000026.829] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:51.569][000000026.829] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:51.578][000000026.829] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:51.590][000000026.830] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:51.601][000000026.856] I/user.FOTA_DATA 数据写入成功,当前总计: 1600 字节
+[2025-12-09 14:43:51.644][000000026.999] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:51.656][000000026.999] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:51.667][000000027.000] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:51.678][000000027.000] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:51.689][000000027.000] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:51.697][000000027.001] I/user.BLE 收到写请求: F000 F002 EDB607310E11E77F72F5F13F50651C339B3A0AE817EE467BA4E6ED338114AF1854D051FB48D13A814239B33805F0EADB89BF82F2D207B9AEB59DB2BE8BD9F4F0EE3FFB28B2E8B28534844A1C4274AE4728329F676E25414207226BCEC0F197FBCBC5C139C7086682A4511E542923B4EB79DCB32DE59784DF5DF8F13FD2F84E550CA85703945F317B1012F4364BC3128819E37F22DB62B91F2CF6297CD569A28A638E77B0063DBEBDE6740677B1D118FFA4859F8D50087E0BBFAC077E262AC204A5F2C80D74BD8FEE
+[2025-12-09 14:43:51.709][000000027.002] I/user.ble_file_fota 处理写入数据 F000 F002 EDB607310E11E77F72F5F13F50651C339B3A0AE817EE467BA4E6ED338114AF1854D051FB48D13A814239B33805F0EADB89BF82F2D207B9AEB59DB2BE8BD9F4F0EE3FFB28B2E8B28534844A1C4274AE4728329F676E25414207226BCEC0F197FBCBC5C139C7086682A4511E542923B4EB79DCB32DE59784DF5DF8F13FD2F84E550CA85703945F317B1012F4364BC3128819E37F22DB62B91F2CF6297CD569A28A638E77B0063DBEBDE6740677B1D118FFA4859F8D50087E0BBFAC077E262AC204A5F2C80D74BD8FEE 400
+[2025-12-09 14:43:51.719][000000027.003] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:51.729][000000027.003] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:51.738][000000027.003] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:51.747][000000027.003] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:51.760][000000027.018] I/user.FOTA_DATA 数据写入成功,当前总计: 1800 字节
+[2025-12-09 14:43:51.816][000000027.174] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:51.824][000000027.174] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:51.835][000000027.175] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:51.853][000000027.175] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:51.867][000000027.175] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:51.881][000000027.177] I/user.BLE 收到写请求: F000 F002 94E91700D87B64F42F5066347F9AA5F5D03C35E7FD6AC34265D5183B77DFB8B9ABC25C778AEB347F9D6BA4D99BA6CAA424383D4CF341160B4B0D4D80CB74B495B481381D21D6774E367A43D2121CF399774973F46FDED2FF379DDB14D6A2E2E4DA79783AC902C2039E1DDB8F14640CEA0A23DCD23FF5ACAB0129F935CC43822A2370E150BE3232E079449AC2438E541DD0A2B95742507017B7645BEAE7804D12989706640D4DFDEF4679ADA908B88AC01D00DB28837D18B9A3391181661ADAAA79F2B6DFE121C14A
+[2025-12-09 14:43:51.899][000000027.177] I/user.ble_file_fota 处理写入数据 F000 F002 94E91700D87B64F42F5066347F9AA5F5D03C35E7FD6AC34265D5183B77DFB8B9ABC25C778AEB347F9D6BA4D99BA6CAA424383D4CF341160B4B0D4D80CB74B495B481381D21D6774E367A43D2121CF399774973F46FDED2FF379DDB14D6A2E2E4DA79783AC902C2039E1DDB8F14640CEA0A23DCD23FF5ACAB0129F935CC43822A2370E150BE3232E079449AC2438E541DD0A2B95742507017B7645BEAE7804D12989706640D4DFDEF4679ADA908B88AC01D00DB28837D18B9A3391181661ADAAA79F2B6DFE121C14A 400
+[2025-12-09 14:43:51.911][000000027.178] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:51.922][000000027.178] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:51.935][000000027.178] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:51.947][000000027.179] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:51.962][000000027.194] I/user.FOTA_DATA 数据写入成功,当前总计: 2000 字节
+[2025-12-09 14:43:51.986][000000027.350] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:51.995][000000027.351] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:52.004][000000027.351] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:52.022][000000027.351] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:52.034][000000027.351] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:52.045][000000027.353] I/user.BLE 收到写请求: F000 F002 3834A5479DF6DDDC5EBADFFF3C8BB9808F67A25A9916D0E5CF17A49FDD72A49C13D258E1E955462C882A05FDC65C7B25E32C6EC8DB5104C3C44D9F50F588DD4A574D93A7C1A55AE21100CA17AB225AF060DA2E9FC234D544D6C499B3E2C967E8AA8F88086C24A7C7688D9C3651200721DE5309CA1E9AEC2EBAD606B5B5BCCA5659DC6EF24B9A886C29F27870882873C76AF5D9728CDFD82307382516962F202EDC31B1CFE82CD3AA5239567AE9B1E44B00AB9CB0112000C6977B621AFEE42BDD42A023014474D2E8
+[2025-12-09 14:43:52.058][000000027.353] I/user.ble_file_fota 处理写入数据 F000 F002 3834A5479DF6DDDC5EBADFFF3C8BB9808F67A25A9916D0E5CF17A49FDD72A49C13D258E1E955462C882A05FDC65C7B25E32C6EC8DB5104C3C44D9F50F588DD4A574D93A7C1A55AE21100CA17AB225AF060DA2E9FC234D544D6C499B3E2C967E8AA8F88086C24A7C7688D9C3651200721DE5309CA1E9AEC2EBAD606B5B5BCCA5659DC6EF24B9A886C29F27870882873C76AF5D9728CDFD82307382516962F202EDC31B1CFE82CD3AA5239567AE9B1E44B00AB9CB0112000C6977B621AFEE42BDD42A023014474D2E8 400
+[2025-12-09 14:43:52.069][000000027.354] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:52.078][000000027.354] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:52.088][000000027.354] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:52.097][000000027.355] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:52.104][000000027.373] I/user.FOTA_DATA 数据写入成功,当前总计: 2200 字节
+[2025-12-09 14:43:52.117][000000027.383] I/user.fota version 001.000.000
+[2025-12-09 14:43:52.177][000000027.525] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:52.191][000000027.525] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:52.199][000000027.526] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:52.211][000000027.526] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:52.222][000000027.526] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:52.231][000000027.527] I/user.BLE 收到写请求: F000 F002 63663F8E2E57002B58CD4812D54992E3DC35630D911747925F0525FE2146969453955C12F6ECF3F086401F7B400842562866F63775646ECEC3EB75A592697C3353B30BDA7D5E7417259AC51EB15D4C9630DA0DAD132232C969B0A5738E613556CBF6C194E11EFE106E0AC67ECF088CE3F0F0005E6A4E88CD7DE728D8F7677025033E575C7C26128CD97E3CF9861BDADE2DFA95C1DAF7AF765E6F5436A58AB9EF5FC46D24D6010D204A63DEAABD64E86FFF7C266259E7281177FC7DE905D83AD76EB54D4E4F42DBE9
+[2025-12-09 14:43:52.241][000000027.528] I/user.ble_file_fota 处理写入数据 F000 F002 63663F8E2E57002B58CD4812D54992E3DC35630D911747925F0525FE2146969453955C12F6ECF3F086401F7B400842562866F63775646ECEC3EB75A592697C3353B30BDA7D5E7417259AC51EB15D4C9630DA0DAD132232C969B0A5738E613556CBF6C194E11EFE106E0AC67ECF088CE3F0F0005E6A4E88CD7DE728D8F7677025033E575C7C26128CD97E3CF9861BDADE2DFA95C1DAF7AF765E6F5436A58AB9EF5FC46D24D6010D204A63DEAABD64E86FFF7C266259E7281177FC7DE905D83AD76EB54D4E4F42DBE9 400
+[2025-12-09 14:43:52.249][000000027.529] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:52.258][000000027.529] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:52.267][000000027.529] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:52.276][000000027.529] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:52.288][000000027.592] I/user.FOTA_DATA 数据写入成功,当前总计: 2400 字节
+[2025-12-09 14:43:52.344][000000027.700] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:52.356][000000027.700] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:52.366][000000027.701] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:52.378][000000027.701] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:52.387][000000027.701] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:52.397][000000027.702] I/user.BLE 收到写请求: F000 F002 CDF7739542AF28D7E4A0C93AE2AFD9FB4F8F025ED1D352BFA14FF85085D795CBC8087C3912E010319D728434CCD90531248A0EA2C4DC65936324E7DABB15C5A7774DA6C761DDBF31CB3242B17CED11DC18BFA1E5663CACF3ECEA84D6E49798742CD98C9F61F7ED4513B69449DEEA1ADBD300C9B2E6DB5920133424E25ECD3809D7C59D4A3AB15BC57EC72554059E953C6172F46557E20FE1C3C25D9AE36380EBC5BE3FC29835D7AB7F5B1844B7DA5D37630C7F3474664ED04FBBD4FA95CC43FAFBE4E32CA76FE988
+[2025-12-09 14:43:52.408][000000027.703] I/user.ble_file_fota 处理写入数据 F000 F002 CDF7739542AF28D7E4A0C93AE2AFD9FB4F8F025ED1D352BFA14FF85085D795CBC8087C3912E010319D728434CCD90531248A0EA2C4DC65936324E7DABB15C5A7774DA6C761DDBF31CB3242B17CED11DC18BFA1E5663CACF3ECEA84D6E49798742CD98C9F61F7ED4513B69449DEEA1ADBD300C9B2E6DB5920133424E25ECD3809D7C59D4A3AB15BC57EC72554059E953C6172F46557E20FE1C3C25D9AE36380EBC5BE3FC29835D7AB7F5B1844B7DA5D37630C7F3474664ED04FBBD4FA95CC43FAFBE4E32CA76FE988 400
+[2025-12-09 14:43:52.419][000000027.704] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:52.429][000000027.704] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:52.435][000000027.704] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:52.446][000000027.704] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:52.459][000000027.720] I/user.FOTA_DATA 数据写入成功,当前总计: 2600 字节
+[2025-12-09 14:43:52.515][000000027.878] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:52.525][000000027.878] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:52.532][000000027.879] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:52.541][000000027.879] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:52.551][000000027.879] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:52.559][000000027.881] I/user.BLE 收到写请求: F000 F002 2FA735BDB0849ECDF7274BAA573388358B7F78CD1F8DD5F64C1A955B430D75A6F465AB75E1E5E04BBF5046F16E0FD8223C68623D8A1195503AE296639EA6618AAEFD7E06DF0BF9C288B03A76FBCBB38C243164461E2B63CCEBDFC2A133C9FF098A354E309FBCFD93AFA80F007CD127295370EC97D2BA52559C7B7FCA3E5DDF5A2224ACDFE41D2E77446E23E344BD73BD84DD30E5C0C74E27D6981DE2E6D725A567266071A805DE5C6A2AA78E80A9278307C777DA72FC057CB1F75A636E0655AEF02F99FEFFDE701C
+[2025-12-09 14:43:52.572][000000027.882] I/user.ble_file_fota 处理写入数据 F000 F002 2FA735BDB0849ECDF7274BAA573388358B7F78CD1F8DD5F64C1A955B430D75A6F465AB75E1E5E04BBF5046F16E0FD8223C68623D8A1195503AE296639EA6618AAEFD7E06DF0BF9C288B03A76FBCBB38C243164461E2B63CCEBDFC2A133C9FF098A354E309FBCFD93AFA80F007CD127295370EC97D2BA52559C7B7FCA3E5DDF5A2224ACDFE41D2E77446E23E344BD73BD84DD30E5C0C74E27D6981DE2E6D725A567266071A805DE5C6A2AA78E80A9278307C777DA72FC057CB1F75A636E0655AEF02F99FEFFDE701C 400
+[2025-12-09 14:43:52.588][000000027.883] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:52.595][000000027.883] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:52.605][000000027.883] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:52.615][000000027.883] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:52.626][000000027.908] I/user.FOTA_DATA 数据写入成功,当前总计: 2800 字节
+[2025-12-09 14:43:52.686][000000028.051] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:52.697][000000028.052] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:52.708][000000028.052] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:52.717][000000028.052] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:52.727][000000028.052] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:52.738][000000028.054] I/user.BLE 收到写请求: F000 F002 6DAB482BEA2153C5381AE0282FF0C0EE3064D10F71F1F1C578D00E75833EAF0F3877DA8F09749CD10ED7E3582E6115D9383D06ECD21AA7C60BDB754624F53D4790D8C3541D1C8F4C9CFA92AFF9292642225D02D02097EC6725A8DEEAB878E5C66E659FDFC7D0FF13E1C06F34BFA967A7C81EB0851F9FFAB4A77D0DE110F6B0D1E8B8193B95862EDF0A6F23D6443ED26B094ACA3757391B5726D00E0EAFBF63685AD9C9FE5595F7814223AF6BF4D50899B622BD7AC11C95816A2540E8A043F96CECC53401DA8FA560
+[2025-12-09 14:43:52.748][000000028.054] I/user.ble_file_fota 处理写入数据 F000 F002 6DAB482BEA2153C5381AE0282FF0C0EE3064D10F71F1F1C578D00E75833EAF0F3877DA8F09749CD10ED7E3582E6115D9383D06ECD21AA7C60BDB754624F53D4790D8C3541D1C8F4C9CFA92AFF9292642225D02D02097EC6725A8DEEAB878E5C66E659FDFC7D0FF13E1C06F34BFA967A7C81EB0851F9FFAB4A77D0DE110F6B0D1E8B8193B95862EDF0A6F23D6443ED26B094ACA3757391B5726D00E0EAFBF63685AD9C9FE5595F7814223AF6BF4D50899B622BD7AC11C95816A2540E8A043F96CECC53401DA8FA560 400
+[2025-12-09 14:43:52.762][000000028.055] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:52.771][000000028.055] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:52.784][000000028.055] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:52.797][000000028.056] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:52.809][000000028.073] I/user.FOTA_DATA 数据写入成功,当前总计: 3000 字节
+[2025-12-09 14:43:52.872][000000028.225] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:52.884][000000028.225] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:52.893][000000028.226] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:52.903][000000028.226] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:52.913][000000028.226] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:52.927][000000028.227] I/user.BLE 收到写请求: F000 F002 5D925AA7B4D0D97993AF1C53DA1D092D141720A0AB7566B279B9A29604B76DF2E578D023EAE481D1784E925597DF2B82E234CF0FF4B3ECF2008316507EC2CEBD3D2D6967EE8984E000A1B3E44CABD30F0F66AF74B79107365098498346D57A6BC34832118FD2D30153BB266CA6C43B07E234A7BC228DC4A3DDF35DE4A4CAD682BCB32783933BFAB42500EAFE06E36090D1D618201A0793478F8A331EDAEA26879FD47164296C362C8562290B9A1358003F86440211516DE60781D924175FB7038B101EDA72E2FF7E
+[2025-12-09 14:43:52.939][000000028.229] I/user.ble_file_fota 处理写入数据 F000 F002 5D925AA7B4D0D97993AF1C53DA1D092D141720A0AB7566B279B9A29604B76DF2E578D023EAE481D1784E925597DF2B82E234CF0FF4B3ECF2008316507EC2CEBD3D2D6967EE8984E000A1B3E44CABD30F0F66AF74B79107365098498346D57A6BC34832118FD2D30153BB266CA6C43B07E234A7BC228DC4A3DDF35DE4A4CAD682BCB32783933BFAB42500EAFE06E36090D1D618201A0793478F8A331EDAEA26879FD47164296C362C8562290B9A1358003F86440211516DE60781D924175FB7038B101EDA72E2FF7E 400
+[2025-12-09 14:43:52.951][000000028.229] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:52.960][000000028.230] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:52.970][000000028.230] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:52.978][000000028.230] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:52.990][000000028.248] I/user.FOTA_DATA 数据写入成功,当前总计: 3200 字节
+[2025-12-09 14:43:53.090][000000028.445] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:53.098][000000028.445] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:53.108][000000028.446] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:53.122][000000028.446] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:53.129][000000028.446] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:53.138][000000028.448] I/user.BLE 收到写请求: F000 F002 C6ED9352E29483FE74144CFA5D8D849E2A9AFCDE915098F3F7A5BCC8555431EDC4924AB94FD102FBF554BFA79E070C1F5545AA2E923D06EAFA23FE90E9AB180331E5B7377B4C8B5B2C9AA19F7A6B20CE9B4A1F44DDDE5C1D2E192DE9D4657511DC7562465F2744CD117B2982FBC4FD85E62F1E06C142EF00CBE4236E9BD25A6B6F69E77A2C9C55C1156E82175C32F2FDC1D84670D86B8E7F13652BC15725A3EDA5C3C2C29A7A1DBDCE2A9DCE5658536BCD015DD658CBAFF5516D2AA48A505190A393FC1BE5EC8C9B
+[2025-12-09 14:43:53.146][000000028.448] I/user.ble_file_fota 处理写入数据 F000 F002 C6ED9352E29483FE74144CFA5D8D849E2A9AFCDE915098F3F7A5BCC8555431EDC4924AB94FD102FBF554BFA79E070C1F5545AA2E923D06EAFA23FE90E9AB180331E5B7377B4C8B5B2C9AA19F7A6B20CE9B4A1F44DDDE5C1D2E192DE9D4657511DC7562465F2744CD117B2982FBC4FD85E62F1E06C142EF00CBE4236E9BD25A6B6F69E77A2C9C55C1156E82175C32F2FDC1D84670D86B8E7F13652BC15725A3EDA5C3C2C29A7A1DBDCE2A9DCE5658536BCD015DD658CBAFF5516D2AA48A505190A393FC1BE5EC8C9B 400
+[2025-12-09 14:43:53.156][000000028.449] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:53.164][000000028.449] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:53.174][000000028.449] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:53.184][000000028.450] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:53.192][000000028.468] I/user.FOTA_DATA 数据写入成功,当前总计: 3400 字节
+[2025-12-09 14:43:53.260][000000028.620] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:53.269][000000028.621] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:53.280][000000028.621] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:53.291][000000028.621] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:53.300][000000028.621] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:53.313][000000028.623] I/user.BLE 收到写请求: F000 F002 A70F29FAA6721203B03486B6A99CAAC0FFFD66C89C5D4C9ED13CA10C36792C3DA8018B478CBEBFB7157D420D4A6AEF76ABFC111C64077F374AF3111AE30997393F04720EAFEC3B7578DC816FFE893C450DFD1440973A4CEFC1D78D9C682EB5F5386EE60498C89DDD43C3655CC63794CEC9B40CECC537E859C5B0DE47DBE84F9CB48FA7BBF039BEA4A8BF661ADEA46FFFBC5C43AC8FC1D7AAB02C0F7E81C5413F803B2CC3F21F1CDD0C4DB9055F31C22B94290C3D5FDB960DDC324EEE9F63AD9D0503EF65EE0C555B
+[2025-12-09 14:43:53.321][000000028.624] I/user.ble_file_fota 处理写入数据 F000 F002 A70F29FAA6721203B03486B6A99CAAC0FFFD66C89C5D4C9ED13CA10C36792C3DA8018B478CBEBFB7157D420D4A6AEF76ABFC111C64077F374AF3111AE30997393F04720EAFEC3B7578DC816FFE893C450DFD1440973A4CEFC1D78D9C682EB5F5386EE60498C89DDD43C3655CC63794CEC9B40CECC537E859C5B0DE47DBE84F9CB48FA7BBF039BEA4A8BF661ADEA46FFFBC5C43AC8FC1D7AAB02C0F7E81C5413F803B2CC3F21F1CDD0C4DB9055F31C22B94290C3D5FDB960DDC324EEE9F63AD9D0503EF65EE0C555B 400
+[2025-12-09 14:43:53.332][000000028.624] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:53.343][000000028.625] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:53.352][000000028.625] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:53.363][000000028.625] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:53.376][000000028.646] I/user.FOTA_DATA 数据写入成功,当前总计: 3600 字节
+[2025-12-09 14:43:53.432][000000028.793] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:53.440][000000028.793] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:53.451][000000028.794] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:53.460][000000028.794] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:53.468][000000028.794] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:53.477][000000028.795] I/user.BLE 收到写请求: F000 F002 BA6E163C2CD19D7647F897C4C0AC4A444B786E9515E397BCDB2B9BC041396371F39B5A8424D38A207EA5F50D0459914BA061BB99D2878C2766E9202A3561E3F452EFBF851081AA69A47B4BDB1BA016DAD805870C608895DE829582F0819AD58E57A958239CD5D6CAFB9CF9A394147BC601E44E4552C81B2360B5BC1B0D072E8C78076E91C699C048284D1A42B278FDF25FDDE90747B24A439601CA191D4FF8D836048BBB636E77B3C01B882AF7835E1430B95DBBDE0ECE12A8F1CC3EB593F68BC5D2D4C8D62A29A0
+[2025-12-09 14:43:53.488][000000028.796] I/user.ble_file_fota 处理写入数据 F000 F002 BA6E163C2CD19D7647F897C4C0AC4A444B786E9515E397BCDB2B9BC041396371F39B5A8424D38A207EA5F50D0459914BA061BB99D2878C2766E9202A3561E3F452EFBF851081AA69A47B4BDB1BA016DAD805870C608895DE829582F0819AD58E57A958239CD5D6CAFB9CF9A394147BC601E44E4552C81B2360B5BC1B0D072E8C78076E91C699C048284D1A42B278FDF25FDDE90747B24A439601CA191D4FF8D836048BBB636E77B3C01B882AF7835E1430B95DBBDE0ECE12A8F1CC3EB593F68BC5D2D4C8D62A29A0 400
+[2025-12-09 14:43:53.501][000000028.797] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:53.512][000000028.797] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:53.521][000000028.797] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:53.531][000000028.797] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:53.543][000000028.817] I/user.FOTA_DATA 数据写入成功,当前总计: 3800 字节
+[2025-12-09 14:43:53.619][000000028.970] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:53.627][000000028.970] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:53.641][000000028.971] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:53.657][000000028.971] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:53.667][000000028.971] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:53.676][000000028.972] I/user.BLE 收到写请求: F000 F002 0F4478DEB2E9F8BD5AC553678D96E05AB73C3323247D56BEE527EA8FCC6F3796D065F6696779BAB46F7A33A98EF7156E8E620516936A8EC48701DD50660E84879BD8F89DB833C7F5797D085ADAAEEA64F93EE711E56DE028A5DC6746E8BAD577630F8268F7294159A50E81C7AAAE036347BD4B02ACD4DD9850EF2B59EB91A75CC6F1C6FCAA39A14D3749C62E6BD0C24C5BE7B30BF20DBA13F34DD4C48E382F7029F18B0F17C5D39CA50902A5B55B733D3860DC9317515AF65A444DAD1404B924FAB5A0143AB597D5
+[2025-12-09 14:43:53.689][000000028.973] I/user.ble_file_fota 处理写入数据 F000 F002 0F4478DEB2E9F8BD5AC553678D96E05AB73C3323247D56BEE527EA8FCC6F3796D065F6696779BAB46F7A33A98EF7156E8E620516936A8EC48701DD50660E84879BD8F89DB833C7F5797D085ADAAEEA64F93EE711E56DE028A5DC6746E8BAD577630F8268F7294159A50E81C7AAAE036347BD4B02ACD4DD9850EF2B59EB91A75CC6F1C6FCAA39A14D3749C62E6BD0C24C5BE7B30BF20DBA13F34DD4C48E382F7029F18B0F17C5D39CA50902A5B55B733D3860DC9317515AF65A444DAD1404B924FAB5A0143AB597D5 400
+[2025-12-09 14:43:53.699][000000028.974] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:53.710][000000028.974] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:53.725][000000028.974] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:53.738][000000028.974] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:53.749][000000028.995] I/user.FOTA_DATA 数据写入成功,当前总计: 4000 字节
+[2025-12-09 14:43:53.790][000000029.147] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:53.799][000000029.147] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:53.812][000000029.148] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:53.823][000000029.148] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:53.832][000000029.148] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:53.842][000000029.149] I/user.BLE 收到写请求: F000 F002 A3D259FCC5EB3774A2586E5D400FEADA077435A68F6E29B78604E1E26DAFAADBFFB5477713DB9F1531AEF4E587BC82CDCA6098B2DFFAB6CF7559B3E3D6911C5D50DE4B340E630A38C44E652DD5FC48CB7DE00CC83C07E2050BBD56F046579EB4608DDF9B632B9AC1F8EF1054021F4706112B9C143AB85ECE86B631D656826C7EB53468CF860322915FE9009A7492AFCE2E8F5E4DE18FE3D32E7ED56B4DA55D8B0C94AA319A7F48569D17E9BCBCD579E31BBE9958D56B13546ACA87B156569A9AFD200955E6ABB487
+[2025-12-09 14:43:53.853][000000029.150] I/user.ble_file_fota 处理写入数据 F000 F002 A3D259FCC5EB3774A2586E5D400FEADA077435A68F6E29B78604E1E26DAFAADBFFB5477713DB9F1531AEF4E587BC82CDCA6098B2DFFAB6CF7559B3E3D6911C5D50DE4B340E630A38C44E652DD5FC48CB7DE00CC83C07E2050BBD56F046579EB4608DDF9B632B9AC1F8EF1054021F4706112B9C143AB85ECE86B631D656826C7EB53468CF860322915FE9009A7492AFCE2E8F5E4DE18FE3D32E7ED56B4DA55D8B0C94AA319A7F48569D17E9BCBCD579E31BBE9958D56B13546ACA87B156569A9AFD200955E6ABB487 400
+[2025-12-09 14:43:53.861][000000029.151] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:53.873][000000029.151] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:53.882][000000029.151] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:53.890][000000029.152] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:53.902][000000029.186] I/user.FOTA_DATA 数据写入成功,当前总计: 4200 字节
+[2025-12-09 14:43:53.961][000000029.320] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:53.972][000000029.320] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:53.982][000000029.321] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:53.993][000000029.321] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:54.005][000000029.321] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:54.017][000000029.323] I/user.BLE 收到写请求: F000 F002 6BE5E55BDC5204A19BFE2E7C205B5BE81F683ADCD8ACD5A202DBF521EC0C1EBBDCA27409534EFD7CCE4AEEF3CA58C8543C6AF43C86F2F6485A9AB4B544D9C19D83A989A05D8994F154001A5F542439910754539430A2688B69873D4168FB5EB756D6900770B03051B92799ADE2BC52655B1BAF9A14D03274EBC4C330C19DA0E6FF34ECA92F43CA5D50CE7B226D345520EA49F859681CC1F46F800696D2015E72EFEE01403414DF534740FF5B80F63959173834C43D7B037629A98051F8A0EAB7D101F0707797EA9A
+[2025-12-09 14:43:54.029][000000029.323] I/user.ble_file_fota 处理写入数据 F000 F002 6BE5E55BDC5204A19BFE2E7C205B5BE81F683ADCD8ACD5A202DBF521EC0C1EBBDCA27409534EFD7CCE4AEEF3CA58C8543C6AF43C86F2F6485A9AB4B544D9C19D83A989A05D8994F154001A5F542439910754539430A2688B69873D4168FB5EB756D6900770B03051B92799ADE2BC52655B1BAF9A14D03274EBC4C330C19DA0E6FF34ECA92F43CA5D50CE7B226D345520EA49F859681CC1F46F800696D2015E72EFEE01403414DF534740FF5B80F63959173834C43D7B037629A98051F8A0EAB7D101F0707797EA9A 400
+[2025-12-09 14:43:54.038][000000029.324] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:54.048][000000029.324] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:54.057][000000029.325] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:54.068][000000029.325] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:54.078][000000029.385] I/user.FOTA_DATA 数据写入成功,当前总计: 4400 字节
+[2025-12-09 14:43:54.133][000000029.497] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:54.142][000000029.497] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:54.152][000000029.498] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:54.161][000000029.498] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:54.172][000000029.498] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:54.182][000000029.499] I/user.BLE 收到写请求: F000 F002 D7DA355A9083EC81CC3C089D1C9BA096727287A2F7F602CE5522E7590298B738600571BBEEE96A32941EF147EA8A77097838974851483E37C861B14DB7CE8761152A56E49C515D11923B97AC78E02F1ADFA6DFAC1CDF2405D3B7E6DE41C2C97725F1015EF748DA755A10905024A4D721535B3522838050DBA769090E5D9008B8C31F312C20A7A1F3EFED4987AF28BEE4C03E8FCBC8625CF17DE0B4BDB28A71F2AFD9C1F6E624A5890F1D6CB75526E2E512A695F3D99DC6D4452A4FBE7251F10AAC794C5374C5BE99
+[2025-12-09 14:43:54.190][000000029.500] I/user.ble_file_fota 处理写入数据 F000 F002 D7DA355A9083EC81CC3C089D1C9BA096727287A2F7F602CE5522E7590298B738600571BBEEE96A32941EF147EA8A77097838974851483E37C861B14DB7CE8761152A56E49C515D11923B97AC78E02F1ADFA6DFAC1CDF2405D3B7E6DE41C2C97725F1015EF748DA755A10905024A4D721535B3522838050DBA769090E5D9008B8C31F312C20A7A1F3EFED4987AF28BEE4C03E8FCBC8625CF17DE0B4BDB28A71F2AFD9C1F6E624A5890F1D6CB75526E2E512A695F3D99DC6D4452A4FBE7251F10AAC794C5374C5BE99 400
+[2025-12-09 14:43:54.202][000000029.501] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:54.215][000000029.501] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:54.223][000000029.501] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:54.237][000000029.502] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:54.248][000000029.513] I/user.FOTA_DATA 数据写入成功,当前总计: 4600 字节
+[2025-12-09 14:43:54.305][000000029.669] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:54.318][000000029.669] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:54.330][000000029.670] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:54.342][000000029.670] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:54.352][000000029.670] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:54.364][000000029.672] I/user.BLE 收到写请求: F000 F002 F5392A156093A3FC708F821DAA16652202A12307D226875F97319CD5A92B65A6314E5519BD42E5DB61F14C8DA38A84ADDE240D50AF43B04DD28A11BE7380BD17EF28101AF040CD8D18236076516280E6D1C4715BB4331D3B0678F82E3DA831F471517209FD6092D7C193A92F1FAD1596E77AE0FE3EA6551BF45C3B9CB79991DFB7135CD6B9FFA8F81E6BABE6F979350DF254C76EB3700B4FC6FCD7C64A48301B9651BE65B6D8344AB5FF077966352CD781598D2A22E1670BE58914F441126E5EE00E86EB80473F02
+[2025-12-09 14:43:54.377][000000029.672] I/user.ble_file_fota 处理写入数据 F000 F002 F5392A156093A3FC708F821DAA16652202A12307D226875F97319CD5A92B65A6314E5519BD42E5DB61F14C8DA38A84ADDE240D50AF43B04DD28A11BE7380BD17EF28101AF040CD8D18236076516280E6D1C4715BB4331D3B0678F82E3DA831F471517209FD6092D7C193A92F1FAD1596E77AE0FE3EA6551BF45C3B9CB79991DFB7135CD6B9FFA8F81E6BABE6F979350DF254C76EB3700B4FC6FCD7C64A48301B9651BE65B6D8344AB5FF077966352CD781598D2A22E1670BE58914F441126E5EE00E86EB80473F02 400
+[2025-12-09 14:43:54.387][000000029.673] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:54.397][000000029.673] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:54.410][000000029.673] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:54.419][000000029.674] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:54.428][000000029.688] I/user.FOTA_DATA 数据写入成功,当前总计: 4800 字节
+[2025-12-09 14:43:54.523][000000029.884] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:54.534][000000029.885] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:54.546][000000029.885] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:54.557][000000029.885] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:54.568][000000029.885] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:54.582][000000029.887] I/user.BLE 收到写请求: F000 F002 A79FFA80A5085511747E3225520E5E7EA9EB4197F064C508002E59A86BE8E01D452C4D901B5750A2F22B3F2C06EAA13EDC89CA3BA47519C06AC0314F12E502A56ABD7C0BFF6B38554945124DCC89A91303EABF303E9E9A770F356F1C40556467439AB6EF85EAC9BCA0400889115454620D304AF5E0DBA8F6B081501D850F7E9C773841683C448C7F88DA350A54C78FAB18FE3EC6EB9F815B5AE4D275949978C7B715E6EE1A3CD1089A562E013D1F8F06B82ED55ADA0807A8B3A569BD3571F314D31E7E15FD127C1A
+[2025-12-09 14:43:54.593][000000029.887] I/user.ble_file_fota 处理写入数据 F000 F002 A79FFA80A5085511747E3225520E5E7EA9EB4197F064C508002E59A86BE8E01D452C4D901B5750A2F22B3F2C06EAA13EDC89CA3BA47519C06AC0314F12E502A56ABD7C0BFF6B38554945124DCC89A91303EABF303E9E9A770F356F1C40556467439AB6EF85EAC9BCA0400889115454620D304AF5E0DBA8F6B081501D850F7E9C773841683C448C7F88DA350A54C78FAB18FE3EC6EB9F815B5AE4D275949978C7B715E6EE1A3CD1089A562E013D1F8F06B82ED55ADA0807A8B3A569BD3571F314D31E7E15FD127C1A 400
+[2025-12-09 14:43:54.606][000000029.888] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:54.615][000000029.888] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:54.628][000000029.889] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:54.637][000000029.889] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:54.646][000000029.903] I/user.FOTA_DATA 数据写入成功,当前总计: 5000 字节
+[2025-12-09 14:43:54.711][000000030.065] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:54.718][000000030.065] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:54.727][000000030.066] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:54.737][000000030.066] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:54.746][000000030.066] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:54.754][000000030.068] I/user.BLE 收到写请求: F000 F002 2039CF1E3E8982802E6F4EF78A2F8937794B315244FED3E2BFF073BCD2295FDF5389962FFCAB8366426A2761C52660A65E1F1DE4A43755B931638B893755C50FB98AEDE6C47A0F1FB7409F35E9D643B92D2FFFB83B7D4DF089A5B4D59E11F4C3EE1880FAFBA4734084172B980851667F0D9B4CAE42D0201B2EB499C54081C88D4047AF4FA7F78942DE71EA1F83ED968C06FA3A9535A84161E68CD2BD1AC86DF97D10FD024D6EC66716F0813BA243F9BACB624F68B7D4EBF478B0761F5CA0F3017703B761E054E4B4
+[2025-12-09 14:43:54.766][000000030.069] I/user.ble_file_fota 处理写入数据 F000 F002 2039CF1E3E8982802E6F4EF78A2F8937794B315244FED3E2BFF073BCD2295FDF5389962FFCAB8366426A2761C52660A65E1F1DE4A43755B931638B893755C50FB98AEDE6C47A0F1FB7409F35E9D643B92D2FFFB83B7D4DF089A5B4D59E11F4C3EE1880FAFBA4734084172B980851667F0D9B4CAE42D0201B2EB499C54081C88D4047AF4FA7F78942DE71EA1F83ED968C06FA3A9535A84161E68CD2BD1AC86DF97D10FD024D6EC66716F0813BA243F9BACB624F68B7D4EBF478B0761F5CA0F3017703B761E054E4B4 400
+[2025-12-09 14:43:54.775][000000030.069] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:54.782][000000030.070] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:54.791][000000030.073] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:54.799][000000030.073] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:54.808][000000030.091] I/user.FOTA_DATA 数据写入成功,当前总计: 5200 字节
+[2025-12-09 14:43:54.882][000000030.238] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:54.890][000000030.238] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:54.905][000000030.239] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:54.914][000000030.239] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:54.921][000000030.239] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:54.931][000000030.241] I/user.BLE 收到写请求: F000 F002 25A7790B57C027D592D7C8C2BDCCBDD92322073E65330C3CCFE304B2A09197AB526EB517FEA520F87511FA17588F727D09994EFCB1945DCDAAAFEA1EC1A57B56C929FC47DAE333CF469ED2A3932DEE0F13D2B8D8DE28FDF4371AE9B89185486E88197B68BFCCDB392C256D1E8EF08F2D4D905D3D4E6B7326277F0A7F5BDB463C93500D630D0D8D715B826297DE265B0D7A81A82F6D06319E01D61DBBBC639A846094CE433EEFFF44B2EBA36E56CDFA2A0E100229DA1C5685A19D7E30AA8A5CD16F3FB4E6F2EF0606
+[2025-12-09 14:43:54.939][000000030.241] I/user.ble_file_fota 处理写入数据 F000 F002 25A7790B57C027D592D7C8C2BDCCBDD92322073E65330C3CCFE304B2A09197AB526EB517FEA520F87511FA17588F727D09994EFCB1945DCDAAAFEA1EC1A57B56C929FC47DAE333CF469ED2A3932DEE0F13D2B8D8DE28FDF4371AE9B89185486E88197B68BFCCDB392C256D1E8EF08F2D4D905D3D4E6B7326277F0A7F5BDB463C93500D630D0D8D715B826297DE265B0D7A81A82F6D06319E01D61DBBBC639A846094CE433EEFFF44B2EBA36E56CDFA2A0E100229DA1C5685A19D7E30AA8A5CD16F3FB4E6F2EF0606 400
+[2025-12-09 14:43:54.949][000000030.242] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:54.957][000000030.242] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:54.967][000000030.242] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:54.978][000000030.243] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:54.987][000000030.256] I/user.FOTA_DATA 数据写入成功,当前总计: 5400 字节
+[2025-12-09 14:43:55.021][000000030.383] I/user.fota version 001.000.000
+[2025-12-09 14:43:55.053][000000030.414] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:55.063][000000030.414] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:55.076][000000030.415] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:55.090][000000030.415] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:55.104][000000030.415] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:55.114][000000030.416] I/user.BLE 收到写请求: F000 F002 F866A14308D15F799B57A465462922B99F42A0EF8911C9A6CAF5F4BAB34A7DC4909E70E3E0D07A70984726604001FC9BE18E1D973B57FD29C8D29EB6830821BC63B59F0501ED48A33F83433589DEA55C7B42516996A1C0FC930C00456BB72B9096F1525E3054C97B15D820B30D629882D054AFD396757A5CBF722303312D30F897D9C5906F87BDA16BB377CD2901DD5D31853757A2C0DCF856DF62D0BFE8D00C3CF221F7E0D05A057C7F6C9528A2DC9119EACE8FD76D4B8BB2CE5233CC46239BC8E96600E5431810
+[2025-12-09 14:43:55.124][000000030.417] I/user.ble_file_fota 处理写入数据 F000 F002 F866A14308D15F799B57A465462922B99F42A0EF8911C9A6CAF5F4BAB34A7DC4909E70E3E0D07A70984726604001FC9BE18E1D973B57FD29C8D29EB6830821BC63B59F0501ED48A33F83433589DEA55C7B42516996A1C0FC930C00456BB72B9096F1525E3054C97B15D820B30D629882D054AFD396757A5CBF722303312D30F897D9C5906F87BDA16BB377CD2901DD5D31853757A2C0DCF856DF62D0BFE8D00C3CF221F7E0D05A057C7F6C9528A2DC9119EACE8FD76D4B8BB2CE5233CC46239BC8E96600E5431810 400
+[2025-12-09 14:43:55.141][000000030.418] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:55.159][000000030.418] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:55.174][000000030.418] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:55.186][000000030.419] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:55.203][000000030.435] I/user.FOTA_DATA 数据写入成功,当前总计: 5600 字节
+[2025-12-09 14:43:55.271][000000030.632] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:55.279][000000030.632] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:55.289][000000030.633] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:55.299][000000030.633] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:55.309][000000030.633] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:55.321][000000030.635] I/user.BLE 收到写请求: F000 F002 273DCFAB5EB90608BD68CAE92F476307ED47CDB1FADB8F59AF83250DA720FD56B627A93D781456D69C19065CEC4130386A9817A0CFFBCF475779C15E22BC0E01D7C6DC447E315EA16CB207B814AD2035A4E8D403F3EEA12EDF088D8D32ABD17E77C44A62669DFE802CF1D876AE0BA4500F8BC0B1A83CFCA11B8828367D36BC7DC13F8C5D407E01F5B5D63B697F450A23BAC77868E86AE6D15F7605CD2AD4327A12367F4894071C247E88950D6B67DB33DBF1D97C3CFEF90059E74ECFD17584B08219639DC025B361
+[2025-12-09 14:43:55.331][000000030.635] I/user.ble_file_fota 处理写入数据 F000 F002 273DCFAB5EB90608BD68CAE92F476307ED47CDB1FADB8F59AF83250DA720FD56B627A93D781456D69C19065CEC4130386A9817A0CFFBCF475779C15E22BC0E01D7C6DC447E315EA16CB207B814AD2035A4E8D403F3EEA12EDF088D8D32ABD17E77C44A62669DFE802CF1D876AE0BA4500F8BC0B1A83CFCA11B8828367D36BC7DC13F8C5D407E01F5B5D63B697F450A23BAC77868E86AE6D15F7605CD2AD4327A12367F4894071C247E88950D6B67DB33DBF1D97C3CFEF90059E74ECFD17584B08219639DC025B361 400
+[2025-12-09 14:43:55.342][000000030.636] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:55.348][000000030.636] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:55.358][000000030.636] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:55.368][000000030.637] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:55.378][000000030.652] I/user.FOTA_DATA 数据写入成功,当前总计: 5800 字节
+[2025-12-09 14:43:55.443][000000030.808] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:55.451][000000030.808] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:55.461][000000030.809] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:55.469][000000030.809] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:55.480][000000030.809] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:55.487][000000030.810] I/user.BLE 收到写请求: F000 F002 E16CA5457002B97D974F7F2314C9B30D52D58590364540B48C25334DED75C8F2395E52ABE5DFAA4A09A4066CA468E096201482BDBFE1686DF0EA1A27CEAC722337CCD7B98D0B3074B4C55D44C9D749D0A88F14CFD2247412C2F025DD7208C3E9BCDCCE2D9ED8CEA0EF23DD04CC780683C2A5895AFA3731DBAA3A450C6FB5E11D2BE7DE651F75AB461427C26881CB139B0A7D276B8569B1C8D5ADCCC11625652DEEDEE827C5B29A80F19ADE004DFC8F21BD87C6AA7DCB4F60B6E162CAF9A5E62886A49C50FBBAF959
+[2025-12-09 14:43:55.501][000000030.811] I/user.ble_file_fota 处理写入数据 F000 F002 E16CA5457002B97D974F7F2314C9B30D52D58590364540B48C25334DED75C8F2395E52ABE5DFAA4A09A4066CA468E096201482BDBFE1686DF0EA1A27CEAC722337CCD7B98D0B3074B4C55D44C9D749D0A88F14CFD2247412C2F025DD7208C3E9BCDCCE2D9ED8CEA0EF23DD04CC780683C2A5895AFA3731DBAA3A450C6FB5E11D2BE7DE651F75AB461427C26881CB139B0A7D276B8569B1C8D5ADCCC11625652DEEDEE827C5B29A80F19ADE004DFC8F21BD87C6AA7DCB4F60B6E162CAF9A5E62886A49C50FBBAF959 400
+[2025-12-09 14:43:55.513][000000030.812] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:55.524][000000030.812] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:55.535][000000030.812] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:55.547][000000030.812] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:55.559][000000030.828] I/user.FOTA_DATA 数据写入成功,当前总计: 6000 字节
+[2025-12-09 14:43:55.614][000000030.980] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:55.624][000000030.980] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:55.636][000000030.981] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:55.644][000000030.981] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:55.655][000000030.981] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:55.666][000000030.982] I/user.BLE 收到写请求: F000 F002 8D6EFD873A5DAC4E398D88153FE9218962D9E75EFD381E5DD1C0B7A3FF565F3758352CD44841F5FFCA829E825ECABC359B996C6C0497D406DC6C5A81C43F941F2498AC674911BECFCBBD1A096B26C705BAA46EFE9EA3B59DFB364C463D990C6674FB2AAB8A5CFA01F8B234EEE49313B13AD3374C00AACA533D86C100E758A0ABBBB390D34FAC4C073C761AFA5B4FB0202B10E52E60A001CFA8F47BF9A82708CB2117C0B3A7C0A7DE779A4053DCA875105ACDEFC504C8BD3EE679ADFD46E18DCCA5BCDE70D7090A79
+[2025-12-09 14:43:55.675][000000030.983] I/user.ble_file_fota 处理写入数据 F000 F002 8D6EFD873A5DAC4E398D88153FE9218962D9E75EFD381E5DD1C0B7A3FF565F3758352CD44841F5FFCA829E825ECABC359B996C6C0497D406DC6C5A81C43F941F2498AC674911BECFCBBD1A096B26C705BAA46EFE9EA3B59DFB364C463D990C6674FB2AAB8A5CFA01F8B234EEE49313B13AD3374C00AACA533D86C100E758A0ABBBB390D34FAC4C073C761AFA5B4FB0202B10E52E60A001CFA8F47BF9A82708CB2117C0B3A7C0A7DE779A4053DCA875105ACDEFC504C8BD3EE679ADFD46E18DCCA5BCDE70D7090A79 400
+[2025-12-09 14:43:55.689][000000030.984] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:55.700][000000030.984] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:55.708][000000030.984] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:55.718][000000030.984] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:55.729][000000030.999] I/user.FOTA_DATA 数据写入成功,当前总计: 6200 字节
+[2025-12-09 14:43:55.804][000000031.157] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:55.811][000000031.157] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:55.818][000000031.158] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:55.832][000000031.158] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:55.842][000000031.158] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:55.855][000000031.160] I/user.BLE 收到写请求: F000 F002 4A63D97FF5A93D477A75BD3B62DDB3F27D9657F6CE01F41645B735B2C4697B78198700C2738FAEF9A07E119AF56D0347F3166FC67AC5B90C7B5CD241EA3A3C52D0C7E186846785ED377AD9BD4F6F12FA208C5E108B246037653A371224C4255F8BAA9873EC667F632072FF09B42E3D7865D8AC39B80A0505ACB6AE952B265F8BAD0EAEC701EBA1BB752BC7E885A4F62C769F3E943CC7448E9F189F924F62B5C06FE950E992CF638FC999A42AE824046EF1F29A4F8EAF77E6B707E0E2F9CD88A317D8237DC676F68C
+[2025-12-09 14:43:55.866][000000031.160] I/user.ble_file_fota 处理写入数据 F000 F002 4A63D97FF5A93D477A75BD3B62DDB3F27D9657F6CE01F41645B735B2C4697B78198700C2738FAEF9A07E119AF56D0347F3166FC67AC5B90C7B5CD241EA3A3C52D0C7E186846785ED377AD9BD4F6F12FA208C5E108B246037653A371224C4255F8BAA9873EC667F632072FF09B42E3D7865D8AC39B80A0505ACB6AE952B265F8BAD0EAEC701EBA1BB752BC7E885A4F62C769F3E943CC7448E9F189F924F62B5C06FE950E992CF638FC999A42AE824046EF1F29A4F8EAF77E6B707E0E2F9CD88A317D8237DC676F68C 400
+[2025-12-09 14:43:55.877][000000031.161] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:55.888][000000031.161] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:55.902][000000031.162] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:55.910][000000031.162] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:55.922][000000031.229] I/user.FOTA_DATA 数据写入成功,当前总计: 6400 字节
+[2025-12-09 14:43:55.978][000000031.332] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:55.988][000000031.332] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:55.999][000000031.333] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:56.010][000000031.333] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:56.018][000000031.333] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:43:56.032][000000031.334] I/user.BLE 收到写请求: F000 F002 3AFFDF6E0E4B066DE6A80AF26C638752480CB2805DB597D7DBC8517F9BF383F6EAB90AA871C7C3BBEC893F5EF83F9A11DC2A6B037C20695FA1A612FBC4EFF0C3C73B06241AD49330A226465C0705572BEB57ABE04034739641974ED16ACB06C6AB6036E04EC55EDC011B4ECC42D44D0B0160F7F8EE32BB034AED332E7D18782113D98858FC681DE3EA6A0B08ABAD712D4ED878BBD3935179A6434D9E21040BDCF1777F923F706F9B7440CB5D58784F28891CDE4E9356B4062B7AAED398A5727762BA10429134D006
+[2025-12-09 14:43:56.043][000000031.335] I/user.ble_file_fota 处理写入数据 F000 F002 3AFFDF6E0E4B066DE6A80AF26C638752480CB2805DB597D7DBC8517F9BF383F6EAB90AA871C7C3BBEC893F5EF83F9A11DC2A6B037C20695FA1A612FBC4EFF0C3C73B06241AD49330A226465C0705572BEB57ABE04034739641974ED16ACB06C6AB6036E04EC55EDC011B4ECC42D44D0B0160F7F8EE32BB034AED332E7D18782113D98858FC681DE3EA6A0B08ABAD712D4ED878BBD3935179A6434D9E21040BDCF1777F923F706F9B7440CB5D58784F28891CDE4E9356B4062B7AAED398A5727762BA10429134D006 400
+[2025-12-09 14:43:56.051][000000031.336] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:56.064][000000031.336] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:56.075][000000031.336] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:43:56.082][000000031.336] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:56.092][000000031.354] I/user.FOTA_DATA 数据写入成功,当前总计: 6600 字节
+[2025-12-09 14:43:56.150][000000031.505] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:56.161][000000031.505] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:56.172][000000031.506] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:56.184][000000031.506] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:43:56.193][000000031.506] I/user.BLE_EVENT 数据长度: 191 字节
+[2025-12-09 14:43:56.204][000000031.507] I/user.BLE 收到写请求: F000 F002 707A137AE1B5F44B2AB40344A31ABFD272658424F0012C35BEE76B0869E6C61BE6232D58B976CB6E74F48C6161819EEA21BF257DD2136559E98A6DE63B0B4303FFA3F4C35CB4663B7118ED440B27474855F07C97AEB54B5448E3463A63A6C25DC5FF6ACB48D678E88515E34020A0B36B1D0553CCA70B4DC41BE54010968B6B535E716E1DFCCB500031B675CD1231701CA08E8002D79A07F80BD24D0EDC210AB9739E19461637A86AA4F64C5F7B878180B4DB18516A9D5A1473603E78782700
+[2025-12-09 14:43:56.218][000000031.508] I/user.ble_file_fota 处理写入数据 F000 F002 707A137AE1B5F44B2AB40344A31ABFD272658424F0012C35BEE76B0869E6C61BE6232D58B976CB6E74F48C6161819EEA21BF257DD2136559E98A6DE63B0B4303FFA3F4C35CB4663B7118ED440B27474855F07C97AEB54B5448E3463A63A6C25DC5FF6ACB48D678E88515E34020A0B36B1D0553CCA70B4DC41BE54010968B6B535E716E1DFCCB500031B675CD1231701CA08E8002D79A07F80BD24D0EDC210AB9739E19461637A86AA4F64C5F7B878180B4DB18516A9D5A1473603E78782700 382
+[2025-12-09 14:43:56.231][000000031.509] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:43:56.242][000000031.509] I/user.ble_file_fota 数据特征值匹配,处理数据
+[2025-12-09 14:43:56.251][000000031.509] I/user.FOTA_DATA 收到数据包,长度: 191 字节
+[2025-12-09 14:43:56.259][000000031.509] I/user.FOTA_DATA 写入文件: /ble_fota.bin
+[2025-12-09 14:43:56.275][000000031.526] I/user.FOTA_DATA 升级进度: 100 % ( 6791 / 6791 )
+[2025-12-09 14:43:56.285][000000031.526] I/user.FOTA_DATA 数据写入成功,当前总计: 6791 字节
+[2025-12-09 14:43:56.322][000000031.678] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:43:56.334][000000031.678] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:43:56.345][000000031.679] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:43:56.358][000000031.679] I/user.BLE_EVENT 特征值UUID: F001
+[2025-12-09 14:43:56.373][000000031.679] I/user.BLE_EVENT 数据长度: 1 字节
+[2025-12-09 14:43:56.382][000000031.680] I/user.BLE 收到写请求: F000 F001 02
+[2025-12-09 14:43:56.395][000000031.680] I/user.ble_file_fota 处理写入数据 F000 F001 02 2
+[2025-12-09 14:43:56.408][000000031.681] I/user.ble_file_fota UUID匹配结果: 服务匹配: 1 命令匹配: 1 数据匹配: nil
+[2025-12-09 14:43:56.419][000000031.681] I/user.ble_file_fota 命令特征值匹配,处理命令
+[2025-12-09 14:43:56.427][000000031.682] I/user.FOTA_CMD 收到命令数据: 02 长度: 1
+[2025-12-09 14:43:56.436][000000031.682] I/user.FOTA_CMD 解析命令码: 2 (0x02)
+[2025-12-09 14:43:56.449][000000031.682] I/user.FOTA_CMD 处理结束升级命令
+[2025-12-09 14:43:56.459][000000031.683] I/user.FOTA_CMD 验证文件完整性...
+[2025-12-09 14:43:56.472][000000031.683] I/user.FOTA_CMD 已接收: 6791 字节
+[2025-12-09 14:43:56.484][000000031.683] I/user.FOTA_CMD 应接收: 6791 字节
+[2025-12-09 14:43:56.496][000000031.683] I/user.FOTA_CMD 文件完整性验证通过
+[2025-12-09 14:43:56.509][000000031.684] I/user.FOTA_CMD 开始执行FOTA升级...
+[2025-12-09 14:43:56.521][000000031.686] I/fota write common data
+[2025-12-09 14:43:56.532][000000031.745] I/fota common data done, now checking 0
+[2025-12-09 14:43:56.545][000000031.747] I/fota common data md5 ok
+[2025-12-09 14:43:56.558][000000031.748] I/fota only common data
+[2025-12-09 14:43:56.568][000000031.773] I/fota fota type 0 ok!, wait reboot
+[2025-12-09 14:43:56.582][000000031.774] I/user.FOTA_CMD FOTA升级结果: result: true isDone: true
+[2025-12-09 14:43:56.594][000000031.774] I/user.FOTA_CMD  FOTA升级成功!
+[2025-12-09 14:43:56.608][000000031.775] I/user.FOTA_CMD 2秒后设备将自动重启...
+[2025-12-09 14:43:56.620][000000031.775] I/user.FOTA_CMD 清理升级状态...
+[2025-12-09 14:43:56.631][000000031.778] I/user.FOTA_CMD 已删除临时文件
+[2025-12-09 14:43:56.642][000000031.778] I/user.FOTA_CMD 升级流程结束
+[2025-12-09 14:43:58.032][000000033.383] I/user.fota version 001.000.000
+```
+
+packet 升级方式日志如下:
+```lua
+[2025-12-09 14:58:35.252][000000000.359] I/user.main fota_test 001.000.000
+[2025-12-09 14:58:35.264][000000000.380] I/user.BLE_INIT 开始初始化BLE...
+[2025-12-09 14:58:35.281][000000000.380] D/drv.bt 执行luat_bluetooth_init
+[2025-12-09 14:58:35.294][000000000.381] I/user.BLE_INIT 蓝牙核心初始化成功
+[2025-12-09 14:58:35.314][000000000.381] I/user.BLE_INIT BLE功能初始化成功
+[2025-12-09 14:58:35.330][000000000.382] I/user.BLE_INIT GATT服务创建成功
+[2025-12-09 14:58:35.356][000000000.382] I/user.BLE_INIT 配置广播数据...
+[2025-12-09 14:58:35.388][000000000.383] I/user.BLE_INIT 广播配置成功
+[2025-12-09 14:58:35.419][000000000.383] I/user.BLE_INIT BLE广播已启动,设备名称: Air8000_FOTA
+[2025-12-09 14:58:35.450][000000000.417] I/user.BLE_EVENT 收到BLE事件: 1
+[2025-12-09 14:58:35.475][000000000.417] I/user.BLE_EVENT 其他事件类型: 1
+[2025-12-09 14:58:35.493][000000000.444] I/user.BLE_EVENT 收到BLE事件: 3
+[2025-12-09 14:58:35.506][000000000.445] I/user.BLE_EVENT 其他事件类型: 3
+[2025-12-09 14:58:35.518][000000000.487] I/user.BLE_EVENT 收到BLE事件: 4
+[2025-12-09 14:58:35.532][000000000.488] I/user.BLE_EVENT 其他事件类型: 4
+[2025-12-09 14:58:36.458][000000002.405] D/mobile cid1, state0
+[2025-12-09 14:58:36.470][000000002.406] D/mobile bearer act 0, result 0
+[2025-12-09 14:58:36.482][000000002.406] D/mobile NETIF_LINK_ON -> IP_READY
+[2025-12-09 14:58:36.492][000000002.461] D/mobile TIME_SYNC 0
+[2025-12-09 14:58:37.324][000000003.360] I/user.fota version 001.000.000
+[2025-12-09 14:58:40.317][000000006.360] I/user.fota version 001.000.000
+[2025-12-09 14:58:43.326][000000009.360] I/user.fota version 001.000.000
+[2025-12-09 14:58:46.325][000000012.360] I/user.fota version 001.000.000
+[2025-12-09 14:58:49.321][000000015.360] I/user.fota version 001.000.000
+[2025-12-09 14:58:51.692][000000017.736] I/user.BLE_EVENT 收到BLE事件: 12
+[2025-12-09 14:58:51.699][000000017.737] I/user.BLE_EVENT 设备已连接 地址: 141333C76D92
+[2025-12-09 14:58:51.707][000000017.738] I/user.BLE 设备连接成功: 141333C76D92
+[2025-12-09 14:58:52.315][000000018.360] I/user.fota version 001.000.000
+[2025-12-09 14:58:52.754][000000018.794] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:52.765][000000018.795] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:52.774][000000018.795] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:52.783][000000018.795] I/user.BLE_EVENT 特征值UUID: F001
+[2025-12-09 14:58:52.793][000000018.796] I/user.BLE_EVENT 数据长度: 5 字节
+[2025-12-09 14:58:52.804][000000018.797] I/user.BLE 收到写请求: F000 F001 01871A0000
+[2025-12-09 14:58:52.812][000000018.797] I/user.ble_packet_fota 处理写入数据 F000 F001 01871A0000 10
+[2025-12-09 14:58:52.824][000000018.798] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: 1 数据匹配: nil
+[2025-12-09 14:58:52.836][000000018.798] I/user.ble_packet_fota 命令特征值匹配,处理命令
+[2025-12-09 14:58:52.844][000000018.798] I/user.FOTA_CMD 收到命令数据: 01871A0000 长度: 5
+[2025-12-09 14:58:52.854][000000018.799] I/user.FOTA_CMD 解析命令码: 1 (0x01)
+[2025-12-09 14:58:52.865][000000018.799] I/user.FOTA_CMD 处理开始升级命令
+[2025-12-09 14:58:52.873][000000018.799] I/user.FOTA_CMD 文件总大小: 6791 字节
+[2025-12-09 14:58:52.882][000000018.800] I/user.FOTA_CMD 初始化FOTA子系统...
+[2025-12-09 14:58:52.892][000000018.814] I/user.FOTA_CMD FOTA初始化成功
+[2025-12-09 14:58:52.902][000000018.815] I/user.FOTA_CMD 等待FOTA底层准备...
+[2025-12-09 14:58:52.913][000000018.815] I/user.FOTA_CMD FOTA底层准备就绪
+[2025-12-09 14:58:52.923][000000018.815] I/user.FOTA_CMD 升级状态已设置 总大小: 6791
+[2025-12-09 14:58:52.933][000000018.815] I/user.FOTA_CMD 准备接收固件数据...
+[2025-12-09 14:58:53.859][000000019.900] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:53.867][000000019.901] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:53.879][000000019.901] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:53.889][000000019.901] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:53.902][000000019.902] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:53.912][000000019.903] I/user.BLE 收到写请求: F000 F002 1872C3EA2C25123600000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B1A00000000000024342525E2585E1B996AB9E251859848000000000000000000000000000000001872C3EA071A0000005C00000E4148EF5A243F7A94C524D49C393BE10000040000E05400056600000400FD19000000008109C7536188201E4070E4F8F94AA2C68473C100329390791CEB9BE96EC35E8E58408C2AC66F005FE972F833C5F3DA9A10A24DFFE32A2D8B93D3FA34
+[2025-12-09 14:58:53.924][000000019.904] I/user.ble_packet_fota 处理写入数据 F000 F002 1872C3EA2C25123600000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B1A00000000000024342525E2585E1B996AB9E251859848000000000000000000000000000000001872C3EA071A0000005C00000E4148EF5A243F7A94C524D49C393BE10000040000E05400056600000400FD19000000008109C7536188201E4070E4F8F94AA2C68473C100329390791CEB9BE96EC35E8E58408C2AC66F005FE972F833C5F3DA9A10A24DFFE32A2D8B93D3FA34 400
+[2025-12-09 14:58:53.934][000000019.904] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:53.942][000000019.905] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:53.954][000000019.905] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:53.965][000000019.905] I/user.FOTA_DATA 处理分段数据,包序号: 0
+[2025-12-09 14:58:53.974][000000019.906] I/fota write common data
+[2025-12-09 14:58:53.981][000000019.906] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:53.992][000000019.906] I/user.FOTA_DATA 数据写入成功,当前总计: 200 字节
+[2025-12-09 14:58:54.004][000000020.033] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:54.014][000000020.034] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:54.030][000000020.034] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:54.038][000000020.034] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:54.049][000000020.034] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:54.058][000000020.036] I/user.BLE 收到写请求: F000 F002 578326A8397A8359CFCDB2A5DF2D0F4B55688C2923877D02A65E6A9BEF12A5670C81644C22535802647B3D9DFA35855E2FBF332AA3D80A94E8999A561C368B017A27D3AE1A0CA7C12880C29DADDA628F33041F6E683EAFB72C42A510AB7F5F8DBE623F348D0BD82A12E5A73AE737E3F3AD3B200F768C91297D22E99F748C7E9DD6DE3A692DED4F8B2A0D70AF92ECD2AFD865E60404CBF122A59A5590EF494E4E9F4A9C703C976B1A63F6ECB8CB31146389BFFD8321D48D07B0DF4C3BE1CA40C1B6D6E7F3956BFC27
+[2025-12-09 14:58:54.069][000000020.036] I/user.ble_packet_fota 处理写入数据 F000 F002 578326A8397A8359CFCDB2A5DF2D0F4B55688C2923877D02A65E6A9BEF12A5670C81644C22535802647B3D9DFA35855E2FBF332AA3D80A94E8999A561C368B017A27D3AE1A0CA7C12880C29DADDA628F33041F6E683EAFB72C42A510AB7F5F8DBE623F348D0BD82A12E5A73AE737E3F3AD3B200F768C91297D22E99F748C7E9DD6DE3A692DED4F8B2A0D70AF92ECD2AFD865E60404CBF122A59A5590EF494E4E9F4A9C703C976B1A63F6ECB8CB31146389BFFD8321D48D07B0DF4C3BE1CA40C1B6D6E7F3956BFC27 400
+[2025-12-09 14:58:54.081][000000020.037] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:54.090][000000020.037] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:54.103][000000020.037] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:54.116][000000020.038] I/user.FOTA_DATA 处理分段数据,包序号: 1
+[2025-12-09 14:58:54.131][000000020.038] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:54.140][000000020.038] I/user.FOTA_DATA 数据写入成功,当前总计: 400 字节
+[2025-12-09 14:58:54.154][000000020.165] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:54.167][000000020.166] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:54.184][000000020.166] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:54.196][000000020.166] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:54.207][000000020.166] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:54.222][000000020.168] I/user.BLE 收到写请求: F000 F002 BFAE6FA013B4867390CDA0870A6B7A3FB7F27C519343384418178F72CA8DD59C03C100DC9D5164426EAA229591718358C05796458854B37880CC94AE917BC8E803BB404BC29BB67C7D7079AACDEA8BE9F128332B4082C33022B5E9A381DC3C8E1DAFFDA7DADCEFFBB24E917E2300454A251E2BCDC42C37976E1E67CE95E1296DCC28E9647783D3BB69FD0D2FA8E21AB1A0C273801D4FA26ABE48B2DF7E2EBFACF919F76F7B16A7AEA63B5940D38DA7247DC55368F3FECA9C622E340C70A6E384959B0262F57BEB47
+[2025-12-09 14:58:54.237][000000020.168] I/user.ble_packet_fota 处理写入数据 F000 F002 BFAE6FA013B4867390CDA0870A6B7A3FB7F27C519343384418178F72CA8DD59C03C100DC9D5164426EAA229591718358C05796458854B37880CC94AE917BC8E803BB404BC29BB67C7D7079AACDEA8BE9F128332B4082C33022B5E9A381DC3C8E1DAFFDA7DADCEFFBB24E917E2300454A251E2BCDC42C37976E1E67CE95E1296DCC28E9647783D3BB69FD0D2FA8E21AB1A0C273801D4FA26ABE48B2DF7E2EBFACF919F76F7B16A7AEA63B5940D38DA7247DC55368F3FECA9C622E340C70A6E384959B0262F57BEB47 400
+[2025-12-09 14:58:54.251][000000020.169] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:54.262][000000020.169] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:54.274][000000020.169] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:54.287][000000020.170] I/user.FOTA_DATA 处理分段数据,包序号: 2
+[2025-12-09 14:58:54.300][000000020.170] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:54.311][000000020.170] I/user.FOTA_DATA 数据写入成功,当前总计: 600 字节
+[2025-12-09 14:58:54.320][000000020.338] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:54.333][000000020.339] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:54.341][000000020.339] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:54.354][000000020.339] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:54.364][000000020.340] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:54.371][000000020.341] I/user.BLE 收到写请求: F000 F002 9F91D745FD569A414C89ABA1FADC28AEDBFC7914B989922EC7C2DD96B671A2EA0469B6E0D0C551667CBFB86181535A9B22FFC681501D9782AA99F4ACF3E2226B517EF94FCF225CA046FC4EBA70E295A124859F973CBD2BC54006E0A1C25C0CBF1429405D9A55BF8256947328E167EE7FD1189695C70F6570317586F61573509FE11BE46BAF25E84C9E8C635556B4E36D5E8577A0613B21E506CA71CCD0972C7339FD71B5038C1CDB183D2C7072123C0539CBBD7658B09A6678D79CBEBCC00B3349911BF90AC528E1
+[2025-12-09 14:58:54.384][000000020.341] I/user.ble_packet_fota 处理写入数据 F000 F002 9F91D745FD569A414C89ABA1FADC28AEDBFC7914B989922EC7C2DD96B671A2EA0469B6E0D0C551667CBFB86181535A9B22FFC681501D9782AA99F4ACF3E2226B517EF94FCF225CA046FC4EBA70E295A124859F973CBD2BC54006E0A1C25C0CBF1429405D9A55BF8256947328E167EE7FD1189695C70F6570317586F61573509FE11BE46BAF25E84C9E8C635556B4E36D5E8577A0613B21E506CA71CCD0972C7339FD71B5038C1CDB183D2C7072123C0539CBBD7658B09A6678D79CBEBCC00B3349911BF90AC528E1 400
+[2025-12-09 14:58:54.394][000000020.342] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:54.403][000000020.343] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:54.412][000000020.343] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:54.422][000000020.343] I/user.FOTA_DATA 处理分段数据,包序号: 3
+[2025-12-09 14:58:54.432][000000020.343] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:54.447][000000020.344] I/user.FOTA_DATA 数据写入成功,当前总计: 800 字节
+[2025-12-09 14:58:54.484][000000020.516] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:54.495][000000020.517] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:54.505][000000020.517] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:54.515][000000020.517] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:54.524][000000020.518] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:54.540][000000020.519] I/user.BLE 收到写请求: F000 F002 E223812664DD4D928A3E8EDA95352501825004DA6A79B02F259CCCCD81E7EB6999E56EF07D72F0C89F93DE646E91FDD4F508ADEA6AAFC39653592D1135F981883C2B14DFCE97DFA8C63D8C99A78C46EFA6B7A2F07D3D372A025C2E4F7355FADCB664ED0C63ABF28DA2C73A5DB4693A296E2E0A0AEF8B0091EF1EB5B13B2EF9D662A5FC8B4DB84A4BB0229A1E82F9376A79D1DBD0EF770708EB8A4A6637EDB112DF402AA83089A33DC90E9911FA0C81AF39450ECE80C4B7BA580661286900635BE4A1F81583331816
+[2025-12-09 14:58:54.550][000000020.519] I/user.ble_packet_fota 处理写入数据 F000 F002 E223812664DD4D928A3E8EDA95352501825004DA6A79B02F259CCCCD81E7EB6999E56EF07D72F0C89F93DE646E91FDD4F508ADEA6AAFC39653592D1135F981883C2B14DFCE97DFA8C63D8C99A78C46EFA6B7A2F07D3D372A025C2E4F7355FADCB664ED0C63ABF28DA2C73A5DB4693A296E2E0A0AEF8B0091EF1EB5B13B2EF9D662A5FC8B4DB84A4BB0229A1E82F9376A79D1DBD0EF770708EB8A4A6637EDB112DF402AA83089A33DC90E9911FA0C81AF39450ECE80C4B7BA580661286900635BE4A1F81583331816 400
+[2025-12-09 14:58:54.561][000000020.520] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:54.571][000000020.520] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:54.580][000000020.521] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:54.591][000000020.521] I/user.FOTA_DATA 处理分段数据,包序号: 4
+[2025-12-09 14:58:54.601][000000020.521] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:54.615][000000020.522] I/user.FOTA_DATA 数据写入成功,当前总计: 1000 字节
+[2025-12-09 14:58:54.640][000000020.688] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:54.653][000000020.689] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:54.661][000000020.689] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:54.669][000000020.689] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:54.682][000000020.689] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:54.695][000000020.691] I/user.BLE 收到写请求: F000 F002 E873D77EDC3E717CAA4CB2A7085406D8B4F680F9CF38F4193308A241CFE7F59AD54E7A9A5EB5D818D0C4D193C20318EB3AA118A3F485FB83183D1711B43B59672410A3838F7564CA912FAF597744A170AE45380D29773CDC72330AF7792D3A58E9395F3226B70462F739677B77347338CB374A4411CC3AD721931228728A3082E06B9742903999708C366C3EA2E35CCDF1E59F3B4BB94139B229A775E54D470FA10BC45DB934F73D36DFBE1E076247EDDA39A17A7F281C6B405EE564D144879021AE75435DA61B0B
+[2025-12-09 14:58:54.712][000000020.691] I/user.ble_packet_fota 处理写入数据 F000 F002 E873D77EDC3E717CAA4CB2A7085406D8B4F680F9CF38F4193308A241CFE7F59AD54E7A9A5EB5D818D0C4D193C20318EB3AA118A3F485FB83183D1711B43B59672410A3838F7564CA912FAF597744A170AE45380D29773CDC72330AF7792D3A58E9395F3226B70462F739677B77347338CB374A4411CC3AD721931228728A3082E06B9742903999708C366C3EA2E35CCDF1E59F3B4BB94139B229A775E54D470FA10BC45DB934F73D36DFBE1E076247EDDA39A17A7F281C6B405EE564D144879021AE75435DA61B0B 400
+[2025-12-09 14:58:54.724][000000020.692] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:54.737][000000020.692] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:54.754][000000020.692] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:54.771][000000020.693] I/user.FOTA_DATA 处理分段数据,包序号: 5
+[2025-12-09 14:58:54.785][000000020.693] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:54.798][000000020.693] I/user.FOTA_DATA 数据写入成功,当前总计: 1200 字节
+[2025-12-09 14:58:54.826][000000020.866] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:54.835][000000020.866] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:54.845][000000020.867] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:54.857][000000020.867] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:54.867][000000020.867] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:54.880][000000020.869] I/user.BLE 收到写请求: F000 F002 410FFED6705B09EA71340D2EE49489909141E21CF9FCC15B26AE57779C8ADA469F3544578C2EB7C2AEB55B759AB3539322B1A3CA5670FAB659E5DEF3AC982485982C93F540C526F944C421DFC15E0246A5428FA23FD4EA607077CE1355FC00ED2522B0AB448A43A136D8FEDA5C756EF4D37D707E6CBC01046AA33B12B57AB1058AFF6ED30B6B86F664834CB287D62C1651EAB588EBEB903596CE12DD9E36E282E0F4B3BB2C17AA0B0E220B3088FF1542C89E18F4D621E438884D1A48F425888FC986F6589FF41553
+[2025-12-09 14:58:54.890][000000020.869] I/user.ble_packet_fota 处理写入数据 F000 F002 410FFED6705B09EA71340D2EE49489909141E21CF9FCC15B26AE57779C8ADA469F3544578C2EB7C2AEB55B759AB3539322B1A3CA5670FAB659E5DEF3AC982485982C93F540C526F944C421DFC15E0246A5428FA23FD4EA607077CE1355FC00ED2522B0AB448A43A136D8FEDA5C756EF4D37D707E6CBC01046AA33B12B57AB1058AFF6ED30B6B86F664834CB287D62C1651EAB588EBEB903596CE12DD9E36E282E0F4B3BB2C17AA0B0E220B3088FF1542C89E18F4D621E438884D1A48F425888FC986F6589FF41553 400
+[2025-12-09 14:58:54.900][000000020.870] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:54.909][000000020.870] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:54.923][000000020.870] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:54.934][000000020.871] I/user.FOTA_DATA 处理分段数据,包序号: 6
+[2025-12-09 14:58:54.945][000000020.871] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:54.956][000000020.871] I/user.FOTA_DATA 数据写入成功,当前总计: 1400 字节
+[2025-12-09 14:58:54.998][000000021.041] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:55.010][000000021.042] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:55.027][000000021.042] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:55.037][000000021.042] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:55.055][000000021.043] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:55.067][000000021.044] I/user.BLE 收到写请求: F000 F002 AF8909FB5E3F2931D6AEA8AC8570EBDAE58D62286B0CB3D6EF5536EEA795DC4D7F116520A50DE34925E8253CD9476B67E8B9C7D3A7ED4EF074FA573E087A3F1DD0A7EE0241854D002016D33F56A54F56ED6CBB4207061FD64AF40AECCE0B33C96FDF83303E00A4413B1305516FF04C7052FA4B354EDFC9C8151DBCE50A56171CB112F11864F50045F8C70F0788ECF30AC28C67347A518CB032A2E9D7C10A8FCEA12190E46E3D11F896F18B8EB38CEE94FE8A32C44A14F827EA6E352BEA31D786943436AE5396CFE2
+[2025-12-09 14:58:55.083][000000021.045] I/user.ble_packet_fota 处理写入数据 F000 F002 AF8909FB5E3F2931D6AEA8AC8570EBDAE58D62286B0CB3D6EF5536EEA795DC4D7F116520A50DE34925E8253CD9476B67E8B9C7D3A7ED4EF074FA573E087A3F1DD0A7EE0241854D002016D33F56A54F56ED6CBB4207061FD64AF40AECCE0B33C96FDF83303E00A4413B1305516FF04C7052FA4B354EDFC9C8151DBCE50A56171CB112F11864F50045F8C70F0788ECF30AC28C67347A518CB032A2E9D7C10A8FCEA12190E46E3D11F896F18B8EB38CEE94FE8A32C44A14F827EA6E352BEA31D786943436AE5396CFE2 400
+[2025-12-09 14:58:55.101][000000021.045] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:55.112][000000021.045] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:55.124][000000021.046] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:55.137][000000021.046] I/user.FOTA_DATA 处理分段数据,包序号: 7
+[2025-12-09 14:58:55.146][000000021.046] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:55.156][000000021.047] I/user.FOTA_DATA 数据写入成功,当前总计: 1600 字节
+[2025-12-09 14:58:55.168][000000021.213] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:55.178][000000021.214] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:55.190][000000021.214] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:55.199][000000021.214] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:55.208][000000021.214] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:55.219][000000021.216] I/user.BLE 收到写请求: F000 F002 EDB607310E11E77F72F5F13F50651C339B3A0AE817EE467BA4E6ED338114AF1854D051FB48D13A814239B33805F0EADB89BF82F2D207B9AEB59DB2BE8BD9F4F0EE3FFB28B2E8B28534844A1C4274AE4728329F676E25414207226BCEC0F197FBCBC5C139C7086682A4511E542923B4EB79DCB32DE59784DF5DF8F13FD2F84E550CA85703945F317B1012F4364BC3128819E37F22DB62B91F2CF6297CD569A28A638E77B0063DBEBDE6740677B1D118FFA4859F8D50087E0BBFAC077E262AC204A5F2C80D74BD8FEE
+[2025-12-09 14:58:55.230][000000021.216] I/user.ble_packet_fota 处理写入数据 F000 F002 EDB607310E11E77F72F5F13F50651C339B3A0AE817EE467BA4E6ED338114AF1854D051FB48D13A814239B33805F0EADB89BF82F2D207B9AEB59DB2BE8BD9F4F0EE3FFB28B2E8B28534844A1C4274AE4728329F676E25414207226BCEC0F197FBCBC5C139C7086682A4511E542923B4EB79DCB32DE59784DF5DF8F13FD2F84E550CA85703945F317B1012F4364BC3128819E37F22DB62B91F2CF6297CD569A28A638E77B0063DBEBDE6740677B1D118FFA4859F8D50087E0BBFAC077E262AC204A5F2C80D74BD8FEE 400
+[2025-12-09 14:58:55.241][000000021.217] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:55.250][000000021.217] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:55.261][000000021.217] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:55.272][000000021.218] I/user.FOTA_DATA 处理分段数据,包序号: 8
+[2025-12-09 14:58:55.283][000000021.218] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:55.296][000000021.218] I/user.FOTA_DATA 数据写入成功,当前总计: 1800 字节
+[2025-12-09 14:58:55.326][000000021.360] I/user.fota version 001.000.000
+[2025-12-09 14:58:55.357][000000021.388] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:55.367][000000021.388] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:55.377][000000021.389] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:55.387][000000021.389] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:55.398][000000021.389] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:55.407][000000021.391] I/user.BLE 收到写请求: F000 F002 94E91700D87B64F42F5066347F9AA5F5D03C35E7FD6AC34265D5183B77DFB8B9ABC25C778AEB347F9D6BA4D99BA6CAA424383D4CF341160B4B0D4D80CB74B495B481381D21D6774E367A43D2121CF399774973F46FDED2FF379DDB14D6A2E2E4DA79783AC902C2039E1DDB8F14640CEA0A23DCD23FF5ACAB0129F935CC43822A2370E150BE3232E079449AC2438E541DD0A2B95742507017B7645BEAE7804D12989706640D4DFDEF4679ADA908B88AC01D00DB28837D18B9A3391181661ADAAA79F2B6DFE121C14A
+[2025-12-09 14:58:55.417][000000021.391] I/user.ble_packet_fota 处理写入数据 F000 F002 94E91700D87B64F42F5066347F9AA5F5D03C35E7FD6AC34265D5183B77DFB8B9ABC25C778AEB347F9D6BA4D99BA6CAA424383D4CF341160B4B0D4D80CB74B495B481381D21D6774E367A43D2121CF399774973F46FDED2FF379DDB14D6A2E2E4DA79783AC902C2039E1DDB8F14640CEA0A23DCD23FF5ACAB0129F935CC43822A2370E150BE3232E079449AC2438E541DD0A2B95742507017B7645BEAE7804D12989706640D4DFDEF4679ADA908B88AC01D00DB28837D18B9A3391181661ADAAA79F2B6DFE121C14A 400
+[2025-12-09 14:58:55.430][000000021.392] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:55.440][000000021.392] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:55.455][000000021.392] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:55.464][000000021.393] I/user.FOTA_DATA 处理分段数据,包序号: 9
+[2025-12-09 14:58:55.475][000000021.393] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:55.489][000000021.393] I/user.FOTA_DATA 数据写入成功,当前总计: 2000 字节
+[2025-12-09 14:58:55.559][000000021.606] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:55.569][000000021.607] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:55.579][000000021.607] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:55.589][000000021.607] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:55.602][000000021.608] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:55.611][000000021.609] I/user.BLE 收到写请求: F000 F002 3834A5479DF6DDDC5EBADFFF3C8BB9808F67A25A9916D0E5CF17A49FDD72A49C13D258E1E955462C882A05FDC65C7B25E32C6EC8DB5104C3C44D9F50F588DD4A574D93A7C1A55AE21100CA17AB225AF060DA2E9FC234D544D6C499B3E2C967E8AA8F88086C24A7C7688D9C3651200721DE5309CA1E9AEC2EBAD606B5B5BCCA5659DC6EF24B9A886C29F27870882873C76AF5D9728CDFD82307382516962F202EDC31B1CFE82CD3AA5239567AE9B1E44B00AB9CB0112000C6977B621AFEE42BDD42A023014474D2E8
+[2025-12-09 14:58:55.632][000000021.609] I/user.ble_packet_fota 处理写入数据 F000 F002 3834A5479DF6DDDC5EBADFFF3C8BB9808F67A25A9916D0E5CF17A49FDD72A49C13D258E1E955462C882A05FDC65C7B25E32C6EC8DB5104C3C44D9F50F588DD4A574D93A7C1A55AE21100CA17AB225AF060DA2E9FC234D544D6C499B3E2C967E8AA8F88086C24A7C7688D9C3651200721DE5309CA1E9AEC2EBAD606B5B5BCCA5659DC6EF24B9A886C29F27870882873C76AF5D9728CDFD82307382516962F202EDC31B1CFE82CD3AA5239567AE9B1E44B00AB9CB0112000C6977B621AFEE42BDD42A023014474D2E8 400
+[2025-12-09 14:58:55.641][000000021.610] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:55.652][000000021.610] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:55.666][000000021.611] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:55.677][000000021.611] I/user.FOTA_DATA 处理分段数据,包序号: 10
+[2025-12-09 14:58:55.689][000000021.611] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:55.698][000000021.612] I/user.FOTA_DATA 数据写入成功,当前总计: 2200 字节
+[2025-12-09 14:58:55.779][000000021.825] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:55.794][000000021.826] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:55.804][000000021.826] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:55.819][000000021.826] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:55.827][000000021.827] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:55.836][000000021.828] I/user.BLE 收到写请求: F000 F002 63663F8E2E57002B58CD4812D54992E3DC35630D911747925F0525FE2146969453955C12F6ECF3F086401F7B400842562866F63775646ECEC3EB75A592697C3353B30BDA7D5E7417259AC51EB15D4C9630DA0DAD132232C969B0A5738E613556CBF6C194E11EFE106E0AC67ECF088CE3F0F0005E6A4E88CD7DE728D8F7677025033E575C7C26128CD97E3CF9861BDADE2DFA95C1DAF7AF765E6F5436A58AB9EF5FC46D24D6010D204A63DEAABD64E86FFF7C266259E7281177FC7DE905D83AD76EB54D4E4F42DBE9
+[2025-12-09 14:58:55.852][000000021.828] I/user.ble_packet_fota 处理写入数据 F000 F002 63663F8E2E57002B58CD4812D54992E3DC35630D911747925F0525FE2146969453955C12F6ECF3F086401F7B400842562866F63775646ECEC3EB75A592697C3353B30BDA7D5E7417259AC51EB15D4C9630DA0DAD132232C969B0A5738E613556CBF6C194E11EFE106E0AC67ECF088CE3F0F0005E6A4E88CD7DE728D8F7677025033E575C7C26128CD97E3CF9861BDADE2DFA95C1DAF7AF765E6F5436A58AB9EF5FC46D24D6010D204A63DEAABD64E86FFF7C266259E7281177FC7DE905D83AD76EB54D4E4F42DBE9 400
+[2025-12-09 14:58:55.861][000000021.829] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:55.869][000000021.829] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:55.878][000000021.830] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:55.894][000000021.830] I/user.FOTA_DATA 处理分段数据,包序号: 11
+[2025-12-09 14:58:55.903][000000021.830] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:55.915][000000021.831] I/user.FOTA_DATA 数据写入成功,当前总计: 2400 字节
+[2025-12-09 14:58:55.966][000000022.002] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:55.974][000000022.002] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:55.986][000000022.003] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:55.995][000000022.003] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:56.004][000000022.003] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:56.013][000000022.005] I/user.BLE 收到写请求: F000 F002 CDF7739542AF28D7E4A0C93AE2AFD9FB4F8F025ED1D352BFA14FF85085D795CBC8087C3912E010319D728434CCD90531248A0EA2C4DC65936324E7DABB15C5A7774DA6C761DDBF31CB3242B17CED11DC18BFA1E5663CACF3ECEA84D6E49798742CD98C9F61F7ED4513B69449DEEA1ADBD300C9B2E6DB5920133424E25ECD3809D7C59D4A3AB15BC57EC72554059E953C6172F46557E20FE1C3C25D9AE36380EBC5BE3FC29835D7AB7F5B1844B7DA5D37630C7F3474664ED04FBBD4FA95CC43FAFBE4E32CA76FE988
+[2025-12-09 14:58:56.028][000000022.005] I/user.ble_packet_fota 处理写入数据 F000 F002 CDF7739542AF28D7E4A0C93AE2AFD9FB4F8F025ED1D352BFA14FF85085D795CBC8087C3912E010319D728434CCD90531248A0EA2C4DC65936324E7DABB15C5A7774DA6C761DDBF31CB3242B17CED11DC18BFA1E5663CACF3ECEA84D6E49798742CD98C9F61F7ED4513B69449DEEA1ADBD300C9B2E6DB5920133424E25ECD3809D7C59D4A3AB15BC57EC72554059E953C6172F46557E20FE1C3C25D9AE36380EBC5BE3FC29835D7AB7F5B1844B7DA5D37630C7F3474664ED04FBBD4FA95CC43FAFBE4E32CA76FE988 400
+[2025-12-09 14:58:56.036][000000022.006] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:56.050][000000022.006] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:56.058][000000022.006] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:56.068][000000022.007] I/user.FOTA_DATA 处理分段数据,包序号: 12
+[2025-12-09 14:58:56.079][000000022.007] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:56.089][000000022.007] I/user.FOTA_DATA 数据写入成功,当前总计: 2600 字节
+[2025-12-09 14:58:56.138][000000022.175] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:56.148][000000022.175] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:56.164][000000022.176] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:56.173][000000022.176] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:56.185][000000022.176] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:56.198][000000022.177] I/user.BLE 收到写请求: F000 F002 2FA735BDB0849ECDF7274BAA573388358B7F78CD1F8DD5F64C1A955B430D75A6F465AB75E1E5E04BBF5046F16E0FD8223C68623D8A1195503AE296639EA6618AAEFD7E06DF0BF9C288B03A76FBCBB38C243164461E2B63CCEBDFC2A133C9FF098A354E309FBCFD93AFA80F007CD127295370EC97D2BA52559C7B7FCA3E5DDF5A2224ACDFE41D2E77446E23E344BD73BD84DD30E5C0C74E27D6981DE2E6D725A567266071A805DE5C6A2AA78E80A9278307C777DA72FC057CB1F75A636E0655AEF02F99FEFFDE701C
+[2025-12-09 14:58:56.210][000000022.178] I/user.ble_packet_fota 处理写入数据 F000 F002 2FA735BDB0849ECDF7274BAA573388358B7F78CD1F8DD5F64C1A955B430D75A6F465AB75E1E5E04BBF5046F16E0FD8223C68623D8A1195503AE296639EA6618AAEFD7E06DF0BF9C288B03A76FBCBB38C243164461E2B63CCEBDFC2A133C9FF098A354E309FBCFD93AFA80F007CD127295370EC97D2BA52559C7B7FCA3E5DDF5A2224ACDFE41D2E77446E23E344BD73BD84DD30E5C0C74E27D6981DE2E6D725A567266071A805DE5C6A2AA78E80A9278307C777DA72FC057CB1F75A636E0655AEF02F99FEFFDE701C 400
+[2025-12-09 14:58:56.224][000000022.179] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:56.238][000000022.179] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:56.253][000000022.179] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:56.265][000000022.180] I/user.FOTA_DATA 处理分段数据,包序号: 13
+[2025-12-09 14:58:56.276][000000022.180] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:56.287][000000022.180] I/user.FOTA_DATA 数据写入成功,当前总计: 2800 字节
+[2025-12-09 14:58:56.310][000000022.353] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:56.324][000000022.354] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:56.334][000000022.354] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:56.344][000000022.354] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:56.354][000000022.355] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:56.367][000000022.356] I/user.BLE 收到写请求: F000 F002 6DAB482BEA2153C5381AE0282FF0C0EE3064D10F71F1F1C578D00E75833EAF0F3877DA8F09749CD10ED7E3582E6115D9383D06ECD21AA7C60BDB754624F53D4790D8C3541D1C8F4C9CFA92AFF9292642225D02D02097EC6725A8DEEAB878E5C66E659FDFC7D0FF13E1C06F34BFA967A7C81EB0851F9FFAB4A77D0DE110F6B0D1E8B8193B95862EDF0A6F23D6443ED26B094ACA3757391B5726D00E0EAFBF63685AD9C9FE5595F7814223AF6BF4D50899B622BD7AC11C95816A2540E8A043F96CECC53401DA8FA560
+[2025-12-09 14:58:56.379][000000022.356] I/user.ble_packet_fota 处理写入数据 F000 F002 6DAB482BEA2153C5381AE0282FF0C0EE3064D10F71F1F1C578D00E75833EAF0F3877DA8F09749CD10ED7E3582E6115D9383D06ECD21AA7C60BDB754624F53D4790D8C3541D1C8F4C9CFA92AFF9292642225D02D02097EC6725A8DEEAB878E5C66E659FDFC7D0FF13E1C06F34BFA967A7C81EB0851F9FFAB4A77D0DE110F6B0D1E8B8193B95862EDF0A6F23D6443ED26B094ACA3757391B5726D00E0EAFBF63685AD9C9FE5595F7814223AF6BF4D50899B622BD7AC11C95816A2540E8A043F96CECC53401DA8FA560 400
+[2025-12-09 14:58:56.392][000000022.357] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:56.401][000000022.357] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:56.410][000000022.358] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:56.423][000000022.358] I/user.FOTA_DATA 处理分段数据,包序号: 14
+[2025-12-09 14:58:56.432][000000022.358] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:56.443][000000022.359] I/user.FOTA_DATA 数据写入成功,当前总计: 3000 字节
+[2025-12-09 14:58:56.527][000000022.570] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:56.535][000000022.570] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:56.544][000000022.571] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:56.555][000000022.571] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:56.566][000000022.571] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:56.573][000000022.572] I/user.BLE 收到写请求: F000 F002 5D925AA7B4D0D97993AF1C53DA1D092D141720A0AB7566B279B9A29604B76DF2E578D023EAE481D1784E925597DF2B82E234CF0FF4B3ECF2008316507EC2CEBD3D2D6967EE8984E000A1B3E44CABD30F0F66AF74B79107365098498346D57A6BC34832118FD2D30153BB266CA6C43B07E234A7BC228DC4A3DDF35DE4A4CAD682BCB32783933BFAB42500EAFE06E36090D1D618201A0793478F8A331EDAEA26879FD47164296C362C8562290B9A1358003F86440211516DE60781D924175FB7038B101EDA72E2FF7E
+[2025-12-09 14:58:56.587][000000022.573] I/user.ble_packet_fota 处理写入数据 F000 F002 5D925AA7B4D0D97993AF1C53DA1D092D141720A0AB7566B279B9A29604B76DF2E578D023EAE481D1784E925597DF2B82E234CF0FF4B3ECF2008316507EC2CEBD3D2D6967EE8984E000A1B3E44CABD30F0F66AF74B79107365098498346D57A6BC34832118FD2D30153BB266CA6C43B07E234A7BC228DC4A3DDF35DE4A4CAD682BCB32783933BFAB42500EAFE06E36090D1D618201A0793478F8A331EDAEA26879FD47164296C362C8562290B9A1358003F86440211516DE60781D924175FB7038B101EDA72E2FF7E 400
+[2025-12-09 14:58:56.598][000000022.574] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:56.608][000000022.574] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:56.617][000000022.574] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:56.627][000000022.575] I/user.FOTA_DATA 处理分段数据,包序号: 15
+[2025-12-09 14:58:56.638][000000022.575] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:56.648][000000022.575] I/user.FOTA_DATA 数据写入成功,当前总计: 3200 字节
+[2025-12-09 14:58:56.715][000000022.748] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:56.728][000000022.748] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:56.736][000000022.749] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:56.745][000000022.749] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:56.756][000000022.749] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:56.768][000000022.750] I/user.BLE 收到写请求: F000 F002 C6ED9352E29483FE74144CFA5D8D849E2A9AFCDE915098F3F7A5BCC8555431EDC4924AB94FD102FBF554BFA79E070C1F5545AA2E923D06EAFA23FE90E9AB180331E5B7377B4C8B5B2C9AA19F7A6B20CE9B4A1F44DDDE5C1D2E192DE9D4657511DC7562465F2744CD117B2982FBC4FD85E62F1E06C142EF00CBE4236E9BD25A6B6F69E77A2C9C55C1156E82175C32F2FDC1D84670D86B8E7F13652BC15725A3EDA5C3C2C29A7A1DBDCE2A9DCE5658536BCD015DD658CBAFF5516D2AA48A505190A393FC1BE5EC8C9B
+[2025-12-09 14:58:56.779][000000022.752] I/user.ble_packet_fota 处理写入数据 F000 F002 C6ED9352E29483FE74144CFA5D8D849E2A9AFCDE915098F3F7A5BCC8555431EDC4924AB94FD102FBF554BFA79E070C1F5545AA2E923D06EAFA23FE90E9AB180331E5B7377B4C8B5B2C9AA19F7A6B20CE9B4A1F44DDDE5C1D2E192DE9D4657511DC7562465F2744CD117B2982FBC4FD85E62F1E06C142EF00CBE4236E9BD25A6B6F69E77A2C9C55C1156E82175C32F2FDC1D84670D86B8E7F13652BC15725A3EDA5C3C2C29A7A1DBDCE2A9DCE5658536BCD015DD658CBAFF5516D2AA48A505190A393FC1BE5EC8C9B 400
+[2025-12-09 14:58:56.790][000000022.752] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:56.800][000000022.753] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:56.807][000000022.753] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:56.820][000000022.753] I/user.FOTA_DATA 处理分段数据,包序号: 16
+[2025-12-09 14:58:56.830][000000022.754] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:56.840][000000022.754] I/user.FOTA_DATA 数据写入成功,当前总计: 3400 字节
+[2025-12-09 14:58:56.887][000000022.920] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:56.897][000000022.921] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:56.907][000000022.922] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:56.915][000000022.922] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:56.924][000000022.922] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:56.936][000000022.924] I/user.BLE 收到写请求: F000 F002 A70F29FAA6721203B03486B6A99CAAC0FFFD66C89C5D4C9ED13CA10C36792C3DA8018B478CBEBFB7157D420D4A6AEF76ABFC111C64077F374AF3111AE30997393F04720EAFEC3B7578DC816FFE893C450DFD1440973A4CEFC1D78D9C682EB5F5386EE60498C89DDD43C3655CC63794CEC9B40CECC537E859C5B0DE47DBE84F9CB48FA7BBF039BEA4A8BF661ADEA46FFFBC5C43AC8FC1D7AAB02C0F7E81C5413F803B2CC3F21F1CDD0C4DB9055F31C22B94290C3D5FDB960DDC324EEE9F63AD9D0503EF65EE0C555B
+[2025-12-09 14:58:56.947][000000022.924] I/user.ble_packet_fota 处理写入数据 F000 F002 A70F29FAA6721203B03486B6A99CAAC0FFFD66C89C5D4C9ED13CA10C36792C3DA8018B478CBEBFB7157D420D4A6AEF76ABFC111C64077F374AF3111AE30997393F04720EAFEC3B7578DC816FFE893C450DFD1440973A4CEFC1D78D9C682EB5F5386EE60498C89DDD43C3655CC63794CEC9B40CECC537E859C5B0DE47DBE84F9CB48FA7BBF039BEA4A8BF661ADEA46FFFBC5C43AC8FC1D7AAB02C0F7E81C5413F803B2CC3F21F1CDD0C4DB9055F31C22B94290C3D5FDB960DDC324EEE9F63AD9D0503EF65EE0C555B 400
+[2025-12-09 14:58:56.956][000000022.925] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:56.963][000000022.925] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:56.977][000000022.925] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:56.989][000000022.926] I/user.FOTA_DATA 处理分段数据,包序号: 17
+[2025-12-09 14:58:56.998][000000022.926] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:57.007][000000022.927] I/user.FOTA_DATA 数据写入成功,当前总计: 3600 字节
+[2025-12-09 14:58:57.059][000000023.094] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:57.072][000000023.094] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:57.084][000000023.095] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:57.092][000000023.095] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:57.103][000000023.095] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:57.117][000000023.097] I/user.BLE 收到写请求: F000 F002 BA6E163C2CD19D7647F897C4C0AC4A444B786E9515E397BCDB2B9BC041396371F39B5A8424D38A207EA5F50D0459914BA061BB99D2878C2766E9202A3561E3F452EFBF851081AA69A47B4BDB1BA016DAD805870C608895DE829582F0819AD58E57A958239CD5D6CAFB9CF9A394147BC601E44E4552C81B2360B5BC1B0D072E8C78076E91C699C048284D1A42B278FDF25FDDE90747B24A439601CA191D4FF8D836048BBB636E77B3C01B882AF7835E1430B95DBBDE0ECE12A8F1CC3EB593F68BC5D2D4C8D62A29A0
+[2025-12-09 14:58:57.129][000000023.097] I/user.ble_packet_fota 处理写入数据 F000 F002 BA6E163C2CD19D7647F897C4C0AC4A444B786E9515E397BCDB2B9BC041396371F39B5A8424D38A207EA5F50D0459914BA061BB99D2878C2766E9202A3561E3F452EFBF851081AA69A47B4BDB1BA016DAD805870C608895DE829582F0819AD58E57A958239CD5D6CAFB9CF9A394147BC601E44E4552C81B2360B5BC1B0D072E8C78076E91C699C048284D1A42B278FDF25FDDE90747B24A439601CA191D4FF8D836048BBB636E77B3C01B882AF7835E1430B95DBBDE0ECE12A8F1CC3EB593F68BC5D2D4C8D62A29A0 400
+[2025-12-09 14:58:57.140][000000023.098] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:57.149][000000023.098] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:57.160][000000023.099] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:57.171][000000023.099] I/user.FOTA_DATA 处理分段数据,包序号: 18
+[2025-12-09 14:58:57.180][000000023.099] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:57.189][000000023.100] I/user.FOTA_DATA 数据写入成功,当前总计: 3800 字节
+[2025-12-09 14:58:57.229][000000023.271] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:57.242][000000023.272] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:57.251][000000023.272] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:57.262][000000023.272] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:57.274][000000023.272] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:57.283][000000023.274] I/user.BLE 收到写请求: F000 F002 0F4478DEB2E9F8BD5AC553678D96E05AB73C3323247D56BEE527EA8FCC6F3796D065F6696779BAB46F7A33A98EF7156E8E620516936A8EC48701DD50660E84879BD8F89DB833C7F5797D085ADAAEEA64F93EE711E56DE028A5DC6746E8BAD577630F8268F7294159A50E81C7AAAE036347BD4B02ACD4DD9850EF2B59EB91A75CC6F1C6FCAA39A14D3749C62E6BD0C24C5BE7B30BF20DBA13F34DD4C48E382F7029F18B0F17C5D39CA50902A5B55B733D3860DC9317515AF65A444DAD1404B924FAB5A0143AB597D5
+[2025-12-09 14:58:57.297][000000023.274] I/user.ble_packet_fota 处理写入数据 F000 F002 0F4478DEB2E9F8BD5AC553678D96E05AB73C3323247D56BEE527EA8FCC6F3796D065F6696779BAB46F7A33A98EF7156E8E620516936A8EC48701DD50660E84879BD8F89DB833C7F5797D085ADAAEEA64F93EE711E56DE028A5DC6746E8BAD577630F8268F7294159A50E81C7AAAE036347BD4B02ACD4DD9850EF2B59EB91A75CC6F1C6FCAA39A14D3749C62E6BD0C24C5BE7B30BF20DBA13F34DD4C48E382F7029F18B0F17C5D39CA50902A5B55B733D3860DC9317515AF65A444DAD1404B924FAB5A0143AB597D5 400
+[2025-12-09 14:58:57.311][000000023.275] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:57.320][000000023.275] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:57.330][000000023.275] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:57.342][000000023.276] I/user.FOTA_DATA 处理分段数据,包序号: 19
+[2025-12-09 14:58:57.350][000000023.276] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:57.362][000000023.277] I/user.FOTA_DATA 数据写入成功,当前总计: 4000 字节
+[2025-12-09 14:58:57.448][000000023.488] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:57.469][000000023.488] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:57.479][000000023.489] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:57.489][000000023.489] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:57.503][000000023.489] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:57.518][000000023.491] I/user.BLE 收到写请求: F000 F002 A3D259FCC5EB3774A2586E5D400FEADA077435A68F6E29B78604E1E26DAFAADBFFB5477713DB9F1531AEF4E587BC82CDCA6098B2DFFAB6CF7559B3E3D6911C5D50DE4B340E630A38C44E652DD5FC48CB7DE00CC83C07E2050BBD56F046579EB4608DDF9B632B9AC1F8EF1054021F4706112B9C143AB85ECE86B631D656826C7EB53468CF860322915FE9009A7492AFCE2E8F5E4DE18FE3D32E7ED56B4DA55D8B0C94AA319A7F48569D17E9BCBCD579E31BBE9958D56B13546ACA87B156569A9AFD200955E6ABB487
+[2025-12-09 14:58:57.530][000000023.491] I/user.ble_packet_fota 处理写入数据 F000 F002 A3D259FCC5EB3774A2586E5D400FEADA077435A68F6E29B78604E1E26DAFAADBFFB5477713DB9F1531AEF4E587BC82CDCA6098B2DFFAB6CF7559B3E3D6911C5D50DE4B340E630A38C44E652DD5FC48CB7DE00CC83C07E2050BBD56F046579EB4608DDF9B632B9AC1F8EF1054021F4706112B9C143AB85ECE86B631D656826C7EB53468CF860322915FE9009A7492AFCE2E8F5E4DE18FE3D32E7ED56B4DA55D8B0C94AA319A7F48569D17E9BCBCD579E31BBE9958D56B13546ACA87B156569A9AFD200955E6ABB487 400
+[2025-12-09 14:58:57.543][000000023.492] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:57.552][000000023.492] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:57.563][000000023.492] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:57.574][000000023.493] I/user.FOTA_DATA 处理分段数据,包序号: 20
+[2025-12-09 14:58:57.584][000000023.523] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:57.593][000000023.524] I/user.FOTA_DATA 数据写入成功,当前总计: 4200 字节
+[2025-12-09 14:58:57.619][000000023.666] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:57.631][000000023.667] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:57.643][000000023.667] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:57.657][000000023.667] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:57.669][000000023.668] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:57.678][000000023.669] I/user.BLE 收到写请求: F000 F002 6BE5E55BDC5204A19BFE2E7C205B5BE81F683ADCD8ACD5A202DBF521EC0C1EBBDCA27409534EFD7CCE4AEEF3CA58C8543C6AF43C86F2F6485A9AB4B544D9C19D83A989A05D8994F154001A5F542439910754539430A2688B69873D4168FB5EB756D6900770B03051B92799ADE2BC52655B1BAF9A14D03274EBC4C330C19DA0E6FF34ECA92F43CA5D50CE7B226D345520EA49F859681CC1F46F800696D2015E72EFEE01403414DF534740FF5B80F63959173834C43D7B037629A98051F8A0EAB7D101F0707797EA9A
+[2025-12-09 14:58:57.689][000000023.669] I/user.ble_packet_fota 处理写入数据 F000 F002 6BE5E55BDC5204A19BFE2E7C205B5BE81F683ADCD8ACD5A202DBF521EC0C1EBBDCA27409534EFD7CCE4AEEF3CA58C8543C6AF43C86F2F6485A9AB4B544D9C19D83A989A05D8994F154001A5F542439910754539430A2688B69873D4168FB5EB756D6900770B03051B92799ADE2BC52655B1BAF9A14D03274EBC4C330C19DA0E6FF34ECA92F43CA5D50CE7B226D345520EA49F859681CC1F46F800696D2015E72EFEE01403414DF534740FF5B80F63959173834C43D7B037629A98051F8A0EAB7D101F0707797EA9A 400
+[2025-12-09 14:58:57.702][000000023.670] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:57.711][000000023.670] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:57.721][000000023.671] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:57.734][000000023.671] I/user.FOTA_DATA 处理分段数据,包序号: 21
+[2025-12-09 14:58:57.742][000000023.671] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:57.750][000000023.672] I/user.FOTA_DATA 数据写入成功,当前总计: 4400 字节
+[2025-12-09 14:58:57.837][000000023.883] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:57.846][000000023.883] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:57.859][000000023.884] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:57.871][000000023.884] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:57.880][000000023.884] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:57.889][000000023.886] I/user.BLE 收到写请求: F000 F002 D7DA355A9083EC81CC3C089D1C9BA096727287A2F7F602CE5522E7590298B738600571BBEEE96A32941EF147EA8A77097838974851483E37C861B14DB7CE8761152A56E49C515D11923B97AC78E02F1ADFA6DFAC1CDF2405D3B7E6DE41C2C97725F1015EF748DA755A10905024A4D721535B3522838050DBA769090E5D9008B8C31F312C20A7A1F3EFED4987AF28BEE4C03E8FCBC8625CF17DE0B4BDB28A71F2AFD9C1F6E624A5890F1D6CB75526E2E512A695F3D99DC6D4452A4FBE7251F10AAC794C5374C5BE99
+[2025-12-09 14:58:57.898][000000023.886] I/user.ble_packet_fota 处理写入数据 F000 F002 D7DA355A9083EC81CC3C089D1C9BA096727287A2F7F602CE5522E7590298B738600571BBEEE96A32941EF147EA8A77097838974851483E37C861B14DB7CE8761152A56E49C515D11923B97AC78E02F1ADFA6DFAC1CDF2405D3B7E6DE41C2C97725F1015EF748DA755A10905024A4D721535B3522838050DBA769090E5D9008B8C31F312C20A7A1F3EFED4987AF28BEE4C03E8FCBC8625CF17DE0B4BDB28A71F2AFD9C1F6E624A5890F1D6CB75526E2E512A695F3D99DC6D4452A4FBE7251F10AAC794C5374C5BE99 400
+[2025-12-09 14:58:57.912][000000023.887] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:57.923][000000023.887] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:57.937][000000023.887] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:57.950][000000023.888] I/user.FOTA_DATA 处理分段数据,包序号: 22
+[2025-12-09 14:58:57.959][000000023.888] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:57.970][000000023.888] I/user.FOTA_DATA 数据写入成功,当前总计: 4600 字节
+[2025-12-09 14:58:58.007][000000024.055] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:58.019][000000024.055] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:58.030][000000024.056] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:58.042][000000024.056] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:58.051][000000024.056] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:58.062][000000024.058] I/user.BLE 收到写请求: F000 F002 F5392A156093A3FC708F821DAA16652202A12307D226875F97319CD5A92B65A6314E5519BD42E5DB61F14C8DA38A84ADDE240D50AF43B04DD28A11BE7380BD17EF28101AF040CD8D18236076516280E6D1C4715BB4331D3B0678F82E3DA831F471517209FD6092D7C193A92F1FAD1596E77AE0FE3EA6551BF45C3B9CB79991DFB7135CD6B9FFA8F81E6BABE6F979350DF254C76EB3700B4FC6FCD7C64A48301B9651BE65B6D8344AB5FF077966352CD781598D2A22E1670BE58914F441126E5EE00E86EB80473F02
+[2025-12-09 14:58:58.076][000000024.058] I/user.ble_packet_fota 处理写入数据 F000 F002 F5392A156093A3FC708F821DAA16652202A12307D226875F97319CD5A92B65A6314E5519BD42E5DB61F14C8DA38A84ADDE240D50AF43B04DD28A11BE7380BD17EF28101AF040CD8D18236076516280E6D1C4715BB4331D3B0678F82E3DA831F471517209FD6092D7C193A92F1FAD1596E77AE0FE3EA6551BF45C3B9CB79991DFB7135CD6B9FFA8F81E6BABE6F979350DF254C76EB3700B4FC6FCD7C64A48301B9651BE65B6D8344AB5FF077966352CD781598D2A22E1670BE58914F441126E5EE00E86EB80473F02 400
+[2025-12-09 14:58:58.087][000000024.059] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:58.096][000000024.059] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:58.106][000000024.059] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:58.120][000000024.060] I/user.FOTA_DATA 处理分段数据,包序号: 23
+[2025-12-09 14:58:58.128][000000024.060] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:58.139][000000024.060] I/user.FOTA_DATA 数据写入成功,当前总计: 4800 字节
+[2025-12-09 14:58:58.195][000000024.233] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:58.210][000000024.234] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:58.221][000000024.234] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:58.233][000000024.234] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:58.243][000000024.235] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:58.250][000000024.236] I/user.BLE 收到写请求: F000 F002 A79FFA80A5085511747E3225520E5E7EA9EB4197F064C508002E59A86BE8E01D452C4D901B5750A2F22B3F2C06EAA13EDC89CA3BA47519C06AC0314F12E502A56ABD7C0BFF6B38554945124DCC89A91303EABF303E9E9A770F356F1C40556467439AB6EF85EAC9BCA0400889115454620D304AF5E0DBA8F6B081501D850F7E9C773841683C448C7F88DA350A54C78FAB18FE3EC6EB9F815B5AE4D275949978C7B715E6EE1A3CD1089A562E013D1F8F06B82ED55ADA0807A8B3A569BD3571F314D31E7E15FD127C1A
+[2025-12-09 14:58:58.262][000000024.236] I/user.ble_packet_fota 处理写入数据 F000 F002 A79FFA80A5085511747E3225520E5E7EA9EB4197F064C508002E59A86BE8E01D452C4D901B5750A2F22B3F2C06EAA13EDC89CA3BA47519C06AC0314F12E502A56ABD7C0BFF6B38554945124DCC89A91303EABF303E9E9A770F356F1C40556467439AB6EF85EAC9BCA0400889115454620D304AF5E0DBA8F6B081501D850F7E9C773841683C448C7F88DA350A54C78FAB18FE3EC6EB9F815B5AE4D275949978C7B715E6EE1A3CD1089A562E013D1F8F06B82ED55ADA0807A8B3A569BD3571F314D31E7E15FD127C1A 400
+[2025-12-09 14:58:58.272][000000024.237] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:58.282][000000024.237] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:58.295][000000024.238] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:58.309][000000024.238] I/user.FOTA_DATA 处理分段数据,包序号: 24
+[2025-12-09 14:58:58.318][000000024.238] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:58.333][000000024.239] I/user.FOTA_DATA 数据写入成功,当前总计: 5000 字节
+[2025-12-09 14:58:58.344][000000024.360] I/user.fota version 001.000.000
+[2025-12-09 14:58:58.366][000000024.406] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:58.378][000000024.406] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:58.388][000000024.407] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:58.401][000000024.407] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:58.410][000000024.407] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:58.419][000000024.409] I/user.BLE 收到写请求: F000 F002 2039CF1E3E8982802E6F4EF78A2F8937794B315244FED3E2BFF073BCD2295FDF5389962FFCAB8366426A2761C52660A65E1F1DE4A43755B931638B893755C50FB98AEDE6C47A0F1FB7409F35E9D643B92D2FFFB83B7D4DF089A5B4D59E11F4C3EE1880FAFBA4734084172B980851667F0D9B4CAE42D0201B2EB499C54081C88D4047AF4FA7F78942DE71EA1F83ED968C06FA3A9535A84161E68CD2BD1AC86DF97D10FD024D6EC66716F0813BA243F9BACB624F68B7D4EBF478B0761F5CA0F3017703B761E054E4B4
+[2025-12-09 14:58:58.429][000000024.409] I/user.ble_packet_fota 处理写入数据 F000 F002 2039CF1E3E8982802E6F4EF78A2F8937794B315244FED3E2BFF073BCD2295FDF5389962FFCAB8366426A2761C52660A65E1F1DE4A43755B931638B893755C50FB98AEDE6C47A0F1FB7409F35E9D643B92D2FFFB83B7D4DF089A5B4D59E11F4C3EE1880FAFBA4734084172B980851667F0D9B4CAE42D0201B2EB499C54081C88D4047AF4FA7F78942DE71EA1F83ED968C06FA3A9535A84161E68CD2BD1AC86DF97D10FD024D6EC66716F0813BA243F9BACB624F68B7D4EBF478B0761F5CA0F3017703B761E054E4B4 400
+[2025-12-09 14:58:58.441][000000024.410] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:58.453][000000024.410] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:58.464][000000024.410] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:58.475][000000024.411] I/user.FOTA_DATA 处理分段数据,包序号: 25
+[2025-12-09 14:58:58.485][000000024.411] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:58.498][000000024.411] I/user.FOTA_DATA 数据写入成功,当前总计: 5200 字节
+[2025-12-09 14:58:58.537][000000024.583] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:58.547][000000024.584] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:58.558][000000024.584] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:58.572][000000024.584] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:58.586][000000024.584] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:58.601][000000024.586] I/user.BLE 收到写请求: F000 F002 25A7790B57C027D592D7C8C2BDCCBDD92322073E65330C3CCFE304B2A09197AB526EB517FEA520F87511FA17588F727D09994EFCB1945DCDAAAFEA1EC1A57B56C929FC47DAE333CF469ED2A3932DEE0F13D2B8D8DE28FDF4371AE9B89185486E88197B68BFCCDB392C256D1E8EF08F2D4D905D3D4E6B7326277F0A7F5BDB463C93500D630D0D8D715B826297DE265B0D7A81A82F6D06319E01D61DBBBC639A846094CE433EEFFF44B2EBA36E56CDFA2A0E100229DA1C5685A19D7E30AA8A5CD16F3FB4E6F2EF0606
+[2025-12-09 14:58:58.618][000000024.586] I/user.ble_packet_fota 处理写入数据 F000 F002 25A7790B57C027D592D7C8C2BDCCBDD92322073E65330C3CCFE304B2A09197AB526EB517FEA520F87511FA17588F727D09994EFCB1945DCDAAAFEA1EC1A57B56C929FC47DAE333CF469ED2A3932DEE0F13D2B8D8DE28FDF4371AE9B89185486E88197B68BFCCDB392C256D1E8EF08F2D4D905D3D4E6B7326277F0A7F5BDB463C93500D630D0D8D715B826297DE265B0D7A81A82F6D06319E01D61DBBBC639A846094CE433EEFFF44B2EBA36E56CDFA2A0E100229DA1C5685A19D7E30AA8A5CD16F3FB4E6F2EF0606 400
+[2025-12-09 14:58:58.634][000000024.587] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:58.651][000000024.587] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:58.665][000000024.587] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:58.680][000000024.588] I/user.FOTA_DATA 处理分段数据,包序号: 26
+[2025-12-09 14:58:58.695][000000024.588] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:58.710][000000024.588] I/user.FOTA_DATA 数据写入成功,当前总计: 5400 字节
+[2025-12-09 14:58:58.755][000000024.800] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:58.769][000000024.801] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:58.783][000000024.801] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:58.797][000000024.801] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:58.813][000000024.802] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:58.824][000000024.803] I/user.BLE 收到写请求: F000 F002 F866A14308D15F799B57A465462922B99F42A0EF8911C9A6CAF5F4BAB34A7DC4909E70E3E0D07A70984726604001FC9BE18E1D973B57FD29C8D29EB6830821BC63B59F0501ED48A33F83433589DEA55C7B42516996A1C0FC930C00456BB72B9096F1525E3054C97B15D820B30D629882D054AFD396757A5CBF722303312D30F897D9C5906F87BDA16BB377CD2901DD5D31853757A2C0DCF856DF62D0BFE8D00C3CF221F7E0D05A057C7F6C9528A2DC9119EACE8FD76D4B8BB2CE5233CC46239BC8E96600E5431810
+[2025-12-09 14:58:58.839][000000024.804] I/user.ble_packet_fota 处理写入数据 F000 F002 F866A14308D15F799B57A465462922B99F42A0EF8911C9A6CAF5F4BAB34A7DC4909E70E3E0D07A70984726604001FC9BE18E1D973B57FD29C8D29EB6830821BC63B59F0501ED48A33F83433589DEA55C7B42516996A1C0FC930C00456BB72B9096F1525E3054C97B15D820B30D629882D054AFD396757A5CBF722303312D30F897D9C5906F87BDA16BB377CD2901DD5D31853757A2C0DCF856DF62D0BFE8D00C3CF221F7E0D05A057C7F6C9528A2DC9119EACE8FD76D4B8BB2CE5233CC46239BC8E96600E5431810 400
+[2025-12-09 14:58:58.849][000000024.804] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:58.859][000000024.805] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:58.870][000000024.805] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:58.880][000000024.805] I/user.FOTA_DATA 处理分段数据,包序号: 27
+[2025-12-09 14:58:58.893][000000024.806] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:58.907][000000024.806] I/user.FOTA_DATA 数据写入成功,当前总计: 5600 字节
+[2025-12-09 14:58:58.946][000000024.978] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:58.955][000000024.979] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:58.969][000000024.979] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:58.980][000000024.979] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:58.993][000000024.980] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:59.002][000000024.981] I/user.BLE 收到写请求: F000 F002 273DCFAB5EB90608BD68CAE92F476307ED47CDB1FADB8F59AF83250DA720FD56B627A93D781456D69C19065CEC4130386A9817A0CFFBCF475779C15E22BC0E01D7C6DC447E315EA16CB207B814AD2035A4E8D403F3EEA12EDF088D8D32ABD17E77C44A62669DFE802CF1D876AE0BA4500F8BC0B1A83CFCA11B8828367D36BC7DC13F8C5D407E01F5B5D63B697F450A23BAC77868E86AE6D15F7605CD2AD4327A12367F4894071C247E88950D6B67DB33DBF1D97C3CFEF90059E74ECFD17584B08219639DC025B361
+[2025-12-09 14:58:59.014][000000024.981] I/user.ble_packet_fota 处理写入数据 F000 F002 273DCFAB5EB90608BD68CAE92F476307ED47CDB1FADB8F59AF83250DA720FD56B627A93D781456D69C19065CEC4130386A9817A0CFFBCF475779C15E22BC0E01D7C6DC447E315EA16CB207B814AD2035A4E8D403F3EEA12EDF088D8D32ABD17E77C44A62669DFE802CF1D876AE0BA4500F8BC0B1A83CFCA11B8828367D36BC7DC13F8C5D407E01F5B5D63B697F450A23BAC77868E86AE6D15F7605CD2AD4327A12367F4894071C247E88950D6B67DB33DBF1D97C3CFEF90059E74ECFD17584B08219639DC025B361 400
+[2025-12-09 14:58:59.022][000000024.982] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:59.036][000000024.982] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:59.046][000000024.983] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:59.056][000000024.983] I/user.FOTA_DATA 处理分段数据,包序号: 28
+[2025-12-09 14:58:59.066][000000024.983] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:59.082][000000024.984] I/user.FOTA_DATA 数据写入成功,当前总计: 5800 字节
+[2025-12-09 14:58:59.114][000000025.150] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:59.126][000000025.150] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:59.138][000000025.151] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:59.148][000000025.151] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:59.159][000000025.151] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:59.172][000000025.152] I/user.BLE 收到写请求: F000 F002 E16CA5457002B97D974F7F2314C9B30D52D58590364540B48C25334DED75C8F2395E52ABE5DFAA4A09A4066CA468E096201482BDBFE1686DF0EA1A27CEAC722337CCD7B98D0B3074B4C55D44C9D749D0A88F14CFD2247412C2F025DD7208C3E9BCDCCE2D9ED8CEA0EF23DD04CC780683C2A5895AFA3731DBAA3A450C6FB5E11D2BE7DE651F75AB461427C26881CB139B0A7D276B8569B1C8D5ADCCC11625652DEEDEE827C5B29A80F19ADE004DFC8F21BD87C6AA7DCB4F60B6E162CAF9A5E62886A49C50FBBAF959
+[2025-12-09 14:58:59.184][000000025.153] I/user.ble_packet_fota 处理写入数据 F000 F002 E16CA5457002B97D974F7F2314C9B30D52D58590364540B48C25334DED75C8F2395E52ABE5DFAA4A09A4066CA468E096201482BDBFE1686DF0EA1A27CEAC722337CCD7B98D0B3074B4C55D44C9D749D0A88F14CFD2247412C2F025DD7208C3E9BCDCCE2D9ED8CEA0EF23DD04CC780683C2A5895AFA3731DBAA3A450C6FB5E11D2BE7DE651F75AB461427C26881CB139B0A7D276B8569B1C8D5ADCCC11625652DEEDEE827C5B29A80F19ADE004DFC8F21BD87C6AA7DCB4F60B6E162CAF9A5E62886A49C50FBBAF959 400
+[2025-12-09 14:58:59.195][000000025.154] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:59.210][000000025.154] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:59.220][000000025.154] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:59.234][000000025.155] I/user.FOTA_DATA 处理分段数据,包序号: 29
+[2025-12-09 14:58:59.247][000000025.155] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:59.262][000000025.155] I/user.FOTA_DATA 数据写入成功,当前总计: 6000 字节
+[2025-12-09 14:58:59.299][000000025.327] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:59.311][000000025.327] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:59.321][000000025.328] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:59.335][000000025.328] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:59.344][000000025.328] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:59.353][000000025.330] I/user.BLE 收到写请求: F000 F002 8D6EFD873A5DAC4E398D88153FE9218962D9E75EFD381E5DD1C0B7A3FF565F3758352CD44841F5FFCA829E825ECABC359B996C6C0497D406DC6C5A81C43F941F2498AC674911BECFCBBD1A096B26C705BAA46EFE9EA3B59DFB364C463D990C6674FB2AAB8A5CFA01F8B234EEE49313B13AD3374C00AACA533D86C100E758A0ABBBB390D34FAC4C073C761AFA5B4FB0202B10E52E60A001CFA8F47BF9A82708CB2117C0B3A7C0A7DE779A4053DCA875105ACDEFC504C8BD3EE679ADFD46E18DCCA5BCDE70D7090A79
+[2025-12-09 14:58:59.366][000000025.330] I/user.ble_packet_fota 处理写入数据 F000 F002 8D6EFD873A5DAC4E398D88153FE9218962D9E75EFD381E5DD1C0B7A3FF565F3758352CD44841F5FFCA829E825ECABC359B996C6C0497D406DC6C5A81C43F941F2498AC674911BECFCBBD1A096B26C705BAA46EFE9EA3B59DFB364C463D990C6674FB2AAB8A5CFA01F8B234EEE49313B13AD3374C00AACA533D86C100E758A0ABBBB390D34FAC4C073C761AFA5B4FB0202B10E52E60A001CFA8F47BF9A82708CB2117C0B3A7C0A7DE779A4053DCA875105ACDEFC504C8BD3EE679ADFD46E18DCCA5BCDE70D7090A79 400
+[2025-12-09 14:58:59.380][000000025.331] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:59.389][000000025.331] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:59.400][000000025.331] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:59.414][000000025.332] I/user.FOTA_DATA 处理分段数据,包序号: 30
+[2025-12-09 14:58:59.428][000000025.332] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:59.441][000000025.332] I/user.FOTA_DATA 数据写入成功,当前总计: 6200 字节
+[2025-12-09 14:58:59.454][000000025.500] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:59.465][000000025.501] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:59.478][000000025.501] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:59.487][000000025.501] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:59.500][000000025.502] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:59.512][000000025.503] I/user.BLE 收到写请求: F000 F002 4A63D97FF5A93D477A75BD3B62DDB3F27D9657F6CE01F41645B735B2C4697B78198700C2738FAEF9A07E119AF56D0347F3166FC67AC5B90C7B5CD241EA3A3C52D0C7E186846785ED377AD9BD4F6F12FA208C5E108B246037653A371224C4255F8BAA9873EC667F632072FF09B42E3D7865D8AC39B80A0505ACB6AE952B265F8BAD0EAEC701EBA1BB752BC7E885A4F62C769F3E943CC7448E9F189F924F62B5C06FE950E992CF638FC999A42AE824046EF1F29A4F8EAF77E6B707E0E2F9CD88A317D8237DC676F68C
+[2025-12-09 14:58:59.526][000000025.503] I/user.ble_packet_fota 处理写入数据 F000 F002 4A63D97FF5A93D477A75BD3B62DDB3F27D9657F6CE01F41645B735B2C4697B78198700C2738FAEF9A07E119AF56D0347F3166FC67AC5B90C7B5CD241EA3A3C52D0C7E186846785ED377AD9BD4F6F12FA208C5E108B246037653A371224C4255F8BAA9873EC667F632072FF09B42E3D7865D8AC39B80A0505ACB6AE952B265F8BAD0EAEC701EBA1BB752BC7E885A4F62C769F3E943CC7448E9F189F924F62B5C06FE950E992CF638FC999A42AE824046EF1F29A4F8EAF77E6B707E0E2F9CD88A317D8237DC676F68C 400
+[2025-12-09 14:58:59.541][000000025.504] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:59.551][000000025.504] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:59.567][000000025.505] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:59.577][000000025.505] I/user.FOTA_DATA 处理分段数据,包序号: 31
+[2025-12-09 14:58:59.589][000000025.505] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:59.602][000000025.506] I/user.FOTA_DATA 数据写入成功,当前总计: 6400 字节
+[2025-12-09 14:58:59.630][000000025.677] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:59.642][000000025.677] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:59.651][000000025.678] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:59.666][000000025.678] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:59.683][000000025.678] I/user.BLE_EVENT 数据长度: 200 字节
+[2025-12-09 14:58:59.696][000000025.679] I/user.BLE 收到写请求: F000 F002 3AFFDF6E0E4B066DE6A80AF26C638752480CB2805DB597D7DBC8517F9BF383F6EAB90AA871C7C3BBEC893F5EF83F9A11DC2A6B037C20695FA1A612FBC4EFF0C3C73B06241AD49330A226465C0705572BEB57ABE04034739641974ED16ACB06C6AB6036E04EC55EDC011B4ECC42D44D0B0160F7F8EE32BB034AED332E7D18782113D98858FC681DE3EA6A0B08ABAD712D4ED878BBD3935179A6434D9E21040BDCF1777F923F706F9B7440CB5D58784F28891CDE4E9356B4062B7AAED398A5727762BA10429134D006
+[2025-12-09 14:58:59.711][000000025.680] I/user.ble_packet_fota 处理写入数据 F000 F002 3AFFDF6E0E4B066DE6A80AF26C638752480CB2805DB597D7DBC8517F9BF383F6EAB90AA871C7C3BBEC893F5EF83F9A11DC2A6B037C20695FA1A612FBC4EFF0C3C73B06241AD49330A226465C0705572BEB57ABE04034739641974ED16ACB06C6AB6036E04EC55EDC011B4ECC42D44D0B0160F7F8EE32BB034AED332E7D18782113D98858FC681DE3EA6A0B08ABAD712D4ED878BBD3935179A6434D9E21040BDCF1777F923F706F9B7440CB5D58784F28891CDE4E9356B4062B7AAED398A5727762BA10429134D006 400
+[2025-12-09 14:58:59.720][000000025.681] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:59.735][000000025.681] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:59.749][000000025.681] I/user.FOTA_DATA 收到数据包,长度: 200 字节
+[2025-12-09 14:58:59.764][000000025.682] I/user.FOTA_DATA 处理分段数据,包序号: 32
+[2025-12-09 14:58:59.781][000000025.682] I/user.FOTA_DATA 分段写入结果: result: true isDone: false
+[2025-12-09 14:58:59.795][000000025.682] I/user.FOTA_DATA 数据写入成功,当前总计: 6600 字节
+[2025-12-09 14:58:59.810][000000025.849] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:58:59.824][000000025.849] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:58:59.842][000000025.850] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:58:59.855][000000025.850] I/user.BLE_EVENT 特征值UUID: F002
+[2025-12-09 14:58:59.869][000000025.850] I/user.BLE_EVENT 数据长度: 191 字节
+[2025-12-09 14:58:59.882][000000025.851] I/user.BLE 收到写请求: F000 F002 707A137AE1B5F44B2AB40344A31ABFD272658424F0012C35BEE76B0869E6C61BE6232D58B976CB6E74F48C6161819EEA21BF257DD2136559E98A6DE63B0B4303FFA3F4C35CB4663B7118ED440B27474855F07C97AEB54B5448E3463A63A6C25DC5FF6ACB48D678E88515E34020A0B36B1D0553CCA70B4DC41BE54010968B6B535E716E1DFCCB500031B675CD1231701CA08E8002D79A07F80BD24D0EDC210AB9739E19461637A86AA4F64C5F7B878180B4DB18516A9D5A1473603E78782700
+[2025-12-09 14:58:59.893][000000025.852] I/user.ble_packet_fota 处理写入数据 F000 F002 707A137AE1B5F44B2AB40344A31ABFD272658424F0012C35BEE76B0869E6C61BE6232D58B976CB6E74F48C6161819EEA21BF257DD2136559E98A6DE63B0B4303FFA3F4C35CB4663B7118ED440B27474855F07C97AEB54B5448E3463A63A6C25DC5FF6ACB48D678E88515E34020A0B36B1D0553CCA70B4DC41BE54010968B6B535E716E1DFCCB500031B675CD1231701CA08E8002D79A07F80BD24D0EDC210AB9739E19461637A86AA4F64C5F7B878180B4DB18516A9D5A1473603E78782700 382
+[2025-12-09 14:58:59.908][000000025.853] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: nil 数据匹配: 1
+[2025-12-09 14:58:59.918][000000025.853] I/user.ble_packet_fota 数据特征值匹配,处理数据
+[2025-12-09 14:58:59.929][000000025.853] I/user.FOTA_DATA 收到数据包,长度: 191 字节
+[2025-12-09 14:58:59.940][000000025.853] I/user.FOTA_DATA 处理分段数据,包序号: 33
+[2025-12-09 14:58:59.954][000000025.876] I/fota common data done, now checking 0
+[2025-12-09 14:58:59.962][000000025.877] I/fota common data md5 ok
+[2025-12-09 14:58:59.969][000000025.877] I/fota only common data
+[2025-12-09 14:58:59.978][000000025.901] I/fota fota type 0 ok!, wait reboot
+[2025-12-09 14:58:59.986][000000025.902] I/user.FOTA_DATA 分段写入结果: result: true isDone: true
+[2025-12-09 14:59:00.000][000000025.902] I/user.FOTA_DATA 升级进度: 100 % ( 6791 / 6791 )
+[2025-12-09 14:59:00.015][000000025.902] I/user.FOTA_DATA 数据写入成功,当前总计: 6791 字节
+[2025-12-09 14:59:00.027][000000025.903] I/user.FOTA_DATA 所有数据已接收,等待升级完成...
+[2025-12-09 14:59:00.042][000000026.003] I/user.FOTA_DATA FOTA升级成功!
+[2025-12-09 14:59:00.056][000000026.003] I/user.FOTA_DATA 2秒后设备将自动重启...
+[2025-12-09 14:59:00.064][000000026.021] I/user.BLE_EVENT 收到BLE事件: 15
+[2025-12-09 14:59:00.077][000000026.021] I/user.BLE_EVENT 处理写入事件
+[2025-12-09 14:59:00.089][000000026.022] I/user.BLE_EVENT 服务UUID: F000
+[2025-12-09 14:59:00.103][000000026.022] I/user.BLE_EVENT 特征值UUID: F001
+[2025-12-09 14:59:00.114][000000026.022] I/user.BLE_EVENT 数据长度: 1 字节
+[2025-12-09 14:59:00.124][000000026.023] I/user.BLE 收到写请求: F000 F001 02
+[2025-12-09 14:59:00.134][000000026.024] I/user.ble_packet_fota 处理写入数据 F000 F001 02 2
+[2025-12-09 14:59:00.146][000000026.024] I/user.ble_packet_fota UUID匹配结果: 服务匹配: 1 命令匹配: 1 数据匹配: nil
+[2025-12-09 14:59:00.153][000000026.025] I/user.ble_packet_fota 命令特征值匹配,处理命令
+[2025-12-09 14:59:00.165][000000026.025] I/user.FOTA_CMD 收到命令数据: 02 长度: 1
+[2025-12-09 14:59:00.179][000000026.025] I/user.FOTA_CMD 解析命令码: 2 (0x02)
+[2025-12-09 14:59:00.190][000000026.026] I/user.FOTA_CMD 处理结束升级命令
+[2025-12-09 14:59:00.201][000000026.026] I/user.FOTA_CMD 验证文件完整性...
+[2025-12-09 14:59:00.210][000000026.026] I/user.FOTA_CMD 已接收: 6791 字节
+[2025-12-09 14:59:00.221][000000026.026] I/user.FOTA_CMD 应接收: 6791 字节
+[2025-12-09 14:59:00.229][000000026.027] I/user.FOTA_CMD 文件完整性验证通过
+[2025-12-09 14:59:00.242][000000026.027] I/user.FOTA_CMD 升级数据已全部接收,等待升级完成...
+[2025-12-09 14:59:00.251][000000026.127] I/user.FOTA_CMD FOTA升级成功!
+[2025-12-09 14:59:00.260][000000026.128] I/user.FOTA_CMD 2秒后设备将自动重启...
+[2025-12-09 14:59:00.274][000000026.128] I/user.FOTA_CMD 升级流程结束
+[2025-12-09 14:59:01.324][000000027.360] I/user.fota version 001.000.000
+[2025-12-09 14:59:01.965][000000028.004] I/user.FOTA_DATA 正在重启设备...
+
+```
+
+
+10、两种升级方式设备重启后现象一样,可以看到版本更新以及打印
+```lua
+[2025-12-05 16:32:51.986][000000003.361] I/user.fota version 001.000.001
+[2025-12-05 16:32:51.991][000000003.361] I/user.hezhou ble_fota test
+[2025-12-05 16:32:54.981][000000006.361] I/user.fota version 001.000.001
+[2025-12-05 16:32:54.985][000000006.362] I/user.hezhou ble_fota test
+```
+
+11、工具日志如下:
+```lua
+D:\gitee_hz\LuatOS\module\Air8000\demo\fota\ble_fota>python ble_fota_tool.py -f ble_fota.bin
+
+1. 加载固件文件...
+   固件加载完成,大小: 5197 字节
+
+2. 扫描目标设备...
+   正在扫描,请等待...
+   找到匹配设备: Air8000_FOTA (地址: C8:C2:C6:8F:09:10)
+   选择设备: Air8000_FOTA (地址: C8:C2:C6:8F:09:10)
+
+3. 建立BLE连接...
+   连接成功,状态: True
+
+4. 发现服务和特征值...
+   找到FOTA服务: 0000f000-0000-1000-8000-00805f9b34fb
+     特征值: 0000f001-0000-1000-8000-00805f9b34fb - 属性: ['write']
+       -> 命令特征值 (可写)
+     特征值: 0000f002-0000-1000-8000-00805f9b34fb - 属性: ['write']
+       -> 数据特征值 (可写)
+
+5. 发送开始升级命令...
+   连接成功,等待1秒...
+   写入特征值 f001,数据长度: 5 字节
+   开始命令发送完成
+
+6. 分块传输固件数据...
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   进度: 77.0% - 0.9 KB/s - 已发送 20 包 - 预计剩余: 1.4s
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 200 字节
+   写入特征值 f002,数据长度: 197 字节
+   进度: 100.0% - 0.9 KB/s - 已发送 26 包 - 预计剩余: 0.0s
+   数据传输完成! 总时间: 5.7s, 平均速度: 0.9 KB/s
+
+7. 发送结束升级命令...
+   写入特征值 f001,数据长度: 1 字节
+   结束命令发送完成
+
+8. 等待设备处理升级...
+
+==================================================
+升级流程完成! 设备应该正在重启...
+==================================================
+   已断开连接
+```