WIOTA同步终端数据保存
概述
这里主要以流程图介绍终端(IoTE)进行频点设置,再进行数据发送,在发送过程中保存统计信息的demo。
DEMO所在工程目录路径:PS/app/test/wiota_save_data_demo.c
默认该DEMO为关闭状态,打开需要添加宏定义如下:
#define WIOTA_SAVE_DATA_DEMO
在main.c中加入声明
void wiota_save_data_demo(void);
同时在main()函数中调用上述函数:
wiota_save_data_demo();
DEMO流程
主流程
如图所示,DEMO主要包括三部分,频点设置、保存状态信息和发送数据到AP。通过设置好固定的频点,先保存状态信息到用户数据(静态数据)和指定FLASH地址,再发送数据指定到AP。
下面主要对发送数据到AP作详细说明。
发送数据到AP
如图所示,发送数据到AP是一个循环的操作,每次发送前都先获取连接状态和收发统计信息等用户数据(静态数据),再将用户数据到FLASH指定地址进行写操作,然后到指定的地址读取保存的数据,通过这些数据判断是否发生错误状态,若产生错误状态时,结束发送并退出WIoTa协议栈,否则对AP进行数据发送。
注意事项
地址选择
注意对FLASH指定地址的的选择作以下说明:IOTE是UC8288,在FLASH中,其静态数据占8k,起始地址504k,结束地址512k,为防止错误发生,此demo的测试地址可以选择存静态数据的起始地址的前面4K或者8K的空间用来测试,这里我们选择的是4K,即起始地址500k (0x7D000),结束地址504k。
读写FLASH
需要特别注意的是,在调用读写FLASH相关的函数时,先要执行暂停与ap的同步函数,执行后读写操作后,再执行恢复与ap的同步,伪代码如下:
uc_wiota_suspend_connect();
// do something ...
uc_wiota_recover_connect();
写FLASH,写之前需要先擦除,然后再写,相关函数如下:
uc_wiota_flash_erase_4K();
uc_wiota_flash_write();
读FLASH相关函数如下:
uc_wiota_flash_read();
使用的API接口列表
序号 | 函数名 | 功能 |
---|---|---|
1. | uc_wiota_init() | WIoTa协议栈的初始化 |
2. | uc_wiota_set_freq_info() | 设置频点 |
3. | uc_wiota_run() | 启动WIoTa协议栈 |
4. | uc_wiota_register_recv_data_callback() | 被动接收数据接口注册 |
5. | uc_wiota_connect() | 连接同步ap |
6. | uc_wiota_get_state() | 查询WIoTa当前状态 |
7. | uc_wiota_reset_stats() | WIoTa统计信息重置 |
8. | uc_wiota_get_user_info() | 获取用户定制静态数据首地址 |
9. | uc_wiota_save_static_info() | 主动保存用户数据 |
10. | uc_wiota_suspend_connect() | 暂停与ap的同步 |
11. | uc_wiota_recover_connect() | 恢复与ap的同步 |
12. | uc_wiota_flash_erase_4K() | 擦除4KB的FLASH内容 |
13. | uc_wiota_flash_write() | 将数据写入FLASH指定位置 |
14. | uc_wiota_flash_read() | 读出FLASH指定位置内容 |
15. | uc_wiota_get_all_stats() | WIoTa统计信息获取 |
16. | uc_wiota_send_data() | 发送数据 |
17. | uc_wiota_exit() | 关闭WIoTa协议栈 |