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.

[参考译文] CC2531:使用保留端点的 CC2531 (CC2530)-ZNP。

Guru**** 2378650 points
Other Parts Discussed in Thread: CC2531, CC2530, Z-STACK
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1001074/cc2531-cc2531-cc2530--znp-working-with-reserved-endpoints

器件型号:CC2531
Thread 中讨论的其他器件: CC2530Z-STACK

大家好、同事。

===========================

我们的平台描述

===========================

我们使用基于 HA1.2的 ZNP

版本1.2.2a

2015年10月16日

CC2531 (和 CC2530用于我们的某些硬件平台)用作协调器。

TI 服务器( 以 zigbeeHAgw 开头的服务器)使用 gateway_config.tlg (在附件中)。

===================

问题

===================

我们现在有 ZigBee 器件、我们无法修改该软件。 它将 Attribute Reporting 发送到编号为1的端点、无论我们如何配置它。

因此、它看起来不会在 ZNP 中处理、因为编号为1的 EP 未在内部注册  

静态 int srvConvertPartedFile (void) 

(笑声)


网关服务器不会在其中注册它

静态 bool gwInit( void ) 

(笑声)


作者

静态 bool gwRegAllEp( void ) 

(笑声)

所以

void MT_AfIncomingMsg (afIncomingMSGPacket_t *pMsg){...}

从开始、从 CC2531 (CC2531)软件中不调用 WIL  

永远不会为 Enpoint 1调用静态空 MT_AfRegister (uint8 * pBuf)。

因此、我们永远不会收到端点的消息、其中编号为1的 Destinaton Address。

我们的器件将无法报告其属性。

===========

问题

===========

1) 1)不管 TI ZStack 中的端点寄存器过程是不是很好?

2) 2)做什么

"

//端点 ID 0-2由系统保留(ZDO、NWKMgr、GatewayMgr) 

"

明确表示什么?

0 - ZDO

1 - NWKMGR

2- GatewayMgr?

3) 3)我是否可以将编号为1的端点注册为我的自定义 EP、然后将 NWKMgr 的"resevation (可能是、如果我在上一个问题中正确的话)移动到另一个数字?

4) 4)如果3) 正常、我该怎么做?

此致、  

Maxim Uvarenkov

 

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

    尊敬的 Maxim:

    您的理解是正确的、您需要修改 serverdefep.h 的 nm_EP 以释放端点1供您的应用注册。  我不确定这种更改以及 APP_EP 对网关解决方案的影响(基于可能在代码的其他位置做出的假设)。  您至少需要修改 srvParseEndpoint 以接受1作为有效的应用程序端点。

    此致、
    Ryan

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

    您好、Ryan、感谢您的回复。

    关于您的答案、在1.2.2版本的堆栈中没有  server失败.h 我想、这个文件是3.0.1 TI ZigBee 堆栈的一部分。

    关于1.2.2堆栈、我希望 serverep.h 代表上述文件。 我提出的原因是-没有像 NM_EP 这样的端点(甚至在代码中的任何地方都没有提到)、仅提到了 GW_EP、并且仅在两个注释字符串中提到。

    (例如-

    //设置全局指针,允许默认的 GW_EP

    //zcl_registerClusterOptionList (GW_EP、1、GwgApsOptions);

    )

    关于现有文件(serverep.h)、  

    仅提及 ZDO_EP 和 ZCL_OTA_终结 点。

    此外、看起来 ZDO 端点是由 CC2531代码(协调器本身)显式注册的

    比如

      afRegister((endPointDesc_t *)&ZDApp_epDesc );在 ZDApp_Init( taskID++)中;在 void osalInitTasks( void )中

    因为 ZDUApp_epDesc 保留  

    endPointDesc_t ZDUP_epDesc =

    ZDO_EP、
    &ZDAppTaskID、
    (SimpleDescriptionFormat_t *) NULL、//没有针对 ZDO 的简单说明
    (afNetworkLatencyReq_t) 0 //无网络延迟请求
    };

    因此、服务器的软件(gateway_Srvr 二进制文件作为可执行文件)甚至不会自行注册。

    这些值仅代表 用户在.gateway_configtlg 配置文件中定义的端点分发包的合法性检查。

    如下所示:

    if (!srvParse8BitValue( fp,&id)|| id == ZDO_EP || id =INVALID_EP || id == ZCL_OTA_终结 点)

    uiPrintfEx (trERROR,"无效的端点 ID %d,使用1-254,但为 OTA\n 保留的%d 除外",id,ZCL_OTA_终结 点);
    返回 SRVEPERR_BADFILE;

    因此、1.2.2堆栈的 gateway_config.tlg 中的注释无效。 我可以使用第一个端点(和第二个...) 自定义端点、不受任何限制?

    我会尝试一下、然后返回结果...

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

    感谢您提供最新的信息和附加信息。 我曾提到 Z-Stack HA 1.2.2a 网关解决方案、因为 Z-stack-linux-sensor-to-cloud (用于3.0)不需要网络或网关管理器端点。  希望您已经发现您的解决方案也是如此、因此您将能够毫无限制地使用端点1和2。

    此致、
    Ryan

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

    您好、Ryan。

    我已经检查了第一个端点的使用情况、以满足我的定制需求、并发现它不会影响任何东西。 现在、AttributeReporting (显然还有任何其他消息)已从 CC2531 (CC2530)转换到 NPI 服务器、并在途中进一步。 因此系统工作正常。

    总结:

    在1.2.2 HA 堆栈中、有关1和2端点保留的注释不正确。 唯一保留的零端点(用于 ZDO)和此保留在 ZNP-Coordinator SW (用于 CC2531 (CC2530))内完成。

    测试配置文件位于附件中。

    端点{1、MyCustomDeviceEpDef、NullAttrList}和所有相关工作都成功、添加了要 由我的定制设备使用的1个端点。

    实际上、您的第一个回复解决了问题、因此我将其标记为"已解决"。

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

    感谢您的宝贵反馈!  您提到了一个附件、我没有看到、仅供参考。  TI 没有更新 Z-Stack HA 1.2.2a 网关的计划、因为重点在于没有错误注释的较新 Z-Stack 3.0解决方案。

    此致、
    Ryan

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

    关于文件-我无法附加它。 两种附加文件的方法似乎都不起作用。 (Ubuntu Ubuntu 18.04.1 LTS、Google Chrome  71.0.3578.98)。

    那么、直接通过文本。

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

    //德州仪器(TI) Linux 网关端点配置文件(.tlg)
    //版权所有2014 Texas Instruments Incorporated。 保留所有权利。

    //注释
    //忽略一行的其余部分(在//之后)
    //任何空格分隔标记(行、空格、制表符、逗号)
    //顺序不重要(也就是说,如果中引用的名称可能在引用之前或之后)

    //关键字
    //所有关键字都是小写的。 自定义名称应该是 MixedCase、以便不与关键字相混淆
    //名称遵循 C 规则,区分大小写。 数字可以是十进制或十六进制(例如0x0Ae4)
    //
    //轮询控制-使用轮询控制的休眠设备的可配置字段
    //端点-端点的描述
    // endpointdef -一个简单的描述符
    //群集列表-群集列表(用于输入或输出)
    // attr -单个属性
    // attrlist -属性列表
    // attrdef -包括和端点、群集和属性列表

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    //轮询控制配置字段:
    //使用:pollcontrol { longPollInterval,shortPollInterval }
    //
    // longPollInterval:
    //* MAC 数据请求之间以8秒为单位的最大时间
    //从终端设备到其父设备。
    //*数据类型:uint32
    //*范围:0x04 - 0x6E0000
    //
    // shortPollInterval:
    //*终端设备在 MAC 数据请求之间等待的四分之一秒数
    //在需要数据时到达其父级(即在快速轮询模式中)。
    //*数据类型:uint16
    //*范围:0x01 - 0xFFFF
    轮询控制{0x14、0x02}

    //群集 ID (非内置)

    //应用程序端点 ID 范围为3-254
    //端点 ID 0-2由系统保留(ZDO、NWKMgr、GatewayMgr)
    //端点 ID 14也保留(OtaMgr)
    //多个端点可以使用相同的 endpointdef

    //端点{ID、EndpointDef、AttrDef}
    端点{1、MyCustomDeviceEpDef、NullAttrList}
    端点{3、OnOffLightEpDef、NullAttrList}
    端点{4、LevelControlEpDef、NullAttrList}
    端点{5、ColorControlEpDef、NullAttrList}
    端点{6、ColorControlC1EpDef、NullAttrList}
    端点{7、ColorControlC2EpDef、NullAttrList}
    端点{8、IASZoneEpDef、NullAttrList}
    端点{9、SmartPlugEpDef、NullAttrList}
    端点{10、LightSensorEpDef、NullAttrList}
    端点{11、乘员传感器 EpDef、NullAttrList}
    端点{12、TemperatureSensorEpDef、NullAttrList}
    端点{13、TemperatureSensorC1EpDef、NullAttrList}
    端点{15、OnOffOutputEpDef、NullAttrList}
    端点{16、MainsPowerOutletEpDef、NullAttrList}
    端点{17、IASWarningDeviceEpDef、NullAttrList}
    端点{18、ColorControlH1EpDef、NullAttrList}
    端点{19、ColorControlH2EpDef、NullAttrList}
    端点{20、IASACEDeviceEpDef、NullAttrList}

    // endpointdefs 定义简单描述符的所有字段(端点 id 除外)
    // uint16 profileID;
    // uint16 deviceid;
    // uint8设备;
    // uint8 n_inputclusters;
    // uint16 * inputclusters;
    // uint8 n_outputcluster;
    // uint16 * outputcluster;
    endpointdef OnOffLightEpDef{ha_profile、ha_onofflight、0、NullClusterList、OnOffOutputClusters}
    endpointdef LevelControlEpDef{ha_profile、ha_dimablelight、0、NullClusterList、LevelControlOutputClusters}
    endpointdef ColorControlEpDef{ha_profile、ha_colordmmablelight、0、NullClusterList、ColorControlOutputClusters}
    endpointdef ColorControlC1EpDef{ha_profile、528、0、NullClusterList、ColorControlOutputClusters}
    endpointdef ColorControlC2EpDef{ha_profile、544、0、NullClusterList、ColorControlOutputClusters}
    endpointdef IASZoneEpDef{ha_profile、1026、0、IASZoneInputClusters、IASZoneOutputClusters}
    endpointdef SmartPlugEpDef{ha_profile、81、0、NullClusterList、SmartPlugOutputClusters}
    endpointdef LightSensorEpDef{ha_profile、262、0、NullClusterList、LightSensorOutputClusters}
    endpointdef 乘员组 SensorEpDef{ha_profile、263、0、NullClusterList、乘员组 SensorOutputClusters}
    endpointdef TemperatureSensorEpDef{ha_profile、770、0、NullClusterList、TemperatureSensorOutputClusters}
    endpointdef TemperatureSensorC1EpDef{ha_profile、24321、0、NullClusterList、TemperatureSensorOutputClusters}
    endpointdef OnOffOutputEpDef{ha_profile、2、0、NullClusterList、OnOffOutputOutputClusters}
    endpointdef MainsPowerOutletEpDef{ha_profile、9、0、NullClusterList、MainsPowerOutletOutputClusters}
    endpointdef IASWarningDeviceEpDef{ha_profile、1027、0、NullClusterList、IASWarningDeviceOutputClusters}
    endpointdef ColorControlH1EpDef{ha_profile、268、0、NullClusterList、ColorControlOutputClusters}
    endpointdef ColorControlH2EpDef{ha_profile、269、0、NullClusterList、ColorControlOutputClusters}
    endpointdef IASACEDeviceEpDef{ha_profile、1025、0、NullClusterList、IASACEDeviceOutputClusters}
    endpointdef MyCustomDeviceEpDefEpDef{ha_profile、81、0、NullClusterList、MyCustomDeviceEpDefOutputClusters}

    //群集列表包括群集列表
    //
    //常见的 ZigBee 集群(如基本)组可以使用符号,而不是数字(例如0x0006或 ONOFF)
    群集列表 NullClusterList {}
    clusterlist OnOffOutputClusters{onoff}
    clusterlist LevelControlOutputClusters{onoff、0x0008}
    clusterlist ColorControlOutputClusters{onoff、0x0008、0x0300}
    clusterlist IAZoneOutputClusters { 1280、0x0001 }
    群集列表 IAZoneInputClusters { 1281}
    clusterlist SmartPlugOutputClusters{onoff、0x0001、0x07002}
    clusterlist LightSensorOutputClusters { 1024 }
    群集列表乘员 SensorOutputClusters { 1030 }
    clusterlist TemperatureSensorOutputClusters{1026、1029、0x0001}
    clusterlist OnOffOutputOutputClusters{onoff}
    群集列表 MainsPowerOutletOutputClusters{onoff}
    clusterlist IAWarningDeviceOutputClusters { 0x0001 }
    clusterlist IASACEDeviceOutputClusters { 0x0001 }
    clusterlist MyCustomDeviceEpDefOutputClusters{onoff、0x0001、0x07002}

    // attrs 包括标识符、数据类型和访问控制
    // uint16 attrid;//十六进制(0x050E)或十进制(0、99等)
    // uint8数据类型;//布尔值、uint8、uint16、uint32、 或 ZigBee 十六进制等效标准
    // uint8访问控制;//只读或 rdwr
    //特殊情况:如果属性数据类型是字符串或 octetstring,则长度字节会跟随类型
    //{99、字符串、16、rdwr}//最多16个字节的字符串

    // attrlists 是属性的集合
    attrlist NullAttrList {}

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

    关于1.2.2 HA 堆栈、这一点很清楚。 谢谢你。 我们公司现在正在使用这两个堆栈。 但无论如何、我们必须支持基于1.2.2堆栈的旧产品。   

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

    是否已尝试将文件直接移动到"答复"文本框中?

    此致、
    Ryan

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

    是的、我已经尝试过。