找回密码
 立即注册

微信扫码登录

查看: 665|回复: 16

[BLE Mesh] 关于8258的自动组网和一键组网

[复制链接]

1

主题

9

回帖

45

积分

英勇黄铜

积分
45
发表于 2024-12-30 09:59:53 | 显示全部楼层 |阅读模式
Information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: 8258
SDK及版本: telink_sig_mesh_sdk_v3.3.3.5_Patch
在开发手册AN-17120401-C_Telink SIG Mesh SDK Developer Handbook中找到两章,10.4.9一键组网和16章私有 Fast provision 功能,可以实现两个功能结合,按下按键后可以自动组网并且是全部同时加入mesh网络吗

5

主题

127

回帖

477

积分

版主

积分
477
发表于 2024-12-30 11:34:18 | 显示全部楼层
一键组网和fast是两个独立的模式,这两种模式都可以将node加入到网络中来。但目前这种模式是互斥的,因为fast需要上位机,一键组网不需要上位机。不太清楚你的目的是什么?

1

主题

9

回帖

45

积分

英勇黄铜

积分
45
 楼主| 发表于 2024-12-31 08:31:15 | 显示全部楼层
感谢您的回复,我是希望可以通过外部输入,比如按键来开启自动组网的同时加快组网速度,也就是不是一个一个添加进来,是讲周围的node同时加进来。

5

主题

127

回帖

477

积分

版主

积分
477
发表于 2024-12-31 13:37:11 | 显示全部楼层
那就看一下一键组网的

1

主题

9

回帖

45

积分

英勇黄铜

积分
45
 楼主| 发表于 2025-1-2 09:41:34 | 显示全部楼层
感谢回复,我还有一个问题就是,一键组网有关于选择节点的滤除代码,如下:
u8 prov_uuid_fastbind_mode(u8 *p_uuid)
{
    simple_flow_dev_uuid_t *p_dev_uuid = (simple_flow_dev_uuid_t *)p_uuid;
    if(p_dev_uuid->cps_head.cid == VENDOR_ID){
        return 1; // 符合条件,允许加入网络
    }else{
        return 0; // 不符合条件,滤除该节点
    }
}
1、我想知道VENDOR_ID在组网或者整个代码中扮演的角色,他有什么作用,能否随意修改
2、如果我要只组网我的产品,是要修改产品node的VENDOR_ID还是自己添加一个宏定义来滤除

1

主题

9

回帖

45

积分

英勇黄铜

积分
45
 楼主| 发表于 2025-1-2 09:55:08 | 显示全部楼层
3、如果要添加一个自己的标识,那节点端该如何修改添加

5

主题

127

回帖

477

积分

版主

积分
477
发表于 2025-1-7 10:54:24 | 显示全部楼层
1.不能随意修改。vender id是向蓝牙联盟申请颁发的厂商标识符号,比如0x0211标识泰凌,0x01a8表示阿里,如果客户有vendor id的话可以把VENDOR_ID宏的值改成自己的。 vendor opcode也用到vendor id,由1字节的opcode + 2字节的vendor id组成,节点收到vendor消息的时候判断vendor opcode中的vendor id是否与自己的vendor id相符。2. 如果要只组网自己的产品,可以在uuid中添加自己的规则进行判断3.可以在uuid里添加自己的标识

1

主题

9

回帖

45

积分

英勇黄铜

积分
45
 楼主| 发表于 2025-1-7 11:12:34 | 显示全部楼层
参考开发手册1.4的pid,vid的修改,我可以通过修改宏定义MESH_PID_SEL进行滤除吗,判断语句如下:
if(p_dev_uuid->cps_head.cid == VENDOR_ID && p_dev_uuid->cps_head.pid == PID_LIGHT){
      //if(p_dev_uuid->cps_head.cid == VENDOR_ID){
        return 1;
    }else{
        return 0;
注:PID_LIGHT这个宏修改过,我今天刚好尝试了一下,发现好像不可行

1

主题

9

回帖

45

积分

英勇黄铜

积分
45
 楼主| 发表于 2025-1-7 12:14:52 | 显示全部楼层
是在这个函数进行uuid设置吗
void set_dev_uuid_for_sha256()
{
        sha256_dev_uuid_str dev_uuid;
        sha256_dev_uuid_str *p_uuid = &dev_uuid;
        memset(p_uuid,0,sizeof(sha256_dev_uuid_str));
        p_uuid->cid = VENDOR_ID;
        p_uuid->adv_ver = 0x01;
        p_uuid->auth_en = 1;
        p_uuid->ota_en =1;
        p_uuid->ble_ver = BLE_4_2;
        memcpy(p_uuid->product_id,&con_product_id,sizeof(con_product_id));
        memcpy(p_uuid->mac, tbl_mac, sizeof(tbl_mac));
        #if(MESH_USER_DEFINE_MODE == MESH_MI_SPIRIT_ENABLE)
        memcpy(p_uuid->mac, con_mac_address, sizeof(tbl_mac));
        #endif
        p_uuid->uuid_ver = 1;
        p_uuid->adv_flag = 0;
        memcpy(prov_para.device_uuid,(u8 *)(p_uuid),sizeof(sha256_dev_uuid_str));
}
我看这里面设置的pid并不是使用宏,而是对未域进行操作,那些宏有什么用呢

5

主题

127

回帖

477

积分

版主

积分
477
发表于 2025-1-7 15:59:52 | 显示全部楼层
we_8563644635 发表于 2025-1-7 11:12
参考开发手册1.4的pid,vid的修改,我可以通过修改宏定义MESH_PID_SEL进行滤除吗,判断语句如下:
if(p_de ...

改vendor_id
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2025-2-5 12:52 , Processed in 0.089291 second(s), 20 queries .

Powered by Telink 隐私政策

泰凌微电子版权所有 © 。保留所有权利。 2024

快速回复 返回顶部 返回列表