【开发包全称】SDK Version:< TuyaOS V:6.2.10 BS:40.00_PT:2.3_LAN:3.5_CAD:1.0.5_CD:1.0.0 >
【问题描述】
sdk调用tkl_ble_gap_callback_register跟tkl_ble_gatt_callback_register注册了回调。
然后sdk调用了tkl_ble_stack_init,
然后设备这边使用注册的回调接口回调了TKL_BLE_EVT_STACK_INIT状态给sdk,
sdk调用了tkl_ble_gatts_service_add后未调用tkl_ble_gap_adv_rsp_data_set 而是直接调用了tkl_ble_gap_adv_start,
然后设备这边因无法获取到adv跟rsp数据,无法成功启动蓝牙广播。
我这边在tkl_bluetooth.c里面每个接口开头都加了函数名的打印,日志已添加附件帮忙分析一下
【SDK】蓝牙配网问题求助
【SDK】蓝牙配网问题求助
- Attachments
-
- 蓝牙配网日志.txt
- (56.19 KiB) Downloaded 5 times
Re: 【SDK】蓝牙配网问题求助
如果正确的回调了TKL_BLE_EVT_STACK_INIT状态给sdk,sdk会打印rev ble event 1。日志里没看到这个打印
Re: 【SDK】蓝牙配网问题求助
我这边修改了一下回调方式,改由tkl_bluetooth.c中直接回调,还是不行,帮忙看下。重新添加了日志跟tkl_bluetooth.c文件。
还有个情况就是我不回调依旧是按上述流程走的,不知道是否正常。
- Attachments
-
- tkl_bluetooth.c
- (20.4 KiB) Downloaded 5 times
-
- 蓝牙配网日志1.txt
- (104.36 KiB) Downloaded 6 times
Re: 【SDK】蓝牙配网问题求助
建议再看下demo,回调TKL_BLE_EVT_STACK_INIT不是你那么用的
https://developer.tuya.com/cn/docs/iot- ... 9vq9pubeja
Re: 【SDK】蓝牙配网问题求助
郭老庄 2025年 May 20日 14:21建议再看下demo,回调TKL_BLE_EVT_STACK_INIT不是你那么用的
https://developer.tuya.com/cn/docs/iot- ... 9vq9pubeja
看了demo(https://images.tuyacn.com/rms-static/b7 ... est.tar.gz),
整体流程就是main函数调用tal_ble_bt_init进行蓝牙模块初始化,传递了事件回调函数tuyaos_bluetooth_event_callback
然后tal_ble_bt_init接口中依次调用tkl_ble_gap_callback_register、tkl_ble_gatt_callback_register、tkl_ble_stack_init、tkl_ble_gatts_service_add
tkl_ble_gap_callback_register、tkl_ble_gatt_callback_register两个接口的入参作为sdk内部接口回调出来给用户,用户使用2个入参进行回调。
其中tkl_ble_kernel_gap_event_callback作为tkl_ble_gap_callback_register调用的入参,可以接收到这个TKL_BLE_EVT_STACK_INIT事件,然后再调用tal_ble_event_callback进行事件处理,就会来到这个tuyaos_bluetooth_event_callback,依次调用tal_ble_advertising_data_set跟tal_ble_advertising_start。
我这边将tkl_ble_gap_callback_register的入参保存到全局变量中(g_gap_evt_cb = gap_evt;),进行并在tkl_ble_bt_init接口后调用传入TKL_BLE_GAP_PARAMS_EVT_T结构体,其中type赋值为TKL_BLE_EVT_STACK_DEINIT(
TKL_BLE_GATT_PARAMS_EVT_T evt;
evt.type = e;
g_gatt_evt_cb(&evt);)。
这些步骤是哪里不对吗?
另外我这边看demo里面会开启广播的时候只有回调TAL_BLE_STACK_INIT跟TAL_BLE_EVT_DISCONNECT事件,其他并无主动调用的地方,且TAL_BLE_EVT_DISCONNECT才会直接开启广播,TAL_BLE_STACK_INIT的话会先设置广播数据再开启广播,我这边不管是否回调,效果均与回调TAL_BLE_EVT_DISCONNECT的调用顺序一致,感觉有点奇怪。