你好,
我试图在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权限的适当文档或方法吗。
谢谢
我正在等待任何关于我的问题的更新,如果你需要更多的信息,我也可以提供
尊敬的莫希特:,
你做的很好,做得很好!
您需要实现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秒看到一个新值。
希望这有帮助,
当做,
对话小组。
朋友们好
现在,我有同样的问题,你怎么解决?
我用了gl\u dialog的方法,但没有成功,
我在spotar的项目中发现,patch\u status和smaple128也有NOTIFY特性,我尝试在mem\u info中更改,但也失败了,
怎么做?
你好,我是冯克斯,
试着实现这个功能它对我有用
无效更新\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));
}
莫希特·马赫什瓦里
尊敬的莫希特:
感谢回复,我添加了一个用户配置文件,它会工作。