## ADDED Requirements ### Requirement: TLV 帧结构完整描述 文档 SHALL 描述 QDX 协议的完整帧结构,包含帧头各字段含义、TLV 格式和帧尾 CRC。 #### Scenario: 开发者手动构造一个协议帧 - **WHEN** 开发者需要调试发送内容时 - **THEN** 文档 SHALL 提供帧结构:[FrameHeader 16B] + [TLV_Header 3B] + [Value NB] + [CRC16 2B],其中 FrameHeader = {Magic(2)=0x55AA, Version(1)=0x20, Length(2), Sequence(2), Timestamp(4), Source(1), DevID(2), Class(1), Flags(1)} #### Scenario: 开发者理解 Class 和 TLV Type 的对应关系 - **WHEN** 开发者解析收到的帧时 - **THEN** 文档 SHALL 列出完整的 Class/Type 映射表:CLASS_CONTROL(0x01)、CLASS_DATA(0x02)、CLASS_RESPONSE(0x03)、CLASS_SYSTEM(0x04);Type 包含 TYPE_HANDSHAKE(0x01)、TYPE_HEARTBEAT(0x02)、TYPE_TEMP_FRAME(0x10)、TYPE_CONFIG_COMMON(0x20)、TYPE_CONFIG_2D(0x22)、TYPE_CONFIG_1D(0x23)、TYPE_ACK_PAYLOAD(0x30)、TYPE_DETECTION_RESULT(0x40) 等 ### Requirement: 零拷贝 TX 缓冲区架构描述 文档 SHALL 描述 TcpTxBuffer_t 的双缓冲零拷贝发送架构和 HeadOffset 的使用方式。 #### Scenario: 开发者理解零拷贝的实现方式 - **WHEN** 开发者需要在减少内存拷贝的前提下添加新的帧类型时 - **THEN** 文档 SHALL 说明:`TcpTxBuffer_t` 包含 pBuffer(9216B)、HeadOffset(64B)、ValidPayloadLen;图像数据由预处理模块写入 `pBuffer + HeadOffset` 开始的位置;`TcpLogic_BuildAndSendTemperatureFrame` 在 HeadOffset 前的 64 字节内直接写入帧头(FrameHeader + TLV),**无需额外 memcpy** #### Scenario: 开发者计算单次可发送的最大像素数 - **WHEN** 开发者调整 ROI 大小时 - **THEN** 文档 SHALL 说明:有效载荷容量 = TotalCapacity(9216) - HeadOffset(64) - CRC(2) - TLV_Header(3) - FrameHeader(16) = 9131 字节,每像素 2 字节,最多 4565 个像素(约 67×67 ROI) ### Requirement: 分片机制描述 文档 SHALL 描述协议层的分片上限和分片标志用法。 #### Scenario: 开发者发送超大载荷时 - **WHEN** 开发者发送超过 MAX_FRAGMENT_PAYLOAD(1400B) 的数据时 - **THEN** 文档 SHALL 说明分片最大载荷为 1400B(受 TCP MSS=1460 限制),大帧通过 FLAG_LAST_FRAGMENT(0x20) 标志标识末片;当前 TX 缓冲区为 9216B,单次发送通常不超过此限制 ### Requirement: Flags 字段用法描述 文档 SHALL 描述 FrameHeader.Flags 各位的含义和当前固件的使用情况。 #### Scenario: 开发者解析收到的 Flags 字段 - **WHEN** 上位机解析帧时 - **THEN** 文档 SHALL 说明:FLAG_PRIORITY_MASK(0x03)=优先级(0-3)、FLAG_COMPRESSED(0x04)=压缩(当前未使用)、FLAG_ENCRYPTED(0x08)=加密(当前未使用)、FLAG_ACK_REQ(0x10)=需要 ACK、FLAG_LAST_FRAGMENT(0x20)=末片标志