[Description]
tests: shell: Restart bt will register the same connection callback twice.
Callback next node point to itself, when link established callback function
loop infinitely.
[Fix]
Unregister the previous callback to avoid register repeatedly.
[Test]
After bt init/disable times, create connection successfully.
Signed-off-by: huajiang zheng <huajiang.zheng@nxp.com>
The condition for channel-map are CONFIG_BT_CENTRAL ||
CONFIG_BT_BROADCASTER, change the corresponding handler ifdef so that
it's included in the build if CONFIG_BT_BROADCASTER is enabled but
CONFIG_BT_CENTRAL is not.
Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
This fixes regression introduced in recently.
Redundant connection reference is taken twice in connected()
callback. The redunant reference was then not returned, and
as a result we had a leak.
Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
Add the GMAP shell module with support for running the
various audio configurations in an easy way.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The bt connect and bt connect-name commands should only
attempt to connect to connectable devices that we are not
already connected to.
This commit moves the check for BT_GAP_ADV_PROP_CONNECTABLE
as well as checks that we do not already have a connection
to that device with the current ID.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Use helper function to convert string to int for appearance value.
This makes the code more clear, as the big-endian conversion function
gives the wrong impression about the byte order of advertising data.
Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
The current code triggers a false positive from the heuristic "Macro
compares unsigned to 0". It's triggered because of a use of `IN_RANGE`
that checks against the extremal values of a enum type.
This patch replaces the use of `IN_RANGE` with an explicit list of the
possible values of the enum.
Fixes: https://github.com/zephyrproject-rtos/zephyr/issues/65575
Signed-off-by: Aleksander Wasaznik <aleksander.wasaznik@nordicsemi.no>
As other helper functions were introduced for the LE Power Control
Request Feature (see CONFIG_BT_TRANSMIT_POWER_CONTROL), it was noticed
that the return statements of switch cases should be on the next line
generally. This will align phy2str with the rest in bt.c.
Signed-off-by: Kyra Lengfeld <kyra.lengfeld@nordicsemi.no>
To use LE commands of Le Power Control Request Feature one must utilize
the BT_TRANSMIT_POWER_CONTROL config.
Signed-off-by: Kyra Lengfeld <kyra.lengfeld@nordicsemi.no>
When dealing with multiple connections in the shell as the central,
it is more often than not the newest connection you want
to interact with.
The behavior for the peripheral remains unchanged.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The command did no longer set the user specified data if the user
specified more than 1 AD field.
We were using the return value of ad_init() to set the number
of AD fields. This did not take into account the number of
existing data fields. By chance this usually returned 1.
Signed-off-by: Rubin Gerritsen <rubin.gerritsen@nordicsemi.no>
Add support for selecting a periodic advertising
sync object for use. This will also be available outside
the scope of bt.c via the extern declaration.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The enum used for connection types gets named bt_conn_type to guard
against accidental usage of generic integers with relation to it.
The added default case in several switch statements avoids warnings
against unhandled enum values.
Signed-off-by: Arkadiusz Kozdra <akozdra@antmicro.com>
This restores a line of code that was accidentally deleted in
5580cb4391. This fixes an uninitialized
`le_addr` getting printed and producing garbage output in the scan
results.
Signed-off-by: Aleksander Wasaznik <aleksander.wasaznik@nordicsemi.no>
In the case that the advertising data has both a device name
and a broadcast name, whichever one comes first will be used.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The auto-connect by name did not verify that the found device
was connectable before attempting to connect.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
When a device disconnects we previously just unref'ed it and
set default_conn = NULL. However, if we are connected to mulitple
devices, it makes sense to set the default_conn to one of the
other connections.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Ensure that scan_filter.addr is NULL terminated by only copying
the sizeof the buffer -1 and then always setting the last byte to
\0.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
When copying the address in cmd_scan_filter_set_addr we now
use strncpy to not copy more bytes than what fits. This
should already have been fixed with a check earlier in the
function, but coverity still complains.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The minimal value of BT_CODEC_MAX_DATA_LEN is 1, so it
is always > 0.
Includes to audio.h in shell bt.c was removed as audio.h
should only be included if BT_AUDIO=y.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Add verbose output of scan data to output all received data types as
hex values. This is turned off by default and can be toggled using
the bt scan-verbose-output <on|off> command.
Signed-off-by: Martin Rieva <mrrv@demant.com>
Some systems can support only legacy OOB pairing while others only
LE SC OOB pairing.
The existent API function "bt_set_oob_data_flag" was removed.
Two new API functions were added:
* "bt_le_oob_set_legacy_flag" to signal that legacy OOB pairing is used
* "bt_le_oob_set_sc_flag" to signal that LE SC OOB pairing is used
The code will now advertise the presence of OOB flag depending
on the type of pairing method(SC vs legacy)
Signed-off-by: Sebastian Panceac <sebastian.panceac@ext.grandcentrix.net>
Move all audio related shell implementations to the
audio directory, to use the same structure as Mesh.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
When doing "bt connections" the currently selected ACL (default_conn)
is now indicated with a "*" making it easier to determine which
of the connections is currently selected.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Update help message of some commands of the Bluetooth Shell that were
inconsistent.
Also add the `dir-rpa` parameter to the advertiser parameters to fully
support directed advertisment parameters.
Signed-off-by: Théo Battrel <theo.battrel@nordicsemi.no>
`ad_len` was never initiatialized before we started
incremetenting and using it.
We would also override any user data in ad_init, which
is fixed by using the length of the user data as an
offset into the array.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Similar to the ad_init that automatically adds advertising data
from other modules, pa_ad_init has been added to do the same
for periodic advertising.
The only use case so far is the BAP broadcast source
data, if enabled.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Add command to perform the Periodic Advertising Set
Info Transfer procedure, which transfers information
about a periodic advertising set to a connected device.
In essence this is just PAST but from the advertiser
instead of a 3rd device.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The macro BT_CONN_INTERVAL_TO_MS was used a fair amount
of places, but it often was used with integers. This meant
that sometimes the resulting (integer) value would be
incorrect, as something like 7.5ms interval would not
be properly stored as a integer in millisecond units.
Adding BT_CONN_INTERVAL_TO_US allows users to still use
integers to store the result, but in a more accurate unit.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Moved the name filter last, as that it the most expensive
to use.
The address filter has almost been moved after the more
trivial checks.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Add filtering for the pa_interval. This can be used to
easier find devices that are advertising with periodic
advertising.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Use the service instance struct instead of the more generic
`bt_csip` for the CSIP set member API.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>