Commit graph

9523 commits

Author SHA1 Message Date
Emil Gydesen
9477e61bf8 Bluetooth: PACS: Move read of PAC records into new function
Adds function get_pac_records that will retrieve the PAC
records from the application. The pac_read callback
will then call this to get the value, before returning
it to GATT.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2022-03-08 11:08:00 +01:00
Emil Gydesen
4c2a09e8c5 Bluetooth: PACS: Change indicate to notify
The PAC service (PACS) should use notify instead
of indicate as per the specification.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2022-03-08 11:08:00 +01:00
Krzysztof Chruscinski
47ae656cc1 all: Deprecate UTIL_LISTIFY and replace with LISTIFY
UTIL_LISTIFY is deprecated. Replacing it with LISTIFY.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2022-03-08 11:03:30 +01:00
Thomas Ebert Hansen
0b0a90ae84 Bluetooth: controller: Unsupported proc handling
Add handling of unsupported procedures based on opcode and role.

Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
2022-03-07 16:15:54 +01:00
Vinayak Kariappa Chettimada
fdda91d4b4 Bluetooth: Controller: Fix k_sem_give call from Zero Latency IRQs
Fix k_sem_give() from being called from Zero Latency IRQs
when the Controller is configured with BT_CTLR_ZLI=y.

Kernel features shall not be used from Zero Latency IRQs as
these IRQs cannot be locked by the kernel to maintain
context safety of the kernel objects.

Relates to commit 92e017fd70 ("Bluetooth: controller:
split: Support Zero Latency IRQs") and
commit c842eef3ae ("Bluetooth: controller: Add semaphore
to indicate free AD data buffers").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-07 10:53:50 +01:00
Piotr Pryga
89a6a3a7c2 Bluetooth: Controller: Fix per adv scheduling issue
sw_switch implementation uses two parallel groups of
PPIs connecting radio and timer tasks and events.
The groups are used interchaneably, one is set for
following radio TX/RX event while the other is in use
(enabled).

The group should be disabled by timer compare event that
starts Radio to TX/RX a PDU. The timer is responsible for
maintenance of TIFS/TMAFS. The disabled group collects
all PPIs required to maintain the TIFS/TMASF. After
the time is reached Radio is started and the group is
disabled. It will be enabled again by software radio
swich during next call.

If the group is not disabled then it will work in parallel
to other one. That causes issues in correct maintenance of
instant when radio shoudl be started for next TX/RX  event
e.g. radio may be enabled to early.

In case the PHY CODED was enabled and periodic advertising
included chained PDUs, that are transmitted back-to-back,
there was missing group delay disable. The missing case was
sw_switch function called with dir_curr and dir_next set
to SW_SWITCH_TX.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-03-07 10:53:30 +01:00
Lingao Meng
e6212c203a Bluetooth: Mesh: Fix missing add suffix _COMMON
Since `CONFIG_BT_MESH_PB_GATT` represent to pb-gatt-srv.

We use `CONFIG_BT_MESH_PB_GATT_COMMON` to represent common.

Signed-off-by: Lingao Meng <menglingao@xiaomi.com>
2022-03-07 10:52:14 +01:00
Asbjørn Sæbø
68144f58e9 Bluetooth: OTS - rename client data receive callbacks
Rename the data and metadata callbacks to _read(), for consistency
with the corresponding function calls.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
13b4506bf8 Bluetooth: OTS: Use out-of-range value for unknown object ID
Use a value for "Unknown object ID" that is outside of the range of
valid object IDs.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
eecd94409c Bluetooth: OTS - Client APIs to have instance as first parameter
Move the instance as the first parameter of the client function calls
and callbacks, for consistency with the server implementation.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
4e1ca8f9d4 Bluetooth: OTS - do not include internal connection header
Remove #include of conn_internal.h - cast conn pointers to void for
logging instead.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
1f8e4c906f Bluetooth: OTS - rename two defines
Rename two defines for internal consistency in file.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
c894b63e9e Bluetooth: OTS - Rename client callbacks
Rename client callbacks to be more consistent with common code style.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
70eefae1d2 Bluetooth: OTS - Merge server and client header files
- Move content of client header file to common header file.
- Rename content from "otc" to "ots_client".
- Remove empty client header file.
- Update users.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
adfd1d16e0 Bluetooth: OTS: Merge client and server metadata types
Merge the metadata types for client and server.
This is part of merging the ots_client and ots header files.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
da89dcfbcd Bluetooth: OTC - Move metadata bitfields to common files
Move the metadata request bitfields to the common header files.
This is part of merging the ots_client and ots header files.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
68745d87d5 Bluetooth: OTS: Unify object name size for client and server
Use Kconfig value for object name size also for client.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
7fabcb3124 Bluetooth: OTS - minor client cleanups
Small clean-ups to client code: Making variables const, adding a value
to a debug print.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
b16c760c6c Bluetooth: OTS: Move defines to internal file
Move defines from public API to implementation (only used there).

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
76cf124060 Bluetooth: OTS - rename client files
Rename OTS client files from "otc" to "ots_client".

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
352dd3763e Bluetooth: OTS - join Kconfig for OTS server and client
Merge Kconfig file for OTS server and client.
Rename the client config from _OTC to _OTS_CLIENT

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
b33625fcd2 Bluetooth: OTC - mark as Experimental
Mark the OTC implementation as experimental

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
69b731d824 Bluetooth: OTC: Rename two functions
Rename functions to follow common pattern (module, action, noun).

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
1a81bceea2 Bluetooth: OTC: Use OTS defines and types instead of separate ones
Update the Object Transfer Client to use OTS defines and types instead
of the ones left over from the previous "le-audio local" object
transfer service:
DIR_LIST, object ID size, OACP and OLCP

Remove the no longer used defines and types from the OTC header file.
Exception: The OLCP sort order defines have not been removed, but
moved to the olcp internal header file, for expected later use.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
1be80a4d84 Bluetooth: OTS: Move directory listing defines to other header
Move the directory listing size defines to the OTS directory listing
internal header file.

This removes an implicit dependency upon users of
ots_dir_list_internal.h to also include ots_internal.h.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
aa80b87d4a Bluetooth: OTC: Clean up internal header file
Remove various unused defines, update comments, update inclusion guard

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
a821dacf90 Bluetooth: Audio: Media control - add missing include
The media control client shell must include the OTC header file.
(It is currently indirectly included via otc_internal.h.)

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
00b14b36aa Bluetooth: OTC: Use ots_l2cap for l2cap transfer
Update the OTC to use the existing ots_l2cap code rather than its own
implementation.
- Add an ots_l2cap struct and register it
- Add ots_l2cap callbacks, reuse most of old l2cap_recv callback in
  the ots_l2cap rx_done callback
- Remove old l2cap code

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
806aeb73cb Bluetooth: OTS/OTC: Config changes for using l2cap for OTC
Update configuration so that the OTS l2cap file can also be used for
the OTC.
(The plan is to merge the OTS and OTC config files later.)

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
3e80d4b04f Bluetooth: OTS: add connect() function to ots_l2cap
Add an l2cap connect() function to OTS.  This is a function for
clients, added to prepare for the upcoming OTC client (re)using the
ots_l2cap module.

As part of this, factor out an internal function to find a free l2cap
context.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
9e4443a8b3 Bluetooth: OTC: Remove unused macros and net_buf
Remove some unused code from the OTC.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
25540ef746 Bluetooth: OTC - do not register L2CAP server
Remove L2CAP server registration.  The object transfer client does not
need to register an L2CAP server.

OTS spec: "It is always the responsibility of the Client to open the
Object Transfer Channel, regardless of the direction of transfer, and
is never the responsibility of the Server."

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
0d6e18a052 Bluetooth: OTC: Move OTC files to OTS folder
Move the OTC files to the OTS folders for further refactoring.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
725d9b9b7e Bluetooth: OTC - remove old ots header file
Preparations for making OTC "official"

Move remaining content of old ots header fil into the otc header file,
and remove the old ots header file.

(Another ots header file already exists in the ots folder.)

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
343586dd05 Bluetooth: OTC: Remove old ots internal header file
This commit is the first in a series of commits to make the OTC
(Object Transfer Client) implementation that exists in the audio
folder "official". That is, the client implementation will be updated
and refactored to be aligned with the OTS (Object Transfer Service)
implementation that exists in subsys/bluetooth/services/ots, and moved
to that folder.

Preparations for making OTC "official":
Move remaining content of old ots_internal header fil into the
otc_internal header file, and remove the ots_internal header file.
(Another ots_internal header file already exists in the ots folder.)

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Asbjørn Sæbø
88a40e4e1b Bluetooth: OTC: Add TODO to fix macro
Object Transfer Client: Add TODO to fix the OLCP result conversion
macro

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
2022-03-07 10:47:43 +01:00
Aleksander Wasaznik
5c37441256 Bluetooth: Host: Implement GAP writable appearance
This change adds the kconfig option
BT_DEVICE_APPEARANCE_GATT_WRITABLE_AUTHENTICATED. When enabled, GAP
apperance is writable by authenticated peers.

Signed-off-by: Aleksander Wasaznik <aleksander.wasaznik@nordicsemi.no>
2022-03-07 10:45:55 +01:00
Aleksander Wasaznik
3bdf582172 Bluetooth: Shell: Add command "bt appearance [new appearance]"
Extend the command "bt appearance" to take an optional argument, which
is used to set the appearance.

Signed-off-by: Aleksander Wasaznik <aleksander.wasaznik@nordicsemi.no>
2022-03-07 10:45:55 +01:00
Aleksander Wasaznik
a713f21f14 Bluetooth: Host: Implement dynamic apperance
Introduces new kconfig option CONFIG_BT_DEVICE_APPEARANCE_DYNAMIC.

New API `bt_set_apperance` allows dynamic setting of apperance. The
dynamic setting is saved in the settings subsys. `bt_set_apperance` is
analogous to `bt_set_name`.

Signed-off-by: Aleksander Wasaznik <aleksander.wasaznik@nordicsemi.no>
2022-03-07 10:45:55 +01:00
Aleksander Wasaznik
8ad5119f46 Bluetooth: Shell: Add command "bt appearance"
The new command "bt appearance" prints out the current Bluetooth
Appearance Value.

Signed-off-by: Aleksander Wasaznik <aleksander.wasaznik@nordicsemi.no>
2022-03-07 10:45:55 +01:00
Aleksander Wasaznik
8c76677bfd Bluetooth: Host: New API: bt_get_appearance()
The this change is a step towards make the GAP appearance runtime
settable and ATT writable.

The new function bt_get_appearance() wraps CONFIG_BT_DEVICE_APPEARANCE
and should replace all its uses in code.

Signed-off-by: Aleksander Wasaznik <aleksander.wasaznik@nordicsemi.no>
2022-03-07 10:45:55 +01:00
Lingao Meng
8c3b244fe3 Bluetooth: Mesh: Fix unable send mesh message when proxy adv pending
When Proxy advertising or PB-GATT Advertising Enabled and use a same
advertising sets.

As `adv_start` will call multi HCI Command will cause syswork_q yield.
At same time, if another thread(BT RX) all `schedule_send` will cause
unable send mesh message, because `ADV_FLAG_ACTIVE` was be set, but
`ADV_FLAG_PROXY` not set currentlly.

Add `ADV_FLAG_SCHEDULE_PENDING` indicate mesh buf has been pendings
but not scheduled, so when proxy advertising enable, let's take again,
as we can't break or terminated `adv_start`, so we must waiting proxy
advertising enabled.

Signed-off-by: Lingao Meng <menglingao@xiaomi.com>
2022-03-02 10:02:25 -08:00
Vinayak Kariappa Chettimada
c6750de9c1 Bluetooth: Controller: Fix missing ISOAL sink destroy
Fix missing call to ISOAL sink instance destroy interface,
without this there is leak in ISOAL sink instances when
removing ISO data path.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-02 14:52:41 +01:00
Nirosharn Amarasinghe
8b09d524a5 bluetooth: controller: fixed problems in ISO-AL RX
[*] Fixed setting of SDU production status when exiting the
    ISOAL_ERR_SPOOL state for framed PDU consumption when receiving the
    start of the next SDU
[*] Changed condition identifying a padding PDU to include padding PDUs
    with errors received after the end fragment is seen and expanded
    unit tests to cover new condition
[*] Changed definition of ISOAL_PDU_STATUS_xxx errors to match value of
    similar errors defined for the SDU status

Signed-off-by: Nirosharn Amarasinghe <niag@demant.com>
2022-03-02 11:22:33 +01:00
Vinayak Kariappa Chettimada
25169d92d8 Bluetooth: Controller: Broadcast ISO Tx ack on event close
Improvement to generate Tx ack early when the event close
compared to being done at the start of the next event.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 14:54:35 +01:00
Vinayak Kariappa Chettimada
6c983adedb Bluetooth: Controller: Initial broadcast ISO Tx data path
Initial work on adding ISO Tx data path for ISO Broadcast.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 14:54:35 +01:00
Vinayak Kariappa Chettimada
ccf1ecbdee Bluetooth: Controller: Add define for Connected ISO Stream handle base
Add define for Connected ISO Stream handle base.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 14:54:35 +01:00
Vinayak Kariappa Chettimada
73d8fff54e Bluetooth: Controller: Fix Extended Advertising conditional compiles
Fix Extended Advertising conditional compiles in header files.
Do not conditional compile declarations, definitions of
functions in source files only be compiled out.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 14:54:35 +01:00
Vinayak Kariappa Chettimada
0ab8f1b102 Bluetooth: Controller: Pass link_type to data_buffer_overflow
Refactored implementation to pass link type to data buffer
overflow function.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 14:54:35 +01:00
Vinayak Kariappa Chettimada
213a14594e Bluetooth: Controller: Fix ISO Broadcast and Sync related cond. compile
Fix ISO Broadcast and ISO Synchronized Receiver related
conditional compilation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 14:54:35 +01:00