4个帖子/ 0新
最后一篇
dhirajp15.
离线
最后一次露面:2年1个月前
加入:2016-06-08 15:26
禁用服务

嗨对话框,
我正在尝试在BLE_BAREBONE示例中禁用设备信息服务。
我替换了attmdb_svc_set_permission(diss_env.shdl,param-> sec_l​​vl);
到attmdb_svc_set_permission(diss_env.shdl,perm(svc_hide,启用));在dist_enable_req_handler func中在disk_task.c中才能检查sevice是否隐藏。
我发现在连接上,设备信息服务(UUID)仍然存在于属性名称中,但它不允许写入或读取属性。
所以现在,如果我想在执行期间隐藏整个设备信息服务,我应该制作什么变化?

设备:
mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
嗨Dhirap15,

嗨Dhirap15,

如果您以前使用的设备(不隐藏您的服务),则Android可能会缓存您的设备的服务和特性,以便连接android将出现的服务将是缓存的服务,但您不会有能力自从Android实际上没有看到它们以来,阅读或写入它们。重新启动您的Android应用程序,您应该能够看到播放服务不再存在。

谢谢mt_dialog.

dhirajp15.
离线
最后一次露面:2年1个月前
加入:2016-06-08 15:26
嗨mt_dialog,

嗨mt_dialog,
我能够通过执行以下更改在运行时在运行时分离播放服务:
在user_callback_config.h:
static const struct prf_func_callbacks user_prf_funcs [] =
{
#if ble_dis_server.
{task_diss,app_diss_create_db,user_app_diss_enable},
#万一
{task_none,null,null} //不要移动。必须始终持久
};

在user_barebone.c:
void user_app_diss_enable(void)
{
if(dev_info_flag == 1)
{
attmdb_svc_set_permission(diss_env.shdl,perm(svc,启用));
}
别的
{
attmdb_svc_set_permission(diss_env.shdl,perm(svc,disable));
}
}
所以在Android应用程序中,我需要清除缓存,因为你提到的,它有效,谢谢你的帮助!。我观察到,在每个连接上,调用user_app_diss_enable()函数。但App_diss_create_db()仅在初始化期间调用。有没有办法在连接时创建数据库?我想仅向所选设备显示我的服务UUID(Data_Base)。
谢谢Dhiraj.

mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
嗨Dhirajp15,

嗨Dhirajp15,

是的,可以在连接时创建数据库,您可以尝试在连接时发送db_create命令,但为了使这项工作使得您将不得不为SDK的Tweek部分和不推荐,我已经检查过,如果您可以发送DB_CREATE连接时,它运行,但DB中的值通过COMAT_CREATE_DB发送的确认消息和处理确认消息的函数填充,在填充DB中的数据,如果其在DB_INIT状态下,请检查应用程序的状态,如果它继续与DB人口继续。

总结如果您在连接时放置DB的创建并删除将DB创建的部分放置在初始化时,则最终将使用空的DIS数据库,您必须更改SDK的某些部分以便制作功能正常。我也无法看到原因,因为你可以从核心隐藏你的服务,在连接时创建服务是什么原因?

谢谢mt_dialog.