完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 一只耳朵怪 于 2018-5-31 15:50 编辑
用SampleSwitch例子做了个route 和coord 。route定时向coord发送数据。 从dongle看来coord是收到数据,但是coord并没有进入zclSampleSw_ProcessIncomingMsg( zclIncomingMsg_t *pInMsg ) 请问是哪里没有配置好吗? Switch_coord.rar |
|
相关推荐
10个回答
|
|
如果你用的是zcl并且注册回调会直接进入zcl回调。
|
|
|
|
|
|
|
|
看了一下你的code, 你用的是AF_DataRequest发送的。建议你直接参考GenericApp. |
|
|
|
GenericApp还是从这个函数 zclGenericApp_ProcessIncomingMsg( (zclIncomingMsg_t *)MSGpkt ); 吗 |
|
|
|
按ZCL回调,coord并没有进入 if ( *msgPtr == AF_INCOMING_MSG_CMD ) [ zcl_ProcessMessageMSG( (afIncomingMSGPacket_t *)msgPtr ); ] 请问有解决的方法吗? 或是分享一个能通讯的code例子给我,谢谢 |
|
|
|
[size=150%]是这样的,给你打个比方,绝对让你明白zigbee这鸟玩意到底是怎么通讯一回事: [size=150%]假如节点0x1234要发送信息给0x5678,怎么做呢? [size=150%]我们知道,首先0x1234和0x5678两边都要注册endpoint,不注册是不行的,用的是afRegister这个函数注册的,假如0x1234这边注册的endpoint是14,0x5678那边注册的是18 [size=150%]我们就实现给0x5678发送一个开灯的指令,并问候一句"你是猪吗": [size=150%] uint8 srcEndpoint=14; //指定我们(0x1234)的endpointuint8 dstEndpoint=18; //指定对方(0x5678)的endpointuint8 pBuf[]=["Are you pig?"];uint8 msgLen=sizeof(pBuf);uint8 seqNum=0;afAddrType_t dstAddr;dstAddr.addrMode = Addr16Bit;dstAddr.addr.shortAddr = 0x5678;dstAddr.endPoint=dstEndpoint;zcl_SendCommand( srcEndpoint, &dstAddr, ZCL_CLUSTER_ID_GEN_ON_OFF, COMMAND_ON, TRUE, ZCL_FRAME_CLIENT_SERVER_DIR, TRUE, 0, seqNum, msgLen, pBuf); [size=150%] |
|
|
|
ggfvxv 发表于 2018-5-31 02:12 在init里面有注册过endpoint的 void zclSampleSw_Init( byte task_id ) [ zclSampleSw_TaskID = task_id; P1DIR |= 0x03; // Set destination address to indirect zclSampleSw_DstAddr.addrMode = (afAddrMode_t)Addr16Bit; //AddrNotPresent; zclSampleSw_DstAddr.endPoint = 18; zclSampleSw_DstAddr.addr.shortAddr = 0x0000; zclSampleSw_epDesc.endPoint = 10; zclSampleSw_epDesc.task_id = &zclSampleSw_TaskID; zclSampleSw_epDesc.simpleDesc = (SimpleDescriptionFormat_t *)&zclSampleSw_SimpleDesc; // Register the Simple Descriptor for this application bdb_RegisterSimpleDescriptor( &zclSampleSw_SimpleDesc ); // Register the ZCL General Cluster Library callback functions zclGeneral_RegisterCmdCallbacks( SAMPLESW_ENDPOINT, &zclSampleSw_CmdCallbacks ); 现在的问题是coord收到了router发过来的 ["Are you pig?"]; coord收到了,但不知道放在哪里了。 |
|
|
|
你调用了bdb_RegisterSimpleDescriptor,注册的Endpoint就在ZCL_TaskID上了,数据放在zcl_event_loop的if ( *msgPtr == AF_INCOMING_MSG_CMD )里面。这个地方交给ZCL处理,你用zclGeneral_RegisterCmdCallbacks注册了每条ZCL控制指令,ZCL会自动把你收到的控制指令对应到你注册的执行函数上。“你是猪吗”不是正确指令,所以ZCL给你滤掉了。 |
|
|
|
你的zclSampleSw_epDesc是多此一举,bdb_RegisterSimpleDescriptor已经给你分配了一个epDesc了 |
|
|
|
adolclistin 发表于 2018-5-31 02:52 这个不怪Juson,这个是TI SampleLight代码的问题,一言以蔽之:脱裤子放屁---多此一举。 的确是在bdb_RegisterSimpleDescriptor里面已经调用afRegister注册了endpoint,后面又接着调用afRegister注册同一个endpoint,不是多此一举是什么? 的确是要检查一下AF_INCOMING_MSG_CMD消息的处理,一般很多时候都是在这里根据clusterId和command以及client-server方向等等来判断,给滤除了。 |
|
|
|
只有小组成员才能发言,加入小组>>
586 浏览 1 评论
427 浏览 1 评论
620 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
910 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
709 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
193浏览 29评论
1155浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
323浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
286浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
135浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-3 14:37 , Processed in 0.982153 second(s), Total 94, Slave 78 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号