4810|1

8

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教用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;
}

 

此帖出自RF/无线论坛

最新回复

看看.  详情 回复 发表于 2012-1-29 15:42
点赞 关注
 

回复
举报

207

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
看看.
此帖出自RF/无线论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表