APDU 编解码
头文件:<dlt698/protocol/apdu/apdu.hpp>,命名空间 dlt698::protocol::apdu。
统一入口
完整的 18 个变体分支:LINK 请求/响应、CONNECT 请求/响应、RELEASE 请求/响应/通知、双向 ERROR、GET/记录/GET-Next 请求响应、SET/ACTION 请求响应。
按服务单独编解码
decode_apdu/encode_apdu 之外,每类服务还有独立入口:
单独使用时更直接:入参就是具体类型,不必构造变体;错误信息也更聚焦。decode_apdu 适合"收什么都能解析"的通用通道。
通用行为
- 拒绝尾随字节。 完整输入 codec 不接受多余字节,返回
trailing_data。 - 拒绝超限输入。 受
Limits的字节数和max_elements约束。 - 未实现分支明确报错。 then-get、非空 FollowReport 等返回
unsupported_service,不会静默通过。 - 保留远端原码。 ERROR-Response 转成
remote_error,原码在Error::remote_code。
尺寸语义
Limits::max_data_bytes 约束的是完整 Data/APDU 的字节数,不包含链路封装。帧尺寸(长度域 L 的上限)不含起止符,APDU 尺寸不含链路封装——三个概念不要混用。