Fix Periodic Advertising Synchronize implementation to
generate Synchronization Failed to be Established event
when 6 AUX_SYNC_IND PDUs are not received when establishing
synchronization.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Add implementation to check Periodic Advertiser
Synchronization to already synchronized peer and same SID.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
A FEM in this case is an external Front-End Module. This is basically
a range booster with some extra amplification in the TX and RX paths.
This feature is supported for the Nordic open source controller. See
the changes to the ubx_bmd345eval_nrf52840 board for a quick summary
of what you have to do to take advantage of this.
(This patch doesn't actually remove the feature in the openisa HAL,
though, because that never implemented the required GPIO handling
routines.)
We are using the 'fem' property previously added to the
nordic,nrf-radio's devicetree binding, which points to the FEM that is
in use. If you have this property and the node it points to is
enabled, the controller subsystem respects it. Otherwise, FEM support
is disabled.
This obsoletes the following Kconfig options, which are now unused:
- CONFIG_BT_CTLR_GPIO_PA
- CONFIG_BT_CTLR_GPIO_PA_PIN
- CONFIG_BT_CTLR_GPIO_PA_POL_INV
- CONFIG_BT_CTLR_GPIO_PA_OFFSET
- CONFIG_BT_CTLR_GPIO_LNA
- CONFIG_BT_CTLR_GPIO_LNA_PIN
- CONFIG_BT_CTLR_GPIO_LNA_POL_INV
- CONFIG_BT_CTLR_GPIO_LNA_OFFSET
- CONFIG_BT_CTLR_FEM_NRF21540
- CONFIG_BT_CTLR_GPIO_PDN_PIN
- CONFIG_BT_CTLR_GPIO_PDN_POL_INV
- CONFIG_BT_CTLR_GPIO_CSN_PIN
- CONFIG_BT_CTLR_GPIO_CSN_POL_INV
- CONFIG_BT_CTLR_GPIO_PDN_CSN_OFFSET
The PA and LNA pins are now specified via fem-specific devicetree
properties in the FEM node:
- The "generic" PA/LNA case is handled with the ctx-gpios and
crx-gpios properties of the generic-fem-two-ctrl-pins compatible,
respectively.
- If the fem is an nRF21540, use the tx-en-gpios and rx-en-gpios
properties instead (and also respectively). This allows us to specify
FEM properties in a way that makes sense for the hardware datasheet,
while still handling them in a uniform way within the controller.
We support this in the nRF5 HAL with a new radio_nrf5_fem.h
sub-header, which pulls in radio_nrf5_fem_generic.h or
radio_nrf5_fem_nrf21540.h depending on the fem node's compatible, if
one is defined. These in turn let us replace the implementation
routines in radio.c with DT equivalents.
Keep in-tree users and devicetree binding documentation up to date.
Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
Introduce an intermediate macro for use detecting that we have a FEM
node, and it's an nRF21540. This is also prep work for converting the
FEM configuration mechanism to devicetree.
No functional changes expected.
Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
Add indirection macros for the ifdefs that test for the existence of
PA and LNA pins.
This will be convenient when the pins are configured in devicetree,
and the Kconfig symbols will no longer be around.
No functional changes expected.
Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
Hide the CONFIG_BT_CTLR_GPIO_..._OFFSET Kconfig macros behind
equivalent ones in the HAL_RADIO_ namespace. This removes any direct
usage of the Kconfig macros from the controller HALs.
That will be convenient when we are getting these values from
devicetree properties instead.
Notice that the "PDN/CSN offset" is dropping the "CSN" portion of the
name: CONFIG_BT_CTLR_GPIO_PDN_CSN_OFFSET is now
HAL_RADIO_GPIO_PDN_OFFSET. This is because the DT binding for nRF21540
has a pre-existing 'pdn-settle-time-us' property we're going to use to
replace the Kconfig option.
Other than that, the name changes are self-explanatory.
Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
Hide the CONFIG_BT_CTLR_GPIO_..._POL_INV Kconfig macros behind
equivalent ones in the HAL_RADIO_ namespace. This removes any direct
usage of the Kconfig macros from the controller HAL ifdeffery, except
for the usage in radio.c where the actual work is done.
Add "NRF21540" in the macros that are specific to that FEM.
That will be convenient when we are getting the GPIO polarity from
devicetree GPIO flags instead.
No functional changes expected.
Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
The GPIOTE channels used to manage radio front end module GPIOs are
configured with invisible Kconfig symbols. They are therefore not user
visible. Remove them by redefining them in terms of equivalent macros
defined in radio_nrf5.h. This lets us get rid of a couple of ifdefs
that are no longer needed as well.
This is because these invisible symbols depend on the
CONFIG_BT_CTLR_GPIO_* pin configuration symbols. We would like to move
all of that pin configuration to devicetree, because it's hardware
description. It is therefore inconvenient to have the GPIOTE channel
configuration set via Kconfig in a way that depends on something we
would like to remove.
No functional changes or user impact expected: invisible symbols
cannot be set in .conf files.
Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
Recently there was added ADI support to periodic advertising.
There was missing implementation of ADI for periodic advertising
chained PDUs and direction finding. Also unit tests for periodic
advertising chains required update to handle ADI field.
The commit provides missing implementation.
Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
The RSSI measurement was not enabled while receiving periodic
advertising. The function responsible for enable the feature
in radio was called, but it was done too early.
It was overwritten by radio_switch_XXX function that assigns
a value to RADIO->SHORTS register.
Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
Fix missing auxiliary context release when reception of
Periodic Advertising Chain PDU fails due to header complete
timeout, i.e. no reception of on-air PDU. Also, fix missing
generation of auxiliary reception failure notification when
no auxiliary context was allocated for chain PDU reception.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix Advertising LLL header initialization to be done early
so that other functions like Periodic Advertising Parameter
set functions can use LLL context to reference ULL conttext.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Move Periodic Advertiser List option check in LE Periodic
Advertising Create Sync command to HCI.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Use function to get the set/clear AD data parameter to
populate the common extended payload format field.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Updated the implementation to allow population of auxiliary
pointer field as necessary to append PDU chains.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix missing traversal of TargetA field in advertised Common
Extended Payload Format. This will cause invalid offset used
for fields following the TargetA when Extended Directed
Advertising is used.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix ASSERTION FAIL [!hdr->disabled_cb] @ ull_conn.c:882
When initiating a connection using continuous scan window
if there is preemption by the next window then the ISR
callback was overwritten to switch to next scan window
instead of the initiator event being closed.
Fixed by not aborting the initiating state when requested
by the next continuous scan window.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Use define for maximum number of primary advertising radio
channels used while scanning.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Minor changes to remove redundant whitespaces and to use
uint8_t instead of uint32_t to return true or false.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix missing reset of LLL scheduling flag when auxiliary PDU
scan scheduled in LLL is aborted due to preemption.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix continuous skipping of Extended Scanning of Auxiliary
PDUs. Due to duplicate prepare events of continuous scanning
present before the auxiliary scanning prepare, preemption
schedules only the primary scan prepare and auxiliary scan
infinitely is postponed.
This is a revert of commit 190532bcc4 ("Bluetooth:
Controller: Only remove duplicate resume events").
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix missing implementation to setup the PDU radio end
timestamp capture for Scan Response PDU.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Use variable names lll and lll_aux for struct lll_scan and
struct lll_scan_aux respectively.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Add implementation to check auxiliary PDU device address
match by comparing the address in the AUX_ADV_IND PDU with
the addresses in the filter accept list.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Refactor the filter check function so that it can be reused
for the Extended Auxiliary PDU filtering.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Minor move of lll_scan_aux_isr_aux_setup function alongwith
other global functions in the file.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Implement setting the correct directed advertisers address
type in the Extended Advertising Report.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Add implementation to filter using access list the received
extended auxiliary PDUs. Use resolving list addresses when
resolving list is enabled.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix Extended scanning filter implementation to permit
ADV_EXT_IND PDUs without AdvA so that AUX_ADV_IND PDU can
be received and to filter that PDU based on whether AdvA
is present.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Cleanup the scan event LLL done handling for abort on late
schedule, preemption pipeline abort, preemption current
event yield, duration expire, and connection establishment.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>