繁体   English   中英

NanoPB 回调函数

[英]NanoPB Callback functions

我正在做一个项目,其中包括使用 NanoPB。 目前,我的原型文件中有多个回调字段。 我现在必须使用我自己编写的回调函数对这些回调字段进行编码和解码。

我的问题是:

我在 protofile 中定义了一条消息,其中包含回调字段和非回调字段。 如果我创建一个回调编码 function,我应该为特定字段还是整个消息创建这个?

我的原型文件如下所示:

syntax = "proto2";

message stringCallback{
    required string name = 1;
    required string surname = 2;
    required int32 age = 3;
}

对字符串进行编码的示例:

bool encode_string(pb_ostream_t *stream, const pb_field_t *field, void * const *arg)
{
    char *str = "Hello world!";
    
    if (!pb_encode_tag_for_field(stream, field))
        return false;
    
    return pb_encode_string(stream, (uint8_t*)str, strlen(str));
}

如果我创建一个回调编码 function,我应该为特定字段还是整个消息创建这个?

任何最适合您的目的。

您显示的示例回调不是特别有用。 如果您只想从char*中获取一个字符串,您可以在该字段上设置(nanopb).type = FT_POINTER

如果多个字段的回调操作相同,请务必重用相同的 function。 如果有差异,请制作单独的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM