请教用AF_DataRequest()发送信息问题?
[复制链接]
CC2530构成的网络里通信必须进行绑定操作后才能进行通信吗?终端节点和协调器不进行绑定,利用AF_DataRequest函数可以直接向协调器发送信息吗?
我设想是协调器建立网络后,终端节点成功加入网络,但还没有进行绑定操作,这时通过按键触发终端节点,发送本终端节点的IEEE和网络地址。
一个网络中协调器的地址应该是固定的0吧
我的发送函数是
Addr.addrMode = afAddr16Bit; //单点发送 Addr.addr.shortAddr=0; //协调器网络地址 zclSampleLight_Send_Message(Addr, UartTxBuf.TxBuf, 32);
/********************************************************************* * @fn zclSampleLight_Send_Message
*********************************************************************/
static void zclSampleLight_Send_Message(afAddrType_t dstAddr, uint8 *buff, int length ) { if ( AF_DataRequest(&dstAddr,afFindEndPointDesc( (zclSampleLight_SimpleDesc.EndPoint) ), SERIALAPP_CommandID, length, buff, &ZCLSampleLight_TransID, AF_DISCV_ROUTE, AF_DEFAULT_RADIUS) == afStatus_SUCCESS ) { HalLedSet( HAL_LED_3, HAL_LED_MODE_TOGGLE ); }
}
按键触发后LED3的等变化,但是协调器那边并没有接收到这个数据,我知道是哪里出错了。
协调器接收如下:
uint16 zclCoordinator_event_loop( uint8 task_id, uint16 events ) { afIncomingMSGPacket_t *MSGpkt; (void)task_id; // Intentionally unreferenced parameter
if ( events & SYS_EVENT_MSG ) { while ( (MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( zclCoordinator_TaskID )) ) { switch ( MSGpkt->hdr.event ) { case ZCL_INCOMING_MSG: // Incoming ZCL Foundation command/response messages zclCoordinator_ProcessIncomingMsg( (zclIncomingMsg_t *)MSGpkt ); break;
case ZDO_CB_MSG: zclCoordinator_ProcessZDOMsgs( (zdoIncomingMsg_t *)MSGpkt ); break;
case KEY_CHANGE: zclCoordinator_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys ); break; case AF_INCOMING_MSG_CMD: ---> Coordinator__ProcessMSGCmd( MSGpkt ); //程序根本走不到这 break; default: break; }
// Release the memory osal_msg_deallocate( (uint8 *)MSGpkt ); }
// return unprocessed events return (events ^ SYS_EVENT_MSG); }
if ( events & COORDINATOR_IDENTIFY_TIMEOUT_EVT ) { zclCoordinator_IdentifyTime = 10; zclCoordinator_ProcessIdentifyTimeChange();
return ( events ^ COORDINATOR_IDENTIFY_TIMEOUT_EVT ); } if ( events & UART_RX_CB_EVT ) { SerialApp_CMD_Execute(); return ( events ^ UART_RX_CB_EVT ); }
// Discard unknown events return 0; }
|