如标题所示。tuya sdk使用的是sdk_6.2.6,蓝牙设备是高拓的AB6132U。目前能通过app搜索并连接到蓝牙设备。但是设备收到数据并没有解析出来。数据传给sdk但是没看到后续解析的log。附件中为设备蓝牙配网的log和相关的代码。麻烦工程师审核下代码,看有哪些接口没有适配或写法不对的。
蓝牙配网,app数据没有解析出来。
Re: 蓝牙配网,app数据没有解析出来。
上个帖子已经回复过你了
tkl_ble_gatts_service_add 的入参p_service你没有赋值
Re: 蓝牙配网,app数据没有解析出来。
有赋值,我是在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 */
},
Re: 蓝牙配网,app数据没有解析出来。
pony 2025年 Mar 31日 16:12有赋值,我是在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是多少呢
Re: 蓝牙配网,app数据没有解析出来。
郭老庄 2025年 Mar 31日 16:20pony 2025年 Mar 31日 16:12有赋值,我是在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之间的代码有给他赋值呢?
Re: 蓝牙配网,app数据没有解析出来。
你要给p_service->p_service->p_char.handle赋值
Re: 蓝牙配网,app数据没有解析出来。
昨天给handle赋值了还是不行。请教一下这个handle要怎么赋值,这个值是从哪里获取?附件是修改后配网的log和相关代码,麻烦帮看下,多谢!
- Attachments
-
- src_0401.zip
- (17.88 KiB) Downloaded 3 times
-
- 00.log
- (33.91 KiB) Downloaded 3 times
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是否相同。你再加打印看看
Re: 蓝牙配网,app数据没有解析出来。
郭老庄 2025年 Apr 1日 10:29sdk收到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是否相同。你再加打印看看
好的