LoRa点对点系统5 数据结构与算法

1 Comm2Trm进程

1.1处理UART数据帧

为节省内存,接收与处理UART数据“复用”了缓冲区,如下图所示:

UART驱动:

#1:一个接一个将接收的UART数据存储到缓冲区;

#2:接收一完整UART帧后,发消息给进程通知处理;

Comm2Trm进程:

#3:给缓冲区加锁,解析UAR帧;

#4:组织UART回应帧;

#5:通过UART发送回应帧,给缓冲区解锁。


为什么要给缓冲区加锁和解锁呢?如下图的时序逻辑所示:进程“锁定”缓冲区期间UART驱动无法向缓冲区中写数据,因此也不会“竞态打扰”进程处理该数据帧。

1.2 发送RF数据包

#1:UART一个接一个输入数据到缓冲区COMM_TRM_DATA;

#2:当接收一完整帧结束后,UART_ISR给进程poll消息;

#3:进程解析和处理该UART数据帧;

#4:进程拷贝用户数据到缓冲区TxDataBuf;

#5:Network进程从缓冲区TxDataBuf提取数据,通过RF发送。

1.3 接收RF数据包

#1:Network进程存储接收数据到缓冲区RxDataBuf;

#2:Network进程post消息给Comm2Trm进程;

#3:Comm2Trm进程组织该数据为UART帧;

#4:进程通过UART口发送该数据帧。

2 Network进程

2.1发送RF数据包

#1:从Comm2Trm进程提取发送数据到packetbuf;

#2:基于packetbuf组织RF数据包;

#3:通过RF发送packetbuf中的RF数据包;

2.2接收RF数据包

#1:RF接收的数据包存入RadioBuf,并poll进程;

#2:进程从RadioBuf拷贝数据包到ParseRFBuf;

#3:进程解析该RF数据包;

#4:提取用户数据,交付给Comm2Trm进程;

 

2.3 逻辑流程

 

3 SystSettings模块

为简化设计,定义了NetSettings_t数据结构,它的“主本”存储在SystSettings模块的EEPROM中,Comm2Trm和Network这2个进程各自拥有一个“副本”。

1.     上电时,Comm2Trm和Network这2个进程各自从“主本”拷贝“副本”;

2.     任意一方修改“NetSettings_t”的副本数据,必须:①存储到“主本”之中;②通知“另一方”同步更新副本数据。

说明:LPWA物联网应用站(LPWAP.com)通过公开互联网收集、整理并转载有关LPWA物联网应用解决方案,以供广大LPWA应用开发者和爱好者共同学习交流和参考运用到实际生产生活中。本站所有转载的文章、图片、音频、视频等资料的版权归版权所有人所有并衷心感谢您的付出,由于本站采纳的非本站原创文章及图片等内容无法一一联系确认版权者,如果本网所选内容的文章原创作者认为其作品不宜放在本站,请及时通过以下留言功能通知我们采取适当措施,避免给双方造成不必要的经济损失。如果您希望保留文章在本站,但希望文章末尾提供对作者的致谢或者产品、网站交换链接的,也请将需求写入以下留言栏中,谢谢您的支持。让我们共同努力,打造万物互联的未来美好生活!

您的留言或需求: