This makes gatt-write-signed to reuse cmd_gatt_write_without_rsp since
it is quite similar and that adds the ability to send multiple octecs
instead of just a single byte.
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This removes gatt-write-without-response-repeated and makes
gatt-write-without-response similar to gatt-write which was the
intention of gatt-write-without-response-repeated.
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
All the files under shell subdir shall only be build if
CONFIG_BLUETOOTH_SHELL is selected.
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
In order to properly queue request there need to be a bt_att_req
storage but none of the calls to gatt_write_ccc were using the params
causing gatt_send to use bt_att_send and not bt_att_req_send.
To fix this now all the callers of gatt_write_ccc do set the params
properly but this means that bt_gatt_unsubscribe has to wait for it
to be completed before the application can reuse the
bt_gatt_subscribe_params.
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
While returning 32-bit values from radio status interfaces,
explicitly compare radio h/w event registers to be non-zero,
dont just return the direct 32-bit h/w register content.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Added extra assert checks to detect controller failure if
a role event preparation function was not followed by the
role event start function.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
For some write requests, such as CCC, the code doesn't use an ATT
request context but we still need to clear the request timeout when
the response comes. Move the k_delayed_work_cancel() call to the right
place and add some debug logs that helped pinpoint this issue.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Both scan on and scan passive performed passive scanning,
fixed scan on command to use active scanning.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
In commit c41d3edda when implementing the alternative
encryption setup implementation, the original fast
encryption setup implementation was broken. When host is
slow in responding to LTK request, the controller asserted
when fast encryption implementation is selected. This is
now fixed.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix the assert in the controller during connection setup
when peer does not support CSA#2 feature and free Rx buffer
queue does not have enough buffers to generate CSA event.
The assert was reproduced by turning on advertisement
indication and scan request notification features in the
controllers advanced features, and a peer that does not
support CSA#2 initiated a connection.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Since role support is fundamental to both the Host and the Controller,
move the role configuration options to the top-level file and rename
them to fit the GAP specification, avoiding confusion between GAP and LL
names.
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
Only include connection-related options when CONFIG_BLUETOOTH_CONN is
selected, since otherwise this can lead to inconsistencies between
features and supported commands.
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
This replaces the use of shell_register_prompt_handler with
SHELL_REGISTER_WITH_PROMPT which doesn't overwrite other modules
prompt.
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
If CONFIG_BLUETOOTH_GATT_CLIENT is not defined disable command that
would depend on it.
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Due to several changes in the way stacks are calculated, 320 bytes is no
longer enough for the controller-only build. After measuring usages of
up to 320 bytes (locally) and 376 (reported by Ricardo Salveti), the
stack size is increased by 128 bytes, up to 448 bytes.
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
The msgtype value is created using 'hdr & 3' which means that the
resulting value can never be greater than 3. This fixes Coverity CID
166771.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Added implementation to auto-update LE Data Length to max.
Tx octets supported by the local and peer controllers.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Added implementation to handle an incoming Reject Ext Ind PDU in
response to a sent Length Req PDU.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
When initiating Data Length Change at the same instant the
crossover condition was not handled correctly causing the
controller to assert.
This fix will allow crossover of Data Length Update
procedure, and this collison is harmless as per Bluetooth
specification, and gracefully handled by the controller.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Return error codes for HCI Tx buffer overflow conditions are
missing which would lead to silent dropping of Tx packets if
host implementations do not follow number of completed packets
or use correct buffer counts as returned by HCI Read Buffer
Size command.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Since the PHY update complete event can be generated due to the
procedure being initiated by the peer, use a flag to
differentiate between local auto update initiated on connection
complete versus peer initiated anytime in the connection. This
is necessary to avoid repeated initiation of auto-update
procedures intended only to be issued on connection complete.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
With the support for 2M PHY added, the controller can now Rx/Tx
upto 18/19 minimum sized L2CAP packets per 7.5ms connection
intervals.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
To better debug the flow of events into the Host, log the subevent code
whenever processing an LE Meta Event.
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
When required Rx MTU is less than configured Rx MPS, the
resultant initial credits was 0 which prevented any L2CAP
packet to be received.
Fixed by ceiling the initial credits count in the credits
calculation.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
To be consistent with other subsystem menu, use menu for
Bluetooth support in Kconfig instead of menuconfig which
showed up as checkbox.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
To allow for hci_uart builds that do not include the controller code,
move the UART Kconfig option used by the sample up one level so that it
is shared by all configurations using Bluetooth:
Jira: ZEP-2132
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
Since more and more code is going to be reused by both the Host and the
Controller, this commit introduces a common/ folder that will contain
everything that is not tied to one of the two components but shared by
them.
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
This reverts commit 698de88916 ("Bluetooth: controller:
Cleanup redundant ticker busy loop")
Scan enable asserted in ctrl.c line 3756 due to the fact that a
role event was active and ticker job has hence been disabled.
Add back the busy loop so that scan enable can wait until the
active role event completes gracefully.
The ticker busy loop is mandatory in all ticker interface calls
if a blocking behavior is desired.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
The calculation in packet_rx_reserve_get() was already handled by
packet_rx_acquired_count_get(). So, let's use that code instead
and remove the duplication.
Change-Id: Ic76f70f1e78bebc74f5bef36cd92a3c332e489e9
Signed-off-by: Michael Scott <michael.scott@linaro.org>
This calculation can be used in packet_rx_reserve_get() where currently
the code is duplicated from packet_rx_acquired_count_get().
Let's allow use of packet_rx_acquired_count_get() regardless of whether
CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH is enabled.
Change-Id: I613bde0a407f3caccabb22f369098575965e98ad
Signed-off-by: Michael Scott <michael.scott@linaro.org>
During testing, lr->max_rx_octets and lr->max_tx_octets were
at times set to 0. If we use these 0 values, we end up with
very erratic behavior. Best, to check for a sane value and
if invalid, default to the value in _radio.conn_curr->max_*x_octets.
Change-Id: I57c0e3790d988f0de17993cebe5c5c2ab0fc07a6
Signed-off-by: Michael Scott <michael.scott@linaro.org>
When Controller to Host flow control is enabled, output informational
messages for certain operations to help tune and debug the feature.
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
Since the HCI driver debug option applies to both files in
drivers/bluetooth and subsys/bluetooth, the configuration option itself
now lives in the top-level Kconfig file for consistency.
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
Added implementation to auto-update Bluetooth PHY to 2Mbps
if the local Controller supports it.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Added support for Bluetooth v5.0 PHY Update Procedure in the
Controller.
Asymmetric PHY connections do not work for now due to the
Radio mode not being setup in time in the ISR during tIFS
period and the Radio already ramping up in the cached
previous Radio mode to meet tIFS deadline.
Subsequent commits will add this feature, by either double
buffering the mode in software or using fast radio ramp up
which gives enough time in the ISR to change the mode.
Jira: ZEP-2086
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Scale the ctrl pkt enqueue implementation to allow multiple
ctrl packets to be enqueued. This will aid in the graceful
implementation of parallel control procedure collisions.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Added HCI macros to check LE Features. Also, added test
macros for 2M and Coded PHY support in HCI Controller.
Earlier a common test macro was used between BR/EDR and LE,
but since LE features do not use pages for feature, an
explicit macro for testing LE feature is added now.
Also, features field in LE device structure is now a single
dimension array of 8 octets.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
The APIs for allocating RX buffers were modified recently and hci_raw
had not reflected those changes properly.
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
The event mask population used to let the Controller know which events
are relevant to the Host needs to take into account the features
supported by the Controller itself, in order to only enable those that
are indeed valid.
Jira: ZEP-2050
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>