TI中文支持网
TI专业的中文技术问题搜集分享网站

ZigBee 3.0 AF_DataRequest使用问题

ZigBee 3.0  GenericApp例程,终端发送的时候使用下面的函数

if ( AF_DataRequest( &GenericApp_DstAddr, &GenericApp_epDesc,
GENERICAPP_CLUSTERID,
1,
(uint8 *)&GenericApp_SO,
&GenericApp_TransID,
AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )

其中GenericApp_SO=0x10;

GenericApp_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;
GenericApp_DstAddr.endPoint = GENERICAPP_ENDPOINT;
GenericApp_DstAddr.addr.shortAddr = 0x0000;

// Fill out the endpoint description.
GenericApp_epDesc.endPoint = GENERICAPP_ENDPOINT;
GenericApp_epDesc.task_id = &zclGenericApp_TaskID;
GenericApp_epDesc.simpleDesc = (SimpleDescriptionFormat_t *)&zclGenericApp_SimpleDesc;
GenericApp_epDesc.latencyReq = noLatencyReqs;
// Register the endpoint description with the AF
afRegister( &GenericApp_epDesc );

const SimpleDescriptionFormat_t GenericApp_SimpleDesc =
{
GENERICAPP_ENDPOINT, // int Endpoint;
GENERICAPP_PROFID, // uint16 AppProfId[2];
GENERICAPP_DEVICEID, // uint16 AppDeviceId[2];
GENERICAPP_DEVICE_VERSION, // int AppDevVer:4;
GENERICAPP_FLAGS, // int AppFlags:4;
GENERICAPP_MAX_CLUSTERS, // byte AppNumInClusters;
(cId_t *)GenericApp_ClusterList, // byte *pAppInClusterList;
GENERICAPP_MAX_CLUSTERS, // byte AppNumInClusters;
(cId_t *)GenericApp_ClusterList // byte *pAppInClusterList;
};

发送确实返回是afStatus_SUCCESS ,我用LED闪烁指示发送成功的,

但是接收端进入不了下面的代码:

case AF_INCOMING_MSG_CMD:
GenericApp_MessageMSGCB( MSGpkt );
break;

Alvin Chen:

看看你的地址以及end point对不对,请提供抓包文件看一下。

YiKai Chen:

先設個斷點在afBuildMSGIncoming里面看看有沒有收到

user5367314:

回复 Alvin Chen:

终端给协调器单播发,地址是0没问题

两边的endpoint都是8 

#define GENERICAPP_ENDPOINT            8

抓包如附件,请帮忙分析协调器AF_INCOMING_MSG_CMD收不到的原因

001.psd

user5367314:

回复 YiKai Chen:

0647.001.psd请帮忙分析抓包文件协调器AF_INCOMING_MSG_CMD收不到的原因

YiKai Chen:

回复 user5367314:

你的GENERICAPP_CLUSTERID是0x0008嗎? GenericApp_SO是不是有時候會是0x10有時候是0x11?

user5367314:

回复 YiKai Chen:

GENERICAPP_CLUSTERID是8,GenericApp_SO在终端那边每按一下按键值变一下(0x10和0x11之间切换),
另外在协调器端afBuildMSGIncoming里面打断点,也没有中断
但是终端这边确实是返回afStatus_SUCCESS if ( AF_DataRequest( &GenericApp_DstAddr, &GenericApp_epDesc,GENERICAPP_CLUSTERID,(byte)sizeof( GenericApp_SO ) + 1,(uint8 *)&GenericApp_SO,&GenericApp_TransID,AF_SKIP_ROUTING , AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )

user5367314:

回复 YiKai Chen:

基于3.0.2的GenericApp例程,协调器2538,终端2530
你那边能不能测试一下AF_DataRequest相互发,对方能不能收到,
如果可以,麻烦把这块的代码贴给我,我这边怎么试对方都收不到(不触发AF_INCOMING_MSG_CMD)

YiKai Chen:

回复 user5367314:

這樣看起來你的封包是有送出來的,而且协调器端有mac ack,代表协调器端有收到,你在設置斷點在afIncomingData內看看有沒有收到

user5367314:

回复 YiKai Chen:

afIncomingData可以进入,单步调试如下:else if ( (epDesc = afFindEndPointDesc( aff->DstEndPoint )) )//进入这里{pList = afFindEndPointDescList( epDesc->endPoint );//进入这里}while ( epDesc )
{else if ( epDesc->simpleDesc )//进入这里{epProfileID = epDesc->simpleDesc->AppProfId;//进入这里}
}

YiKai Chen:

回复 user5367314:

afIncomingData可以进入代表有收到了,那你往下调试看看為什麼他不走到afBuildMSGIncoming去

赞(0)
未经允许不得转载:TI中文支持网 » ZigBee 3.0 AF_DataRequest使用问题
分享到: 更多 (0)