为了账号安全,请及时绑定邮箱和手机立即绑定

3.3-机智云之GoKit-MCU程序详解

标签:
Sass/Less

一、通信协议详解

1、协议命令格式:

header + len + cmd + sn + payload + checksum

固定包头+包长度+命令+包序号+数据区约定+校验和

2、P0数据区约定解析《XX-机智云接入串口通讯协议文档》

【1】WiFi模组请求设备信息;

【2】WiFi模组与设备MCU的心跳;

【3】设备MCU通知WiFi模组进入配置模式;

【4】设备MCU重置WiFi模组;

【5】WiFi模组向设备MCU通知WiFi模组工作状态的变化;

【6】WiFi模组请求重启MCU;

【7】非法消息通知;

【8】WiFi模组读取设备的当前状态;

【9】设备MCU向WiFi模组主动上报当前状态;

【10】WiFi模组控制设备;

注意:查看《XX-机智云接入串口通讯协议文档》

有效数据的上传(协议4.8、4.9),上传协议的组成形式为:action(1B) + dev_status(11B) ; 

有效数据的上传(协议4.10),下达协议的组成形式为:action(1B) + attr_flags(1B) + attr_vals(6B) ; 

二、程序详解

1、代码目录介绍

【1】一级目录说明

Gizwits:协议相关目录

Hal:外设驱动库

Lib:STM32驱动库

Project:工程管理文件

User:代码入口文件目录

Utils:工具函数目录

README.txt:GoKit3(V)文档

【2】代码文件说明(gizwits_product.c/h,gizwits_protocol.c/h)

【3】协议API介绍

2、程序实现原理

【1】协议实现机制:协议解析后,将P0数据区的有效数据点生成对应的数据点事件,再按事件处理数据点。

【2】数据点转换事件的说明:根据协议P0数据区的attr_flags位判断出有效数据点,并将其转化成对应的数据点事件,然后在事件处理函数中(gizwitsEventProcess)完成事件的处理。

3、程序初始化说明

【1】数据协议结构体的定义

设备MCU向WIFi模组上报当前状态:payload(数据区约定) == flag(标识)+action(动作)+dev_status(设备状态)

WIFi模组下发指令控制设备MCU:payload(数据区约定) == flag(标识)+action(动作)+attr_flags(标志位)+attr_vals(数据值)

【2】程序主函数

SystemInit()、userInit()、gizwitsInit()、userHandle()、gizwitsHandle()

【3】用户程序初始化

【4】定时器使用

【5】串口的使用

4、配置模式说明

设备需要进入配置模式才能进行联网,并与云端进行通信,在本示例工程中是通过按键触发进入相应的配置模式。

5、协议处理函数的实现

【1】首先是一些局部变量的初始化,比较重要的是:“protocolHead_t *recvHead = NULL;”它的作用是保存解析出来的协议包头。

【2】然后是协议的重发机制,它的作用是对发送后的协议数据进行超时判断,超时200ms进行重发,重发上限为三次。

【3】接下来程序会从环形缓冲区中抓取一包的数据。

【4】当我们获得到一整包的数据,就会进入下面的if判断逻辑,进行协议的解析。

【5】然后是各协议命令的处理流程

【6】协议判断完成后是一个状态机的判断,用来完成对应协议命令的处理。

【7】之后是一个数据上报判断机制,主要执行了gizCheckReport函数。

【8】最后一段代码是一个数据定时上报机制。

6、控制型协议的实现

【1】流程:gitProtocalIssuedProcess —> ACTION_CONTROL_DEVICE  —> gizDataPoint2Event —> gizwitsEventProcess

【2】控制型事件处理

【3】可写型数据类型转换

【4】可写型数据类型转换

7、上报型协议的实现

【1】流程:userHandle —> gizCheckReport  —> gizDataPoint2ReportData —> gizReportData

【2】只读型数据的获取

【3】上报转态判断

【4】只读型数据类型转换

8、机智云协议数据处理

【1】数据点类型转换

【2】数据解压与压缩处理



作者:桥边风满袖
链接:https://www.jianshu.com/p/5ead62952749


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 1
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消