向特征添加通知权限

6个职位/0个新职位
最后一篇文章
莫希特3112
离线
最后一次见到:6个月1周前
专家
已加入:2014-08-04 13:45
向特征添加通知权限

你好,
我试图在diss profile中的一个特性中实现额外的权限(只是为了理解这个过程),之前它是只读的,我还包括了write命令指示处理程序,下面给出了详细信息

diss.c公司
---------
///完整DIS数据库描述-用于向数据库中添加属性
[DIS_IDX_MANUFACTURER_NAME_VAL]={ATT_CHAR_MANUF_NAME,PERM(RD,ENABLE)| PERM(WR,ENABLE)| PERM(NTF,ENABLE),DIS_VAL_MAX_LEN,0,NULL}

const struct att_char_desc diss_manufacturer_name_char=att_char(att_char_PROP_RD | att_char_PROP_WR | att_char_PROP_NTF,DIS_manufacturer_name_char,
附件(制造商名称);

我还实现了gattc\u write\u cmd\u ind\u处理程序

目前我可以读写LightBlue iOS应用程序到DA14580,它确实显示了应用程序上的通知功能(即“侦听通知”),但当我点击“侦听通知”时,它不会做任何事情(与在加速计配置文件中“侦听通知”时不同,点击更改为“停止侦听”,即侦听已激活)。所以基本上通知权限没有正确启用。您能给我指一下在特性中实现notify权限的适当文档或方法吗。

谢谢

莫希特3112
离线
最后一次见到:6个月1周前
专家
已加入:2014-08-04 13:45
我正在等待任何更新

我正在等待任何关于我的问题的更新,如果你需要更多的信息,我也可以提供

GLU对话框
离线
最后一次见到:3年3个月前
工作人员
已加入:2014-02-07 13:35
尊敬的莫希特:,

尊敬的莫希特:,

你做的很好,做得很好!
您需要实现BLE计时器,每x秒发送一次值,然后它就可以工作了。

例子:

1) 在void app\u connection\u func(struct gapc\u connection\u req\u ind const*param)函数中,需要调用以下函数:

app_timer_set(app_timer,TASK_app,500);//每5秒中断一次。

在此之前,您需要在app\u task\u handlers.h中声明处理程序,如下所示:

/*默认状态处理程序定义。*/
EXTERN const struct ke \u msg \u handler app \u default \u state[]=
{
{APP\u TIMER,(ke\u msg\u func\t)APP\u update\u value\u handler},
...
}

2) 在每5秒将从BLE计时器触发的处理程序中,可以将新值写入特征:

int app\u update\u value\u handler(ke\u msg\u id\u t const msgid,
void const*参数,
任务id常量目标id,
Keu任务\u id \u t const src \u id)
{
uint8\u t SetVal[20]={0};
app\u timer\u set(app\u timer,TASK\u app,100);
有效载荷++;

结构sample128\u set\u value\u cmd*msg=KE\u msg\u ALLOC(sample128\u set\u value\u cmd,
任务\样本128,任务\应用程序,
样本128(设置值);
SetVal[0]=有效载荷;
SetVal[1]=有效载荷;
SetVal[2]=有效载荷;
SetVal[3]=有效载荷;
SetVal[4]=有效载荷;
SetVal[5]=有效载荷;
SetVal[6]=有效载荷;
SetVal[7]=有效载荷;
SetVal[8]=有效载荷;
SetVal[9]=有效载荷;
SetVal[10]=有效载荷;
SetVal[11]=有效载荷;
SetVal[12]=有效载荷;
SetVal[13]=有效载荷;
SetVal[14]=有效载荷;
SetVal[15]=有效载荷;
SetVal[16]=有效载荷;
SetVal[17]=有效载荷;
SetVal[18]=有效载荷;
SetVal[19]=有效载荷;

memcpy(msg->sample128\u val,SetVal,20);
发送消息(msg);

返回(已消耗的消息);
}

3) 在点击“listenfornotification”之后,您应该每5秒看到一个新值。

希望这有帮助,

当做,

对话小组。

风信
离线
最后一次见到:4年2周前
已加入:2014-11-21 03:48
朋友们好

朋友们好
现在,我有同样的问题,你怎么解决?
我用了gl\u dialog的方法,但没有成功,
我在spotar的项目中发现,patch\u status和smaple128也有NOTIFY特性,我尝试在mem\u info中更改,但也失败了,
怎么做?

莫希特3112
离线
最后一次见到:6个月1周前
专家
已加入:2014-08-04 13:45
你好,我是冯克斯,

你好,我是冯克斯,
试着实现这个功能它对我有用

无效更新\u值(uint8 \u t*数据包\u数据)
{
attmdb\u att\u update\u value((DIS\u IDX\u MANUFACTURER\u NAME\u VAL+diss)_环境shdl),APP\u DIS\u MANUFACTURER\u NAME\u LEN,0,(uint8\u t*)包数据);

prf\u server\u send\u event((prf\u env\u struct*)&diss\u env,false,(DIS\u IDX\u MANUFACTURER\u NAME\u VAL+diss_环境shdl));
}

莫希特·马赫什瓦里

风信
离线
最后一次见到:4年2周前
已加入:2014-11-21 03:48
尊敬的莫希特:

尊敬的莫希特:
感谢回复,我添加了一个用户配置文件,它会工作。