无法在运行时更改属性UUID

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
7个帖子/ 0新
最后一篇
陈鹏莱
离线
最后一次露面:1个月3周前
加入:2018-12-24 02:24
无法在运行时更改属性UUID

我在SDK 5.0.4工作

我想在运行时更改存在的Service UUID和属性UUID,因为客户通过串行端口运行时由客户配置了属性UUID

我正在开发在教学蓝牙模块

我正在做以下

uint8_t new_uuid_arr [16] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//一个新的uuid struct att_char128_desc * p1 =(struct att_char128_desc *)cust_prf_funcs-> att_db [cust1_idx_server_tx_char] .value;memcpy(p1-> attr_type,new_uuid_arr,16);

我的期望是在上面的代码执行后uuid更改

但它不起作用

请告诉我如何在运行后通过哪个函数更改存在uuid和属性UUID

是否有任何其他方法可以更改属性UUID?

设备:
PM_DIALOG.
离线
最后一次露面:14小时前1天
职员
加入:2018-02-08 11:03
嗨Chenpenglai,

嗨Chenpenglai,

您是否尝试过以下步骤在app_custs1_create_db()函数中??如果是,在SDK的哪个例子中?你想如何改变UUI?

uint8_t array_test_svc [] = {0x03,0x03,0.x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0x03,0x03};uint8_t array_test_long_char [] = {0x04,0x04,0x0x04,0x04,0x0x04,0x04,0x04,0x04,0x0x04,0x04,0x04,0x04,0x04,0x04,0x0x04,0x04};memcpy(cust_prf_funcs [i] .att_db [cust1_idx_svc] .value,array_test_svc,16);//这将对服务的变化进行更改

更改特征值,您必须在两个地方应用更改:

memcpy(cust_prf_funcs [i] .att_db [cust1_idx_svc] .value +(16 * 7),array_test_long_char,16);//将更改应用于该服务的包含包含特征的数组

现在将改变应用于特征本身:

memcpy(cust_prf_funcs [i] .att_db [cust1_idx_long_value_char] .value + 3,array_test_long_char,16);

谢谢,PM_DIALOG.

陈鹏莱
离线
最后一次露面:1个月3周前
加入:2018-12-24 02:24
我试图在上面执行

我试图在app_custs1_create_db()函数中执行上面的代码,如下所示

void app_custs1_create_db(void){struct custs1_create_db_req * req * req = ke_msg_alloc(custs1_create_db_req,task_custs1,task_app,custs1_create_db_req);uint8_t i = 0;/ ******************添加********************* / uint8_t array_test_svc [] = {0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0x03};uint8_t array_test_long_char [] = {0x04,0x04,0x0x04,0x04,0x0x04,0x04,0x04,0x04,0x0x04,0x04,0x04,0x04,0x04,0x04,0x0x04,0x04};memcpy(cust_prf_funcs [0] .att_db [cust1_idx_svc] .value,array_test_svc,16);memcpy(cust_prf_funcs [0] .att_db [cust1_idx_svc] .value +(16 * 7),array_test_long_char,16);memcpy(cust_prf_funcs [0] .att_db [cust1_idx_server_tx_char] .value + 3,array_test_long_char,16);/ ******************添加了********************* / whis(cust_prf_funcs [i] .task_id!= task_none){if(cust_prf_funcs [i] .task_id == task_custs1){req-> max_nb_att = cust_prf_funcs [i] .max_nb_att;休息; } else i++; } // Attribute table. In case the handle offset needs to be saved req->att_tbl = NULL; req->cfg_flag = 0; req->features = 0; // Send the message ke_msg_send(req); }

但App_custs1_create_db()函数只能在设备启动时更改服务UUID

我想在运行时更改它,不要重启

在设备启动后,我尝试了更改array_test_svc []值并调用app_custs1_create_db()函数,但我无法更改服务uuid

陈鹏莱
离线
最后一次露面:1个月3周前
加入:2018-12-24 02:24
你好PM_DIALOG.

你好PM_DIALOG.

我需要你的帮助

PM_DIALOG.
离线
最后一次露面:14小时前1天
职员
加入:2018-02-08 11:03
嗨Chenpenglai,

嗨Chenpenglai,

我为延迟道歉。我正在努力,我会尽快回复你。您使用的是哪个SDK示例?

谢谢,PM_DIALOG.

陈鹏莱
离线
最后一次露面:1个月3周前
加入:2018-12-24 02:24
我在ble_app工作

我在ble_app_peripheral工作

PM_DIALOG.
离线
最后一次露面:14小时前1天
职员
加入:2018-02-08 11:03
嗨Chenpenglai,

嗨Chenpenglai,

我使用了以下代码片段,我无法复制您的问题。我使用了SDK5.0.4的BLE_APP_PHERICALLAL示例。唯一的变化是cust1_idx_long_value_char而不是cust1_idx_server_tx_char。我假设您已创建“服务器TX”特征。

#include“user_custs1_def.h”
void app_custs1_create_db(void){struct custs1_create_db_req * req * req = ke_msg_alloc(custs1_create_db_req,task_custs1,task_app,custs1_create_db_req);uint8_t i = 0;/ ******************添加********************* / uint8_t array_test_svc [] = {0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0x03};uint8_t array_test_long_char [] = {0x04,0x04,0x0x04,0x04,0x0x04,0x04,0x04,0x04,0x0x04,0x04,0x04,0x04,0x04,0x04,0x0x04,0x04};memcpy(cust_prf_funcs [0] .att_db [cust1_idx_svc] .value,array_test_svc,16);memcpy(cust_prf_funcs [0] .att_db [cust1_idx_svc] .value +(16 * 7),array_test_long_char,16);memcpy(cust_prf_funcs [0] .att_db [cust1_idx_long_value_char] .value + 3,array_test_long_char,16);/ ******************添加了********************* / whis(cust_prf_funcs [i] .task_id!= task_none){if(cust_prf_funcs [i] .task_id == task_custs1){req-> max_nb_att = cust_prf_funcs [i] .max_nb_att;休息; } else i++; } // Attribute table. In case the handle offset needs to be saved req->att_tbl = NULL; req->cfg_flag = 0; req->features = 0; // Send the message ke_msg_send(req); }

因为,我无法复制这个问题,请尝试调试代码。另外,你的意思是什么不起作用?是设备广告吗?你能连接吗?你用调试模式运行它吗?

谢谢,PM_DIALOG.