——
ZDP_MatchDescReq(&z_dst_addr,NWK_BROADCAST_SHORTADDR,SampleApp_epDesc.simpleDesc-> AppProfId,1,(cId_t *)clusterlist,1,(cId_t * )clusterlist,1) ZDO 层 请求设备匹配
——ZDP_IEEEAddrReq(msg_pipeirsp->nwkAddr,ZDP_ADDR_REQTYPE_SINGLE,0,0) ZDO层 根据网络地址物理地址请求
—— neighborEntry_t neighborTable1[MAX_NEIGHBOR_ENTRIES] 邻居表定义,以或的邻居节点 的物理地址、网络地址、节点信息等
——aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group) APS层 把节点加入 SampleApp_Group所标识的组
——aps_FindGroup() APS层 在组表中为一个组ID标识找到一个组 ——aps_RemveGroup() APS层 从组表中删除一个组
——void danbofasong(uint16 dst_addr,int len, uint8 * buffer1) {
afAddrType_t dst1;
dst1.addrMode=afAddr16Bit;
dst1.endPoint = SAMPLEAPP_ENDPOINT; dst1.addr.shortAddr=dst_addr;
if ( AF_DataRequest( &dst1, &SampleApp_epDesc, danbo_id, len, buffer1,
&SampleApp_TransID, AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ) { }
//单播发送函数,以uint16 dst_addr 为目的地址 点对点发送 ——void zubofasong( afAddrType_t * xzubodizhi ) {
uint8 buffer[3];
buffer[0] =(uint8)(SampleAppFlashCounter++); buffer[1] = LO_UINT16( 1000 ); buffer[2] = HI_UINT16( 1000 );
if ( AF_DataRequest( xzubodizhi, &SampleApp_epDesc, zubo_id, 3,
buffer,
&SampleApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ) { } else { }
// 组播发送函数,在一个组里广播数据 ——void guangbofasong(uint16 addr) {
uint8 buffer[2];
buffer[0] = LO_UINT16( addr ); buffer[1] = HI_UINT16( addr );
if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc, guangbo_id, 2,
buffer,
&SampleApp_TransID, AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ) { } else { } }
//广播发送,整个网络进行广播
——uint16 get_linjudizhi(int index) {
neighborEntry_t linshi1;
linshi1=neighborTable[index];
if ( linshi1.neighborAddress==NLME_GetShortAddr()) linshi1.neighborAddress=-1;
NLME_GetRequest(nwkNeighborTable,index, &linshi1); return linshi1.neighborAddress; }
//得到邻居节点的信息
——void shiyan_danbofasonglinju(void) {
int i;
uint16 dizhi1;
for(i=0;i dizhi1=get_linjudizhi(i); if (dizhi1>0&&dizhi1!=NLME_GetShortAddr()) { danbofasong(dizhi1,1,&m); m++; } } ////////////////////////////////////////////////// } //向邻居节点单播数据 ——void shiyan_dizhiqingqiu(void) { uint16 dizhi2,dizhi3; byte p1[8]; byte *pm ; p1[0]=0xAC; p1[1]=0x00; p1[2]=0x12; p1[3]=0x13; p1[4]=0x14; p1[5]=0x15; p1[6]=0x16; p1[7]=0x17; pm=NLME_GetExtAddr(); APSME_LookupNwkAddr(p1,&dizhi2); APSME_LookupNwkAddr(pm,&dizhi3); Printn(7,50,dizhi2,1,6); Printn(6,50,dizhi3,1,6); if (ZDP_SUCCESS== ZDP_NwkAddrReq(p1,ZDP_ADDR_REQTYPE_SINGLE,0,0)) Print6(5,50,\} 以上是一部分实验函数示例,仅此说明网络通信的工作流程和一些功能的实现方法,具体的应用设计有待于后序开发。