1.在文件全局建立對象,定義傳輸編號:
afAddrType_t Group_DstAddr;//網蜂組播通信定義
aps_Group_t WEBEE_Group;//分組內容
#define WEBEE_GROUP_CLUSTERID 4 //組播傳輸編號
2.註冊端點描述符 (TI demo程序自帶)
在void SampleApp_Init( uint8 task_id );
SampleApp_epDesc.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_epDesc.task_id = &SampleApp_TaskID;
SampleApp_epDesc.simpleDesc
= (SimpleDescriptionFormat_t *)&SampleApp_SimpleDesc;
SampleApp_epDesc.latencyReq = noLatencyReqs;
3.通訊組定義,即對Group_DstAddr對象賦值
Group_DstAddr.addrMode = (afAddrMode_t)afAddrGroup;
Group_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
Group_DstAddr.addr.shortAddr = WEBEE_GROUP;
4.定義通訊組地址、名稱,將節點加入組,即對WEBEE_Group對象賦值
WEBEE_Group.ID = 0x0003;
osal_memcpy( WEBEE_Group.name, "Group 3", 7 );
aps_AddGroup( SAMPLEAPP_ENDPOINT, &WEBEE_Group );//將節點加入組
5.定義發送函數
/*********************************************************************
* 組播通訊實驗發送函數
* 傳入參數:無
* 返回值:無
*/
void SampleApp_SendGroupMessage( void )
{
char data[] = "abcdefghi";
if( AF_DataRequest( &Group_DstAddr,
&SampleApp_epDesc,
WEBEE_GROUP_CLUSTERID,//<span style="color:#ff0000;">傳輸編號,發送和接收必須一致,否則無法響應事件</span>
10, //發送10個數據
(uint8 *)data,
&SampleApp_TransID,
AF_DISCV_ROUTE,//帶路由功能
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
{
}
else
{
// Error occurred in request to send.
}
}
6.發送部分
讓發送函數生效,定位到事件處理函數,uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events );
if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT )//定期發送事件,demo已定義
{
// Send the periodic message
//SampleApp_SendPeriodicMessage();
//組播發送
<span style="color:#ff0000;"> SampleApp_SendGroupMessage();//將剛纔定義的函數加入到這裏</span>
// Setup to send message again in normal period (+ a little jitter)
osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT,
(SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0x00FF)) );
// return unprocessed events
return (events ^ SAMPLEAPP_SEND_PERIODIC_MSG_EVT);
}
7.接收部分,定位到消息接收函數 void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt );
void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{
uint16 flashTime;
switch ( pkt->clusterId )//路由反射器
{
case <span style="color:#ff0000;">WEBEE_GROUP_CLUSTERID</span>://自己定義的傳輸編號,在頭文件定義
HalUARTWrite(0, "I get data\n", 11); //提示收到數據
HalUARTWrite(0, (char *)(pkt->cmd.Data), pkt->cmd.DataLength);//將收到的數據通過串口發送到計算機,
HalUARTWrite(0, "\n", 1); // 回車換行
break;
case SAMPLEAPP_FLASH_CLUSTERID:
flashTime = BUILD_UINT16(pkt->cmd.Data[1], pkt->cmd.Data[2] );
HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) );
break;
}
}
8.將修改後的程序燒錄到節點、路由器、協調器,必須要程序和板子對應,路由器對應RouterEB-Pro等等