【发布时间】:2021-08-04 18:37:22
【问题描述】:
总的来说,我想知道如何使用动态大小的包来实现 IO 接口(即 NFC 通信堆栈)。我最近不得不实现这样一个 NFC 堆栈,它(NFC-Dep)使用“I-Block”消息。它们具有以下结构:
| Name: | PCB | DID | Payload | CRC |
|---|---|---|---|---|
| Length: | 1 byte | 1 byte | 0 to 251 byte | 2 byte |
我有一些想法,例如:
struct iblock{
uint8_t PCB;
uint8_t DID;
const void *payload;
size_t payload_size;
uint8_t CRC[2];
};
然后我可以从缓冲区中读取标头的值,但必须引用有效负载的缓冲区。如果我不能使用动态内存,有没有更好的方法来做到这一点。或者做这种事情的普遍接受的方式是什么?
非常感谢您的回复和建议。
【问题讨论】:
-
什么是
PCB和DID?我希望其中一个包含有效负载大小。 -
由于有效载荷最多为 251 字节,您可以使用
uint8_t payload[251];来避免动态内存。 -
NFC 使用不同的格式。它被称为 NDEF。您的格式必须包含有效负载大小信息。