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.

[参考译文] SIMPLELINK-CC13XX-CC26XX-SDK:DstAddrMode 在 MAC_WS_ASYNC_IND 数据包中归零

Guru**** 2560010 points
Other Parts Discussed in Thread: LAUNCHXL-CC1352R1

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1570804/simplelink-cc13xx-cc26xx-sdk-dstaddrmode-is-zeroed-in-mac_ws_async_ind-packet

器件型号:SIMPLELINK-CC13XX-CC26XX-SDK
主题中讨论的其他器件:LAUNCHXL-CC1352R1

工具/软件:

您好!

我目前正在实现一个连接协处理器的应用、以便与  启用了跳频的传感器示例(可在 SIMPLELINK-LOWPOWER-F2-SDK v8.30.01.01 中找到)进行通信。 这两个示例均在 LAUNCHXL-CC1352R1 电路板上运行。

我按照本文档与协处理器进行通信: TI-15.4-STACK-COP 接口指南 (我知道此链接已经过时,但该文档在最新版本的 SDK 中保持不变)。

当传感器通过发送命令开始通信时  MAC_WS_ASYNC_IND  (用于 Wi-SUN PAN 广播请求消息)。 下面列出了发送的前几个字节。


这里有几个协处理器收到的消息示例、其中 DstAddrMode 粗体和斜体、后跟 DstAddr  粗体和下划线。

帧接收:FrameReady{subsystem:mac、cmd_type:AREQ、id:93、有效载荷:[3、76、 7B、A7、1c、0、4b、 12、0、 0、 0、0、0、0、0、 0、0、0、 F4、17、24、0、7、 0、0、0、0、0、 EA、0、F4、0、0、 0、0、0、0、0、 0、0、0、0、0、 0、0、0、0、1、 0、0、16、0、12、 A0、8、88、FA、14、 0、0、1、8、0、 0、6、5、46、48、 54、65、73、74、0、 F8]}

帧接收:FrameReady{subsystem:mac、cmd_type:AREQ、id:93、有效载荷:[3、76、 7B、A7、1c、0、4b、 12、0、 0、 0、0、0、0、0、 0、0、0 、bc、c9、d6、0、 2、0、0、0、0、 0、ea、0、F4、0、 0、0、0、0、0、 0、0、0、0、0、 0、0、0、0、0、 1、0、0、16、0、 12、a0、8、88、fa、 14、0、0、1、8、 0、0、6、5、46、 48、54、65、73、74、 0、F8]}

帧接收:FrameReady{subsystem:mac、cmd_type:AREQ、id:93、有效载荷:[3、76、 7B、A7、1c、0、4b、 12、0、 0、 0、0、0、0、0、 0、0、0、 66、78、CB、0、6、 0、0、0、0、0、 EA、0、F4、0、0、 0、0、0、0、0、 0、0、0、0、0、 0、0、0、0、1、 0、0、16、0、12、 A0、8、88、FA、14、 0、0、1、8、0、 0、6、5、46、48、 54、65、73、74、0、 F8]}

我有两个问题:

发送 SrcAddrMode 和 SrcAddr 后、一切都按预期运行:我接收的是 0x03 (address_64_bit) 的 SrcAddrMode、后跟对应于 SrcAddr 的 8 个字节。 尽管如此、DstAddrMode 和 DstAddr 仍然用零填充(似乎合理,因为传感器仍然不知道目标地址)。 问题是我在文档中找不到将 0x00 描述为 AddrMode 的有效值的任何位置、可能会导致解析器使此字段无效。 解析器是否应该处理它? 那么、当 AddrMode 设置为 0x00 时、我是否应该始终期望它后面跟一个 8 字节 Addr?

2.在“Length"字“字段中、表示 SrcAddr 和 DstAddr 的长度均为 8 字节。 即使 SrcAddrMode 和 DstAddrMode 设置为 ADDRESS_16_BIT、也是这样吗? 或者在这种情况下、SrcAddr 和 DstAddr 的长度变为 2 个字节?

提前感谢您、

Guilherme Akira

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

    尊敬的 Guilherme:

    1.我认为 0x00 是收集器的默认地址。 (TI 15.4-Stack 使用两个地址、即加入过程中的 MAC 地址和加入网络时的短地址(2 字节)。)

    2.不确定是否可以选择在这里使用 MAC 地址。 这可能是指南中的错误。

    谢谢、

    Marie H

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

    尊敬的 Guilherme:

    1.是的、0x0 是有效值、您可以看到 api_mac.h 中定义的地址模式

    /*!
     Address types - used to set addrMode field of the ApiMac_sAddr_t structure.
     */
    typedef enum
    {
        /*! Address not present */
        ApiMac_addrType_none = 0,
        /*! Short Address (16 bits) */
        ApiMac_addrType_short = 2,
        /*! Extended Address (64 bits) */
        ApiMac_addrType_extended = 3
    } ApiMac_addrType_t;

    您可以看到使用监听器通过无线方式传输 PAN 广播请求的值。

    1 和 2) 在所有情况下、地址长度均为 8 个字节、未使用的字节用零填充。 请查看 TI15.4-Stack Linux 网关 SDK 的 api_mac.c 中的地址解码器。

    /*!
     * @brief Decode an address from a message
     * @return void
     */
    static void decode_Addr(struct mt_msg *pMsg, ApiMac_sAddr_t *pAddr)
    {
        int x;
        pAddr->addrMode = MT_MSG_rdU8_DBG(pMsg, "addrMode");
        switch(pAddr->addrMode)
        {
        default:
        case ApiMac_addrType_none:
            /* read something.. */
            for(x = 0 ; x < 8 ; x++)
            {
                pAddr->addr.extAddr[x] = MT_MSG_rdU8_DBG(pMsg, "filler");
            }
            break;
        case ApiMac_addrType_short:
            pAddr->addr.shortAddr = MT_MSG_rdU16_DBG(pMsg, "shortAddr");
            for(x = 2 ; x < 8 ; x++)
            {
                /* read & toss */
                MT_MSG_rdU8_DBG(pMsg, "filler");
            }
            break;
        case ApiMac_addrType_extended:
            for(x = 0 ; x < 8 ; x++)
            {
                pAddr->addr.extAddr[x] = MT_MSG_rdU8_DBG(pMsg, "extaddr");
            }
        }
    }

    此致、

    Daniel