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:位图40-64不起作用

Guru**** 2614265 points
Other Parts Discussed in Thread: CC2530

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/716317/cc2530-bitmap-40-64-not-working

器件型号:CC2530

您好!

我注意到 Bitmap 32似乎是属性的最大值。 如果我尝试报告 Bitmap 48的属性、则不会发出任何值。 什么会阻止 CC2530报告大于 Bitmap 32的值?

您可以看到附加的日志中的差异。

e2e.ti.com/.../3678.Logs.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为这仍然是 zclGetDataTypeLength 问题。 没有处理 ZCL_datatype_BITMAP48的情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我尝试设置大于4的长度(ZCL_datatype_BITMAP32的长度)、例如8 (对于 ZCL_datatype_BITMAP64)。 我查看了日志、但属性似乎仅限于4个长度。 如何解决此问题?

    您可以将此日志与 Bitmap 32日志进行比较。

    e2e.ti.com/.../Bitmap-64-with-length-of-8.zip

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

    我看到它在监听器日志中正确显示了8个字节。

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

    对于 Bitmap 64、我尝试发送了:

    test.addr1 = 0;
    test.addr2 = 0;
    test.addr3 = 0;
    test.Addr4 = 0x0003;

    每个值都是 uint16。 我在 Ubiqua 中看不到正确显示的值。 (请注意、这是我用于附加日志的值)


    但是、对于 Bitmap 32、当我尝试发送时:

    test.addr1 = 0;
    test.addr2 = 0x0003;

    每个值都是 uint16。 我在 Ubiqua 中看到正确的值。 (请注意、这不是用于我先前附加的日志的值)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为您的代码中有错误的东西来分配位图64并发送它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是我的代码。 它可能有什么问题?

    typedef struct
    {
    uint16 addr1;
    uint16 addr2;
    uint16 addr3;
    uint16 Addr4;
    }srcAddr_t;
    
    --------------------
    
    srcAddr_t test;
    
    -------------------------------------------------------
    
    test.addr1 = 0;
    test.addr2 = 0;
    test.addr3 = 0;
    test.Addr4 = 0x0003;
    
    ---
    
    {
    ZCL_CLUSTER_ID_RT_TABLE、
    {//属性记录
    ATTRID_RT_TABLE:1、
    ZCL_datatype_BITMAP64、
    ACCESS_CONTRAL_READ、
    (空*)测试
    }
    },
    
    -------------------------------------------------------
    
    案例 ZCL_datatype_BITMAP64:
    案例 ZCL_datatype_double_PREC:
    案例 ZCL_datatype_IEEE_ADDR:
    案例 ZCL_datatype_uint64:
    案例 ZCL_datatype_int64:
    Len = 8;
    中断; 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我假设您应该使用8字节数组来保留和发送 ZCL_datatype_BITMAP64、而不是使用此 srcAddr_t 结构点。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我尝试了以下操作、但值仍然不正确。

    uint16 array[]={0x0000、0x0000、0x0000、0x0001};

    e2e.ti.com/.../Array-Bitmap-64.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我建议您对代码进行调试/跟踪、并查看填充到发送缓冲区中的内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    插孔、

    在 zcl.c 中,您是否在 zclSerializeData()函数中添加了案例 ZCL_datatype_BITMAP64/ZCL_datatype_BITMAP48?

    案例 ZCL_datatype_double_PREC:
    案例 ZCL_datatype_IEEE_ADDR:
    案例 ZCL_datatype_BITMAP64:
    案例 ZCL_datatype_uint64:
    案例 ZCL_datatype_int64:
    pStr =(uint8*) attrData;
    buf = zcl_memcpy (buf、pStr、8);
    中断;