更改user_advertise_data发送制造数据

学到更多常见问题解答教程

4个帖子/ 0新
最后一篇
Tmiranda.
离线
最后一次露面:2年1个月前
加入:2017-11-16 18:00
更改user_advertise_data发送制造数据

嗨,大家好。
目前我正在使用DA14585芯片进行原型。我正在尝试做一份灯架类型的原型,因此我现在只需要使用广告数据。

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

#define user_advertise_data“\ x03”\
adv_type_complete_list_16bit_service_ids \
avad_uuid_device_information_service.

我想也要发送制造商数据,所以我改变了它

#define user_advertise_data“\ x03”\
adv_type_complete_list_16bit_service_ids \
“\ xff”\
adv_type_manufacturer_specific_data \

问题是我在蓝色壁虎应用程序上的输出不是我期待的。它归还给我一个
0xffff.
服务未知

代替
0x1234
制造商数据

但蓝色壁虎应用程序不会将其识别为制造数据。我已经上传了附件会话上的蓝色壁虎输出,这样你就可以看到发生了什么。

编辑:

如果我尝试将user_advertise_data更改为
#define user_advertise_data“\ xff”\
avd_type_manufacture _specific_data.

我收到错误,我的代码没有运行。

我目前的制造商特定数据如下所示:
#define app_ad_msd_雷电竞下载appcompany_id(0x1111)
#define app_ad_msd_雷电竞下载appcompany_id_len(2)
#define app_ad_msd_data_len(sizeof(uint16_t))

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

附件:
设备:
PM_DIALOG.
离线
最后一次露面:3天3小时前
职员
加入:2018-02-08 11:03
嗨tmiranda,

嗨tmiranda,

广告字符串应具有特定格式,如。制造商特定数据是您可以包含广告数据的标志,但它应该具有此特定格式。因此,如果要包含设备信息服务和制造商数据,我建议您使用以下代码块:
#define user_advertise_data“\ x03”\
adv_type_complete_list_16bit_service_ids \
avd_uuid_device_information_service \
adv_type_manufactureer_specific_data_length.
adv_type_manufacturer_specific_data \
制造商_specific_data.

如果要删除设备信息服务,我会建议您使用以下代码块:
#define user_advertise_data adv_type_manufacture _specific_data_length.
adv_type_manufacturer_specific_data \
制造商_specific_data.

在您发布的代码块中,0xFFFF是一个预期的结果,因为在User_Advertise_Data中,您已包含0xFF Double。ADV_TYPE_MANUFAFTURER_SPECIFID_DATA标志由APP_ADC_DATA.H中定义默认定义,其值为0xFF。

谢谢pm_dialog.

Tmiranda.
离线
最后一次露面:2年1个月前
加入:2017-11-16 18:00
谢谢回复。

谢谢回复。

我目前无法使用任何代码块,因为他们返回了错误。实际上,整个项目中没有“adv_type_manufacturer_specific_data_length”和“制造商_specific_data”。

我试图以这种方式改变它们:
Adv_type_manufactuRer_specific_data_length =我的制造商数据包含的字节数(例如,2个字节的“\ x02”)
制造商_specific_data = app_ad_msd_company_i雷电竞下载appd.

但我还在收到错误。此外,由于我在项目上更改了Company_ID(通过更改M雷电竞下载appNF_Data.Company_ID结构),我应该如何在User_Advertise_Data定义上指出此处?

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

#define user_advertise_data“\ x03”\(长度)
avd_type_manufacture _specific_data.
“\ x07 \ x13”(硬编码的制造数据)

谢谢。

PM_DIALOG.
离线
最后一次露面:3天3小时前
职员
加入:2018-02-08 11:03
嗨tmiranda,

嗨tmiranda,

您能否在您在哪个项目上进行分类?这些代码块作为示例,以便向您解释您如何将制造商数据包含到广告字符串中。它们中的两个都在SDK的BLE_APP_BAREBONE项目中实现。预计无法使用任何一个,因为您没有正确的定义。
如果要将硬编码的制造商数据发送为第二块代码块,则应注释出在User_Barebone.c文件的User_App_Adv_start()函数中的app_add_ad_struct()。此结构将额外的0xFF附加到广告字符串中,因此您可以获得无效数据。在您的代码块中,您已忘记填写ADV_TYPE_MANUFAFTURER_SPECIFIC_DATA之后的“\”
BLE_APP_BAREBONE项目动态更改广告数据。广告消息是在App_easy_gap_undirected_advertise_start_create_msg()函数中创建的,然后在调用app_easy_gap_undirected_advertise_get_active()函数时保存在CMD stract中。此函数返回app_easy_gap_undirected_advertise_start_create_msg()。因此,如果要动态地更改Company_id,则应将其附加在CMD结构的雷电竞下载app正确成员中。

谢谢pm_dialog.