原创 公开源代码:CC2530快速入门函数库,含简单点对多点通信协议和自组织网络通信协议栈(Zigbee简化/LRWPAN移植改进)

2013-7-31 21:00 3719 15 21 分类: MCU/ 嵌入式

之前的帖子提供了简单点对多点通信协议的快速入门函数库的库文件和例程,本帖开放其源代码。

本帖附件中包含了一套自组织网络通信协议栈,基于密西西比州立大学的Robert Reese教授(http://www.ece.msstate.edu/~reese/)的MSSTATE LRWPAN协议栈代码修改,除了移植到CC2530外,简化了用户接口,修改了部分消息处理机制。

附件中除了包含库文件和示范例程外,包含了协议栈的源代码。

使用本源代码,请遵守常见的开源Copyright协议。

本库文件可能有BUG和考虑不周的地方,在节点数目多、传输数据量大时有可能会死机,仅适合学习使用。

 

要快速建立能自行组网的应用,请参考LibTestApp下的示例。其中Coordinator是网关的工程目录,RFD是终端的工程目录。

对于网关,主要代码为:

int main( void ) {
  short ret;
  init();
  //
  while (1) {
    ret = modRfStackFormNetwork();       //创建网络
    if (ret == 0) {
      modSetLedState(0,1);
      break;
    }
  }
  while(1) {
    modRfStackDoService(); //循环执行协议栈

  //应用代码
  }   //应用层处理函数
}

void init() {
  modMcuInit();
  modLedInit();
  //init RF stack
  modRfStackSetRxCallback(&myRxCallback ); //协议栈初始化
  modRfStackInit();

}

int8 myRxCallback(uint16 vSrcShortAddr, uint16 vDestShortAddr, uint8 vSize, uint8* vPacket, int16 vRssi){ //收到消息后的应用处理代码
  modSetLedState(1,2);
  return 0;
}
 

对于终端,主要代码为:

int main( void ) {
  int8 ret;
  uint16 iMyAddr=0, iParentAddr=0, iPktSeqNum=0;
  init();
  //init send buffer
  unsigned char mPacket[6]="123456";
  //
  while (1) {
    ret = modRfStackJoinNetwork();       //加入网络

    if (ret == 0) {
      modSetLedState(0,1);
      break;
    }
  }
  iMyAddr=modRfStackGetMyShortAddress();
  iParentAddr=modRfStackGetParentShortAddress();
  mPacket[2]=iMyAddr>>8;
  mPacket[3]=iMyAddr&0x0FF;
  mPacket[4]=iParentAddr>>8;
  mPacket[5]=iParentAddr&0x0FF;
  while(1) {

    //应用代码

    modDelay(1000);
    mPacket[0]=iPktSeqNum>>8;
    mPacket[1]=iPktSeqNum&0x0FF;
    iPktSeqNum++;
    modRfStackSendPkt(0,6,mPacket);//发送消息
    modRfStackDoService();//循环执行协议栈
    modSetLedState(1,2);
  }
}

void init() {
  modMcuInit();
  modLedInit();
  //init RF stack
  modRfStackSetRxCallback(&myRxCallback ); //协议栈初始化
  modRfStackInit();

}

int8 myRxCallback(uint16 vSrcShortAddr, uint16 vDestShortAddr, uint8 vSize, uint8* vPacket, int16 vRssi){ //收到消息的处理
  modSetLedState(1,2);
  return 0;
}
 

可见,实现十分简单。便于开发者关注应用部分,快速进行开发实现。

 

PARTNER CONTENT

文章评论6条评论)

登录后参与讨论

用户1823954 2015-4-23 16:46

很好,一直没有来评价

用户1800791 2014-10-10 16:39

不错,希望有帮助

用户1766633 2014-6-10 10:38

下载了,先看看借鉴一下经验

用户1597374 2014-5-11 23:41

好贴

用户1075587 2013-12-10 16:09

正在学习,参考参考

用户433969 2013-9-2 09:43

嗯,嗯,受教了。正在学习。
相关推荐阅读
用户138786 2015-03-16 18:38
WIFI模块(HED10W07SN)应用设计入门
WIFI模块(HED10W07SN)应用设计入门 以下系列帖子记录我学习WIFI模块(HED10W07SN)的过程和心得,以及为学生设计的入门指引。 ...
用户138786 2015-03-16 18:37
HED10W07SN串口应用设计
串口通信应用设计 HED10W07SN模块有两个串口。厂家提供的参考实现中,串口0用于管理:AT指令、EM_WIFI程序下载、Boot Loader程序下载(...
用户138786 2015-03-16 16:42
HED10W07SN基本I/O设计
基本I/O设计 芯片中没有与其它外设功能复用的GPIO引脚只有3个:GPIO11、GPIO12、GPIO13。 底层提供...
用户138786 2015-03-16 16:40
WIFI模块HED10W07SN开发环境
开发环境 选择联盛德微电子的HED10W07SN模块入手进行学习是带点偶然的。 拿WIFI模块和CC2530结合做网关是很早就想做的事,但WIFI模...
用户138786 2014-11-27 19:29
无线单片机入门导学(基于CC2530)
无线单片机(WSN/Zigbee)应用设计入门导学(基于CC2530) 我们学习无线单片机编程/应用设计是为了什么呢? 1、设计有用的应用...
用户138786 2014-11-27 19:24
web方式远程控制
web方式远程控制应用设计 这一类应用的特点是客户端通过浏览器(http协议)方式对无线单片机进行远程控制及数据采集。 ...
我要评论
6
15
关闭 站长推荐上一条 /1 下一条