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.

[参考译文] CCS/CC1310:如何在延迟一段时间后将节点添加到网络中

Guru**** 2511985 points
Other Parts Discussed in Thread: SIMPLELINK-CC13X0-SDK

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/834894/ccs-cc1310-how-to-add-the-node-to-the-network-after-some-delay

器件型号:CC1310
主题中讨论的其他器件:SIMPLELINK-CC13X0-SDK

工具/软件:Code Composer Studio

您好!

我已利用示例代码收集器和传感器来构建定制星形网络。 因此、我一直在尝试重新加入节点/传感器、该节点/传感器在计时器超时后关闭并重新启动到网络、我无法这样做。 计时器超时后是否可以重新加入节点、同时保持其他任务运行?

提前感谢。

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

    Shubha 您好、

    您是否正在使用默认的 SIMPLELINK-CC13X0-SDK v3.20示例、或者是否可以指定所做的更改?  您能否澄清您参考的计时器和任务?  http://dev.ti.com/tirex/explore/node?node=AG4DLj1L0Jjd7bzHzKXYXg__eCfARaV__LATEST

    此致、
    Ryan

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

    您好、Ryan、

    我定义了一个类似于跟踪计时器的计时器。 该计时器从跟踪时钟开始。 因此、我定义的计时器不会干扰任何其他计时器。 假设我将超时时间设置为5分钟、只要节点出于任何原因需要重新加入、它只应在5分钟后加入、这是一个周期性计时器。 在这里、在重新加入节点期间、我希望为网络中的其余节点发送跟踪消息。

    我已经尝试实施上述操作、它会等待超时、但会保留跟踪消息。 更改在 csf.c 文件的收集器端进行、下面是编辑后的代码。

    ApiMac_assocStatus_t CSF_deviceUpdate (ApiMac_deviceDescriptor_t *pDevInfo、
    ApiMac_capabilityInfo_t *pCapInfo)
    {
    ApiMac_assocStatus_t status = ApiMac_deviceStatus_t Success;
    ApiMac_memAddr_t AdrAddr_t AdrInfo;ApiMac_assocStatus_t
    
    
    
    
    
    
    
    
    = Appendr&Adrendr&Adr&Adr&Adr&Adrendr&Adr&Adrmac = App_Adrendr&Adrendr&Adr&Adr&Adr&Adr&Adr&Adr&Adr&Adr&Adr&Adr&Adrmac = App_Adr&Adrendr&Adr&Adr&Adr&Adr&Adr&Adr&Adr&Adr&Adr&Adr&Adr&Adr&Adr&
    &pDevInfo->extAddress、APIMAC_SADDR_EXT_LEN);
    
    /*设备是否在黑色列表中? //
    if ((findBlackListIndex (&shortAddr)>=0)
    ||(findBlackListIndex (&extAddr)>=0)
    {
    //拒绝*
    /状态= ApiMac_assocStatus_panAccessDenied;
    
    LCD_write_string_value ("拒绝:"、pDevInfo->shortAddress、16、4)}
    
    否则
    {
    //保存器件信息*/
    LLC_deviceListItem_t dev;
    Cllc_Associated_devices_t *pItem;
    // pItem = findDevice (&shortAddr);
    
    memcpy (&dev.devInfo、pDevInfo、sizeof (ApiMac_deviceDescriptor_t)));
    memcpy (&dev.capInfo、 pCapInfo、sizeof (ApiMac_capabilityInfo_t));
    dev.rxFrameCounter = 0;
    
    if (addDeviceListItem (&dev、&newDevice)= false)
    {
    #ifdef NV_restore
    status = ApiMac_assocStatus_panAtCapacity;
    
    LCD_write_string_value ("失败:0x"
    、简称"shortInfo")、p16)
    #else
    status = ApiMac_assocStatus_Success;
    
    lcd_write_string_value ("joined:0x"、pDevInfo->shortAddress、16、4);
    #endif
    }
    否则(TRUE =newDevice){
    LCD_write_string_value (“Joined:0x”、pDevInfo->shortAddress、16、4);
    }
    
    ..........................................................................
    
    /*编辑的代码*/
    else {
    
    while (csf_isperiodicTimerActive ()== true)
    {
    status = ApiMac_assocStatus_panAtCapacity;
    
    }
    
    status = ApiMac_assocStatus_Success;
    
    LCD_write_string_value ("重新加入:0x"、pDevInfo->shortAddress、16、4);
    }
    
    }
    
    ..................................................................................................
    #if defined (MT_CSF)
    MTCSF_deviceUpdateIndCB (pDevInfo、pCapInfo);
    #endif
    
    //返回加入设备的状态*/
    返回(状态);
    } 

    谢谢、此致、

    Shubha J

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

    您好、Shubha、

    我现在了解您的应用、但您不应使用 while 循环、尤其是在 CSF_deviceUpdate 中。  您应该 认识到器 件正在尝试在 assocIndCb 期间重新加入(通过短地址)、然后启动计时器、而不是调用 cllcDeviceJoiningCB。  然后、您将使用标志和收集器事件等待该计时器过期、然后再允许此特定短地址加入。  但我不明白您为什么要在任何时间内忽略重新连接的器件。

    此致、
    Ryan

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

    您好、Ryan、

    感谢你的答复。 基本上、数据是根据周期收集的、因此我不想将其分解。

    此致、

    Shubha