EFR32xG21 网关开发-- 系统SDK框架的一点认识

至此,用SilicionLabs方案搭建的网关基本功能已经完成,就系统SDK实现zigbee网关的框架做一点总结认识,抛转引玉~

Zigbee网关的开发涉及工程建立、编译,执行。相关联需要了解依赖的SDK目录含义、工程配置原理,以及懂得整个软件框架运行原理,下面就关键项展开介绍。
一、网关SDK目录详情
1、存储空间
源码包默认有2.5G多
经过一番裁剪之后,SDK用到文件大约有20M。

2、目录详情
SDK目录包含了Silicon Labs开发环境需要的所有代码,在安装时同样可以配置,比如现在我们支持Zigbee,所有相关代码都会自动下载更新。

SDK目录如下:
EFR32xG21 网关开发-- 系统SDK框架的一点认识_第1张图片

在linux环境下使用tree命令,可以打印目录详情。tree -d 只打印目录项,不展开。
EFR32xG21 网关开发-- 系统SDK框架的一点认识_第2张图片
二、网关工程编译介绍
思想指导:Silicon Labs芯片的开发思想是插件化,可以手动勾选配置支持项。通过简单的勾选,生成回调函数,在工程项目文件中暴露出来,具体的函数实现在SDK中,plugin目录。
1、Callbacks使用

EFR32xG21 网关开发-- 系统SDK框架的一点认识_第3张图片
Callback中勾选的参数,影响callbacks.h
在这里插入图片描述
2、Plugins使用

EFR32xG21 网关开发-- 系统SDK框架的一点认识_第4张图片
Plugins中勾选的参数,影响如下

在这里插入图片描述

可见最终会被Z3GatewayHost工程外部回调函数调用
3、具体函数介绍
3.1、普通回调示例

simple-main.c ->emberAfMain()
Af-main-host.c ->emAfInit() // 该函数实现在znet-bookkeeping.c中
znet-bookkeeping.c -> 注册了很多回调函数,暴露在外面
void emAfInit(void)
{
  emberAfMainInitCallback();  // Global
  emberAfInit();  // Global
  emberAfPluginGatewayInitCallback();  // Plugin: gateway
  emberAfPluginNetworkCreatorSecurityInitCallback();  // Plugin: network-creator-security
}

3.2、Plugin支持MQTT示例
emberAfPluginGatewayRelayMqttInitCallback 在Z3GatewayHost_endpoint_config.h中
EFR32xG21 网关开发-- 系统SDK框架的一点认识_第5张图片
这个宏定义的实现在util.c的emberAfInit()
EFR32xG21 网关开发-- 系统SDK框架的一点认识_第6张图片
emberAfInit()函数如上述在znet-bookkeeping.c定义实现
三、网关设计
1、网关硬件结构图

EFR32xG21 网关开发-- 系统SDK框架的一点认识_第7张图片

Zigbee协调器通过串口与主控连接,支持硬件流控
2、网关设计原理
Zigbee协调器与Host端通过串口连接,Host端可以接入互联网,通过Socket或者Mqtt等网络协议与外界通信,达到间接控制Zigbee网络的目的。
3、软件设计模型
3.1线程化模型
Socket Server接收命令
轮训获取数据状态

3.2、数据流向
EFR32xG21 网关开发-- 系统SDK框架的一点认识_第8张图片

你可能感兴趣的:(SiliconLabs,Zigbee)