4个职位/ 0个新职位
最后发表
dhirajp15
离线
最后看到:2年6个月前
加入:2016-06-08 15:26
禁用该服务

嗨,对话框中,
我正在尝试禁用设备信息服务在ble_barebone的例子。
我取代了attmdb_svc_set_permission (diss_env。shdl param - > sec_lvl);
attmdb_svc_set_permission (diss_env。shdl,烫(SVC_HIDE启用));在diss_enable_req_handler func中检查服务是否被隐藏。
我发现在连接时,设备信息服务(UUID)仍然与属性名一起出现,但它不允许写入或读取属性。
所以现在如果我想在执行期间隐藏整个设备信息服务,我应该做什么改变?

设备:
MT_dialog
离线
最后看到:6个月3个星期前
工作人员
加入:2015-06-08 34
嗨dhirap15,

嗨dhirap15,

如果你之前连接到设备(没有隐藏你的服务),可能android会缓存你的设备的服务和特征,所以当连接服务时,android会呈现缓存的服务,但是你将无法读取或写入它们,因为机器人实际上已经看不到它们了。重新启动你的android应用程序,你应该能够看到diss服务不再存在。

由于MT_dialog

dhirajp15
离线
最后看到:2年6个月前
加入:2016-06-08 15:26
嗨MT_Dialog,

嗨MT_Dialog,
我能够在运行时禁用diss服务,通过做以下更改:
在user_callback_config.h:
Static const struct prf_func_callbacks user_prf_funcs[] =

#如果BLE_DIS_SERVER
{TASK_DISS, app_diss_create_db user_app_diss_enable},
# endif
{task_none, null, null} //不移动。一定要在最后
};

在user_barebone.c:
空白user_app_diss_enable(空白)

如果(dev_info_flag = = 1)

attmdb_svc_set_permission (diss_env。shdl,烫(SVC,启用));

其他的

attmdb_svc_set_permission (diss_env。禁用shdl烫(SVC));


所以在android应用程序中,我需要清除缓存,正如你提到的,它工作了,谢谢帮助!我观察到在每个连接上都会调用user_app_diss_enable()函数。但是app_diss_create_db()只在初始化期间调用。是否有一种方法在连接时创建数据库?我想只向选定的设备显示我的服务UUID (data_base)。
由于Dhiraj

MT_dialog
离线
最后看到:6个月3个星期前
工作人员
加入:2015-06-08 34
嗨dhirajp15,

嗨dhirajp15,

是的可以创建数据库连接后,你可以尝试连接时发送db_create命令,但为了使这项工作你需要吱声的SDK和它的不推荐,我有检查如果你可以发送db_create连接时,它工作,但数据库中的值填充通过diss_create_db的确认消息发送和处理确认消息的功能,在db填充数据之前检查您的应用程序的状态如果其DB_INIT状态,如果是继续使用db人口。

总之如果你在连接数据库的创建和删除地方db创建时初始化的一部分,您将得到一个空的侮辱数据库部分,你必须改变SDK为了使它正常工作。我也看不出为什么,因为你可以隐藏你的服务从中央,什么原因创建一个服务连接?

由于MT_dialog