蓝牙mesh组网实践(mesh节点网络参数查询)

目录

当调试蓝牙mesh组网时出现无法通信的情况时,可以检查收发双方的网络参数来判断是否有网络信息丢失。

本文汇总了常用的网络参数排查接口。

        PRINT("\n");       //XXX JW 打印本节点主元素地址
        PRINT("node_addr =%d\n", bt_mesh_primary_addr());

        PRINT("\n");      //XXX JW 打印本节点的包序列号
        PRINT("seq_num =%d\n", bt_mesh_seq_get());

        PRINT("\n");     //XXX JW 打印当前的初始化向量索引
        PRINT("iv_index =%d\n", bt_mesh_iv_index_get());

        PRINT("\n");        //XXX JW 打印已订阅的组播地址
        for(uint8_t i=0; i<CONFIG_MESH_MOD_GROUP_COUNT_DEF; i++)
        {
            PRINT("group_addr[%d] =0x%x\n", i, vnd_models[0].groups[i]);
        }

        PRINT("\n");        //XXX JW 打印绑定到透传模型的应用密钥索引app key index以及对应的应用密钥app key
        for(uint8_t i=0; i<CONFIG_MESH_MOD_KEY_COUNT_DEF; i++)
        {
            PRINT("app_key_index[%d] =0x%x\n", i, vnd_models[0].keys[i]);

            if(vnd_models[0].keys[i] != 0xFFFF)
            {
                struct bt_mesh_app_key *temp_st_app_key;
                temp_st_app_key = bt_mesh_app_key_find(vnd_models[0].keys[i]);
                PRINT("app_key");
                for(uint8_t j=0; j<16; j++)
                {//打印第一组app key。第二组app key在更新app key时才会用到,一般用不到。
                    PRINT(" 0x%02x", temp_st_app_key->keys[0].val[j]);
                }
                PRINT("\n");
            }
            else
            {
                PRINT("app_key_index_not_used [%d]\n", i);
            }
        }

        PRINT("\n");      //XXX JW 打印已接收到的RPL
        struct bt_mesh_rpl rpl_test_buff[CONFIG_MESH_RPL_COUNT_DEF] = {0};      //数组长度不能小于CONFIG_MESH_RPL_COUNT_DEF,否则可能导致写数组溢出复位
        bt_mesh_rpl_list_get(rpl_test_buff);
        for(uint8_t i=0; i<CONFIG_MESH_RPL_COUNT_DEF; i++)
        {
            PRINT("rpl[%d] addr=%x squ=%d\n", i, rpl_test_buff[i].src, rpl_test_buff[i].seq);
        }

        PRINT("\n");    //XXX JW 没有应用层改动时,为静态变量,见app.c的self_prov_dev_key数组
        PRINT("dev_key -> Saerch 'self_prov_dev_key' in 'app.c'\n");

 

posted @ 2025-02-28 20:50  JayWell  阅读(328)  评论(0)    收藏  举报