SDK5(版本5.0.3) - 设备信息服务时,只设置App_dis_features中的标志的一部分时都会发生故障。

8个帖子/ 0新
最后一篇
oren.
离线
最后一次露面:1年8个月前
专家
加入:2014-06-28 22:03
SDK5(版本5.0.3) - 设备信息服务时,只设置App_dis_features中的标志的一部分时都会发生故障。

SDK5(版本5.0.3) - 设备信息服务时,只设置App_dis_features中的标志的一部分时都会发生故障。
默认情况下,app_dis_features被定义为具有所有相关位集。
当我评论一些位时,发生了不好的事情 - 这些值出现在错误的特征中。
我认为它必须符合这个事实diss_create_db_cfm_handler(...)在app_diss_task.c尝试设置所有可能的DIS字符的字符,并忽略app_dis_features位掩码。

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

嗨oren,

我不能看到5.0.3模板项目中的任何东西,我注释出一些app_dis_features,服务中所示的特性是我在app_dis_features中声明的特点,并且显示的值是正确的。也许你应该在客户端设备中重启BLE模块,有时,由于客户端缓存了从外围设备重试的数据,有时这就是使不好事物发生的数据搞砸了。

谢谢mt_dialog.

Dave.renzo.
离线
最后一次露面:2年8个月前
加入:2015-10-08 13:21
我能够重新创造

我能够在模板项目中重新创建错误。例如,如果我只尝试在我的应用程序或模板项目中尝试dis_manufacture _name_char_sup,则设备信息服务显示单个未知特性。有时,一切都按预期工作。如果我删除刚刚dis_manufacturer_name_char_sup,则所有其他特性都会正确显示。从我完成的测试中,它似乎只有单个特征在发生时被损坏。每次看到未知特性,它总是具有相同的UUID。我在iOS和Android中使用了3个不同的应用程序测试,他们都返回了相同的结果。

Dave.renzo.
离线
最后一次露面:2年8个月前
加入:2015-10-08 13:21
我有同样的问题。

我有同样的问题。

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

嗨dave.renzo,

我可以在仅定义dis_manufacturer_name_char_sup时确认播放服务的奇怪行为,尽管我无法使用模板重现问题,但我可以在ble_app_peripheral项目中看到它的问题。团队将检查它,我们会告诉您。

谢谢mt_dialog.

Gongyu_dialog.
离线
最后一次露面:10小时前1天
加入:2016-04-27 07:07
基于BLE_APP

基于BLE_APP_PERITELAL项目,修复步骤如下:

1.DD结构中的项目“vist_create_db_cfm”,文件“dist_task.h”中的项目
/// @ref vist_create_db_cfm消息的参数
struct vist_create_db_cfm.
{
///地位
UINT8_T状态;
UINT16_T功能; //新增
};

2.在检查参数 - >功能时,如果每个项目的条件,文件“app_diss_task.c”的条件

msgid,part_create_db_cfm_handler(ke_msg_id_t const msgid,
struct vist_create_db_cfm const * param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
uint8 len;

if(ke_state_get(dest_id)== app_db_init)
{
if(param-> status == co_error_no_error)
{

//转到空闲状态
如果(param->特征和dis_manufacturer_name_char_sup)//添加
{
// DB中的签名名称值
struct dist_set_car_val_req * req_name = ke_msg_alloc_dyn(dist_set_char_val_req,
task_diss,task_app,
diss_set_char_val_req,
app_dis_manufacturer_name_len);

//填写参数结构
req_name-> char_code = dis_manufacturer_name_char;
req_name-> val_len = app_dis_manufacturer_name_len;
memcpy(&req_name-> val [0],app_dis_manufacturer_name,app_dis_manufacturer_name_len);

//发送消息
ke_msg_send(req_name);
}

if(param->特征和dis_model_nb_str_car_sup)//添加
{
struct dist_set_char_val_req * req_mod = ke_msg_alloc_dyn(diss_set_char_val_req,
task_diss,task_app,
diss_set_char_val_req,
app_dis_model_nb_str_len);

//填写参数结构
req_mod-> char_code = dis_model_nb_str_char;
req_mod-> val_len = app_dis_model_nb_str_len;
memcpy(&req_mod-> val [0],app_dis_model_nb_str,app_dis_model_nb_str_len);

//发送消息
ke_msg_send(req_mod);
}

..........

3.添加MSG发送信息“CFM->功能= Param->功能;”在函数“dist_create_db_req_handler”中。文件“dist_task.c”

静态int dist_create_db_req_handler(ke_msg_id_t const msgid,
struct vist_create_db_req const * param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
........
//向申请发送响应
struct vist_create_db_cfm * cfm = ke_msg_alloc(diss_create_db_cfm,src_id,task_diss,
diss_create_db_cfm);
cfm-> status = status;
CFM->功能= Param->功能;//添加
KE_MSG_SEND(CFM);

return(ke_msg_consumed);
}

oren.
离线
最后一次露面:1年8个月前
专家
加入:2014-06-28 22:03
而不是使用param-

而不是使用param-> feautres.,并检查每个项目if(param->功能&...),我做到了:if(app_dis_features&...)

我没有看到通过的理由特征作为一个变量,除非您想在初始化后可以添加某种动态DIS服务,否则可以添加字符(我真的无法看到这样做的实际原因)。

Gongyu_dialog.
离线
最后一次露面:10小时前1天
加入:2016-04-27 07:07
嗨,奥伦

嗨,奥伦

你是对的。推荐您的方法

主题锁定