你好,
我试图在Da14531芯片上运行直接广告,但我看不到它在工作,下面是我添加的代码(基于空的\u外围\u模板):
static const struct default\u app\u operations user\u default\u app\u operations={.default\u operation\u adv=user\u advised\u operation,};void user\u advanced\u operation(void){app\u easy\u gap\u directed\u advanced\u start(0)//0和1的结果相同}
我试着重新开始做广告,把这部分代码添加到app\u direct\u adversed\u complete fun中。
... 部分用户\ app \ callbacks.app \ on \ u adv \ u direct \ u complete=app \ u direct \ u advertive \ u complete。。。void app_direct_advanced_complete(const uint8_t x){app_easy_gap_directed_advanced_start(0);}
我用BLE sniffer应用程序检查adv包,我还尝试用中央实现应用程序和其他DA14531来发现我的设备。
如果我在app\u direct\u advertive\u complete中插入断点,x variable的值为0x45(表示超时错误)。
我有两个问题:
如果我必须在电话上看到包(在BLE sniffer应用程序中),如果我在user\u adv\u conf结构的.peer\u addr文件中输入了一个错误的中心地址?
如何检查广告是否工作(我只有一个开发工具包USB板)?
设备:
嗨,亚当·斯特罗兹,
谢谢你的问题。在回答你的问题之前,我想首先强调一下,直接广告是为了建立快速的联系。根据蓝牙LE规范,如果您知道中心BD地址,您可以直接进行广告。
请注意,如果您使用移动电话作为中央设备,移动电话通常使用随机的BD地址,这意味着BD地址将不断变化,因此,您将无法知道它。只有在中央使用公共BD地址并且每次都不改变的情况下,才可以进行定向广告。
Central的BD地址应该添加到user\u config.h头文件中user\u adv\u config结构的.peer\u addr\u类型中。然后,app\u easy\u gap\u directed\u advertive\u start()API应该在user\u app\u adv\u start()中使用,并具有上面提到的正确的BD address to字段。在直接广告中,PDU仅包括设备的BD地址。
下面是一个演示高占空比定向广告的快速示例。请在SDK6.0.14的ble\u app\u外围示例中遵循此步骤。
SDK位置:6.0.14.1114\projects\target\u apps\ble\u examples\ble\u app\u peripheral\Keil\u 5
1.使用以下用户\u app \u adv \u start()。从user\u peripheral.c文件中删除app\u adv\u data\u update\u timer\u并注释掉app\u add\u ad\u struct()。
2,如果运行它,将发生NMI。要避免NMI,您有两个选择:
A] 当定向广告超时时,将设备置于睡眠模式。为此,您应该在app\u easy\u gap\u directed\u advertized\u start(0)之后添加arch\u set\u extended\u sleep(false)。如果它仍在激活模式下工作,它将等待中断,WDOG将超时,并发生NMI。
B)使用。app_on_adv_direct_complete = user_app_adv_direct_complete in order to restart adverting. ( same as undirected advertising)
3.定向广告超时时,状态为GAP\u ERR\u TIMEOUT(=0x45)。
Of course, you should add the proper BD address in user_adv_config struct
定向广告有两种模式:高占空比和低占空比
一] 高占空比:广告将持续约1.28秒(广告间隔为1.25毫秒)。如果没有中央连接到外围设备,则会发生超时。
二} 低占空比:外设将使用user\u config.h中定义的adv interval永久播发。
在这两种情况下,BLE sniffer都可以用来捕获ADV\u DIRECT\u IND广告包。
谢谢,下午好
你好,
我测试了你写给我的东西:
在DA14531模块上,我启动BLE central app,在config下面(我使用PUBLIC BD Addres仅用于测试目的):
在DA14531(USB开发工具包)上,我启动了ble\u app\u外围设备(使用您写给我的设置):
但不幸的是,我在终端上看不到任何东西(我只看到其他设备),在BLE sniffer中,我也看不到来自DA14531(usbdevkit)的任何数据包。