跳转到主要内容

定向广告

2个月前

定向广告

发布的adam.stroz35分 9回复
0的问题

你好,

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

静态常量struct default_app_operations user_default_app_operations = {.default_operation_adv = user_advertise_operation};空白user_advertise_operation (void) {app_easy_gap_directed_advertise_start(0); / / 0和1相同的结果}

我试着重启广告添加这部分代码app_direct_advertise_complete乐趣。

…的一部分user_app_callbacks .app_on_adv_direct_complete = app_direct_advertise_complete,…空白app_direct_advertise_complete (const uint8_t x) {app_easy_gap_directed_advertise_start (0);}

我检查副词与祝福嗅探器程序包,我也试着发现设备通过使用中央实现应用程序与其他DA14531。
如果我在app_direct_advertise_complete x varriable插入断点的值为0 x45(表明一个超时错误)。
我有两个问题:
如果我有看到手机上的包(BLE嗅探器应用程序中),如果我进入了一个糟糕的中央地址.peer_addr提起user_adv_conf结构?

如何检查如果宣传工作(我只有一个开发Kit-USB板)?

2个月前

PM_Dialog

嗨adam.stroz,

谢谢你的问题。在回答你的问题之前,我想先强调的直接广告是建立快速连接。根据蓝牙规格,你可以宣传指导,如果你知道中央BD地址。

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

中央的BD地址应该添加的.peer_addr_type user_config user_adv_config结构。h头文件。然后,app_easy_gap_directed_advertise_start () API应该用于user_app_adv_start()与一个合适的BD上面提到的地址字段。直接的广告,PDU只包含设备的BD地址。

看到下面一个简单的例子展示了定向广告具有高工作周期。请遵循这个ble_app_peripheral SDK6.0.14的例子。

SDK地点:6.0.14.1114 \ target_apps \ \项目ble_examples \ ble_app_peripheral \ Keil_5

1。使用以下user_app_adv_start ()。删除从user_peripheral app_adv_data_update_timer_used。c文件和注释掉app_add_ad_struct ()。

空白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);}

2,如果你运行它,一个敝中断发生。为了避免敝中断你有两个选择:

)把设备进入睡眠模式指导广告时超时。这样做,你应该添加arch_set_extended_sleep app_easy_gap_directed_advertise_start后(false) (0)。如果它仍然是代理在主动模式,它将等待一个中断,WDOG将时间和一个敝中断发生。

B)使用。app_on_adv_direct_complete = user_app_adv_direct_complete为了重启广告。(无向广告一样)

空白user_app_adv_direct_complete (uint8_t状态){如果(状态= = GAP_ERR_TIMEOUT) {user_app_adv_start ();}}

3所示。定向广告超时时,状态将GAP_ERR_TIMEOUT (= 0 x45)。

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

有两个模式可用于指导广告:高责任周期和低工作周期

我高工作周期:广告将持续~ 1.28秒(副词区间是1.25毫秒)。如果没有中央连接到外围,超时将发生。

2}低工作周期:外围永远广告使用难以user_config.h中定义的时间间隔。

在这两种情况下,祝福嗅探器可以用来捕获ADV_DIRECT_IND广告包。

谢谢,PM_Dialog

2个月前

adam.stroz 35分

你好,

我测试了你写信给我:

DA14531模块我开始祝福中央应用,下面的配置(我使用公共BD地址仅用于测试目的):

#定义SCAN_FILTER (SCAN_FILTER_NONE) # define CONNECT_TO_PERIPHERAL (0) # define CFG_NVDS_TAG_BD_ADDRESS {0 x01 0 x00 0 x70、0 xca 0 xea, 0 x80} # define USER_CFG_ADDRESS_MODE APP_CFG_ADDR_PUB

DA14531 (USB开发工具包)我开始ble_app_peripheral(和你写给我的设置):

#定义CFG_NVDS_TAG_BD_ADDRESS {0 x03 0 x00 0 x70、0 xca 0 xea, 0 x80} # define USER_CFG_ADDRESS_MODE APP_CFG_ADDR_PUB空白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);}无效user_app_adv_direct_complete (uint8_t状态){如果(状态= = GAP_ERR_TIMEOUT) {user_app_adv_start ();}}

但不幸的是我什么也看不见的terminall(我只看到其他设备),在祝福嗅探器我也看不到任何数据包从DA14531 (USB开发工具包)。

2个月前

PM_Dialog

嗨adam.stroz,

你能提供一个嗅探器日志吗?此外,你能使用的能量分析器党卫军工具箱检查设备是否广告吗?

谢谢,PM_Dialog

2个月前

adam.stroz 35分

嗨,不幸的是我没有ProDK板,但我用一个示波器检查当前消费(我衡量电阻器上的电压与电源连接在系列)。我打开各种选项的程序(directed_advertise和undirected_advertise)和功耗图检查看到广告。

示波器的屏幕截图在附件。首先我运行无向广告(default_advertise_operation),看看DA14531工作和发送放置数据包(undirected_advertise.jpg)然后我开始这段代码:

空白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);}无效app_direct_advertise_complete (const uint8_t x){如果(x = = GAP_ERR_TIMEOUT) {user_advertise_operation ();}}

照片directed_advertise_start _wf.jpg (0)directed_advertise_start _wf_2.jpg (0)。正如你所看到的设备发送放置数据包嗅探器上所有时间,但我看不出什么应用程序。

接下来如何运行定向广告没有这个函数(照片directed_advertise_start (0) _wwf.jpg)

空白app_direct_advertise_complete (const uint8_t x){/ *如果(x = = GAP_ERR_TIMEOUT) {user_advertise_operation ();}* /}

最后我在试图改变参数app_easy_gap_directed_advertise_start函数从0到1(照片directed_advertise_start (1) . jpg)

所以我做了一些测试,这表明设备传输但我仍然不能看到它在BLE应用(BLE嗅探器和B-BLE)。照片嗅探器,jpg只显示数据包从我电视看。

附件 大小
directed_advertise_start _wf.jpg (0) 52.22 KB
directed_advertise_start _wf_2.jpg (0) 60.01 KB
directed_advertise_start _wwf.jpg (0) 46.62 KB
directed_advertise_start (1) . jpg 48.44 KB
undirected_advertise.jpg 56.16 KB
sniffer.jpg 165.94 KB

2个月前

PM_Dialog

嗨adam.stroz,

谢谢你的评论。在我之前的回复,我想使用一个祝福嗅探工具(如果有),而不是移动BLE应用。我查看了directed_advertise_start (1) . jpg和设备似乎开始广告无向。可能您正在使用的应用程序不能检测广告包。如果你有一个祝福嗅探工具可用,您应该能够捕捉ADV_DIRECT_IND广告包在空气中。如果使用另一个DA14531中央的差距,在外围的差距,加上中央的BD地址。peer_addr_type项user_config user_adv_config结构。h头文件?

谢谢,PM_Dialog

2个月前

adam.stroz 35分

你好,
抱歉误导,我没有祝福嗅探器设备(工具),我只使用智能手机和/或第二个DA14531中央-DA14585-DA14586-DA14531_Central_Implementation(差距)。我检查了设置中央和周边和一切似乎没事。

中央设置# define USER_CFG_ADDRESS_MODE APP_CFG_ADDR_PUB, #定义USER_CFG_CNTL_PRIV_MODE APP_CFG_CNTL_PRIV_MODE_NETWORK # define CFG_NVDS_TAG_BD_ADDRESS {0 x01 0 x02 0 x70、0 xca 0 xea, 0 x80} # define SCAN_FILTER (SCAN_FILTER_NONE) # define CONNECT_TO_PERIPHERAL (0) PERIPHERIAL对等设备的设置/ / /地址/ / /注意:用于指导广告(ADV_DIRECT_IND) .peer_addr = {0 x01 0 x02 0 x70、0 xca 0 xea, 0 x80}, / / /地址类型的对等设备(0 =公共/ 1 =随机)/ / /注意:用于指导广告(ADV_DIRECT_IND) .peer_addr_type = 0,空白user_advertise_operation (void) {struct gapm_start_advertise_cmd * cmd;cmd = app_easy_gap_directed_advertise_get_active (0);app_easy_gap_directed_advertise_start (0);}无效app_direct_advertise_complete (const uint8_t x){如果(x = = GAP_ERR_TIMEOUT) {user_advertise_operation ();}}

我得到以下结果在终端(我只看到电视,有时我看):

- - - - - - - - - - - - - - - - -END_ADV - - - - - - - - - - - -缺口类型:00,数据:1 c RSSI: -55 BD_ADDR: 58:80:3c: 47:8b: 84 - - - - - - - - - - - - - -END_ADV旗帜- - - - - - - - - - - -差距:1 c RSSI: -71 BD_ADDR: 58:80:3c: 47:8b: 84 - - - - - - - - - - - - - -END_ADV - - - - - - - - - - - -缺口类型:00,数据:1 c RSSI: -60 BD_ADDR: 58:80:3c: 47:8b: 84 - - - - - - - - - - - - - - - - -END_ADV - - - - - - - - - - - -

我还能做什么?我应该使用应用程序来查看这些包什么?

2个月前

adam.stroz 35分

我终于看到我的设备。我跑中央例子,打开广播如下代码:

空白user_advertise_operation (void) {struct gapm_start_advertise_cmd * cmd;cmd = app_easy_gap_directed_advertise_get_active (0);app_easy_gap_directed_advertise_start (0);}无效app_direct_advertise_complete (const uint8_t x){如果(x = = GAP_ERR_TIMEOUT) {user_advertise_operation ();}}

在中央方面,我不得不改变以下参数:

#定义SCAN_INTVL_MS (20) # define SCAN_WINDOW_MS (20)

我看到terminall包从其他DA14531:

缺口类型:00、数据:RSSI: -34 BD_ADDR: 80: ea: ca: 70:00:01 - - - - - - - - - - - - - - - - -END_ADV - - - - - - - - - - - -

但是我有两个问题:

首先,为什么我看到只有一个包吗?(我的设备发送数据包所有时间)

我应该如何设置SCAN_INTVL_MS和SCAN_WINDOW_MS paramterers正常吗?

2个月前

adam.stroz 35分

你好,

我的问题呢?我注意到,如果我的设备仍然是传输(定向广告),如果我重置中央设备,我总是会注意到一个消息。

缺口类型:00,数据:<重置RSSI: -38 BD_ADDR: 80: ea: ca: 70:00:01 - - - - - - - - - - - - - - - - -END_ADV - - - - - - - - - - - - < 0 > < 0 > AGAP类型:00,数据:<重置RSSI: -39 BD_ADDR: 80: ea: ca: 70:00:01 - - - - - - - - - - - - - - - - -END_ADV - - - - - - - - - - - - < 0 > < 0 > AGAP类型:00,数据:<重置RSSI: -42 BD_ADDR: 80: ea: ca: 70:00:01 - - - - - - - - - - - - - - - - -END_ADV - - - - - - - - - - - - < 0 > < 0 > AGAP类型:00,数据:<重置RSSI: -39 BD_ADDR: 80: ea: ca: 70:00:01 - - - - - - - - - - - - - - - - -END_ADV - - - - - - - - - - - -

2个月前

PM_Dialog

你好亚当,

延迟道歉。根据蓝牙LE规范可以宣传和被扫描通过特定的设备如果你意识到的扫描仪和BD地址如果外围使用定向广告。在中央方面,设备将开始扫描设备,所以看来你能看到你的广告导演的外围。你看到的结果来自user_on_adv_report_ind()回调函数。

每一个发现的设备将显示一次。你可以使用另一个外围检查它。

参见3.2节的第一步。每个设备显示一次。

http://lpccs-docs.dialog-semiconductor.com/SW_Example/SDK6/Central-Implementation/description.html

> >我应该如何设置SCAN_INTVL_MS和SCAN_WINDOW_MS paramterers正常吗?

请澄清这句话吗?中央SW的例子是使用扫描在50毫秒间隔和窗口。

谢谢,PM_Dialog