Page 1 of 2
【已解决】【SDK】【蓝牙配网】
Posted: 2023年 Aug 28日 13:28
by lynn_yu
1)开发包全称:tuyaos-ipc_5.6.37_rts3917_rts3917_0.0.5.tar.gz
2)实现方式:参考tkl_wifi 配网方式,在tuya_adapter/src/tkl_bluetooth.c中打开对一些接口的支持,同时在component中添加tkl_bluetooth文件夹(和tkl_wired tkl_wifit同级别), 实现蓝牙配网
3)问题现象:
- tuya_adapter 调用tkl_gatt_service tkl_stack_init tkl_adv_stop后不再进行其他应用的调用,最后adv-stop返回值为0
- gatt_service_add中,直接采用上层传递的参数,发现service uuid并不是0x1910
=>请问param 是需要自己设定吗
- ble_stack_init的时候打印role 发现数值=3,不在service preherial的范围中
Re: 蓝牙配网
Posted: 2023年 Aug 28日 14:07
by 逻辑的院子
配网之前是需要启动广播的。
其他问题基于已知信息无法判断,请参考发帖规范:
viewtopic.php?t=303
以及问题本身提供更详细的信息,另请提供参考网页配网方式的具体位置
Re: 【求助】【蓝牙配网】
Posted: 2023年 Aug 28日 15:43
by lynn_yu
Re: 【求助】【蓝牙配网】
Posted: 2023年 Aug 28日 16:36
by pippin-bobo
对接IOT版本3.4.1 配置只使能了蓝牙配网,没有使用蓝牙其他功能和涂鸦蓝牙协议,可以通过tkl自己适配蓝牙协议
Re: 【求助】【蓝牙配网】
Posted: 2023年 Aug 28日 16:41
by lynn_yu
在tuya_adapter里对上层传递下来的数据进行展示,可以看到
start tuya adapter tkl_ble_stack_init role:3
stack init的时候这个数据并不是1-2这个范围里,而且在adv_stop后不再进行任何func的调用。
当前阶段比较疑惑的是,
- 这边tkl层接口的调用顺序
- gatt_service注册的param 是采取上层传递下来的数据还是说我这边自定义
- 什么时候会调用adv_start, 按照页面要求,adv_data也是直接透传的
当前状态:
- 协议栈启动完成
- gatt service 注册完成(采用的是手动传参)
registered service 0x1901 with handle=10
registering characteristic 0x2b11 with def_handle=11 val_handle=12
registering characteristic 0x2b10 with def_handle=13 val_handle=14
3.
Re: 【求助】【蓝牙配网】
Posted: 2023年 Aug 28日 16:42
by lynn_yu
pippin-bobo 2023年 Aug 28日 16:36
对接IOT版本3.4.1 配置只使能了蓝牙配网,没有使用蓝牙其他功能和涂鸦蓝牙协议,可以通过tkl自己适配蓝牙协议
这边已经自己适配了蓝牙协议,可以正常启动 协议栈 并注册服务,手动调用adv_start 也是可以正常scan的,
Re: 【求助】【蓝牙配网】
Posted: 2023年 Aug 28日 19:52
by hearge
这边tkl层接口的调用顺序.
回调函数注册
tkl_ble_gap_callback_register
tkl_ble_gatt_callback_register
服务注册
tkl_ble_gatts_service_add
协议栈初始化
tkl_ble_stack_init
广播相关
tkl_ble_gap_adv_start
tkl_ble_gap_adv_rsp_data_set
tkl_ble_gap_adv_stop
tkl_ble_gap_adv_rsp_data_update
gatt_service注册的param 是采取上层传递下来的数据还是说我这边自定义。
都可以的,上层会传递下来(缺点是麻烦一些,需要按tuya格式规范解析。有点是不需要考虑tuya服务版本),也可以根据版本自己适配好(缺点是需要对应好版本,有点可以针对使用平台规范适配,无需考虑tuya格式规范,简单上手)。
如果自己适配服务,需要注意的是tuya 有两套服务规范,分别是0xFD50和0x2B10。
广播数据和对应uuid的版本需要匹配,否则App识别到但是无法配网。
- 什么时候会调用adv_start, 按照页面要求,adv_data也是直接透传的
参考一
Re: 【求助】【蓝牙配网】
Posted: 2023年 Aug 28日 20:11
by hearge
Re: 【求助】【蓝牙配网】
Posted: 2023年 Aug 28日 21:06
by lynn_yu
感谢回复。还有个问题想请较一下。
1.这边 回掉函数注册,服务注册,初始化注册,都是符合这个列表的。唯一有差异的是,广播服务这块,确实没有进入到gap_adv_start 中,更没有set data/rspdata ,而是在stack init 后直接调用了adv _stop,请问这个符合预期吗?
这边判定的方式,是在tuya_adapter 里添加打印,每func()一个函数,都会答应出对应的名称。
2.如果实在是没有办法找到没有启动广播的原因,是否可以参照1910的规范,直接给定广播数据,强制手动开启广播,这样是否可取。
++++++++++
尝试手动设定对应的service 广播数据,可以nrf_connect 扫描显示的raw data和上述给出的一致。
但是无法连接。
采用tuya app 添加蓝牙配网设备,显示无法连接。
Re: 【求助】【蓝牙配网】
Posted: 2023年 Aug 29日 10:43
by lynn_yu
请问什么情况下会触发adv_stop
这边运行下来 stack_init后就调用了adv_stop