⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
4个职位/ 0个新职位
最后发表
adam.stroz
离线
最后看到:3个月2个星期前
加入:2020-05-22 07:54
定向广告

你好,

我试图在Da14531芯片上运行直接广告,但我看不到它的工作,以下是我添加的代码(基于empty_periphertial_template):

Static const struct default_app_operations user_default_app_operations = {.default_operation_adv = user_advertise_operation,};Void user_advertise_operation(Void){app_easy_gap_directed_advertise_start(0);//0和1的结果相同}

我试图通过将这部分代码添加到app_direct_advertise_complete fun中来重新启动广告。

...部分user_app_callbacks .app_on_adv_direct_complete = app_direct_advertise_complete,…Void app_direct_advertise_complete(const uint8_t x){app_easy_gap_directed_advertise_start(0);}

我用BLE sniffer应用程序检查adv数据包,我也尝试用DA14531和其他DA14531的中央实现应用程序发现我的设备。
如果我在app_direct_advertise_complete中插入一个断点,则x变量的值为0x45(表示超时错误)。
我有两个问题:
如果我必须在电话上看到包(在BLE sniffer应用程序中),如果我在user_adv_conf结构中的.peer_addr文件中输入了一个错误的中心地址?

如何检查广告是否有效(我只有一个开发工具包- usb板)?

设备:
PM_Dialog
离线
最后看到:3天9小时前
工作人员
加入:2018-02-08 11:03
嗨adam.stroz,

嗨adam.stroz,

谢谢你的问题。在回答你的问题之前,我想先强调一下直接广告是为了快速建立联系。根据蓝牙LE规格,如果你知道中央BD地址,你可以直接做广告。

请注意,如果您使用移动电话作为中心设备,移动电话通常使用随机的BD地址,这意味着BD地址将不断变化,因此,您将无法知道它。只有在中区使用屋宇署的公共地址,而不是每次都更改的情况下,才可作定向广告。

Central的BD地址应该添加到user_config.h头文件中user_adv_config结构的.peer_addr_type中。然后,应该在user_app_adv_start()中使用app_easy_gap_directed_advertise_start() API,并在上面提到的字段中使用合适的BD地址。直接发布时,PDU中只包含设备的BD地址。

下面是一个简单的例子,展示了高占空比的定向广告。请遵循SDK6.0.14的ble_app_peripheral示例。

SDK位置:6.0.14.1114\projects\target_apps\ble_examples\ble_app_peripheral\Keil_5

1.使用下面的user_app_adv_start()。从user_peripheral.c文件中删除app_adv_data_update_timer_used并注释掉app_add_ad_struct()。

Void user_app_adv_start(Void) {struct gapm_start_advertise_cmd* cmd;cmd = app_easy_gap_directed_advertise_get_active (0);app_easy_gap_directed_advertise_start (0);}

如果您运行它,将发生NMI。为了避免NMI,你有两个选择:

当定向广告超时时,将设备置于睡眠模式。为此,您应该在app_easy_gap_directed_advertise_start(0)之后添加arch_set_extended_sleep(false)。如果它仍然在活动模式下工作,它将等待中断,WDOG将超时并发生NMI。

B .使用。App_on_adv_direct_complete = user_app_adv_direct_complete以便重新启动广告。(与无定向广告相同)

void user_app_adv_direct_complete(uint8_t status) {if (status == GAP_ERR_TIMEOUT) {user_app_adv_start();}}

3.当定向发布超时时,状态为GAP_ERR_TIMEOUT (= 0x45)。

当然,您应该在user_adv_config结构体中添加适当的BD地址

定向广告有两种模式:高占空比和低占空比

I]高占空比:广告持续1.28秒(广告间隔1.25ms)。如果没有中心连接到外设,就会发生超时。

低占空比:外围将永远使用user_config.h中定义的adv间隔做广告。

在这两种情况下,BLE嗅探器都可以用来捕获ADV_DIRECT_IND通告包。

谢谢,PM_Dialog

adam.stroz
离线
最后看到:3个月2个星期前
加入:2020-05-22 07:54
你好,

你好,

我测试了你写给我的信:

在DA14531模块上,我启动BLE中央应用程序,下面的配置(我使用公共BD地址仅用于测试目的):

#define SCAN_FILTER (SCAN_FILTER_NONE) #define CONNECT_TO_PERIPHERAL (0) #define CFG_NVDS_TAG_BD_ADDRESS {0x01, 0x00, 0x70, 0xCA, 0xEA, 0x80} #define USER_CFG_ADDRESS_MODE APP_CFG_ADDR_PUB

在DA14531 (USB dev工具包)我启动ble_app_peripheral(与你写给我的设置):

#define CFG_NVDS_TAG_BD_ADDRESS {0x03, 0x00, 0x70, 0xCA, 0xEA, 0x80} #define USER_CFG_ADDRESS_MODE APP_CFG_ADDR_PUB void user_app_adv_start(void);cmd = app_easy_gap_directed_advertise_get_active (0);app_easy_gap_directed_advertise_start (0);} void user_app_adv_direct_complete(uint8_t status) {if (status == GAP_ERR_TIMEOUT) {user_app_adv_start();}}

但不幸的是,我在终端中看不到任何东西(我只看到其他设备),在BLE嗅探器中,我也看不到任何来自DA14531 (USB dev kit)的包。

PM_Dialog
离线
最后看到:3天9小时前
工作人员
加入:2018-02-08 11:03
嗨adam.stroz,

嗨adam.stroz,

感谢你来论坛发帖。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请在//www.xmece.com/support

我们会在接下来的日子里修复bug /优化搜索和标记。

此票已载于://www.xmece.com/亚博电竞菠菜products/bluetooth-low-energy?post_id=11459#tab-support_tab_content

我会尽快回复你在新的论坛线程。

谢谢,PM_Dialog