嗨,对话框中,
我的客户想使用通用访问(0x1800)的设备名称(0x2A00)特征来修改设备名称。
我在user_config.h中修改了user_gapm_conf,如下所示…
.att_cfg = GAPM_MASK_ATT_SVC_CHG_EN | GAPM_MASK_ATT_NAME_PERM,
我还在“default_app_on_set_dev_info”函数中添加了一些调试日志,但似乎不工作。
有什么问题吗?
我的设备信息。DA14585 SDK: 6.0.4
谢谢。
设备:
嗨stanley_yeh,
似乎有一个问题在回调函数gapc_set_dev_info_req_ind_handler()确认发送的任务应该TASK_GAPC而不是TASK_GAPM也回调实际上并不改变设备的名称,所以一旦回调你应该更改设备名称的应用程序的回调。我正在与SDK团队检查这一点,我会让你知道,一旦我有一些反馈。
由于MT_dialog
非常感谢!
嗨MT_dialog,
我尝试在app_entry_point_handler和gapc_set_dev_info_req_ind_handler函数中打印一些消息。
但是,DA14585似乎没有收到任何事件。
我能自己解决这个问题吗?这个问题是否必须更新system_library。我不能解决它?
谢谢。
嗨stanley_yeh,
当前的实现允许你有一个回调通知你,当有人写在那个特定的特征,但没有实际的实现改变数据库中的名称,这是SDK团队正在研究的。所以,如果你感兴趣的只是获得回调时,有人写在特定的特征,你所要做的是做出以下更改:
在上面的修改之后,你应该会看到default_app_on_set_dev_info()回调发生,但同样,这只是表明中央已经写入了那个特征,这不会改变数据库中的名称。
由于MT_dialog
嗨MT_Dialog,
非常感谢。我现在可以接收事件了。
很抱歉,我听不懂以下句子的意思:
1.“这不会改变数据库中的名称。”
你能告诉我如果数据库中的名字不能更改会有什么风险吗?
你的意思是设备名是SDK中的定义(#define USER_DEVICE_NAME "DA14585"),所以没有实际的实现来更改它?
实际上,我已经实现了一个函数,可以将设备名称存储到外部flash中。所以你说的判决对我的案子没有影响,对吧?
2.在没有安全保障的情况下对特定特性进行写操作。
我的客户说写特性必须是安全的。我不明白为什么GAPM_MASK_ATT_NAME_PERM不能工作?
非常感谢。
嗨stanley_yeh,
1)将会发生什么,因为SDK,此刻无论你写的设备提供的SDK不会存储名称你它就值发送到设备,你就能得到它,但设备一旦你看阿甘的名字不会改变,设备将报告相同的名称。是的,在SDK中没有实际的实现来改变它。我不知道你说你实现了一个功能,在外部闪存中存储设备的名称是什么意思。但是为了能够通过这个特性改变设备的名称你需要对SDK本身进行修改,显然你需要分配一个指针到USER_DEVICE_NAME而不是一个固定的名称,指针将显示一个数组,该数组将用于存储实际设备的名称,无论何时通过写入该特征来更改名称,你将不得不将写入数据复制到该数组。
2)如果启用,每个特性都有一些安全特性。这意味着,如果您将0x03 (GAPM_MASK_ATT_NAME_PERM)的值分配给设备的名称特征,这意味着为了能够在该特征上写入,设备需要使用身份验证来保护链接。因此,如果链接没有认证,这意味着设备不允许你写在那个特定的特征,因为你不符合设备设置的要求。另一方面,如果您应用0x01的值,这意味着您启用了特征的写入,但没有额外的安全性,这意味着连接到设备的任何人都能够写入特征。
由于MT_dialog
嗨MT_dialog,
非常感谢您提供的详细信息。
对于第一个问题,我可以自己保存设备名称。没问题。
关于第二个问题,我还需要安全特性,如果有新的SDK版本请告诉我。
多谢。
嗨stanley_yeh,
SDK的最新版本是6.0.6,有一个项目实现了安全(ble_app_security),我不太明白到底是什么问题。如果您应用值GAPM_MASK_ATT_SVC_CHG_EN|0x03,那么为了写入特征将需要安全性,如果配对没有启动,那么您将无法写入特征。如果您不想对该特征进行保护,那么。att_cfg的GAPM_MASK_ATT_SVC_CHG_EN|0x01将允许您在不安全的情况下写入特征。
由于MT_dialog
嗨MT_Dialog,
我现在使用SDK 6.0.6,我也设置"。att_cfg = (GAPM_MASK_ATT_SVC_CHG_EN | 0x03)"
我第一次在特征上写字符串时,应用程序显示它们在结合。
绑定完成后,仍然无法设置设备名称。应用程序显示“错误0x5: GATT INSUF身份验证”
我是否应该将函数“gapc_set_dev_info_req_ind_handler”中的参数从TASK_GAPM修改为TASK_GAPC ?
struct gapc_set_dev_info_cfm* cfm = KE_MSG_ALLOC(gapc_set_dev_info_cfm,
/ * TASK_GAPM TASK_GAPC, * /
TASK_APP,
gapc_set_dev_info_cfm);
你能给我一些建议吗?
非常感谢。
嗨stanley_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