更改user_advertise_data以发送制造数据

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
4个职位/ 0个新
最后发表
TMiranda
离线
最后看到:2年8个月前
加入:2017-11-16 18:00
更改user_advertise_data以发送制造数据

嗨,家伙。
目前我正在做一个原型使用DA14585芯片。我正在尝试做一个信标类型的原型,所以我现在只需要使用广告数据。

我的目标是用这种方式发送广告内容上的制造数据,这样我就可以用另一个设备访问它。
目前,我的USER_ADVERTISE_DATA定义是这样的:

#定义USER_ADVERTISE_DATA \“\ x03”
ADV_TYPE_COMPLETE_LIST_16BIT_SERVICE_IDS \
ADV_UUID_DEVICE_INFORMATION_SERVICE

我也想发送制造商数据,所以我更改为

#定义USER_ADVERTISE_DATA \“\ x03”
ADV_TYPE_COMPLETE_LIST_16BIT_SERVICE_IDS \
\ \ xFF
ADV_TYPE_MANUFACTURER_SPECIFIC_DATA \

问题是,我在蓝色壁虎APP上的输出不是我所期望的。它返回一个
0 xffff
未知的服务

而不是
0 x1234
生产数据

但蓝壁虎APP并不认为这是制造数据。我已经在附件会话中上传了Blue Gecko输出,以便您可以看到发生了什么。

编辑:

如果我试图将USER_ADVERTISE_DATA更改为
#定义USER_ADVERTISE_DATA \“\ xFF”
ADV_TYPE_MANUFACTURER_SPECIFIC_DATA

我得到一个错误,我的代码不运行。

我当前特定于制造商的数据是这样的:
#定义APP_AD_MSD_COMPA亚博全网NY_ID (0 x1111)
#定义APP_AD_MSD_COMPA亚博全网NY_ID_LEN (2)
#定义APP_AD_MSD_DATA_LEN (sizeof (uint16_t))

所以我试图用标签制造商数据在广告内容上显示0x1111。

附件:
设备:
PM_Dialog
离线
最后看到:1周3天前
工作人员
加入:2018-02-08 11:03
嗨TMiranda,

嗨TMiranda,

广告字符串应该有特定的格式,比如。制造商特定数据是一个标志,您可以包括您的广告数据,但它应该有这种特定的格式。因此,如果你想包含设备信息服务和制造商数据,我建议你使用以下代码块:
#定义USER_ADVERTISE_DATA \“\ x03”
ADV_TYPE_COMPLETE_LIST_16BIT_SERVICE_IDS \
ADV_UUID_DEVICE_INFORMATION_SERVICE \
ADV_TYPE_MANUFACTURER_SPECIFIC_DATA_LENGTH
ADV_TYPE_MANUFACTURER_SPECIFIC_DATA \
MANUFACTURER_SPECIFIC_DATA

如果你想删除设备信息服务,我建议你使用以下代码块:
#定义USER_ADVERTISE_DATA ADV_TYPE_MANUFACTURER_SPECIFIC_DATA_LENGTH
ADV_TYPE_MANUFACTURER_SPECIFIC_DATA \
MANUFACTURER_SPECIFIC_DATA

在您已经发布的代码块中,0xFFFF是一个预期的结果,因为在USER_ADVERTISE_DATA中您已经包含了0xFF double。adv_type_manufacer_specific_data标志默认定义在app_adv_data.h中,它的值是0xFF。

由于PM_dialog

TMiranda
离线
最后看到:2年8个月前
加入:2017-11-16 18:00
谢谢你的回复。

谢谢你的回复。

我目前不能使用任何代码块,因为他们返回给我错误。实际上,在整个项目中没有“adv_type_manufacer_specific_data_length”和“manufacer_specific_data”。

我试着这样改变它们:
ADV_TYPE_MANUFACTURER_SPECIFIC_DATA_LENGTH =我的制造商数据包含的字节数(“\x02”为2字节,例如)
MANUFACTURER_SPECIFIC_DATA = APP_AD_MSD_亚博全网COMPANY_ID

但我仍然收到错误。此外,由于我正在我的项目上动态地改变company_id(亚博全网通过改变mnf_data.company_id结构),我应该如何将其指向USER_ADVERTISE_DATA定义?

另一个例子:
我试图发送一个硬编码的制造商数据,但我无法在移动应用程序上接收它。这是代码:

#define USER_ADVERTISE_DATA "\x03"\ (length)
ADV_TYPE_MANUFACTURER_SPECIFIC_DATA
"\x07\x13"(硬编码制造数据)

谢谢。

PM_Dialog
离线
最后看到:1周3天前
工作人员
加入:2018-02-08 11:03
嗨TMiranda,

嗨TMiranda,

你能告诉我你在做什么项目吗?这些代码块作为示例,解释如何将制造商数据包含到广告字符串中。它们都在SDK的ble_app_barebone项目中实现。因为您没有正确的定义,所以预期它不能使用其中任何一个。
如果您希望发送硬编码的制造商数据,作为您的第二个代码块,您应该注释出app_add_ad_struct(),它位于user_barebone.c文件的user_app_adv_start()函数中。这个结构将一个额外的0xFF附加到广告字符串中,因此您得到的是无效的数据。在你的代码块中,你忘记在adv_type_manufacer_specific_data后填充一个“\”
ble_app_barebone项目动态更改广告数据。广告消息在app_easy_gap_undirected_advertise_start_create_msg()函数中创建,然后在调用app_easy_gap_undirected_advertise_get_active()函数时保存在cmd结构中。这个函数返回app_easy_gap_undirected_advertise_start_create_msg()。因此,如果您想动态地改变company_id,您应该将它附加在cmd结亚博全网构的正确成员中。

由于PM_dialog