zigbee Zstack 开发主要步骤

信道选择:

打开f8wconfig.cfg

选择信道

-DDEFAULT_CHANLIST=0x02000000;

网络号设定:

打开f8wconfig.cfg

   -DZDAPP_CONFIG_PAN_ID=0x32

 

设备描述设定:

打开GenericApp.h 修以下内容

#define GENERICAPP_ENDPOINT             10

 

#define GENERICAPP_PROFID               0x0F04

#define GENERICAPP_DEVICEID              0x0001

#define GENERICAPP_DEVICE_VERSION                0

#define GENERICAPP_FLAGS                        0

 

#define GENERICAPP_MAX_CLUSTERS                  1

#define GENERICAPP_CLUSTERID         1

 

协调器:

1.复制TI环境下GenericApp 工程文件,更名为xyzApp

2.以GenericApp.c、以GenericApp.h 为蓝本,复制出 Coordinator.c、Coordinator.h、Enddevice.c、Enddevice.h 的协调器、终端文件主和头文件

3.对Coordinator.c进行修改GenericApp.h 为Coordinator.h

4.修改设备描述符

const SimpleDescriptionFormat_tGenericApp_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;

  0,          // byte  AppNumInClusters;

  (cId_t*)NULL   //  byte *pAppInClusterList;

};

 

 

5.voidGenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )

case GENERICAPP_CLUSTERID:

下加入

   osal_memcpy(buffer,pkt->cmd.Data,pkt->cmd.DataLength);

     if(osal_memcmp(buffer,"LED32",5))

      {

       HalLedBlink(HAL_LED_2,0,50,500);

      }

      else

      {

       HalLedSet(HAL_LED_2,HAL_LED_MODE_ON);

      }

判断接收到的字符是不是LED32,是则让LED2闪烁,不是则让LED2常亮

 

终端:

1.     将Enddevice.c中的

#include”GenericApp.h”改成 “Enddevice.h“

2.     在 中UINT16GenericApp_ProcessEvent( byte task_id, UINT16 events )的

case ZDO_STATE_CHANGE:下加入

        GenericApp_NwkState = (devStates_t)(MSGpkt->hdr.status);

          if(GenericApp_NwkState == DEV_END_DEVICE)

          {

             GenericApp_SendTheMessage(  );

          }

         break;

3.     在void GenericApp_SendTheMessage( void )中加入

char theMessageData[] = "LED32";

  afAddrType_tmy_DstAddr;

 my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit; //单播

 my_DstAddr.endPoint=GENERICAPP_ENDPOINT;//初始化端口号

 my_DstAddr.addr.shortAddr=0x0;//接收方短地址

  if (AF_DataRequest( &my_DstAddr, &GenericApp_epDesc,

                       GENERICAPP_CLUSTERID,

                       (byte)osal_strlen(theMessageData ) + 1,

                       (byte*)&theMessageData,

                       &GenericApp_TransID,

                       AF_DISCV_ROUTE,AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )

  {

    //Successfully requested to be sent.

    HalLedBlink(HAL_LED_2,0,50,500);

}

 

4.     烧写

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值