Following zephyr's style guideline, all if statements, including single
line statements shall have braces.
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Added sequence number and timestamp to the bt_audio_stream_send
function. This allows an application to better
control the audio transmission, as it can schedule
one or more audio streams to send a buffer in a specific
SDU interval (ensuring that e.g. left and right is sent in
the same SDU interval).
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
This fix removes the Streaming_Audio_Context LTV from the LC3 Codec
helper macro, and subsequently a faulty exposure of this LTV in the
PAC records used.
Signed-off-by: Fredrik Danebjer <fredrik@danebjer.com>
Made it more clear that the disable functionality is to
disable the mute functionality, but and not disabling
the microphone device itself.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Rename struct bt_micp to bt_mic_ctlr as it is only
used ofr microphone controller now.
This also allow cleanup of the bt_micp struct, thus
removing the common internal micp_internal.h header file
and reducing the size of the implementation by not
using a union of the structs.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Modify the existing bt_micp API for the
MICP Microphone Device to be more specific
by adding mic_dev as an infix. This follows
the naming scheme used for the MICP microphone
controller (mic_ctlr).
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The AICS functionality is also possible via the bt_aics
API, and this was just a way to ensure that the AICS
instance was part of a MICS.
Removing makes MICP much simpler, and we can expect user
to know the context of a AICS.
This also fixes a few bad/missing guards.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Rename mics => micp_mic_dev (MICP Microphone Device)
Rename mics_client -> micp_mic_ctlr (MICP Microphone Controller)
This does not change any lines in the code.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Use the profile abbreviation, MICP, instead of the
service abbreviation, MICS, for the MICP implementation.
The server implementation will use MICP and the client
implementation will use MICP_CLIENT for now, as that will
be updated in a future commit.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The syncable callback was called whenever we received the BIGInfo
The BIGInfo is, however, received even while synced (as per the
HCI spec). Add a check to stop calling syncable when synced,
and keep the sink->big value updated based on the ISO states.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
This reverts commit f3444ce00b.
The check is not needed anymore, as the EATT channels are available on
encrypted link only.
Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
Core Vol 3, Part G, Section 5.3.2 Channel Requirements states that
"The channel shall be encrypted". It does not mention any additional
security requirements that can be specified bt higher layer profiles.
This enables link encryption requirement for EATT channel.
Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
The CSIS SIRK should only require encryption,
as mandated by the CSIS spec, and authentication.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
We attempted to simply store the UUID in a local variable
before sending it to bt_gatt_notify_uuid, but evidently
the `bt_uuid` struct does not work that way, and it
ended up giving errors.
Fixed by providing the BT_UUID_PACS_X UUIDs directly as
arguments, instead of storing in a local variable first.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
If we change PACS while not connected, notifying the
change, we would warn about notification not being sent
out, however if not connected that is to be expected.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
In the current implementation of segmented messages transmission, the
transport layer will put as many segments as it can into the advertiser
buffer. If a long segmented message is transmitted, there is a chance
that an ack will be received before the transport layer finishes sending
the first batch of segments. This will trigger retransmissions of those
segments that are marked as missing in the ack, that are also the
segments that are scheduled (or about to be scheduled), but not sent
out by the advertiser yet. Thus, the receiver may receive already
received segments.
This commit changes 2 things:
- it prevents rescheduling transmission of missing segments upon
reception of ack. Thus, ack doesn't cause segments duplication in the
advertiser buffer;
- it doesn't put all segments to the advertiser buffer. Thus, ack that
acknowledges all segments can immediately stop rescheduling segments as
they are already received;
Signed-off-by: Pavel Vasilyev <pavel.vasilyev@nordicsemi.no>
The control flow around the irq-lockout used for fetching from
`tx_complete` has been simplified so that there is exactly one
line with irq_unlock that is unconditionally called.
Signed-off-by: Aleksander Wasaznik <aleksander.wasaznik@nordicsemi.no>
The cast from `sys_snode_t` to `struct bt_conn_tx` assumes `node` is the
first field in `struct bt_conn_tx`. It's better to future-proof this by
using `CONTAINER_OF` to locate `node`.
Signed-off-by: Aleksander Wasaznik <aleksander.wasaznik@nordicsemi.no>
bt_dev.sent_cmd is unreferenced and assigned NULL within hci_cmd_done().
Calling net_buf_unref() again causes a null pointer dereference
Signed-off-by: Grant Ramsay <grant.ramsay@hotmail.com>
The codec (or rather codec configuration) is now taken from the
previously received BASE. This also means that the BASE (with
the codec configurations) is now also stored statically.
When the application attempts to synk to the broadcaster
the stack will lookup the codec configuration based on the
bis index, as a BASE may have multiple subgroups
with multiple codec configurations.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The shell module will now use BT_AUDIO_CONTEXT_TYPE_ANY
instead of BT_AUDIO_CONTEXT_TYPE_UNSPECIFIED as that provides
a more flexible solution.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
If CONFIG_BT_PAC_SNK or CONFIG_BT_PAC_SRC was not enabled, the
function would not build due to missing Kconfig
(CONFIG_BT_PACS_SNK_CONTEXT or CONFIG_BT_PACS_SRC_CONTEXT).
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The HAS depends on the unicast server, and should be
disabled in the `no_unicast_server` as well as depend
on the CONFIG_BT_AUDIO_UNICAST_SERVER config.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Some functions are only used for the unicast server
but was guarded by CONFIG_BT_AUDIO_UNICAST instead of
CONFIG_BT_AUDIO_UNICAST_SERVER.
Some parts of the unicast-server-only code also had
client specific code that would never be called.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Add support for using PACS and/or capabilities for
the broadcast sink role. PACS and capabilities were
originally only supported for the unicast server
role, so the PACS callbacks were moved their own
struct, as if a device supports both the unicast
server role and the broadcast sink role, it will
only have a single PACS instance.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
If the number of CSIS instances on a device is
above 1, then each shall be included by another
service.
This creates a bit of a chicken and egg issue,
as we can't really register the "parant" service
before the CSIS instance has been registered,
and we thus can't verify if the parent service
pointer is actually another primary service on this
device. The best we can do is add the proper
type and a NULL check.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Fix radio_tmr_start_now from returning delayed start time
under race conditions where the capture time has elapsed but
the compare has triggered at the same time.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This adds sending Active Index notification and Preset Changed
notifications on connection to previously bonded client.
Fixes: HAS/SR/CP/BV-03-C
Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
The implementtaion supports dynamic presets i.e. changing it's name,
registration and unregistration of the presets, thus Dynamic Presets
feature flag shall be set.
Fixes: HAS/SR/FEAT/BV-05-C
Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
This handles Write Preset Name operation that is used to change the
preset name. This covers as well changing the preset name by server.
Fixes: HAS/SR/CP/BV-04-C
Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
If preset synchronization is not supported, Preset Sync
Not Supported (0x82) shall be sent in error response.
Fixes: HAS/SR/SPE/BI-04-C, HAS/SR/SPE/BI-05-C, HAS/SR/SPE/BI-06-C
Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
Send long-running tasks to a dedicated low-priority workqueue.
This shouldn't increase memory usage since by doing this, we get rid of the
ECC processing thread.
This should fix issues like #43811, since the system workqueue runs at a
cooperative priority, and the new dedicated one runs at a pre-emptible
priority.
Fixes#43811
Signed-off-by: Jonathan Rico <jonathan.rico@nordicsemi.no>
Workaround for nRF52 anomalies 102, 106, and 107 was applied also for
SoCs that were not affected with those, namely nRF52811 and nRF52840.
Since the side effect of this workaround is reduction of sensitivity,
this was highly undesirable.
This commit uses dedicated functions provided by MDK for checking if
a given anomaly applies to the used SoC (and its actual revision) so
that the workaround is applied only when it is really needed.
Signed-off-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no>
The change in this commit is required to avoid regression errors
on EBQ test for the PHY update procedure
When in the peripheral role transmission of data must be resumed
while waiting for the PHY IND response from peer.
In other words: in the LP_PU_STATE_WAIT_TX_ACK_PHY_REQ state
data transmission must resume when acting as peripheral,
but not when in the central role
Following tests are effected
LL/CON/PER/BV-49-C
LL/CON/PER/BV-50-C
LL/CON/PER/BV-52-C
LL/CON/PER/BV-53-C
LL/CON/PER/BV-54-C
LL/CON/PER/BV-55-C
LL/CON/PER/BV-56-C
LL/CON/PER/BV-58-C
Signed-off-by: Andries Kruithof <andries.kruithof@nordicsemi.no>