DISS配置文件上的APP_ADV_DATA_LEN (0)

14个帖子/ 0新
最后发表
Giuseppe.
离线
最后看到:5年1个月前
专家
加入:2015-03-25 13:34
DISS配置文件上的APP_ADV_DATA_LEN (0)

你好,
我创建了一个新的项目从模板sdk。我启用了dis配置文件。
在da14580_config.h上Undef CFG_NVDS并在app_myapplication_project .h上编辑APP_DEVICE_NAME。
运行应用程序,设备出现在android应用程序DSPS扫描搜索。

关于我在app_myapplication_proj.h上看到的广告字符串这个定义:

#define app_adv_data“\ x07 \ x01 \ x03 \ x18”
#define app_adv_data_len(0)

#define app_scnrsp_data“\ x02 \ xff \ x00”
#定义APP_SCNRSP_DATA_LENGTH (0)

我不明白为什么APP_ADV_DATA_LEN和APP_SCNRSP_DATA_LENGTH被定义为0。在其他例子中,贬值是指数据字节的长度。
如果我修改4和3的值,则设备上不会显示DSPS搜索。为什么?

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

嗨guiseppe,

请放置有效的长度标志,并将数据类型更改为UUID服务声明值....例如,更改例如“\x07\x01\x03\x18”到“\x03\x03\xFA\x18”。

由于MT_dialog

Giuseppe.
离线
最后看到:5年1个月前
专家
加入:2015-03-25 13:34
现在它的工作原理。所以…

现在它的工作原理。所以…
\ x03 - 长度
完整的16位服务类uuid列表
\ xFA \ x18 - ? ?

我在这个网站上看到了https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx
对于设备信息,正确的代码是\ x0a \ x18?

而且......我无法自定义广告字符串?例如,如果我想要仅包含标志描述,为什么此字符串(\ x02 \ x01 \ x06)不起作用(未显示在DSPS扫描中)?

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

嗨,朱塞佩,

这只是一个随机的例子,您必须在广告字符串中放置有效的16位UUID,您提到的设备信息代码。

flags字段根据外设的模式默认填充广告字符串,您可以使用像BlueLoupe这样的应用程序来读取广告字符串。如果您这样做,您将看到广告字符串的第一个字节是默认的\x02\x01\x06。然后你可以把你想要的数据放到广告字符串中。

由于MT_dialog

Giuseppe.
离线
最后看到:5年1个月前
专家
加入:2015-03-25 13:34
好的,我明白了。谢谢。

好的,我明白了。谢谢。

但如果我自定义app_scnrsp_data,它就不工作。这是代码:

/ /这是好的!
#定义APP_ADV_DATA \ x03 \ x03 \ x15 \ x18“
#定义APP_ADV_DATA_LEN (4)

/ /不工作!
#定义APP_SCNRSP_DATA“\ x09 \ x09 \ x41 \ x41 \ x41 \ x41 \ x41 \ x41 \ x41 \ x41”
#定义APP_SCNRSP_DATA_LENGTH (10)

在哪里
\ x09——长度
完整的本地名
'A'字符ascii码

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

嗨,朱塞佩,

广告字符串是用设备名称自动填充的,您必须在扫描响应数据中放置额外的设备名称。如果你想让这个字符串工作,你不应该在app_adv_func的字符串中放置"\x09"标志。您可以通过注释将名称放在字符串中的代码部分来测试它。或者你可以使用制造商数据标志“\xFF”。

由于MT_dialog

yuhua64
离线
最后看到:5年2个月前
加入:2015-05-04 08:25
你好,

你好,
关于"If you want this string to work you should not place the "\x09" flag in the string in the app_adv_func.",如果我们使用"\x09",它发生了什么?,为什么?

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

嗨yuhua64,

如果您使用\x09,您将在广告消息和响应消息中放置重复标志。堆栈不允许这样的事情发生。

由于MT_dialog

Giuseppe.
离线
最后看到:5年1个月前
专家
加入:2015-03-25 13:34
你好,

你好,
问题是扫描响应包。我确信APP_SCNRSP_DATA没有包含在advertise包中。蓝牙协议文档规定,扫描响应包可以由客户端要求一个特定的请求。
app_myproject_proj.c

//扫描响应数据
#如果(NVDS_SUPPORT)
if(nvds_get(nvds_tag_app_ble_scan_resp_data,&cmd-> info.host.scan_rsp_data_len,
&cmd-> info.host.scan_rsp_data [0])!= nvds_ok)
# endif / / (NVDS_SUPPORT)

cmd-> info.host.scan_rsp_data_len = app_scnrsp_data_length;
memcpy (cmd - > info.host。scan_rsp_data [0], APP_SCNRSP_DATA cmd - > info.host.scan_rsp_data_len);


当NVDS被禁用时,扫描响应数据总是包含在通告包中。

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

嗨,朱塞佩,

主动扫描需要扫描响应数据包。它们不包含在广告数据包中,它们是对主机的扫描请求的回复。在大多数情况下,在大多数情况下,扫描处于活动状态,扫描响应数据由外围设备传输。

由于MT_dialog

Giuseppe.
离线
最后看到:5年1个月前
专家
加入:2015-03-25 13:34
好的,谢谢

好的,谢谢

Giuseppe.
离线
最后看到:5年1个月前
专家
加入:2015-03-25 13:34
好的,现在我试着添加一个“读取

好,现在我试着添加一个“只读”特征。总三个特点。我将下面的代码添加到profile_task.c(我修改了SAMPLE128代码):

/ /特征3 : ////////////////////////////////////////////////////////////////////////////////
Status = attmdb_add_attribute(profile_env.profile_shdl,
ATT_UUID_128_LEN + 3,//数据大小= 19(ATT_UUID_128_LEN + 3)
ATT_UUID_16_LEN,//声明类型ID的大小
(uint8_t*) &att_decl_char, // 0x2803为特征声明
perm(rd,启用),//权限
&(char_hdl) //特征声明的句柄
);

//将特征值声明属性添加到数据库
Status = attmdb_add_attribute(profile_env.profile_shdl,
sizeof(uint8_t), //数据大小= 1字节
ATT_UUID_128_LEN,//自定义声明类型大小= 128bit
(uint8_t *) &profile_3_val。uuid, //特征值的uuid
烫(RD,启用),/ /权限
&(val_hdl)//句柄到值属性
);

//保存特征3的句柄
memcpy (profile_3_char。attr_hdl &val_hdl, sizeof (uint16_t));

//设置特征值3的初始值
Status = attmdb_att_set_value(char_hdl, sizeof(profile_3_char), (uint8_t *)&profile_3_char);

我修改了GATT数据库数据大小:

nb_att_16 = 5;// 5 UUID16属性声明类型
nb_att_32 = 0;// 0 UUID32属性声明类型
nb_att_128 = 3;// 3 UUID128属性声明类型

status = attmdb_add_service(&(profile_env.profile_shdl),
TASK_PROFILE,
nb_att_16,
nb_att_32,
nb_att_128,
78);//见下面的计算

// GATT数据库的总数据部分= 78数据字节:
// 16主要服务声明
// + 19特征1的声明
// + 1个价值声明的特征1
// + 19特征2的声明
// + 1个价值声明特征2
// + 2特性2的客户端配置声明
// + 19特征的声明
// 1个价值表明特征3
// = 78数据字节总数

它不工作。与设备连接后,只有前两个特征是可见的。

Giuseppe.
离线
最后看到:5年1个月前
专家
加入:2015-03-25 13:34
我认为关贸总协定的数据大小

我认为GATT的数据大小是错误的。
如果我用nb_att_16 = 4和nb_att_128 = 2显示列表中的特征1分解代码。

Giuseppe.
离线
最后看到:5年1个月前
专家
加入:2015-03-25 13:34
数据大小是对的。

数据大小是对的。
问题是特征描述符的声明,我把她放在特征描述符之后了。

主题锁定