如果provisioner需要配置多个node,每个node的元素个数都不一样,provisioner如何为每个元素分配地址呢。

例如:网络由三个节点组成,节点A有1个元素,节点B有2个元素,节点C由2个元素,节点A的地址为0x0001,节点B的第一个元素如果为0x0002的话,第二个元素必须为0x0003,节点C同理。provisioner在Provisioning Data配网的步骤只发送了一个Unicast Address地址,节点B有2个元素,第二个元素地址是如何分配的? 我看nordic的 light_switch例子配网结束后就立马发送NODE_SETUP_CONFIG_COMPOSITION_GET操作码,这个操作码可以获取节点的元素数量,但并没有看到provisioner使用node响应的CONFIG_OPCODE_COMPOSITION_DATA_STATUS数据,只是把它复制到一个结构体里。

/* Save composition data for later use */
if (p_event->opcode == CONFIG_OPCODE_COMPOSITION_DATA_STATUS)
{
m_node_composition.len = length;
m_node_composition.composition.page_number = p_event->p_msg->composition_data_status.page_number;
memcpy(m_node_composition.composition.data, p_event->p_msg->composition_data_status.data, length - 1);
}

  • xu_wei 其实他只要获取到节点的首个元素的地址以及元素的数量,那么他在入网的时候,他就会与他分配的那个地址,加上这个节点元素的数量就是下一个节点的首要元素的地址

xu_wei 其实他只要获取到节点的首个元素的地址以及元素的数量,那么他在入网的时候,他就会与他分配的那个地址,加上这个节点元素的数量就是下一个节点的首要元素的地址

    是的,在cap过程就获取到了元素个数。

      xu_wei 是的。这样就能分配地址到下一个节点了

        撰写回复...