4个职位/0个新职位
最后一篇文章
DHIRAP15
离线
最后一次见到:2年1个月前
已加入:2016-06-08 15:26
禁用服务

嗨对话,
我正在尝试禁用ble_ubareberbone示例中的设备信息服务。
我替换了ATTDB_USVC U set U权限(diss env.shdl,param->sec_ULVL);
要访问attmdb\svc\u set_权限(diss\u env.shdl,PERM(svc\u HIDE,ENABLE));在diss\u enable_ureq\u handler func in disk.c中,只需检查服务是否被隐藏。
我发现连接时,设备信息服务(UUID)仍然显示属性名称,但不允许写入或读取属性。
所以现在,如果我想在执行过程中隐藏整个设备信息服务,我应该做什么更改?

设备:
MT\u对话框
离线
最后一次见到:2个月前
工作人员
已加入:2015-06-08 11:34
嗨,dhirap15,

嗨,dhirap15,

如果您以前与设备连接(而不隐藏服务),那么android可能会缓存设备的服务和特性,因此当连接android将提供的服务时,将是缓存的服务,但是你将无法读写它们,因为android已经不可能再看到它们了。重新启动android应用程序,您应该能够看到diss服务不再存在。

感谢MT对话

DHIRAP15
离线
最后一次见到:2年1个月前
已加入:2016-06-08 15:26
嗨,MT\u Dialog,

嗨,MT\u Dialog,
我可以在运行时通过执行以下更改来取消diss服务:
在用户_U回调中配置.h:
静态const struct prf\u func\u回调用户\u prf\u func[]=
{
#如果是BLE DIS\U服务器
{TASK\u DISS,app\u DISS\u create\u db,user\u app\u DISS\u enable},
#结束
{TASK_uNone,NULL,NULL}//不移动。一定是最后一个
};

在用户_UBareberbone.c中:
作废用户\u应用程序\u diss\u enable(void)
{
if(dev\u info\u标志==1)
{
ATTDB_USVC\U set U权限(diss env.shdl,PERM(svc,ENABLE));
}
其他的
{
ATTDB\U svc\U set U权限(diss env.shdl,PERM(svc,DISABLE));
}
}
所以在android应用程序中,我需要像你提到的那样清除缓存,它工作起来,谢谢你的帮助!。我注意到,在每个连接上都调用用户app_diss_uenable()函数。但是,应用程序\u diss_ucreate_udb()仅在初始化期间调用。连接时是否有创建数据库的方法?我只想将我的服务UUID(datauu base)显示到所选设备。
谢谢你

MT\u对话框
离线
最后一次见到:2个月前
工作人员
已加入:2015-06-08 11:34
嗨,DHIRAP15,

嗨,DHIRAP15,

是可以在连接时创建数据库,连接时可以尝试发送db\u create命令,但是为了使此工作,您必须在SDK的两部分中进行操作,而不推荐使用SDK,我检查了连接时是否可以发送db创建,它工作,但是,在填充db中的数据之前,db中的值是通过diss创建\uDB发送的确认消息和处理确认消息的函数填充的,然后在db中填充数据之前检查应用程序的状态(如果它处于db初始状态),以及是否继续使用db填充。

要总结一下,如果将db创建放在连接上并删除初始化时放置db创建的部分,则最终将出现一个空diss数据库,您必须更改SDK的某些部分,以便使其正常运行。我也看不出为什么,因为您可以将服务隐藏在中心,那么在连接时创建服务的原因是什么?

感谢MT对话