蓝牙配网,app数据没有解析出来。

IPC/NVR/可视门铃等具备多媒体能力的设备,扫地机/AGV等机器人设备


pony
Posts: 18

如标题所示。tuya sdk使用的是sdk_6.2.6,蓝牙设备是高拓的AB6132U。目前能通过app搜索并连接到蓝牙设备。但是设备收到数据并没有解析出来。数据传给sdk但是没看到后续解析的log。附件中为设备蓝牙配网的log和相关的代码。麻烦工程师审核下代码,看有哪些接口没有适配或写法不对的。

Attachments
src.zip
(17.57 KiB) Downloaded 6 times
01.log
(173.93 KiB) Downloaded 2 times
郭老庄
Posts: 231

Re: 蓝牙配网,app数据没有解析出来。

上个帖子已经回复过你了
tkl_ble_gatts_service_add 的入参p_service你没有赋值

pony
Posts: 18

Re: 蓝牙配网,app数据没有解析出来。

郭老庄 2025年 Mar 31日 15:51

上个帖子已经回复过你了
tkl_ble_gatts_service_add 的入参p_service你没有赋值

有赋值,我是在ble_smart_gatt_svcs_init中赋的固定值。p_service的值主要部分我打印出来跟下面一样的,所以按照高拓demo写的固定值。这个地方如果没赋值,蓝牙是搜索不到的。
{
/* Service: GATT */
.type = BLE_GATT_SVC_TYPE_PRIMARY,
.uuid = BLE_UUID16_DECLARE(BLE_USER_DATA_SVC_UUID16),
.characteristics = (struct ble_gatt_chr_def[]) { {
.uuid = BLE_UUID128_DECLARE(0xD0, 0x07, 0x9B, 0x5F, 0x80, 0x00, 0x01, 0x80, 0x01, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00),//BLE_UUID16_DECLARE(BLE_ATBM_SMART_DATA),
.access_cb = ble_svc_gatt_access,
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_WRITE_NO_RSP,
},{
.uuid = BLE_UUID128_DECLARE(0xD0, 0x07, 0x9B, 0x5F, 0x80, 0x00, 0x01, 0x80, 0x01, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00),//BLE_UUID16_DECLARE(BLE_ATBM_SMART_NOTIFY),
.access_cb = ble_svc_gatt_access,
.val_handle = &blesmt_notify_handle,
.flags = BLE_GATT_CHR_F_NOTIFY,
}, {
.uuid = BLE_UUID128_DECLARE(0xD0, 0x07, 0x9B, 0x5F, 0x80, 0x00, 0x01, 0x80, 0x01, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00),
.access_cb = ble_svc_gatt_access,
.flags = BLE_GATT_CHR_F_READ,
},{
0,
},
}
},

Code: Select all

{
    0, /* No more services */
},
郭老庄
Posts: 231

Re: 蓝牙配网,app数据没有解析出来。

pony 2025年 Mar 31日 16:12
郭老庄 2025年 Mar 31日 15:51

上个帖子已经回复过你了
tkl_ble_gatts_service_add 的入参p_service你没有赋值

有赋值,我是在ble_smart_gatt_svcs_init中赋的固定值。p_service的值主要部分我打印出来跟下面一样的,所以按照高拓demo写的固定值。这个地方如果没赋值,蓝牙是搜索不到的。
{
/* Service: GATT */
.type = BLE_GATT_SVC_TYPE_PRIMARY,
.uuid = BLE_UUID16_DECLARE(BLE_USER_DATA_SVC_UUID16),
.characteristics = (struct ble_gatt_chr_def[]) { {
.uuid = BLE_UUID128_DECLARE(0xD0, 0x07, 0x9B, 0x5F, 0x80, 0x00, 0x01, 0x80, 0x01, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00),//BLE_UUID16_DECLARE(BLE_ATBM_SMART_DATA),
.access_cb = ble_svc_gatt_access,
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_WRITE_NO_RSP,
},{
.uuid = BLE_UUID128_DECLARE(0xD0, 0x07, 0x9B, 0x5F, 0x80, 0x00, 0x01, 0x80, 0x01, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00),//BLE_UUID16_DECLARE(BLE_ATBM_SMART_NOTIFY),
.access_cb = ble_svc_gatt_access,
.val_handle = &blesmt_notify_handle,
.flags = BLE_GATT_CHR_F_NOTIFY,
}, {
.uuid = BLE_UUID128_DECLARE(0xD0, 0x07, 0x9B, 0x5F, 0x80, 0x00, 0x01, 0x80, 0x01, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00),
.access_cb = ble_svc_gatt_access,
.flags = BLE_GATT_CHR_F_READ,
},{
0,
},
}
},

Code: Select all

{
    0, /* No more services */
},

你没理解我的意思。tkl_ble_gatts_service_add是sdk调用的,它的参数p_service也是需要被sdk获取到。如果sdk获取不到,怎么知道handle是多少呢

pony
Posts: 18

Re: 蓝牙配网,app数据没有解析出来。

郭老庄 2025年 Mar 31日 16:20
pony 2025年 Mar 31日 16:12
郭老庄 2025年 Mar 31日 15:51

上个帖子已经回复过你了
tkl_ble_gatts_service_add 的入参p_service你没有赋值

有赋值,我是在ble_smart_gatt_svcs_init中赋的固定值。p_service的值主要部分我打印出来跟下面一样的,所以按照高拓demo写的固定值。这个地方如果没赋值,蓝牙是搜索不到的。
{
/* Service: GATT */
.type = BLE_GATT_SVC_TYPE_PRIMARY,
.uuid = BLE_UUID16_DECLARE(BLE_USER_DATA_SVC_UUID16),
.characteristics = (struct ble_gatt_chr_def[]) { {
.uuid = BLE_UUID128_DECLARE(0xD0, 0x07, 0x9B, 0x5F, 0x80, 0x00, 0x01, 0x80, 0x01, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00),//BLE_UUID16_DECLARE(BLE_ATBM_SMART_DATA),
.access_cb = ble_svc_gatt_access,
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_WRITE_NO_RSP,
},{
.uuid = BLE_UUID128_DECLARE(0xD0, 0x07, 0x9B, 0x5F, 0x80, 0x00, 0x01, 0x80, 0x01, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00),//BLE_UUID16_DECLARE(BLE_ATBM_SMART_NOTIFY),
.access_cb = ble_svc_gatt_access,
.val_handle = &blesmt_notify_handle,
.flags = BLE_GATT_CHR_F_NOTIFY,
}, {
.uuid = BLE_UUID128_DECLARE(0xD0, 0x07, 0x9B, 0x5F, 0x80, 0x00, 0x01, 0x80, 0x01, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00),
.access_cb = ble_svc_gatt_access,
.flags = BLE_GATT_CHR_F_READ,
},{
0,
},
}
},

Code: Select all

{
    0, /* No more services */
},

你没理解我的意思。tkl_ble_gatts_service_add是sdk调用的,它的参数p_service也是需要被sdk获取到。如果sdk获取不到,怎么知道handle是多少呢

不好意思,tkl_ble_gatts_service_add是在tal_bluetooth.c中被调用,p_service是sdk给赋值的,这里还需要我手动赋值吗?我看到#if (defined(TAL_BLE_SERVICE_VERSION) && (TAL_BLE_SERVICE_VERSION == 2)) ...#else之间的代码有给他赋值呢?

郭老庄
Posts: 231

Re: 蓝牙配网,app数据没有解析出来。

你要给p_service->p_service->p_char.handle赋值

pony
Posts: 18

Re: 蓝牙配网,app数据没有解析出来。

郭老庄 2025年 Mar 31日 16:37

你要给p_service->p_service->p_char.handle赋值


好的

pony
Posts: 18

Re: 蓝牙配网,app数据没有解析出来。

郭老庄 2025年 Mar 31日 16:37

你要给p_service->p_service->p_char.handle赋值


昨天给handle赋值了还是不行。请教一下这个handle要怎么赋值,这个值是从哪里获取?附件是修改后配网的log和相关代码,麻烦帮看下,多谢!

Attachments
src_0401.zip
(17.88 KiB) Downloaded 3 times
00.log
(33.91 KiB) Downloaded 3 times
郭老庄
Posts: 231

Re: 蓝牙配网,app数据没有解析出来。

sdk收到TAL_BLE_EVT_WRITE_REQ的时候,会判断
p_event->gatt_event.write_report.char_handle 和 你在tkl_ble_gatts_service_add的时候,property = TKL_BLE_GATT_CHAR_PROP_WRITE 时赋值的handle是否相同。你再加打印看看

pony
Posts: 18

Re: 蓝牙配网,app数据没有解析出来。

郭老庄 2025年 Apr 1日 10:29

sdk收到TAL_BLE_EVT_WRITE_REQ的时候,会判断
p_event->gatt_event.write_report.char_handle 和 你在tkl_ble_gatts_service_add的时候,property = TKL_BLE_GATT_CHAR_PROP_WRITE 时赋值的handle是否相同。你再加打印看看

好的

Post Reply