doc/mgmt-api: Add new Advertising MGMT interfaces to mgmt-api
authorDaniel Winkler <danielwinkler@google.com>
Thu, 29 Oct 2020 23:06:14 +0000 (16:06 -0700)
committerAyush Garg <ayush.garg@samsung.com>
Fri, 11 Mar 2022 13:38:33 +0000 (19:08 +0530)
This patch adds the following to mgmt-api:
- Add Extended Advertising Parameters Command
- Add Extended Advertising Data Command

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
doc/mgmt-api.txt

index 252d5f0..9a8d87b 100755 (executable)
@@ -3636,6 +3636,223 @@ Remove Advertisement Monitor Command
                                Busy
 
 
+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)
+
+       This command is used to configure the parameters for Bluetooth Low
+       Energy advertising instance. This command is expected to be followed
+       by an Add Extended Advertising Data command to complete and enable
+       the advertising instance.
+
+       Added advertising information with this command will not be visible
+       immediately if advertising is enabled via the Set Advertising
+       command. The usage of the Set Advertising command takes precedence
+       over this command. Instance information is stored and will be
+       advertised once advertising via Set Advertising has been disabled.
+
+       The Instance identifier is a value between 1 and the number of
+       supported instances. The value 0 is reserved.
+
+       With the Flags value the type of advertising is controlled and
+       the following flags are defined:
+
+               0       Switch into Connectable mode
+               1       Advertise as Discoverable
+               2       Advertise as Limited Discoverable
+               3       Add Flags field to Adv_Data
+               4       Add TX Power field to Adv_Data
+               5       Add Appearance field to Scan_Rsp
+               6       Add Local Name in Scan_Rsp
+               7       Secondary Channel with LE 1M
+               8       Secondary Channel with LE 2M
+               9       Secondary Channel with LE Coded
+               12      The Duration parameter should be used
+               13      The Timeout parameter should be used
+               14      The Interval parameters should be used
+               15      The Tx Power parameter should be used
+
+       When the connectable flag is set, then the controller will use
+       undirected connectable advertising. The value of the connectable
+       setting can be overwritten this way. This is useful to switch a
+       controller into connectable mode only for LE operation. This is
+       similar to the mode 0x02 from the Set Advertising command.
+
+       When the connectable flag is not set, then the controller will
+       use advertising based on the connectable setting. When using
+       non-connectable or scannable advertising, the controller will
+       be programmed with a non-resolvable random address. When the
+       system is connectable, then the identity address or resolvable
+       private address will be used.
+
+       Using the connectable flag is useful for peripheral mode support
+       where BR/EDR (and/or LE) is controlled by Add Device. This allows
+       making the peripheral connectable without having to interfere
+       with the global connectable setting.
+
+       Secondary channel flags can be used to advertise in secondary
+       channel with the corresponding PHYs. These flag bits are mutually
+       exclusive and setting multiple will result in Invalid Parameter
+       error. Choosing either LE 1M or LE 2M will result in using
+       extended advertising on the primary channel with LE 1M and the
+       respectively LE 1M or LE 2M on the secondary channel. Choosing
+       LE Coded will result in using extended advertising on the primary
+       and secondary channels with LE Coded. Choosing none of these flags
+       will result in legacy advertising.
+
+       To allow future parameters to be optionally extended in this structure,
+       the flags member has been used to specify which of the structure
+       fields were purposefully set by the caller. Unspecified parameters will
+       be given sensible defaults by the kernel before the advertisement is
+       registered.
+
+       The Duration parameter configures the length of an Instance. The
+       value is in seconds. The default is 2 seconds.
+
+       If only one advertising Instance has been added, then the Duration
+       value will be ignored. It only applies for the case where multiple
+       Instances are configured. In that case every Instance will be
+       available for the Duration time and after that it switches to
+       the next one. This is a simple round-robin based approach.
+
+       The Timeout parameter configures the life-time of an Instance. In
+       case the value 0 is used it indicates no expiration time. If a
+       timeout value is provided, then the advertising Instance will be
+       automatically removed when the timeout passes. The value for the
+       timeout is in seconds. Powering down a controller will invalidate
+       all advertising Instances and it is not possible to add a new
+       Instance with a timeout when the controller is powered down.
+
+       When a Timeout is provided, then the Duration subtracts from
+       the actual Timeout value of that Instance. For example an Instance
+       with Timeout of 5 and Duration of 2 will be scheduled exactly 3
+       times, twice with 2 seconds and once with one second. Other
+       Instances have no influence on the Timeout.
+
+       MinInterval and MaxInterval define the minimum and maximum advertising
+       intervals, with units as number of .625ms advertising slots. The Max
+       interval is expected to be greater than or equal to the Min interval,
+       and both must have values in the range [0x000020, 0xFFFFFF]. If either
+       condition is not met, the registration will fail.
+
+       The provided Tx Power parameter will only be used if the controller
+       supports it, which can be determined by the presence of the
+       CanSetTxPower member of the Read Advertising Features command.
+
+       The acceptable range for requested Tx Power is defined in the spec
+       (Version 5.2 | Vol 4, Part E, page 2585) to be [-127, +20] dBm, and the
+       controller will select a power value up to the requested one. The
+       transmission power selected by the controller is not guaranteed
+       to match the requested one, so the reply will contain the power
+       chosen by the controller. If the requested Tx Power is outside
+       the valid range, the registration will fail.
+
+       Re-adding an already existing instance (i.e. issuing the Add Extended
+       Advertising Parameters command with an Instance identifier of an
+       existing instance) will update that instance's configuration. In this
+       case where no new instance is added, no Advertising Added event will
+       be generated. However, if the update of the instance fails, the
+       instance will be removed, and an Advertising Removed event will be
+       generated.
+
+       An instance being added or changed while another instance is
+       being advertised will not be visible immediately but only when
+       the new/changed instance is being scheduled by the round robin
+       advertising algorithm.
+
+       Changes to an instance that is currently being advertised will
+       cancel that instance and switch to the next instance. The changes
+       will be visible the next time the instance is scheduled for
+       advertising. In case a single instance is active, this means
+       that changes will be visible right away.
+
+       The MaxAdvDataLen return parameter indicates how large the data
+       payload can be in the subsequent Add Extended Advertising Data
+       Command, as it accounts for the data required for the selected flags.
+       Similarly, the MaxScanRspLen return parameter indicates how large
+       the scan response can be.
+
+       LE must already be enabled, and the controller must be powered,
+       otherwise a "rejected" status will be returned.
+
+       This command generates a Command Complete event on success or a
+       Command Status event on failure.
+
+       Possible errors:        Failed
+                               Rejected
+                               Not Supported
+                               Invalid Parameters
+                               Busy
+
+
+Add Extended Advertising Data Command
+=====================================
+
+       Command Code:           0x0055
+       Controller Index:       <controller id>
+       Command Parameters:     Instance (1 Octet)
+                               Advertising Data Length (1 Octet)
+                               Scan Response Length (1 Octet)
+                               Advertising Data (0-255 Octets)
+                               Scan Response (0-255 Octets)
+       Return Parameters:      Instance (1 Octet)
+
+       The Add Extended Advertising Data command is used to update the
+       advertising data of an existing advertising instance known to the
+       kernel. It is expected to be called after an Add Extended Advertising
+       Parameters command, as part of the advertisement registration
+       process.
+
+       If extended advertising is available, this call will initiate HCI
+       commands to set the instance's advertising data, set scan response
+       data, and then enable the instance. If extended advertising is
+       unavailable, the advertising instance structure maintained in kernel
+       will have its advertising data and scan response updated, and the
+       instance will either be scheduled immediately or left in the queue
+       for later advertisement as part of round-robin advertisement rotation
+       in software.
+
+       If Scan_Rsp_Len is zero and the flags defined in Add Extended
+       Advertising Parameters command do not have connectable flag set and
+       the global connectable setting is off, then non-connectable
+       advertising is used. If Scan_Rsp_Len is larger than zero and
+       connectable flag is not set and the global advertising is off,
+       then scannable advertising is used. This small difference is
+       supported to provide less air traffic for devices implementing
+       broadcaster role.
+
+       If the Instance provided does not match a known instance, or if the
+       provided advertising data or scan response are in an unrecognized
+       format, an "Invalid Parameters" status will be returned.
+
+       If a "Set LE" or Advertising command is still in progress, a "Busy"
+       status will be returned.
+
+       If the controller is not powered, a "rejected" status will be returned.
+
+       This command generates a Command Complete event on success or a
+       Command Status event on failure.
+
+       Possible errors:        Failed
+                               Rejected
+                               Invalid Parameters
+                               Busy
+
+
 Command Complete Event
 ======================