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.

[参考译文] LP-CC2652RB:カスタムのクラスタ作成方法について

Guru**** 2553360 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1018702/lp-cc2652rb

器件型号:LP-CC2652RB
Thread 中讨论的其他器件:SysConfig

Code Composer Studio で開発をしています。

標準には存在しない新規のクラスタを作成して属性、コマンドを実装したいです。μ A

しかし、Code Composer Studioでは標準のクラスタしか選択できず新規のクラスタが追加できません。

実装方法を教えていただけないでしょうか?μ A

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

    我想您想添加专有集群/属性。 如果这是您想要的、您可以将它们添加到 xxx_data.c 中(例如、如果您使用 samplplelight 示例、则为 zcl_samplelight_data.c)。 顺便说一下、这是一个基于英语的 E2E 论坛、因此我建议您使用英语来讨论您的主题。

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

    谢谢陈

    我能够将群集添加到终端设备。
    但是、我无法将命令从终端设备发送到添加的群集中的协调器。
    我是否需要任何其他设置?

    ・zed_sw 样本
    ・添加用户 ID 0xFC10、命令 ID 0x00

    zcl_SendCommandEx
    (
    SAMPLESW_端 点、
    &zclSampleSw_DstAddr、
    0xFC10、
    0x00、
    对、
    ZCL_FRAME_CLIENT_SERVER_DIR、
    对、
    0、
    rsp.zclFrameCounter、
    strlen (sndBuf)、
    SndBuf、

    );

    我正在尝试使用上面的 API 从终端设备向协调器发送数据。
    当我捕获数据包时、终端设备未发送数据包。
    zcl_SendCommandEx ()的状态为0、这是正常的。

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

    zclSampleSw_DstAddr 中包含什么内容?

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

    zclSampleSw_DstAddr 是终端器件信息。

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

    不可以、zclSampleSw_DstAddr 应使用在您的情况下作为协调器的目的信息。

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

    我们已确认 zclSampleSw_DstAddr 的设置正确。

    zcl_SendCommandEx ()群集 ID、命令 ID 参数
    CL_CLUSTER_ID_General_ON_OFF (0x0006)、COMMAND_ON_OFF_TOGGLE (0x02)
    它将被发送给协调人。

    如果您只更改了群集 ID = 0xFC10的一部分、命令 ID = 0x00和
    发送未发送数据包。

    如果我没有在某个位置定义添加的(群集 ID = 0xFC10、命令 ID = 0x00)、
    它将被判定为无效参数、传输似乎被取消。

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

    尝试将群集 ID = 0xFC10添加到 zclSampleSw_SimpleDesc 的群集列表中。

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

    我尝试添加0xFC10、但无法发送。

    const cid_t zclSampleSw_OutClusterList[]=

    ZCL_CLUSTER_ID_General_Identify、
    ZCL_CLUSTER_ID_General_ON_OFF、
    ZCL_CLUSTER_ID_General_Groups、
    0xFC10
    };

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

    您可以尝试调试并跟踪 zcl_SendCommandEx、以了解它拒绝您的 API 调用的原因。

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

    它被混乱到另一个任务、无法进行详细跟踪。
    如果您知道执行传输过程的任务或函数的名称、请告诉我。
    我想在这里设置一个断点并进行调试。

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

    我假设您可以在 zcl_SendCommandEx 中设置断点、该断点可在 zcl.c 中找到

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

    zstackapi.c 的 sendReqDefaultRsp ()中
    我不能跟随 OsalPort_msgSend ()。

    接收由 OsalPort_msgSend ()发送的消息
    不知道要处理的函数的名称?

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

    我认为您的问题是 zcl_SendCommandEx 无法使用专有集群发送命令。 为什么这个原始问题与 sendReqDefaultRsp 和 OsalPort_msgSend 有关?

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

    当我跟踪 zcl_SendCommandEx 时、我发现调用了 sendReqDefaultRsp 和 OsalPort_msgSend。
    在上述情况下、执行过程没有任何错误、我认为传输已在 OsalPort_msgSend 的目标位置被取消。

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

    您能否检查您的 zcl_SendCommandEx 的返回状态?

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

    zcl_SendCommandEx 的状态为0。

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

    0表示发送成功。 是否可以附加监听器日志?

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

    由于未输出数据包捕获日志、因此无法附加。
    我使用的是 Wireshark。
    我将更改 zed_sw 的采样源。
    是否可以发送原始群集的命令(即使是示例源)?

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

    1.我怀疑您没有正确设置监听器或没有正确设置监听器通道。 我建议您再次检查监听器。

    2.使用开/关集群发送专有命令是什么意思? 如果是、答案是"是"。

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

    我认为监听器设置正确。
    可以捕获标准开/关集群的命令传输/接收。

    我之所以使用 zed_SW 样本、是因为我想轻松地尝试为自己的集群发送命令。

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

    我看不到 zcl_SendCommandEx 返回成功的原因、但您在监听器中看不到任何结果。

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

    我将再次检查监听器设置。
    非常感谢您的支持。

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

    我仍然怀疑您的问题与 zclSampleSw_DstAddr 有关。 在调用 zcl_SendCommandEx 发送专有命令以查看其是否正常工作之前、您能否将 zclSampleSw_DstAddr 中的参数更改为以下内容?

     zclSampleSw_DstAddr.addrMode =(afAddrMode_t) Addr16位;
     zclSampleSw_DstAddr.endpoint =//使用协调器的端点;
     zclSampleSw_DstAddr.addr.shortAddr = 0x0000;

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

    我很抱歉
    我给出了错误的答案。
    我正确设置了协调器。

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

    您是否尝试我的建议以查看它是否起作用?

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

    我做了你的建议、但结果没有改变。

     zclSampleSw_DstAddr.addrMode =(afAddrMode_t) Addr16位;
     zclSampleSw_DstAddr.endpoint =//使用协调器的端点;
     zclSampleSw_DstAddr.addr.shortAddr = 0x0000;

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

    是否将 zclSampleSw_DstAddr.endpoint 设置协调器的端点

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

    是的。 我设置它。

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

    您能否向我展示您的最终设置? 而且、您的 zcl_SendCommandEx 的返回值是多少?

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

    为供参考、我在 zed_sw 示例中测试了以下代码、我可以看到监听器上发送的是专有命令。

    秘书长的报告 /
    uint8 rotate=0;
    char sndBuf[]="hello";
    ZStatus_t ret;
    void zclSampleSw_actionToggleLight (const Int32_t _itemEntry)

       ZStack_getZCLFrameCounterRsp_t RSP;

       Zstackapi_getZCLFrameCounterReq (appServiceTaskId、&RSP);
       zclSampleSw_DstAddr.addrMode =(afAddrMode_t) Addr16位;
         zclSampleSw_DstAddr.endpoint = 8;///使用协调器的端点;
         zclSampleSw_DstAddr.addr.shortAddr = 0x0000;
       if (旋转%2=0)
           RET=zclGeneral_SendOnOff_CmdToggle (SAMPLESW_EndPoint、&zclSampleSw_DstAddr、true、RSP.zclFrameCounter);
       否则{
           RET=zcl_SendCommandEx (SAMPLESW_终结 点、&zclSampleSw_DstAddr、0xFC10、0x00、true、ZCL_FRAME_CLIENT_SERVER_DIR、true、0、RSP.zclFrameCounter、strlen (sndBuf)、sndBuf、true);
       }
       旋转++;

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

    我现在可以通过添加以下定义来发送。

    BDB_查找_和_绑定.c

    const CID_t bdb_ZclType1Clusters []=

    --
    0xFC10

    感谢您的支持。

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

    你是想用Sysconfig工具创建自定义的cluster和attribute吗?我尝试过修改"zcl_config.c.xdt",可以兼容自定义的cluster和attribute。

    生成的zcl ć config文件中定义了 ć_manu_INCLUSTER_ATTRS和 ć_manu_INCLUSTERS,用自定义的attribute和cluster代替它们,需要创建一个文件"zcl_manualCode.h"、在里面定义你的attribute和cluster ć。

    e2e.ti.com/.../templates.zip