SampleApp.c分析(协议栈版本ZStack-CC2530-2.3.0-1.4.0)

本文分析了SampleApp.c在ZStack-CC2530-2.3.0-1.4.0协议栈中的内容,包括地址类型结构体、用户层常用函数如cluster ID定义、用户初始化、任务处理、按键处理、接收信息处理、发送函数等。重点介绍了不同类型的广播地址及其在网络中的传播范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.AF地址类型结构体位于AF.h
地址模式:

typedef enum
{
   
  afAddrNotPresent = AddrNotPresent,
  afAddr16Bit      = Addr16Bit,
  afAddr64Bit      = Addr64Bit,
  afAddrGroup      = AddrGroup,
  afAddrBroadcast  = AddrBroadcast
} afAddrMode_t;
typedef struct
{
   
  union
  {
   
    uint16      shortAddr;
    ZLongAddr_t extAddr;
  } addr;
  afAddrMode_t addrMode;
  byte endPoint;
  uint16 panId;  // used for the INTER_PAN feature
} afAddrType_t;

2.用户层SampleApp.c中常用函数
cluter ID定义:

// This list should be filled with Application specific Cluster IDs.
const cId_t SampleApp_ClusterList[SAMPLEAPP_MAX_CLUSTERS] =
{
   
  SAMPLEAPP_PERIODIC_CLUSTERID,
  SAMPLEAPP_FLASH_CLUSTERID,
  SAMPLEAPP_CONNECTREQ_CLUSTER,      //请求cluster Id
  SAMPLEAPP_CONNECTREP_CLUSTER        //应答cluster Id
};

用户初始化函数:

void SampleApp_Init( uint8 task_id )

用户初始化函数中的重要代码:

  SampleApp_Periodic_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast; //设置广播通信目的地址模式  广播给网络中的每个节点
  SampleApp_Periodic_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;          //设置端点信息
  SampleApp_Periodic_DstAddr.addr.shortAddr = 0xFFFF;               //设置广播信息的目的地址的短地址

0xFFFF 是广播地址。 协议栈广播地址主要有 3 种类型:
具体的定义如下:

0xFFFF——数据包将被传送到网络上的所有设备,包括睡眠中的设备。对于睡眠中的设备,数据包将被保留在其父亲节点直到查询到它,或者消息超时。
0xFFFD——数据包将被传送到网络上的所有在空闲时

打开接收的设备(RXONWHENIDLE),也就是说,除了睡眠中的所有设备。
0xFFFC——数据包发送给所有的路由器,包括协调器。
————————————————
版权声明:本文为CSDN博主「Bruceoxl」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013162035/article/details/80979977

  SampleApp_Flash_DstAddr.addrMode = (afAddrMode_t)afAddrGroup;         //设置组播通信目的地址模式  组播给网络中的组成员
  SampleApp_Flash_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;                //设置端点信息
  SampleApp_Flash_DstAddr.addr.shortAddr = SAMPLEAPP_FLASH_GROUP;       //设置组播信息的目的地址的短地址
  SampleApp_P2P_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;  //设置点播通信目的地址模式
  SampleApp_P2P_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;        //设置端点信息
  SampleApp_P2P_DstAddr.addr
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值