• BLE抓包调试信息分析


    1、l2cap fragment start;l2cap fragment

    分割与重组(Fragmentation and Recombination)
    一些控制器的传输能力可能有限,并且可能需要与 L2CAP 分段创建的片段大小不同的片段大小。因此,L2CAP 下的层可能会进一步对 L2CAP PDU 进行片段化和重组,以创建适合每一层能力的片段。在传输 L2CAP PDU 期间,两个对等设备中可能会发生许多不同级别的分段和重组。

    HCI 驱动程序或控制器可以对 L2CAP PDU 进行分段,以遵守主机控制器接口传输方案的数据包大小限制。这导致 HCI 数据包有效载荷携带 L2CAP PDU 的开始和继续片段。 类似地,控制器可以将 L2CAP PDU 分段以将它们映射到控制器数据包中。 这可能导致控制器数据包负载携带 L2CAP PDU 的开始和继续片段。

    协议栈的每一层可能会传递不同大小的L2CAP PDU分片,并且每一层创建的分片大小在每个对等设备中可能不同。 然而,PDU 在堆栈内被分段,接收 L2CAP 实体仍然重新组合这些分段以获得原始 L2CAP PDU。
     

    2、SERVER CONFIGURATION

    这个功能是client用来设置ATT的,只有一个设置MTU size的程序:Exchange MTU

    当client的ATT_MTU大于default ATT_MTU时,client就会调用Exchange MTU程序配置ATT_MTU,这个程序只有在连接过程中执行一次(连接中其实也可以用,Android原生的CTS测试中就有连接中更改ATT_MTU的操作)。在BR/EDR physical link不执行Exchange MTU,MTU的交互是L2CAP做的

    过程:

    (1)client发送ATT的Exchange MTU Request给server,参数Client Rx MTU设置为自己可以接收的最大MTU size

    (2)Server有两种可能的回复,一种是Exchange MTU Response和Error Response,正常情况下回复Exchange MTU Response,参数Server Rx MTU为server端可以接收的最大MTU size,然后client和server都会取Client Rx MTU和Server Rx MTU中最小的值作为ATT_MTU。异常时回复Error Response,error code会设置失败的原因,如果Error Code为Request Not Supported,则client和server都会使用default MTU

    如下图所示:

    Client发送Exchange MTU Request,设置Client Rx MTU=0x0200,Server回复Exchange MTU Response,设置Server Rx MTU=0x0032,server和client都会设置ATT_MTU=0x0032
     

  • 相关阅读:
    1019 数字黑洞
    基于Hadoop的学习行为数据云存储平台的设计与实现
    STM32 + RT-Thread + LVGL
    优秀开源项目解读(六
    Docker(V3)与Docker Compose的安装
    Java 如何经行异常处理?常见的运行异常的编译时异常
    java多线程的简单应用
    “蔚来杯“2022牛客暑期多校训练营(加赛) B题: Bustling City
    kubectl资源管理命令-陈述式
    PyTorch会在每次.backward()调用时会累积梯度的问题
  • 原文地址:https://blog.csdn.net/u012841414/article/details/125439366