各位,
我有追随者AN-B-029文档,以实现具有两个特征的自定义服务(我使用SDK 5.0.3,但是,对于更长的内容,使用5.0.4必须没有任何益处。
在应用程序注意中,第一个是读/写的,第二个是读/通知的。在我的应用程序中,第一个特征必须只写入,所以我从arr_char128_desc特征定义中删除了att_char_prop_rd:
static const struct att_char128_desc custs1_cmd_message_char = {att_char_prop_wr,
{0,0},
def_cust1_cmd_message_uuid_128};
结果是该应用程序继续将特性视为读/写。如果我尝试阅读特征,我可以正确地再次recive错误(gatt_read_not_permit)。
我错过了什么?
谢谢,
Tommaso Marchetti.
设备:
嗨Montmarc,
预计您会获得GATT错误,因为您尚未设置特性的权限。为了设置特征的权限,您必须找到保留要读取或写入的值的属性,并提供以下命令perm(rd,启用)。例如,为了能够读取和写入整个特征,这是您应该设置perm(wr,启用)| perm(rd,启用)的权限。我建议您查看SDK的BLE_APP_PROFILE示例,以便清楚如何声明特征。也强烈建议使用5.0.4 SDK,这是最新的5.0.3,最新的SDK有相当数量的修复,请检查DA1458x_software_release_notes_v5.0.4。
谢谢,PM_DIALOG.
亲爱的pm_dialog,
谢谢你的时间。
这里的代码行定义了我的特征值的属性:
[cust1_idx_cmd_message_val] = {cust1_cmd_message_uuuid_128,att_uuid_128_len,perm(wr,auth),
def_cust1_cmd_message_char_len,0,null},
我将其设置为仅与安全性写入,但是,正如我之前的邮件中所描述的那样,当我使用我的应用程序连接时,读取特性,写入。我也试图添加perm(rd,禁用),但没有任何改变。
如何设置特性以仅获取写入属性?
布尔
Tommaso.
嗨Montmarc,
我建议你检查一下ble_app_peripheral.SDK示例以了解如何使用适当的属性设置和配置特性。在这个例子中,控制点特性是唯一的写知,可以检查配置中的配置user_custs1_def.c.函数(检查cust1_dx_control_point_point_point_val),当使用通用应用程序连接时,您只能看到Write属性可用。请注意,如果您将特性设置为AUTH,这意味着您必须在项目中添加安全性以便能够访问该特征并完成授权。如果您想要一个简单的“写入”特征,您应该删除auth
谢谢,PM_DIALOG.