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: 如何调整发送数据的源地址格式和周期数据内容

Part Number: CC2530
Other Parts Discussed in Thread: Z-STACK

使用 z-stack 3.0.2 开发测试,协调器和路由设备会周期发送数据,但是我没找到相关数据的装填位置。

我想请教以下几个问题:

1、数据发送的源地址格式怎么更改,现有数据默认地址模式 Addr16Bit,如果想将源地址模式变更 Addr64Bit 怎么调整;

2、网络数据的装填这个部分,例程开放的最底层是哪里,如果我想变更周期发送的数据,使用这个数据传输一些自定义协议内容,应该调整哪里,我找了好久也没找到相关位置。

  • 已经跟进您的需求,请等候一下。

  • 1.你可透過改變AF_DataRequest 的第一個參數 afAddrType_t *dstAddr為使用Addr64Bit 模式去送封包,但是一般建議還是用Addr16Bit模式.

    2.就是使用AF_DataRequest 去送

  • 1.您可以在AF_DataRequest中设置第一个参数afAddrType_t *dstAddr来使用Addr64Bit,但不建议这样做。

    2.您可以使用AF_DataRequest以专有格式发送数据包。

  • Hi YL,

    以上步骤您尝试过了吗,问题的疑惑点解决了吗?

    Thanks & Best regards,

    Yolande

  • 可能是我没描述清楚,

    IEEE协议里面 数据帧(Frame_Type 为 Data)

    包括 dstAddr和scrAaddr,发送时 afData_req只能修改dstAddr的模式,而scrAddr默认是16bitAddr,

    我想尝试将scrAddr模式改为64bitAddr 不知道可以实现吗?

  • scrAddr模式是沒辦法在Z-Stack 內修改成64bitAddr的

  • Hi YL,

    正如YiKai所说,对于此数据服务 APSDE-DATA.request,Zigbee 规范没有使用 64 位源地址的选项。您无法在 scrAddr 中使用 64bitAddr。

    你做此测试的目标是什么?看看是否有其他的解决方案。

    Thanks & Best regards,

    Yolande

  • 使用场景是小范围组网,我原本想将各个节点根据自身工作位置,拟定一个指定的编号。这样其在网络中处于什么身份其他设备就知道了,某个节点出现故障时可以直接定位到目标设备。

    我不知道我理解对不对,现有的Z-Stack 是根据短地址来查询长地址,而且短地址并不是固定的,这样可能让我这种想法实现复杂一些。

  • Zigbee设备入网會廣播设备的长地址和短地址,建議你可以在應用程序儲存一個自己的對應表,這樣就可以用设备的长地址隨時去物應短地址做發送

  • 起因也是我看到了这个函数

    void ZMacSendNoData ( uint16 DstAddr, uint16 DstPANId )
    {

        macMcpsDataReq_t *pBuf;

        /* Allocate memory */
        pBuf = MAC_McpsDataAlloc(0, MAC_SEC_LEVEL_NONE, MAC_KEY_ID_MODE_NONE);

        if (pBuf)
        {
            /* Fill in src information */
            pBuf->mac.srcAddrMode = SADDR_MODE_SHORT;

            /* Fill in dst information */
            pBuf->mac.dstAddr.addr.shortAddr = DstAddr;
            pBuf->mac.dstAddr.addrMode = SADDR_MODE_SHORT;
            pBuf->mac.dstPanId = DstPANId;

            /* Misc information */
            pBuf->mac.msduHandle = 0;
            pBuf->mac.txOptions = ZMAC_TXOPTION_ACK | ZMAC_TXOPTION_NO_RETRANS | ZMAC_TXOPTION_NO_CNF;

            /* Right now, set security to zero */
            pBuf->sec.securityLevel = false;

            /* Call Mac Data Request */
            MAC_McpsDataReq(pBuf);
        }
    }

    但是这个函数 MAC_McpsDataReq(pBuf); 追踪不到原型。

  • MAC_McpsDataReq的源碼在z-stack lib不開放,所以你找不到源碼,請參照我的建議建立长地址和短地址對應表這樣會比較方便

  • 再请教一下,2.5.1版本是否支持呢

  • 2.5.1版本Zigbee设备入网也是會廣播设备的长地址和短地址的

  • 请教一下:

    周期广播数据周期参数我找到了,数据发送调用的位置我没找到。这个也不在开源代码部分吗?

  • 数据发送可以调用AF_DataRequest,源代码在AF.c裏頭

  • 我的意思是,您这边说的周期广播长地址和短地址的函数,我想看看是否可以在里面增加一些内容。

  • 广播长地址和短地址的函数你是不能亂動的