本系列主要目的在于记录腾讯云物联网设备端的学习笔记,并且对设备端SDK进行补充说明。
数据模板相关概念和消息格式在之前的文章中已经介绍过了,这里不再赘述,请参见数据模板
数据模板设计如下:
根据数据模板协议,分为5个文件:
主要通过publish进行发送,这里不做赘述。其中属性会涉及到多种上行消息,这里可以通过联合类型来统一接口:
typedef union {
const char *json;
int code;
struct {
int code;
UtilsJsonValue client_token;
} control_reply;
} PropertyPublishParams;
其中,每个不同topic(property/event/action)将注册一个context用作管理下行消息的上下文,设计如下:
typedef struct {
union {
PropertyMessageCallback property_callback;
EventMessageCallback event_callback;
ActionMessageCallback action_callback;
};
void *usr_data;
} DataTemplateContext;
主要包括相应的回调以及回调需要使用的用户数据,这里使用了联合类型,从而避免了出现过多的形参类型。
重构前的版本,在使用中,由于每次json解析都是动态申请来传递节点,对于资源受限的设备将带来很大的内存消耗和开发上的困难。
相比于重构前的版本,该版本主要对json库进行了改造,将相应的消息传递给上层时,采用指针+长度的方式替代了之前的动态申请的方式,从而降低了内存。原因如下:
具体实现可以参见utils_json_value_get
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。