设置只写特性

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support。我们将在未来几天修复bug /优化搜索和标记。
4个职位/ 0个新
最后发表
montmarc
离线
最后看到:3年5天前
加入:2018-01-11 12:28
设置只写特性

亲爱的所有,

我已经跟随AN-B-029文档来实现一个具有两个特征的定制服务(我使用SDK 5.0.3,但相应的changelog,使用5.0.4必须没有好处)。

在Application Note中,第一个是read/write,而第二个是read/notify。在我的应用程序中,第一个特征必须是只写的,所以我从arr_char128_desc特征定义中删除了ATT_CHAR_PROP_RD:

static const struct att_char128_desc custs1_cmd_message_char = {ATT_CHAR_PROP_WR,
{0},
DEF_CUST1_CMD_MESSAGE_UUID_128};

其结果是,APP继续将特征视为READ/WRITE。如果我试图读取特性,我正确地收到一个GATT错误(GATT_READ_NOT_PERMIT)。

我错过了什么?

谢谢,
托马索马

设备:
PM_Dialog
离线
最后看到:3小时15分钟前
工作人员
加入:2018-02-08 11:03
嗨montmarc,

嗨montmarc,

预计您会得到一个GATT错误,因为您没有设置您的特性的权限。为了将权限设置为您的特性,您必须找到保持您想要读或写的值的属性,并提供以下命令PERM(RD, ENABLE)。例如,为了能够读写整个特征,您应该设置PERM(WR, ENABLE)|PERM(RD, ENABLE)的权限。我建议你看一下SDK的ble_app_profile例子,以便弄清楚这些特征是如何声明的。同时强烈推荐使用5.0.4 SDK,这是最新的一个,而不是5.0.3,在最新的SDK上有相当多的修复,请检查DA1458x_Software_Release_Notes_v5.0.4。

谢谢,PM_Dialog

montmarc
离线
最后看到:3年5天前
加入:2018-01-11 12:28
亲爱的PM_Dialog,

亲爱的PM_Dialog,

谢谢你抽出时间。

下面的代码行定义了我的特征值的属性:

[cust1_idx_cmd_message_val] = {cust1_cmd_message_uuid_128, att_uuid_128_len, perm (wr, auth),
DEF_CUST1_CMD_MESSAGE_CHAR_LEN 0零},

我把它设置为只写安全,但是,正如我在我之前的邮件中描述的,当我连接到我的APP,它的特征是读,写。我还试图添加PERM(RD, DISABLE),但没有改变。

如何设置该特征以只获得WRITE属性?

BR
托马索

PM_Dialog
离线
最后看到:3小时15分钟前
工作人员
加入:2018-02-08 11:03
嗨montmarc,

嗨montmarc,

我建议您检查一下ble_app_peripheral为了理解如何使用适当的属性设置和配置特征。在本例中控制点特征是唯一的写特征,可以在配置中检查user_custs1_def.c函数(检查CUST1_IDX_CONTROL_POINT_VAL),当使用通用应用程序连接到该函数时,应该只看到可用的WRITE属性。请注意,如果您将该特征设置为AUTH,这意味着您必须在项目中添加安全性,以便能够访问该特征并完成授权。如果你想要一个简单的“写”特征,你应该删除AUTH

谢谢,PM_Dialog