BlueZ Mgmt API:“添加扩展广告参数命令”不会更改广告间隔

问题描述 投票:0回答:2

我想知道任何人都可以帮助我解决我在使用 BlueZ 管理 API 时遇到的问题吗?

我正在运行最新版本,v5.64

在 mgmt API 中有一个命令,

0x0054: Add Extended Advertising Parameters Command
具有如下概述的参数:

Command Code:       0x0054
    Controller Index:   <controller id>
    Command Parameters: Instance (1 Octet)
                Flags (4 Octets)
                Params (2 Octets)
                Duration (2 Octets)
                Timeout (2 Octets)
                MinInterval (4 Octets)
                MaxInterval (4 Octets)
                TxPower (1 Octet)
    Return Parameters:  Instance (1 Octet)
                TxPower (1 Octet)
                MaxAdvDataLen (1 Octet)
                MaxScanRspLen (1 Octet)

(现在,一个问题是这个文档似乎不正确,但是暂时搁置一下,因为我已经设法弄清楚它真正想要的是什么......)

我向它发送命令,如下面的

btmon
跟踪所示:

@ MGMT Command: Add Extended Advertising Parameters (0x0054) plen 20
        Instance: 1
        Flags: 0x00000002
          Advertise as Discoverable
        Duration: 0
        Timeout: 0
        Min advertising interval: 200.000 msec (0x0140)
        Max advertising interval: 200.000 msec (0x0140)
        TX power: 0 dbm (0x00)

接下来

btmon
我看到它做了以下事情:

< HCI Command: LE Set Extended Advertising Parameters (0x08|0x0036) plen 25                                           
        Handle: 0x01
        Properties: 0x0013
          Connectable
          Scannable
          Use legacy advertising PDUs: ADV_IND
        Min advertising interval: 1280.000 msec (0x0800)
        Max advertising interval: 1280.000 msec (0x0800)

如您所见,它将间隔设置为 1280 毫秒。

然后我发送命令

0x0055: Add Extended Advertising Data Command
,我得到了预期的广告,除了它没有 200 毫秒的间隔,它有 1280 毫秒的间隔。

这个 1280 毫秒的值来自

/sys/kernel/debug/bluetooth/hci0/adv_min_interval
/sys/kernel/debug/bluetooth/hci0/adv_max_interval
都读作
2048
.

2048 * 0.625ms slots = 1280ms

通常之前,我会将值回显到此文件中以更改广告间隔,但在我当前的应用程序中,我想即时更改间隔并且回显新值仅在广告停止并重新开始时才有效。

有谁知道如何让 BlueZ 忽略

adv_max_interval
adv_min_interval
中的值,而是使用命令 0x0054 中发送的值?

谢谢!

c bluez
2个回答
1
投票

对不起,我是个白痴 - 发帖以防有人发现!

我需要设置一个额外的标志,在文档中进一步显示:


0
投票

我也在使用 BlueZ mgmt api 5.64 版。但是当我运行相同的命令时,我得到了未知的命令。在运行此命令之前,我是否需要遵循命令序列。提前致谢。

@ MGMT Command: Add Extended Advertising Parameters (0x0054) plen 18                                                                                                             {0x0002} [hci0] 36.151368
        Instance: 1
        Flags: 0x00004002
          Advertise as Discoverable
          Use provided interval parameters
        Duration: 0
        Timeout: 0
        Min advertising interval: 100.000 msec (0x00a0)
        Max advertising interval: 100.000 msec (0x00a0)
        TX power: 12 dbm (0x0c)
@ MGMT Event: Command Status (0x0002) plen 3                                                                                                                                     {0x0002} [hci0] 36.151380
      Add Extended Advertising Parameters (0x0054)
        Status: Unknown Command (0x01)
© www.soinside.com 2019 - 2024. All rights reserved.