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.

[参考译文] LAUNCHXL-CC26X2R1:在 NV 中保存 REQ.maxReportInt

Guru**** 2465890 points
Other Parts Discussed in Thread: Z-STACK, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1185995/launchxl-cc26x2r1-save-req-maxreportint-in-nv

器件型号:LAUNCHXL-CC26X2R1
Thread 中讨论的其他器件:SysConfig

您好!

当我更改最大报告时、我希望将其保存在 NV 存储器中、以便在器件复位时恢复报告

我在 zclSampleLight_Init( )中尝试了这种方法:

osal_nv_item_init(ZCD_NV_BDBREPORTINGCONFIG, 2, NULL);
osal_nv_read(ZCD_NV_BDBREPORTINGCONFIG, 0, 2, &Req.maxReportInt);
if(Req.maxReportInt == 0x0000){
    Req.maxReportInt = 20;
}
Zstackapi_bdbRepAddAttrCfgRecordDefaultToListReq(appServiceTaskId,&Req);

但 出于某种原因、maxReportInt 有时会减少1

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

    Panagiotis、您好!

    我不建议将 ZCD_NV_BDBREPORTINGCONFIG 初始化为长度为2的值、因为这不是 bdbReportAttrCfgData_t 的大小  请按照 bdb_RepInitAttrCfgRecords/bdb_RepLoadCfgRecords 示例进行操作、或考虑使用自定义 NV 项目来存储最大报告间隔。

    此致、
    Ryan

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

    我已在 zcomdef.h 中创建了一个自定义 NV 项目:ZCD_NV_MAX_REPORT = 0x0401,并  在 bdb_RepProcessEvent()中添加了 osal_NV_WRITE,但它返回 NV_item_UNINIT。

    OSAL_NV_ITEM_INIT 和 OSAL_NV_READ 返回成功。

    void bdb_RepProcessEvent( void )
    {
      bdb_clusterEndpointArrayIncrementAll( bdb_reportingNextEventTimeout, BDBREPORTING_FALSE );
      uint8_t minIndex =  bdb_clusterEndpointArrayGetMin( );
      if( minIndex == BDBREPORTING_INVALIDINDEX )
      {
        return;
      }
     
      osal_nv_write(ZCD_NV_MAX_REPORT, 2, &bdb_reportingClusterEndpointArray[minIndex].consolidatedMaxReportInt); //added line
    
       uint16_t minVal = bdb_reportingClusterEndpointArray[minIndex].consolidatedMaxReportInt - bdb_reportingClusterEndpointArray[minIndex].timeSinceLastReport;
       if( minVal>0 )
       ........

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

    我想对上一个帖子进行更正。 当我将  ZCD_NV_MAX_REPORT 定义 为0x0401时、 osal_NV_WRITE 返回的是 NV_OPER_FAILED。 当我将它定义为0x0005时、它返回 了 NV_IT_UNINIT

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

    您需要在写入/读取之前创建定制 NV 存储器。   有关更多说明、请参阅《Z-Stack 用户指南》的"应用非易失性存储器"部分。

    此致、
    Ryan

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

    我从 osal_nv_...更改为... 至 zclport_initializeNVItem/readnV/writeNV I 也按照说明将  NVOCMP_NVPAGES 大小增加至3、这应涵盖我的自定义 NV 项目 ID、但现在我无法加入网络。 我没有做任何其他更改、我做了一个新项目以确保我没有做任何 其他事情。 在调试中、NV 的读取和写入成功

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

    您不需要仅为自定义 ID 增加 NVOCMP_NVPAGES、但如果 完成、还必须确保修改 SysConfig 中的区域基础和大小-> NVS -> CONFIG_NVSIONNAL。  您还必须确保在重新编程之前擦除所有 NV 存储器。  您可能需要使用新示例进行检查、并严格遵循 门锁 示例、因为它还使用自定义 NV ID、并已验证是否按预期运行。

    此致、
    Ryan

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

    我将 NV 页恢复为两页并注意到 osal_nv_init ()未被使用,因此我输入 main,现在所有内容都可以与 osal_nv 命令一起使用。

    感谢您的帮助!!