嗨,家伙。
目前我正在做一个原型使用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。
嗨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
谢谢你的回复。
我目前不能使用任何代码块,因为他们返回给我错误。实际上,在整个项目中没有“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"(硬编码制造数据)
谢谢。
嗨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