zigbee 广播 组播 单播
2015-12-21 11:10
561 查看
组播:按照SampleApp实验,组播的实现需要如下步骤:
1.声明一个组对象aps_Group_t SampleApp_Group;
2.对aps_Group_t结构体赋值,示例如下:
// By default, all devices start out in Group 1
SampleApp_Group.ID = 0x0003;
osal_memcpy( SampleApp_Group.name, "Group 3", 7 );
3.设定通信的目标地址,示例如下:
// Setup for the flash command's destination address - Group 1
SampleApp_Flash_DstAddr.addrMode = (afAddrMode_t)afAddrGroup;
SampleApp_Flash_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_Flash_DstAddr.addr.shortAddr = SAMPLEAPP_FLASH_GROUP;
4.注册端点描述符,示例如下:
// Fill out the endpoint description.
SampleApp_epDesc.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_epDesc.task_id = &SampleApp_TaskID;
SampleApp_epDesc.simpleDesc
= (SimpleDescriptionFormat_t *)&SampleApp_SimpleDesc;
SampleApp_epDesc.latencyReq = noLatencyReqs;
// Register the endpoint description with the AF
afRegister( &SampleApp_epDesc );
5.在本任务里将端点加入到组中,示例如下:
aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );
6.按照组播地址向对方发送数据,示例如下:
if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,
SAMPLEAPP_PERIODIC_CLUSTERID,
1,
(uint8*)&SampleAppPeriodicCounter,
&SampleApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
{
}
else
{
// Error occurred in request to send.
}
通信时候,发送设备的输出cluster设定为接收设备的输入cluster,另外profileID设定相同,即可通信
7.对数据的处理与单播的实现一样
8.若要把一个设备加入到组中的端点从组中移除,调用aps_RemoveGroup即可,示例如下:
aps_Group_t *grp;
grp = aps_FindGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP );
if ( grp )
{
// Remove from the group
aps_RemoveGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP );
}
---------------------------
广播:按照SampleApp,执行如下步骤即可
1.声明afAddrType_t 的变量SampleApp_Periodic_DstAddr;
2.设定目标地址变量为广播地址,示例如下:
SampleApp_Periodic_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast;
SampleApp_Periodic_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_Periodic_DstAddr.addr.shortAddr = 0xFFFF;
3.进行数据发送,示例如下:
if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,
SAMPLEAPP_PERIODIC_CLUSTERID,
1,
(uint8*)&SampleAppPeriodicCounter,
&SampleApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
{
}
else
{
// Error occurred in request to send.
}
通信时候,发送设备的输出cluster设定为接收设备的输入cluster,另外profileID设定相同,即可通信
4.对数据的处理与单播的实现一样
1.声明一个组对象aps_Group_t SampleApp_Group;
2.对aps_Group_t结构体赋值,示例如下:
// By default, all devices start out in Group 1
SampleApp_Group.ID = 0x0003;
osal_memcpy( SampleApp_Group.name, "Group 3", 7 );
3.设定通信的目标地址,示例如下:
// Setup for the flash command's destination address - Group 1
SampleApp_Flash_DstAddr.addrMode = (afAddrMode_t)afAddrGroup;
SampleApp_Flash_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_Flash_DstAddr.addr.shortAddr = SAMPLEAPP_FLASH_GROUP;
4.注册端点描述符,示例如下:
// Fill out the endpoint description.
SampleApp_epDesc.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_epDesc.task_id = &SampleApp_TaskID;
SampleApp_epDesc.simpleDesc
= (SimpleDescriptionFormat_t *)&SampleApp_SimpleDesc;
SampleApp_epDesc.latencyReq = noLatencyReqs;
// Register the endpoint description with the AF
afRegister( &SampleApp_epDesc );
5.在本任务里将端点加入到组中,示例如下:
aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );
6.按照组播地址向对方发送数据,示例如下:
if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,
SAMPLEAPP_PERIODIC_CLUSTERID,
1,
(uint8*)&SampleAppPeriodicCounter,
&SampleApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
{
}
else
{
// Error occurred in request to send.
}
通信时候,发送设备的输出cluster设定为接收设备的输入cluster,另外profileID设定相同,即可通信
7.对数据的处理与单播的实现一样
8.若要把一个设备加入到组中的端点从组中移除,调用aps_RemoveGroup即可,示例如下:
aps_Group_t *grp;
grp = aps_FindGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP );
if ( grp )
{
// Remove from the group
aps_RemoveGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP );
}
---------------------------
广播:按照SampleApp,执行如下步骤即可
1.声明afAddrType_t 的变量SampleApp_Periodic_DstAddr;
2.设定目标地址变量为广播地址,示例如下:
SampleApp_Periodic_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast;
SampleApp_Periodic_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_Periodic_DstAddr.addr.shortAddr = 0xFFFF;
3.进行数据发送,示例如下:
if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,
SAMPLEAPP_PERIODIC_CLUSTERID,
1,
(uint8*)&SampleAppPeriodicCounter,
&SampleApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
{
}
else
{
// Error occurred in request to send.
}
通信时候,发送设备的输出cluster设定为接收设备的输入cluster,另外profileID设定相同,即可通信
4.对数据的处理与单播的实现一样
相关文章推荐
- zigbee网蜂cc2530组播实验,基于SampleApp例程
- 关于CC2530存储器映射的讨论
- zigbee网络单播、广播和组播--简单笔记
- zigbee 设备网络启动(非自动)
- [转载]Z-stack 应用程序编程接口(API)-网络层
- Z-Stack 样例程序分析1
- Zigbee协议栈中文说明
- 无线龙 zigbee 加密传输
- zigbee z-stack 地址类型
- Wireless LCD Monitor
- Unable to open file 'lnk51ew_cc2530b.xcl'的解决方案
- CC2530串口通讯2
- CC2530主要的控制寄存器
- HA规范的理解1 - ZStack中节点消息处理的过程
- HA规范的理解2 -关键术词的理解和在协议栈初始化里的实现
- HA规范的理解3 - 初始化函数里的注册回调函数的分析
- zigbee 出现 Energy level Scan Failed解决方法
- ZIGBEE:发送函数AF_DataRequest详解
- ZIGBEE: Error[Pa045]: function "" has no prototype问题解决方法
- ZIGBEE:协议栈工作流程简要分析与学习方法记录