3个帖子/ 0新
最后一篇
GCBlair.
离线
最后一次露面:4年7个月前
主
加入:2014-09-08 10:21
通知

嗨,

我在一个服务中有多种特性,它们都有需要启用/禁用的通知

我发现在示例中启用通知时,它会核心设置通知
gattc_write_cmd_ind_handler,
sample128_env.feature | = prf_cli_start_ntf;

如果我有多于一个可动特征,这种方法似乎不对。
我该如何处理这件事?每个特征都应该有一个标志吗?有什么例子吗?

Matthieu Antoine.
离线
最后一次露面:4年2个月前
专家
加入:2014-01-14 14:51
嗨,

嗨,

在“gattc_write_cmd_ind_handler()”中,您可以使用“param->句柄”参数来判断必须解决哪些特性:

if(param-> handle == sample128_env.sample128_shdl + sample128_1_idx_val)char_code = sample128_1_char;
if(param-> handle == sample128_env.sample128_shdl + sample128_2_idx_cfg)char_code = sample128_2_cfg;

“Sample128_1_DX_VAL”和“Sample128_2_IDX_CFG”在“Sample128.h”中定义。如果您有更多的特征,则可以拥有“Sample128_3_IDX_CFG”。然后你可以歧视目的地。

马特。

GCBlair.
离线
最后一次露面:4年7个月前
主
加入:2014-09-08 10:21
嗨,

嗨,
我假设配置特征本身可以用来判断通知是否已启用。在这种情况下,样本128_env.feature的使用是什么?
在我看来,而不是

if((sample128_service_env.feature&prf_cli_start_ntf))
{
//通过gatt发送通知
prf_server_send_event((prf_env_struct *)和sample128_service_env,false,sample128_service_env.seebo_service_shdl + param-> supple_offset);
}

这应该是使用的。即检查配置特性以查看是否启用通知。

if((attmdb_att_get_value(param->句柄,sizeof(uint16),(uint8 *)和param-> value [0])&prf_cli_start_ntf))//检查特性配置是否已启用通知
{
//通过gatt发送通知
prf_server_send_event((prf_env_struct *)和sample128_service_env,false,sample128_service_env.seebo_service_shdl + param-> supple_offset);
}