Commit graph

56,357 commits

Author SHA1 Message Date
Hubert Miś
dd319c2d4c net: socket send timeout option
This patch adds SO_SNDTIMEO option used to time out socket sending
operations.

Signed-off-by: Hubert Miś <hubert.mis@nordicsemi.no>
2021-02-24 14:16:33 +02:00
Robert Lubos
56f9efdebf drivers: ieee802154_nrf5: Fix initialization order
The driver was reworked recently so that driver capabilites are
obtained at runtime. The function to obtain the capabilities was
called after L2 initialization though, which is invalid as L2
initialization code already depends on certain driver capabilites.

Move the capability initializer to an earliest possible stage
(i. e. just after the core driver is initialized) to fix the issue.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2021-02-24 14:16:08 +02:00
Johann Fischer
627c04f962 drivers: usb_dc_stm32: remove confusing comments
The comments at the beginning of the file are not quite correct
and instructions regarding configuration are not necessary at all.
Also remove the redundant first line.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2021-02-24 12:01:50 +01:00
Lingao Meng
db2f871fa9 samples: bluetooth: Fix SRAM overflow with bbc:microbit
`arm-zephyr-eabi/bin/ld: region `SRAM' overflowed by 19 bytes`

Signed-off-by: Lingao Meng <menglingao@xiaomi.com>
2021-02-24 10:56:26 +01:00
Jukka Rissanen
d090de7a0d samples: net: echo-server: Add netmask setting to VLAN config
We need to set a proper IPv4 netmask to each VLAN interface
so that IPv4 source address selection will work properly.
If we do not do this, then the network interface could be
selected incorrectly for the VLAN interfaces which could then
mean that the packet might get dropped by the target device.

Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2021-02-24 09:45:09 +02:00
Christian Taedcke
c467149ad9 net: pkt: Add function net_pkt_get_contiguous_len()
This returns the available contingous space in the packet starting from
the current cursor position.

Signed-off-by: Christian Taedcke <christian.taedcke@lemonbeat.com>
2021-02-24 09:43:52 +02:00
NavinSankar Velliangiri
5de3f850a7 tests: drivers: adc: adc_api: Enable ADC test support
Enable ADC test support for bmd_345_eval board

Signed-off-by: NavinSankar Velliangiri <navin@linumiz.com>
2021-02-23 16:31:41 -06:00
NavinSankar Velliangiri
e61c9caa7d samples: subsys: fs: littlefs: Enable Nordic QPSI driver
Add overlay and enable Nordic QPSI driver to support bmd_345_eval

Signed-off-by: NavinSankar Velliangiri <navin@linumiz.com>
2021-02-23 16:31:41 -06:00
NavinSankar Velliangiri
d56e820f76 samples: drivers: jesd216: Enable Nordic QPSI driver
Enable Nordic QPSI driver for nordic board.

Signed-off-by: NavinSankar Velliangiri <navin@linumiz.com>
2021-02-23 16:31:41 -06:00
NavinSankar Velliangiri
a4ce7e3dea boards: arm: bmd_345_eval: Add BMD 345 EVAL Board Support.
Add support for BMD 345 EVAL BSP with PA/LNA support
Fixes: #31585

Signed-off-by: NavinSankar Velliangiri <navin@linumiz.com>
2021-02-23 16:31:41 -06:00
Pete Johanson
32a28f9876 boards: seeeduino_xiao: Output UF2 by default.
Default BOSSA bootloader supports UF2 OOTB, so enabling
UF2 output by default.

Signed-off-by: Pete Johanson <peter@peterjohanson.com>
2021-02-23 21:11:04 +01:00
Pete Johanson
ff01a00d60 soc: Add standard UF2 family IDs for supported SoCs.
Defaults from https://github.com/Microsoft/uf2#family-list

Signed-off-by: Pete Johanson <peter@peterjohanson.com>
2021-02-23 21:11:04 +01:00
Pete Johanson
310a464acf cmake: Add UF2 as an additional build output option.
Add ability to build a UF2 (https://github.com/Microsoft/uf2)
image as an additional output type. This leverages the code
partition offset for the UF2 base address, and a configurable
UF2 family ID.

Includes an unmodified (except for headers for licensing, pylit
disabling) version of the uf2conv.py script copied the UF2
format specification repository, used to convert the bin to UF2.

Origin: UF2 file format specification reference utilies
License: MIT
URL: https://github.com/microsoft/uf2/blob/master/utils/uf2conv.py
commit: 587abb8b909266e9b468d6284f2fbd425235d1b5
Signed-off-by: Pete Johanson <peter@peterjohanson.com>
2021-02-23 21:11:04 +01:00
Joakim Andersson
61584fb35f Bluetooth: host: Don't auto-update device name and document behavior
Don't auto-update the device name in the advertising data as that
would clear any other scan-response data set by the application.
Document the behavior of the advertise with device name option
and the need to update data by the application to make sure
advertising data does not get cleared.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-02-23 20:08:51 +01:00
Joakim Andersson
84dffe5b3c Bluetooth: host: Fix endianness issue in reading CPF descriptor
Fix endianness issue in reading CPF descriptor not converting from
native endianess to little-endian on the 'unit' and 'description'
fields.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-02-23 20:07:53 +01:00
Joakim Andersson
22218129a6 Bluetooth: host: Use definitions of UUID values instead of constants
Use the definitions of UUID values instead of magic constants with
explanation in comment.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-02-23 20:07:53 +01:00
Joakim Andersson
1b89ea50dc Bluetooth: host: Add GATT Characteristic Aggregated format definition
Add GATT Characteristic Aggregated Format UUID definition to public
header.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-02-23 20:07:53 +01:00
Nicolas Pitre
fb73ac392c lib/os/cbprintf_nano.c: several improvements
This makes cbprintf_nano.c much closer to the standard printf and
therefore more useful. The following are now implemented:

- right justification for everything (only for numbers previously)
- precision value for numbers, chars and strings
- width/precision passed as arguments with *
- "unlimited" padding length
- lower/uppercase hex output
- the #, + and ' ' flags are supported

And the code was heavily reworked to reduce its size as much as
possible to mitigate the size growth. Still, the binary resulting
from cbprintf_nano.c is now between 10% and 20% bigger depending on
the architecture. This is still far smaller than cbprintf_complete.c
which remains about twice as big on average even without FP support.

Many unit tests that were skipped with CONFIG_CBPRINTF_NANO are now
enabled, and a few more were added for good measure.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2021-02-23 19:39:59 +01:00
Peter Bigot
99425de387 tests: unit: cbprintf: force libc substitutes in test case
The test infrastructure uses EXTRA_CPPFLAGS to control which
configuration is used, but this was also added to CMakeLists to ensure
a common optional infrastructure was always available.  Since unit
tests don't use Kconfig, this actually prevented the test variants
from being selected.

Add the flag in the test itself, which works correctly since the test
includes the implementation directly.

Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
2021-02-23 19:39:59 +01:00
Vinayak Kariappa Chettimada
27b7c27dca Bluetooth: controller: Use Ext. Advertising association for BIG created
Check for associated Extended Advertising set to determine
whether Broadcast ISO Group instance has been already
created.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-02-23 19:36:41 +01:00
Vinayak Kariappa Chettimada
fc2e71dfec Bluetooth: controller: Add association between adv, sync and iso
Add association between extended advertising, periodic
advertising and broadcast ISO instance, so that attempts to
create and terminate BIG can detect error conditions.

Error conditions being, trying to create BIG without a valid
periodic advertising train, or terminating BIG without prior
creation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-02-23 19:36:41 +01:00
Torsten Rasmussen
fe5728dcb0 cmake: using MD5_INFILE variable instead of ZephyrPackagePath.txt
Running `west zephyr-export` creates an entry in the CMake User package
registry.

During this process, a temporary file `current_path.txt` is created.

This commit ensure the file is removed when no longer needed.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-02-23 19:34:27 +01:00
Sebastian Wezel
148dbdc9fe twisterlib: checking for classname and testname
Currently duplicated testcases are only determined by the classname.
This results in testcases not beeing added to the twister.xml if the
testcases are from the same class (e.g. sample.yaml), but with different
names.

The changed check if the combination of classname and testname
already exists.

Signed-off-by: Sebastian Wezel <sebastian.wezel@nordicsemi.no>
2021-02-23 10:57:14 -05:00
Daniel Leung
803eb1ea10 tests: schedule_api: lengthen interval for slicing reset test
When calculating the expected interval for threads other than
the first one, the test uses ms->ticks->cycles conversion to
figure out the bound of cycles permitted. Both lower and upper
bound conversions are using the k_*_to_*_floor32(). When
numbers involved are not wholly divisible, decimal points are
being truncated, resulting in incorrect intervals, and thus
failing tests. So change the calculation to appropriate
floor() or ceil() based on the boundary.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-02-23 10:36:21 -05:00
Martí Bolívar
d090751c3d samples: bme280: provide generic arduino I2C and SPI support
Adjust the documentation and devicetree overlays so the sample can be
built for any board with an Arduino I2C and SPI pinout, defaulting I2C
and SPI to y to make it easier to switch between the two without
requiring a pristine build.

The user has to choose an appropriate overlay or have a sensor built
in to the board.

Use the newly introduced DEVICE_DT_GET_ANY() in main.c to ask for a
bosch,bme280 without worrying over the details or exposing
DT_DRV_COMPAT-based functionality that is really meant for drivers.

Remove the no-longer-needed board specific overlay for nRF52840 DK;
this is covered by the generic Arduino overlays now.

Fix the datasheet link while we're here.

Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
2021-02-23 10:34:19 -05:00
Martí Bolívar
4a381fce6b drivers: bme280: clean up array usage
Use sizeof() and ARRAY_SIZE() to have more single points of truth.

Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
2021-02-23 10:34:19 -05:00
Martí Bolívar
bfff50127f drivers: bme280: factor out bus I/O routines
Move the SPI and I2C bus I/O bits into their own files. This makes
this driver more similar to other sensor drivers.

Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
2021-02-23 10:34:19 -05:00
Martí Bolívar
8c2709e81a drivers: bme280: get dependencies straight from DT
Now that we have various convenience macros in drivers/spi.h and
device.h defined, we can resolve some longstanding TODO items in how
this driver gets a hold of the devices it depends on:

- get bus devices with DEVICE_DT_GET
- get SPI chip select information with SPI_CONFIG_DT_INST

The results are shorter on boilerplate, save RAM, and improve boot
time.

The same techniques could be reused by other device drivers.

These changes require that the SPI bus and GPIO (for device CS)
devices used to interface with the BME280 are defined in devicetree.

Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
2021-02-23 10:34:19 -05:00
Martí Bolívar
193b8872cd device.h: add DEVICE_DT_GET_ANY
Various samples are using the DT_INST macros to get devicetree node
identifiers, and going from there in the usual way to get a struct
device*.

This is undesirable for preparing a simple sample application:

1. The devicetree instance number space's rules are both complicated
   and irrelevant outside of device drivers. Using this number space
   just to get a node identifier is distracting and confusing in this
   context.

2. A basic "get the device and use the API" sample doesn't care about
   the *devicetree node identifier*; it really just wants a *device*.
   Introducing node identifiers at all is also kind of beside the
   point.

The only good reason to use DT_INST macros is that they guarantee that
instance number 0 refers to an enabled node with a given compatible,
as long as there is at least one. But the extra complexity isn't
really worth the benefit.

Add a new DEVICE_DT_GET_ANY(compat) macro that solves both of these
problems, by returning an arbitrary device structure straight from a
compatible. This uses INST numbers behind the scenes, but that's now
an implementation detail.

This avoids introducing INST numbers or node identifiers where they
are not needed, without requiring warts like sample-specific aliases
that point at the right devicetree node.

Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
2021-02-23 10:34:19 -05:00
Martí Bolívar
7bbead6786 drivers: i2c: add dummy driver for vnd,i2c
We will need this to be able to DEVICE_DT_GET() bus devices from
tests/drivers/build_all in an upcoming commit.

Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
2021-02-23 10:34:19 -05:00
Martí Bolívar
63471ba93b drivers: spi: add dummy driver for vnd,spi
We will need this to be able to DEVICE_DT_GET() bus devices from
tests/drivers/build_all in an upcoming commit.

Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
2021-02-23 10:34:19 -05:00
Martí Bolívar
d6cfa10b8f drivers: spi: add helpers for initializing from DT
Add helper macros for initializing a struct spi_sconfig for a SPI
device which is defined in the devicetree. They are available from C
only due to C++ compatibility issues.

For some fields, like 'frequency', we just get the value from the
standard devicetree property. For others, like the spi_cs_control
structure's 'gpio_dev', we rely on the new DEVICE_DT_GET() macro.

This patch does not change anything for controlling SPI devices that
aren't set up in devicetree. It is entirely a convenience for driver
and application code that relies on DT.

Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
2021-02-23 10:34:19 -05:00
Martí Bolívar
6008e7ee24 devicetree: spi: add CS GPIO controller accessors
Add two new macros for getting the chip select GPIO controller from a
SPI device:

- DT_SPI_DEV_CS_GPIOS_CTLR()
- DT_INST_SPI_DEV_CS_GPIOS_CTLR()

Now that we can get struct device pointers at build time directly from
a devicetree node identifier, it's useful to be able to get a
node_id for a CS GPIO controller from the SPI device, because that's
necessary for setting up the gpio_dev in a struct spi_cs_control.

Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
2021-02-23 10:34:19 -05:00
Martí Bolívar
24b5053600 devicetree: adjust some implementation details
Reimplement DT_PHANDLE_BY_IDX() in a way that defers concatenating its
parameters together until after all of them have been expanded, for
reasons that will be taken advantage of in the next patch.

Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
2021-02-23 10:34:19 -05:00
Martí Bolívar
ad49bcf492 devicetree: add DT_INST_BUS(node_id)
This returns the node identifier for a node's bus. For example, for a
device on an I2C bus, it would return a node identifier for the I2C
bus controller.

We already have a DT_BUS() and DT_INST_BUS_LABEL(), but there hasn't
been a request or need for DT_INST_BUS() up until now, so it didn't
exist yet.

Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
2021-02-23 10:34:19 -05:00
Meng xianglin
1565f34045 test: logging: improve test coverage for logging subsystem
Add some test point in existing test cases. Add some test
cases for usersapce.

Signed-off-by: Meng xianglin <xianglinx.meng@intel.com>
2021-02-23 10:33:13 -05:00
Jun Lin
c1bc357afd driver: npcx: add debug interface register structure
Add the declaration and check of debug interface register.

Signed-off-by: Jun Lin <CHLin56@nuvoton.com>
Change-Id: Ib8ecd53f1d6139613f39243aee83bdd75a30f5be
2021-02-23 10:32:19 -05:00
Mulin Chao
6c3d4141fe MAINTAINERS: update collaborators in Nuvoton platforms.
Add Nuvoton developers, ChiHuaL and WealianLiao, as collaborators for
Nuvoton platforms in MAINTAINERS.yaml.

Signed-off-by: Mulin Chao <mlchao@nuvoton.com>
2021-02-23 08:45:03 -06:00
Vinayak Kariappa Chettimada
bee6aa325b Bluetooth: controller: Increased thread context operation queue count
When ticker job is disabled inside radio events then all
advertising, scanning, and slave latency cancel ticker
operations will be deferred, requiring increased ticker
thread context operation queue count.

Relates to #32430.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-02-23 13:01:20 +01:00
Vinayak Kariappa Chettimada
03ea3463c9 Bluetooth: controller: Facilitate reuse of BT_CTLR_MAX_CONNECTABLE
Minor rearrange order of definition BT_CTLR_MAX_CONNECTABLE
to better reuse it.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-02-23 13:01:20 +01:00
Vinayak Kariappa Chettimada
73308a3333 Bluetooth: controller: Consistent use of internal BT_CTLR_ADV_SET
Consistently use the internal BT_CTLR_ADV_SET value in the
controller's implementation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-02-23 13:01:20 +01:00
Henrik Brix Andersen
9003cc8a89 shields: waveshare_epaper: move common dtsi file to dts folder
Move the common devicetree include file for the waveshare_epaper shields
to the dts subfolder.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2021-02-23 12:37:54 +01:00
Henrik Brix Andersen
19b540630e boards: shields: add SHIELD_DIRS to DTS_ROOT
Treat shield directories containing a dts subdirectory as a DTS root
directory.

This allows shield specific devicetree include files and bindings to be
stored under the shield dts subdirectory.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2021-02-23 12:37:54 +01:00
Henrik Brix Andersen
50aab5d27c boards: shields: add shield directories to SHIELD_DIRS
Keep a list of shield directories for use in other parts of the build
system.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2021-02-23 12:37:54 +01:00
Piotr Pryga
1785129a3d Bluetooth: controller: pdu: Add offset_adjust filed to pdu_adv_sync_info
Add missing offset_adjust filed to pdu_adv_sync_info.
Add handling of the field when sync_info is added to advertising PDU.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-02-23 12:37:06 +01:00
Piotr Pryga
5bfb9fb81e samples: Bluetooth: add nrf52833dk_nrf52833 board in per. adv. samples
Add support for nrf52833dk_nrf52833 board in periodic_adv and
periodic_sync samples.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-02-23 12:36:11 +01:00
Krzysztof Chruscinski
6f5f0b2e8e tests: unit: util: Extended UTIL_LISTIFY test
Extended test to check that multiple arguments are passed in
UTIL_LISTIFY macro.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2021-02-23 12:35:48 +01:00
Krzysztof Chruscinski
9d3326586c tests: unit: util: Add test for REVERSE_ARGS
Added test for new macro.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2021-02-23 12:35:48 +01:00
Krzysztof Chruscinski
de84575e2e sys: util: Update implementation of loop macros
Recursive macros are more generic but they are very depending for
preprocessor. When they are used extensively they can prolong
compilation even ten times. Replaced them with brute force
implementation for:
- FOR_EACH macros
- GET_N_ARG
- GET_ARGS_LESS_N
- UTIL_LISTIFY
- UTIL_REPEAT

New implementation provides same functionality but it is limited to 64
input arguments. This is not a hard limitation and can be increased
in the future.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2021-02-23 12:35:48 +01:00
Andreas Düring
1ff7a8435b doc: Add Zephyr update instructions to beyond-gsg
Add explicit instructions on how to update the Zephyr
source code. For a beginner, it might not be obvious
how to do that. "west update" sounds like it'd do that,
which is not the case, however.

Signed-off-by: Andreas Düring <gh@duering-andreas.de>
2021-02-23 11:30:51 +01:00