This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2530:来自通用应用的"Hello world 消息"

Guru**** 2782615 points

Other Parts Discussed in Thread: Z-STACK, CC2530

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/651312/cc2530-hello-world-message-from-generic-app

器件型号:CC2530
Thread 中讨论的其他器件:Z-stack

您好!

  我将两个基于 IMX6的定制板与 CC2530配合使用。 我使用的是 Z-stack Mesh 配置文件。 我有一个板作为 ZNP 配置和通用应用终端设备的协调器。 我们似乎需要按一下键、以便在器件之间发送"hello world"消息。 我想知道我们是否可以在不按任何键的情况下发送数据包。 我曾尝试为 GenericApp 提供 xHOLD_AUTO_START 预处理器定义的符号、但没有成功...我在以下链接之后进行了一些更改。     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您知道目标短地址和端点、则可以直接发送消息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    到目前为止,我已作出以下更改:

    替换 GenericApp_ProcessEvent()中"ZDO_State_change:case"中的以下代码。

        案例 ZDO_State_change:

         GenericApp_NWkState =(devStates_t)(MSGpkt->HDR.status);

         if ((GenericApp_NWKState =DEV_ZB_COord)||

           (GenericApp_NWkState =DEV_router)||

           (GenericApp_NWKState =DEV_END_DEVICE))

         {

       dstAddr.addrMode = AddrBroadcast;

       dstAddr.addr.shortAddr = nwk_broadcast_SHORTADDR;

       ZDP_MatchDescReq (&dstAddr、NWK_broadcast_SHORTADDR、

                GENERICAPP_PROFID、

                GENERICAPP_MAX_CLUSTERSICS、(CID_t *) GenericApp_ClusterList、

                GENERICAPP_MAX_CLUSTERSICS、(CID_t *) GenericApp_ClusterList、

                false );

         }

         中断;

    此外,替换 GenericApp_ProcessZDOMsgs()中"match_Desc_rsp:case"中的以下代码。

      案例匹配_DESC_rsp:

       {

        ZDO_ActiveEndpointRsp_t *PRSP = ZDO_ParseEPListRsp( inMsg );

        if (减贫战略文件)

        {

         if ( PRSP--> STATUS =ZSuccessess && PRSP--> cnt )

         {

          GenericApp_DstAddr.addrMode =(afAddrMode_t) Addr16位;

          GenericApp_DstAddr.addr.shortAddr = PRSP->nwkAddr;

          //获取第一个端点,可以更改以搜索端点

          GenericApp_DstAddr.endpoint = PRSP->epList[0];

          //光 LED

          HalLedSet (HAL_LED_4、HAL_LED_MODE_ON);

          //开始定期发送“该”消息。

          OSAL_START_timerEx (GenericApp_TaskID、

                    GENERICAPP_SEND_MSG_EVT、

                    GENERICAPP_SEND_MSG_TIMEOUT );

        }

         OSAL_mem_free ( PRSP );

        }

       }

       中断;

    下面随附的是监听器日志。 从该日志中、我认为短地址为0x2B1F、但端点的值是多少?  

    e2e.ti.com/.../mesh_5F00_msg_5F00_modifd.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不是 PRSP->epList 中的端点?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在使用断点进行测试时、未调用 ZDO_State_change 内的 ZDP_MatchDescReq()。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这意味着设备无法成功加入 Zigbee 网络。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但是从日志中可以看出设备已添加到网络中,关联请求成功...这可能是什么问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看到您的设备向协调器发送匹配请求、但它不响应匹配响应、因此匹配过程不成功。 如果要将消息从终端设备发送到协调器、协调器的短地址始终为0x0000。 您只需从设备请求正确的协调器端点、或者如果这是专有的关闭系统、则可以修复用于通信的端点。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为什么协调器没有发出匹配请求? 协调器端是否需要根据上面在 ENDEVICE 中所做的更改进行任何更改...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    协调器中是否有相同的群集?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我如何知道协调器中当前可用的群集? 对于通用应用程序、似乎群集 ID 为1。 我们需要绑定到哪个群集 ID 和端点? 如何将新的群集 ID 添加到具有 ZNP 配置的协调器?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您应该在主机 MCU 上的 ZAP 上添加群集支持。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在运行具有 Z-stack Gateway 的 IMX6、而采用 ZNP 配置的 CC2530连接到了该网关...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以从 gateway_config.tlg 添加群集支持
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们需要增加什么价值? 是否需要添加新群集或编辑任何现有群集。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将要支持的群集 ID 放入 gateway_config.tlg 中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 gateway_config.tlg 中的开/关群集的端点3中添加了通用应用程序群集1
    端点{3、OnOffLightEpDef、OnOffAttrList}
    endpointdef OnOffLightEpDef{ha_profile、ha_onofflight、0、OnOffInputClusters、OnOffOutputClusters}
    clusterlist OnOffInputClusters {基本、识别、组、场景、ONOFF、 0x0501}
    clusterlist OnOffOutputClusters{onoff、0x0402、0x0001}
    但仍然没有成功...这是正确的添加方式吗? 是否缺少任何内容?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    还可以尝试将其放入 InputCluster 中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我还添加了输入集群

    clusterlist OnOffInputClusters {基本、识别、组、场景、ONOFF、 0x0501、0x0001}

    仍然无法成功...下面所附的是监听器日志。 从日志中可以看出绑定成功、根据我的理解 、通用应用程序将在成功绑定后开始发送消息...那么为什么不会发生?

    e2e.ti.com/.../mesh_5F00_bind_5F00_TI.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在您最新的监听器日志中、匹配请求获取成功响应。 但是,我看不到您的设备发送“Hello world”。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是...绑定也成功...配置中是否缺少任何内容... clusterid 和 endpointId 是否正确? 我们如何从监听器日志中检查它?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我建议您在设备上设置一个断点,以检查发送“Hello World”消息的状态。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我曾在 GenericApp_ProcessEvent ()中为 AF_DataRequest 和 AF_DATA_CONFIRM_CMD 输入打印件,这两个打印件都可以在 IAR 的终端 I/O 视图中看到。 这意味着消息发送成功、对吧? 我仍然怀疑端点和群集是否正确、如何确认?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我建议您在 AF_DataRequest 上设置断点、当它成功发送消息时、检查您是否可以在监听器上看到消息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不是...监听器中没有可见的消息数据包
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否在 GenericApp_SendTheMessage 中向我展示您的代码?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    以下是 GenericApp.c 中所做的更改:

    静态空 GenericApp_SendTheMessage( void )

     char theMessageData[]="Hello World";

     printf ("H %d %d %d %d %d %d %d "、GenericApp_DstAddr.addr.shortAddr、GenericApp_DstAddr.addrMode、GenericApp_DstAddr.EndPoint、GenericApp_DstAddr.panId);

     if (AF_DataRequest (&GenericApp_DstAddr、&GenericApp_epDesc、

               GENERICAPP_clusterid、

               (字节) osal_strlen (theMessageData)+1、

               (字节*) MessageData (&T)、

               GenericApp_TransID (GenericApp_TransID)、

               AF_DISCV_route | AF_ACK_REQUEST、

               AF_DEFAULT_RADIUS )=afStatus_Success // AF_ACK_REQUEST

     {

      //已成功请求发送。

      printf ("Y");

     }

     其他

     {

      //请求发送时出错。

      printf ("N ");

     }

    //////////////////

    GenericApp_HandleKeys()内部;

      if (keys & HAL_key_sw_4)

      {

       HalLedSet (HAL_LED_4、HAL_LED_MODE_OFF);

       //启动匹配描述请求(服务发现)

       dstAddr.addrMode = AddrBroadcast;

       dstAddr.addr.shortAddr = nwk_broadcast_SHORTADDR;

       ZDP_MatchDescReq (&dstAddr、NWK_broadcast_SHORTADDR、

                GENERICAPP_PROFID、

                GENERICAPP_MAX_CLUSTERSICS、(CID_t *) GenericApp_ClusterList、

                GENERICAPP_MAX_CLUSTERSICS、(CID_t *) GenericApp_ClusterList、

                false );

      }

    ///////////////////////////////////

    GenericApp_ProcessZDOMsgs()内部;

    案例匹配_DESC_rsp:

       {

        ZDO_ActiveEndpointRsp_t *PRSP = ZDO_ParseEPListRsp( inMsg );

        if (减贫战略文件)

        {

         if ( PRSP--> STATUS =ZSuccessess && PRSP--> cnt )

         {

          GenericApp_DstAddr.addrMode =(afAddrMode_t) Addr16位;

          GenericApp_DstAddr.addr.shortAddr = PRSP->nwkAddr;

          //获取第一个端点,可以更改以搜索端点

          GenericApp_DstAddr.endpoint = PRSP->epList[0];

          printf ("EP=%d "、PRSP->epList[0]);

          //光 LED

          HalLedSet (HAL_LED_4、HAL_LED_MODE_ON);

          //开始定期发送“该”消息。 ELIU_ACCS

          OSAL_START_timerEx (GenericApp_TaskID、

                    GENERICAPP_SEND_MSG_EVT、

                    GENERICAPP_SEND_MSG_TIMEOUT );

         }

         OSAL_mem_free ( PRSP );

        }

    //////////////////////

    GenericApp_ProcessEvent()内部  

    案例 ZDO_State_change:

         GenericApp_NWkState =(devStates_t)(MSGpkt->HDR.status);

         if ((GenericApp_NWKState =DEV_ZB_COord)||

           (GenericApp_NWkState =DEV_router)||

           (GenericApp_NWKState =DEV_END_DEVICE))

         {

    dstAddr.addrMode = Addr16Bit;

          dstAddr.addr.shortAddr = 0x0000;//协调器

    i=ZDP_MatchDescReq (&dstAddr、0x0000、

                GENERICAPP_PROFID、

                GENERICAPP_MAX_CLUSTERSICS、(CID_t *) GenericApp_ClusterList、

               GENERICAPP_MAX_CLUSTERSICS、(CID_t *) GenericApp_ClusterList、

                false );

       printf ("i=%d "、i);

    //开始定期发送“该”消息。

        OSAL_START_timerEx (GenericApp_TaskID、

                    GENERICAPP_SEND_MSG_EVT、

                    txMsgDelay);

         }

         中断;

    if (事件和 GENERICAPP_SEND_MSG_EVT)

     {

      //发送“该”消息

      GenericApp_SendTheMessage();

      //设置以再次发送消息

      OSAL_START_timerEx (GenericApp_TaskID、

                GENERICAPP_SEND_MSG_EVT、

                txMsgDelay);

      //返回未处理的事件

      返回(事件^ GENERICAPP_SEND_MSG_EVT);

     }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 AF_DataRequest 处设置断点时、您能否检查 GenericApp_DstAdd 中的地址模式、短地址和端点是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如上所示,我已经打印了 GenericApp_SendTheMessage()内的值,所有这些值都为0。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    端点不能为0。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如上文 GenericApp_ProcessZDOMsgs()中所示,解析列表时端点为0……这是因为绑定表未正确更新吗? 我们如何检查它?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想您可以在 inMsg 中获得正确的端点。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉。。。 我不理解...在 Msg 的终点?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "case match_Desc_rsp:"中 GenericApp_DstAddr 的地址模式、NWK 地址和端点的值是什么。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在充当协调器的 CC2530中、我们是否需要在协调器配置或 ZNP 配置中使用 GenericApp?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我无法很好地理解您的问题。 您能详细说明吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们正在尝试在两个板之间进行通信、一个作为协调器、另一个作为终端设备。 我将板作为 ZNP 配置固件的协调器、并将板作为具有内核器件配置固件中 GenericApp 的内核器件。 没关系吗?
    或者、我们是否需要在协调器配置固件中使用具有 GenericApp 的协调器板。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    应该可以、但您必须注册相同的配置文件 ID 并在 ZAP-ZNP 上使用相同的群集 ID。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有任何特定的配置文件/群集 ID? 我使用 IMX6通过 Z-statck Gateway 控制 CC2530。 我们是否需要对其进行任何更改?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以使用与 GenericApp 完全相同的配置文件和群集 ID。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我是否需要在 Z-stack Gateway 侧添加群集/配置文件 ID? 我该怎么做呢?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否使用 Z-Stack Linux GW 参考设计?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我在 IMX6中使用 Z-Stack_Linux_Gateway-1.0.1-src
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Z-Stack Linux Home GW 使用 HA 配置文件和标准 ZCL 作为群集 ID、因此我不认为将其修改为专有用法很容易。 如果您需要专用配置文件和群集、我建议您使用 www.ti.com/.../TIDC-ZNP-HOST-SW3
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我刚刚改变了

    命令_device_binding_entry_request (&source_addr、&dst_addr、cluster_ID_generic、binding_mode)位于 ui_process_bind () user_interface.c 中、其中 cluster_ID_generic 为0x0001、现在正在获取以下日志

    e2e.ti.com/.../mesh_5F00_pwr.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看到设备已成功加入、并在您最新的监听器日志中将"Hello World"消息正确发送给协调器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我没有看到 hello world 消息...它有一些电源配置数据传输吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、由于 Ubiqua 使用 ZCL 规范解析传入的消息、因此将其解密为电源配置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我是否可以通过任何方式看到该消息?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是说在 Linux GW 上看到它吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Linux GW 或使用 IAR 在 CC2530固件内的某个位置进行打印?