⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
adam.stroz.
离线
最后一次露面:2个月1周前
加入:2020-05-22 07:54
定向广告

你好,

我正在尝试在DA14531芯片上运行直接广告,但我无法看到它工作,以下是我添加的代码(基于extent_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_dircated_advertise_start(0); // 0和1具有相同的结果}

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

... 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 Packet,我还通过使用中央实现应用程序来查找我的设备和其他DA14531。
如果我在app_direct_advertise_complete中插入断点,则x可禁止的x值为0x45(表示超时错误)。
我有两个问题:
如果我必须在手机上看到包(在BLE嗅探器应用程序中),如果我在user_adv_conf结构中输入的.PEER_ADDR中输入了错误的中央地址?

如何检查广​​告是否正常工作(我只有开发套件 - USB板)?

设备:
PM_DIALOG.
离线
最后一次露面:1天13小时前
职员
加入:2018-02-08 11:03
嗨adam.stroz,

嗨adam.stroz,

谢谢你的问题。在回答您的问题之前,我首先要突出显示直接广告用于建立非常快速的连接。根据Bluetooth LE规范,如果您知道中央BD地址,您可以宣传指示。

请注意,如果您使用的是移动电话作为中央设备,则手机通常使用随机BD地址,这意味着BD地址将不断变化,因此,您将无法知道。可以仅在中央使用公共BD地址的情况下完成定向广告,并且每次都没有改变。

中央的BD地址应在user_config.h头文件中的user_adv_config结构的.peer_addr_type中添加。然后,App_easy_gap_dircated_advertise_start()API应在User_App_Adv_Start()中使用适当的BD地址到上述字段。在直接广告中,PDU仅包括设备的BD地址。

请参阅下面的一个快速示例,展示具有高占空比的定向广告。请在SDK6.0.14的BLE_APP_PHERIZEAL示例中使用此操作。

SDK位置:6.0.14.1114 \ Projects \ target_apps \ ble_examples \ ble_app_peripheral \ keil_5

1.使用以下user_app_adv_start()。从user_peripher.c文件中删除app_addata_update_timer_used,并注释出app_add_ad_struct()。

void user_app_adv_start(void){struct gapm_start_advertise_cmd * cmd;cmd = app_easy_gap_dircated_advertise_get_active(0);app_easy_gap_dircated_advertise_start(0);}

2,如果您运行它,将会发生NMI。为避免NMI,您有两种选择:

A]当定向的除法超时时,将设备放入睡眠模式。为此,您应该在app_easy_gap_dircated_advertise_start(0)之后添加Arch_set_extended_sleep(false)。如果它仍然处于活动模式,它将等待中断,WDOG将超时,将发生NMI。

b]使用。app_on_adv_direct_complete = user_app_adv_direct_complete才能重新启动adverting。(与无向广告相同)

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 struct中添加合适的BD地址

有2种模式可用于指示广告:高占空比和低占空比

i]高占空比:广告将持续〜1.28秒(ADV间隔为1.25ms)。如果没有中央连接到外围设备,则会发生超时。

II}低占空比:外围设备将永远使用user_config.h中定义的adv区间通告。

在这两种情况下,BLE嗅探器可用于捕获ADV_DIRECT_IND广告数据包。

谢谢,PM_DIALOG.

adam.stroz.
离线
最后一次露面:2个月1周前
加入:2020-05-22 07:54
你好,

你好,

我测试了你写信给我的东西:

在DA14531模块上,我启动BLE Central应用程序,下面的Config(我只使用公共BD Addres仅用于测试目的):

#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_PERITERAL(使用您写信给我的设置):

#define cfg_nvds_tag_bd_address {0x03,0x00,0x70,0xca,0xea,0x80} #define user_cfg_address_mode app_cfg_addr_pub void user_app_addr_tart(void){struct gapm_start_advertise_cmd * cmd;cmd = app_easy_gap_dircated_advertise_get_active(0);app_easy_gap_dircated_advertise_start(0);} void user_app_adv_direct_complete(uint8_t status){if(status == gap_err_timeout){user_app_adv_start();}}

但遗憾的是,我无法在Terminall中看到任何东西(我只看到其他设备),在BLE Sniffer中,我也没有看到DA14531(USB Dev Kit)的任何数据包。

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

嗨adam.stroz,

感谢您到达论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.

我们将在未来几天修复错误/优化搜索和标记。

此票据已移植:https://www.dialog-seminile.com/produ亚博电竞菠菜cts/bluetooth-low-energy?post_id=11459#tab-support_tab_content.

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

谢谢,PM_DIALOG.