写入设备名称(0x2A00)特性来更改设备名称

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
11个帖子/ 0新
最后一篇
斯坦利_yeh.
离线
最后一次露面:2年2周以前
加入:2016-12-23 06:52
写入设备名称(0x2A00)特性来更改设备名称

嗨对话框,

我的客户想要使用通用访问(0x1800)的设备名称(0x2A00)来修改设备名称。

我在user_config中修改了user_gapm_conf.h如下......

.att_cfg = GAPM_MASK_ATT_SVC_CHG_EN | GAPM_MASK_ATT_NAME_PERM,

我还在“default_app_on_set_dev_info”函数中添加了一些调试日志,但它似乎不工作。

有没有错?

我的设备信息。DA14585 SDK: 6.0.4

谢谢。

设备:
mt_dialog.
离线
最后一次露面:3个月4周前
职员
加入:2015-06-08 11:34
嗨斯坦利_yeh,

嗨斯坦利_yeh,

似乎有一个问题在回调函数gapc_set_dev_info_req_ind_handler()确认发送的任务应该TASK_GAPC而不是TASK_GAPM也回调实际上并不改变设备的名称,所以一旦回调你应该更改设备名称的应用程序的回调。我正在和SDK团队核对这个,一旦我有一些反馈,我会让你知道。

谢谢mt_dialog.

斯坦利_yeh.
离线
最后一次露面:2年2周以前
加入:2016-12-23 06:52
非常感谢!

非常感谢!

斯坦利_yeh.
离线
最后一次露面:2年2周以前
加入:2016-12-23 06:52
嗨MT_dialog,

嗨MT_dialog,
我试图在app_entry_point_handler和gapc_set_dev_info_req_ind_handler函数中打印一些消息。
但是,似乎DA14585没有收到任何事件。
我可以自己解决这个问题吗?这个问题是否必须更新system_library.lib,即我无法修复它?
谢谢。

mt_dialog.
离线
最后一次露面:3个月4周前
职员
加入:2015-06-08 11:34
嗨斯坦利_yeh,

嗨斯坦利_yeh,

当前的实现允许您有一个回调通知您,当有人编写特定的特征时,但没有实际的实现来更改数据库中的名称,这是SDK团队正在研究的。所以,如果你只是想获得回调,当某人写在特定的特征,所有你需要做的是做以下更改:

  1. 在gapc_set_dev_info_req_ind_handler()中,将gapc_set_dev_info_cfm()的目标任务从TASK_GAPM改为TASK_GAPC。
  2. 然后在user_config.h文件中更改user_gapm_conf结构的。ust_gapm_conf结构的成员到gapm_mask_att_svc_chg_en | 0x01,以便对特定特征没有安全性。

在上面的更改之后,您应该看到默认_happ_on_set_dev_info()要进行回调,但是再次占中央写在该特性的指示,这不会在数据库中更改名称。

谢谢mt_dialog.

斯坦利_yeh.
离线
最后一次露面:2年2周以前
加入:2016-12-23 06:52
嗨MT_Dialog,

嗨MT_Dialog,
非常感谢你。我现在可以收到这个活动。
对不起,我无法理解以下句子的含义是什么:

1.“这不会更改数据库中的名称。”
如果数据库中的名称无法更改,您能否告诉我风险,会发生什么?
你的意思是,设备名称是SDK中的定义(#define user_device_name“da14585”),因此没有实际实现更改它?
实际上,我已经实现了一个可以将设备名称存储到外部闪存中的函数。所以你说的句子对我的情况没有影响,对吗?

2."对特定特征进行无安全性的写入。"
我的客户说写的特点必须是安全的。我不明白为什么GAPM_MASK_ATT_NAME_PERM不能工作?

非常感谢。

mt_dialog.
离线
最后一次露面:3个月4周前
职员
加入:2015-06-08 11:34
嗨斯坦利_yeh,

嗨斯坦利_yeh,

1)关于将发生什么,正如SDK的情况下,目前您在设备上写的任何内容时,SDK都不会将您提供的名称存储在设备上只会将值发送到设备,您将能够得到它,但是读取IT后,设备的名称AGAN不会更改,设备将像以前一样报告相同的名称。因此,在SDK中是没有实际实现来改变它。我不知道你的意思是说你已经实现了一个在外部闪存中存储了设备名称的函数。但是为了能够通过该特征来改变设备的名称,您必须将更改应用于SDK本身,显然您将必须为user_device_name分配指针而不是固定名称,指针将显示为将用于存储实际设备名称的数组,并在通过写入该特性时更改名称时,您必须将数据从写入复制到该数组。

2)如果启用,每个特性都有一些安全特性。这意味着如果您将0x03 (GAPM_MASK_ATT_NAME_PERM)的值分配给设备的名称特征,这意味着为了能够写入该特征,设备要求通过身份验证来保护链接。因此,如果链接没有身份验证,这意味着该设备不允许您写入该特定特征,因为您不符合该设备设置的要求。另一方面,如果您应用了0x01的值,这意味着您启用了写入特征,但没有额外的安全性,这意味着连接到设备的任何人都能够写入特征。

谢谢mt_dialog.

斯坦利_yeh.
离线
最后一次露面:2年2周以前
加入:2016-12-23 06:52
嗨MT_dialog,

嗨MT_dialog,
非常感谢您提供的详细信息。
对于第一个问题,我可以自己保存设备名称。那没问题。
对于第二个问题,我仍需要安全功能,请告诉我是否有任何新的SDK版本。
非常感谢。

mt_dialog.
离线
最后一次露面:3个月4周前
职员
加入:2015-06-08 11:34
嗨斯坦利_yeh,

嗨斯坦利_yeh,

最新版本的SDK是6.0.6,并且有一个项目实现安全性(BLE_APP_SECURY),我不完全得到什么问题。如果应用值Gapm_mask_att_svc_chg_en | 0x03然后为了写入特性需要安全性,如果未启动配对,则无法写入特性。如果您不希望对该特性的保护,那么GAPM_MASK_ATT_SVC_CHG_EN | 0x01对于.ATT_CFG将允许您在没有安全性的情况下写入特性。

谢谢mt_dialog.

斯坦利_yeh.
离线
最后一次露面:2年2周以前
加入:2016-12-23 06:52
嗨MT_Dialog,

嗨MT_Dialog,
我现在正在使用SDK 6.0.6,我还设置了“.att_cfg =(gapm_mask_att_svc_chg_chg_chg_chg_chg_chg_chg_chg_chg_chg_chg_chg_chg_chg_chg_chg_chg_ch_chg_chg_chg_chg_ch_ch_ce)”。
第一次我写一个字符串到特征,应用程序显示他们绑定。
绑定后,我仍然不能设置设备名称。应用程序显示“错误0x5: GATT INSUF认证”
我应该在“GAPC_SET_DEV_INFO_REQ_IND_HAND_HAND_HAND_HAND_HAND_HAND_HANDLER”功能中将来自TASK_GAPM的参数修改为TASK_GAPC?
struct gapc_set_dev_info_cfm* cfm = KE_MSG_ALLOC(gapc_set_dev_info_cfm,
task_gapc,/ * task_gapm,* /
task_app,
gapc_set_dev_info_cfm);
你能给我一些建议吗?
多谢。

mt_dialog.
离线
最后一次露面:3个月4周前
职员
加入:2015-06-08 11:34
嗨斯坦利_yeh,

嗨斯坦利_yeh,

正如我在前一篇文章中所述,SDK没有实现更改设备名称,但它会在应用级别触发你的指示,所以我认为你已经应用了自定义修改,你还必须从TASK_GAPM改为TASK_GAPC,以便向你接受或不接受改变的对等设备发回验证。关于GATT_INSUF_AUTHENTICATION,这是你第一次尝试设置名称和中央启动绑定时应该得到的(在ble_app_security的情况下),绑定完成后,将发生回调(default_app_on_set_dev_info),您必须在应用程序中处理名称的接收,决定接受还是拒绝新名称,并返回带有适当状态的GAPC_SET_DEV_INFO_CFM,为了正确地发送回确认,你必须从TASK_GAPM改为TASK_GAPC。

谢谢mt_dialog.