修改例程adv_vendor_self_provision_with_peripheral并烧录,使用一个friend节点和两个lpn节点,其中一个lpn节点经常性发送数据不能传输,需要重新断开APP,再发送才有可能成功。
另外一个lpn2还算正常,发送都能收到。
修改例程adv_vendor_self_provision_with_peripheral并烧录,使用一个friend节点和两个lpn节点,其中一个lpn节点经常性发送数据不能传输,需要重新断开APP,再发送才有可能成功。
另外一个lpn2还算正常,发送都能收到。
APP发送到friend节点显示有收到,但friend节点转发给lpn却失败了
重新换了外置fpc天线,现在又换成lpn2不好使了,lpn又正常了,难道friend节点只支持一个lpn?
您好,您检查一下图中的宏是否定义为1,为1的话可以改写成默认代码支持的最大值4。
朋友关系的建立由低功耗节点发起,可以查看低功耗节点和朋友节点的串口打印,朋友关系的建立与断开都有打印log。
@TECH_JW 是的,我改成3就可以了,谢谢
如果需要扩展朋友节点支持的低功耗个数,应该怎么修改?直接修改宏定义APP卡死,看上去需要修改APP
修改MESH_MEM大小可以支持多些节点。
您好,用最EVT中的库实际上已经没有最大值4的限制了,为了支持更多低功耗节点,需要做如下优化。
①CONFIG_MESH_FRIEND_RECV_WIN_DEF这个宏规定低功耗节点在向朋友节点发送POLL请求数据后,进入接收状态的接收窗口大小。如果朋友节点支持的节点多了导致丢包,可以适当加大这个宏,但是功耗会变高。
②CONFIG_MESH_RF_CHANNEL_37到39三个宏后面的信道可以修改,默认这三个信道与BLE共用广播信道,如果环境中其他无线干扰比较多,可以修改到其他信道。注意三个信道别靠太近,比如说重新分配为2、17、33。
③内存分配优化一下。app.c中MESH_MEM这个数组和BLE_MEMHEAP_SIZE这个宏,分配大些,要求编译器编译和朋友节点初始化过程中不要报错。每多支持一个低功耗节点,会多占用朋友节点的332字节的RAM即MESH_MEM以及CONFIG_MESH_UNSEG_LENGTH_DEF * CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF个字节的缓存即BLE_MEMHEAP_SIZE。
目前测试MESH_MEM分配9K,BLE_MEMHEAP_SIZE分配10K,CONFIG_MESH_LPN_REQ_QUEUE_SIZE_DEF设置为2,低功耗节点2sPOLL一次,582作为朋友节点可以支持10个低功耗节点。
@TECH_JW 感谢解答!