Page 1 of 5

【已解决】[Tuya OS SDK] 初次适配TuyaOS V:6.1.0 蓝牙配网问题

Posted: 2024年 Feb 21日 19:44
by zq.

请问有没有涉及ble demo可以看一下,我看压缩包里面的tkl_bluetooth.c基本都是要求自实现的。


Re: [Tuya OS SDK] 初次适配TuyaOS V:6.1.0 蓝牙配网问题

Posted: 2024年 Feb 21日 19:49
by 郭老庄

Re: [Tuya OS SDK] 初次适配TuyaOS V:6.1.0 蓝牙配网问题

Posted: 2024年 Feb 22日 09:54
by zq.

压缩包里面tal_bluetooth.c就是模拟sdk会以类似的实现方式调用tkl_bluetooth.c中待实现的接口,然后需要我们需要负责实现tkl_bluetooth.c对应的接口吗?


Re: [Tuya OS SDK] 初次适配TuyaOS V:6.1.0 蓝牙配网问题

Posted: 2024年 Feb 22日 09:57
by 郭老庄

是的


Re: [Tuya OS SDK] 初次适配TuyaOS V:6.1.0 蓝牙配网问题

Posted: 2024年 Feb 22日 10:23
by zq.

TAL_BLE_SERVICE_VERSION == 2是新版本的服务,我以前接的老的sdk,记得对应的V1, 老的app支持吗,请问有没有什么风险,有风险的话我仍用老的服务


Re: [Tuya OS SDK] 初次适配TuyaOS V:6.1.0 蓝牙配网问题

Posted: 2024年 Feb 22日 14:56
by zq.

另外有一点,我看你们服务里面发送用的notify,为啥不选择用indicate, indicate不是还自带丢包重发吗,效果是不是会更好呢。


Re: [Tuya OS SDK] 初次适配TuyaOS V:6.1.0 蓝牙配网问题

Posted: 2024年 Feb 22日 15:38
by 郭老庄
  1. version=2 三年前就有了
  2. 使用场景不一样,我们每一笔notification都有对应的client回复,控制在自己手上,而不是交给协议占用额外的带宽去回复

Re: [Tuya OS SDK] 初次适配TuyaOS V:6.1.0 蓝牙配网问题

Posted: 2024年 Feb 22日 15:41
by zq.
郭老庄 2024年 Feb 22日 09:57

是的

我这边移植的时候看到的现象是tkl_ble_stack_init有被调用,tkl_ble_gap_adv_start有被调用,但是在这中间的应该被调用的tal_ble_advertising_data_set没被调用,这个函数反而是在连上网后set gw ext_stat:2被调用,不知道是哪里初始化存在问题,我们这边当前被蓝牙的述求是仅仅在配网阶段开启,配网结束后即关闭。


Re: [Tuya OS SDK] 初次适配TuyaOS V:6.1.0 蓝牙配网问题

Posted: 2024年 Feb 22日 16:25
by 郭老庄
zq. 2024年 Feb 22日 15:41
郭老庄 2024年 Feb 22日 09:57

是的

我这边移植的时候看到的现象是tkl_ble_stack_init有被调用,tkl_ble_gap_adv_start有被调用,但是在这中间的应该被调用的tal_ble_advertising_data_set没被调用,这个函数反而是在连上网后set gw ext_stat:2被调用,不知道是哪里初始化存在问题,我们这边当前被蓝牙的述求是仅仅在配网阶段开启,配网结束后即关闭。

建议参考 https://developer.tuya.com/cn/docs/iot- ... 9vq9pubeja
先验证 Peripheral 通道可行性,再把tkl合入IPC 开发框架


Re: [Tuya OS SDK] 初次适配TuyaOS V:6.1.0 蓝牙配网问题

Posted: 2024年 Feb 26日 10:32
by zq.

验证Peripheral 通道可行性时候,发现执行
TAL_BLE_EVT_PARAMS_T param;
memset(&param, 0, sizeof(param));
param.type = TAL_BLE_STACK_INIT;
param.ble_event.init = 0;
printf("atbm stack init\n");
TKL_BLE_GAP_EVT_FUNC_CB(&param);上报TAL_BLE_STACK_INIT
符合预期,对应的回调都正常,但是执行
TAL_BLE_EVT_PARAMS_T param;
memset(&param, 0, sizeof(param));
param.ble_event.connect.result = 0;
param.type = TAL_BLE_EVT_PERIPHERAL_CONNECT;
param.ble_event.connect.peer.conn_handle = ble_conn_handle;
printf("atbm gap connect\n");
param.ble_event.connect.peer.char_handle[TAL_COMMON_WRITE_CHAR_INDEX] = 2;
param.ble_event.connect.peer.char_handle[TAL_COMMON_NOTIFY_CHAR_INDEX] = 3;
param.ble_event.connect.peer.char_handle[TAL_COMMON_READ_CHAR_INDEX] = 4;
TKL_BLE_GAP_EVT_FUNC_CB(&param);没有被调用,因为没看到tkl_ble_gatts_value_set以及被调用,可能是什么原因。
日志400行对应stack_init时间,533对应上抛connect事件