找回密码
 立即注册

微信扫码登录

查看: 73|回复: 5

[BLE Mesh] bls_set_advertise_prepare (app_advertise_prepare_handler)会限制ble广播?

[复制链接]

47

主题

60

回帖

423

积分

璀璨钻石

积分
423
发表于 6 天前 | 显示全部楼层 |阅读模式 来自 广东广州
Information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: 8258
SDK及版本: tc_ble_mesh-4.1.0.1



                           你好,在mesh固件,如果开启bls_set_advertise_prepare (app_advertise_prepare_handler),那么ble的广播就会无效(        bls_ll_setAdvData( (u8 *)tbl_advData, sizeof(tbl_advData) );
        bls_ll_setScanRspData( (u8 *)tbl_scanRsp, sizeof(tbl_scanRsp)); 用这两条语句生成的广播),但如果屏蔽了bls_set_advertise_prepare (app_advertise_prepare_handler),又无法发出mesh广播,但现在需要ble和mesh广播同时启用。

          请问需要怎样做?

5

主题

262

回帖

869

积分

版主

积分
869
发表于 5 天前 | 显示全部楼层 来自 广东深圳
可以参考6.9章节
微信图片_20250528141345.png

47

主题

60

回帖

423

积分

璀璨钻石

积分
423
 楼主| 发表于 3 天前 | 显示全部楼层 来自 广东广州
这只是自定义包的处理方式吧,但我的意思是tbl_advData自从启用了bls_set_advertise_prepare 就无法发送ble包了,我现在的意思是既想发送mesh包,又想发送tbl_advData内容的包,怎样弄?

5

主题

262

回帖

869

积分

版主

积分
869
发表于 3 天前 | 显示全部楼层 来自 广东深圳
mesh发包逻辑简介:user_init()中设置广播间隔ADV_INTERVAL_MIN(非低功耗默认10ms)并通过bls_set_advertise_prepare (app_advertise_prepare_handler)注册发广播回调函数,main_loop中的blt_sdk_main_loop函数判断广播间隔到了会调用发广播接口进入广播回调接口app_advertise_prepare_handler()。具体的包内容通过修改参数p指向的内容实现,回调返回非0时底层会调用发包接口把设置的广播包发送出去。mesh就是在发广播回调中实现发送不同的广播包内容的。
        app_advertise_prepare_handler()函数中发包优先级:mesh消息 > relay消息 > gatt广播包 > 自定义beacon,如果当前有包需要发送,会设置好p指向的内容会返回非0。

5

主题

262

回帖

869

积分

版主

积分
869
发表于 3 天前 | 显示全部楼层 来自 广东深圳
发广播回调函数app_advertise_prepare_handler参数p指向的位置就是 bls_ll_setAdvData()设置的位置,注册发广播回调后待发送的内容会不断被修改,mesh不能屏蔽 屏蔽了bls_set_advertise_prepare (app_advertise_prepare_handler)。你应该在gatt_adv_prepare_handler中实现你需要发送的广播包格式,如果是想交替发送可连接广播包,可参考HOMEKIT_EN分支实现交替发送。

5

主题

262

回帖

869

积分

版主

积分
869
发表于 3 天前 | 显示全部楼层 来自 广东深圳
1
微信图片_20250530171842.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2025-6-2 20:56 , Processed in 0.091869 second(s), 24 queries .

Powered by Telink 隐私政策

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

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