TI的大神们好,
在Smart Energy中,各级的KEY都是基于install code建立的,我用Source Insight找了整个工程都没有发现,协议栈是在哪里设置install code的,SMart Energy的协议中说到,install code是可以自己设置的,在哪里设置呢?万分感激
Viki Shi:
论坛有类似问题,解答请看这边: https://e2e.ti.com/support/wireless_connectivity/zigbee_6lowpan_802-15-4_mac/f/158/t/371111
Zhengrong Lee:
回复 Viki Shi:
谢谢您的回答,不过帖子上说的是用sspMMOHash函数来产生pre-configured link key, 还是没有讲哪里可以设置这个install key;
在Smart Energy组网过程中,根据SE的规范,Device需要发送自身的install code和MAC ID给协调器,这样协调器才会产生异样的pre-configured link key, 所以应该会有一个地方来时设置这个install code的吧?
Alvin Chen:
回复 Zhengrong Lee:
Hi
以 Sample light 为例:请查看 zcl_sampleapps_ui.c
#define UI_INSTALL_CODE_DEFAULT {0x83,0xFE,0xD3,0x40,0x7A,0x93,0x97,0x23,0xA5,0xC6,0x39,0xB2,0x69,0x16,0xD5,0x05,0xC3,0xB5} //This install code produces the key: 66B6900981E1EE3CA4206B6B861C02BB #define UI_INSTALL_CODE_ADDR_DEFAULT {0xE7,0xFC,0x0E,0x04,0x00,0x4B,0x12,0x00}static void uiActionSetInstallCode(uint16 keys) {uint16 crc = bdb_GenerateInstallCodeCRC(uiInstallCode);uiInstallCode[INSTALL_CODE_LEN] = crc & 0xFF;uiInstallCode[INSTALL_CODE_LEN + 1] = crc >> 8;#if (ZG_BUILD_COORDINATOR_TYPE)if (ZG_DEVICE_COORDINATOR_TYPE){uiAddInstallCodeLastStatus = bdb_addInstallCode(uiInstallCode, uiInstallCodeAddr);}else{uiAddInstallCodeLastStatus = bdb_setActiveCentralizedLinkKey(FALSE, uiInstallCode);} #elseuiAddInstallCodeLastStatus = bdb_setActiveCentralizedLinkKey(FALSE, uiInstallCode); #endif }
Zhengrong Lee:
回复 Alvin Chen:
非常感谢您的回答。
使用install code的话需要什么设置吗? 因为install code用来产生Pre-configured Link Key, 但是Default Global Centralized Key可以代替这个Pre-configured link key, 所以不太清楚协议是用了哪个,或者您有什么相关的说明文档,关于怎样在协议中使用install code吗?
感激万分。
Zhengrong Lee:
回复 Alvin Chen:
谢谢您的文档。还有一个小问题,install code是Z-sTACK 3.0才加进来的吧?Z-stack2.5之前的是不是都没有啊?
xiaolong_ba:
回复 Alvin Chen:
这个Install Code是惟一的吗?每个节点都各自的Install code还是说整个网络就只能有一个install code.
Zhengrong Lee:
回复 xiaolong_ba:
根据SE的协议规范,我的理解是每个节点有各自的install code
xiaolong_ba:
回复 Zhengrong Lee:
在《Base Device Behavior Specification》第10章的10.1小节install codes有这么一段话“Knowing a set of Install Codes SHOULD NOT yield any knowledge of another Install Code and each Install Code SHOULD be equally probable.”从字面上看,好像是每个节点均可以有自己的install code,但是我不是很确定。还有如果真的如我所想,如果节点一多起来,而且均是采用install code的方式入网,那么协调器有足够的空间来保存这么多信息吗?