The old default of 1 makes provisioner devices useless, as they can only
provision themselves before they run out of space.
This is port of f2579cb3f26bde3050306401de9cd2837c94024f
Compiling the hal_timer abstractions requires
nrf52_clock_hfxo_request() and _release() functions to be available.
This commit maps the appropriate RIOT functions in the NPL layer.
Recently the RIOT IRQ API was extended to support irq_is_enabled(),
so time to switch away from the hacked implementation of
ble_npl_hw_is_in_critical().
Added mode allowing to enforce pairing only in SC mode 1 level 4. This mode is required to pass
GAP/SEC/SEM/BI testcases. Added BLE_SM_SC_LVL config to allow pairing only in selected levels.
ztimer is a new high-level timer API in RIOT that was introcuced a
while ago to be the successor of xtimer. This commit reworks the
RIOT NPL implementation to use ztimer instead of xtimer. This
simplifies the NPL implementation and it allows for significant
energy savings.
For the xtimer switch the implemenation further switches from
RIOTs `posix_semaphore` module to the slimmer `sema` module, as the
prior indirectly pulls in xtimer as dependency.
In commit ab53154 platform specific handling of the NVIC setup
for the timers priority and vectors were revertet. This leads
to problems on certain platforms, e.g. interrupt priority
related hard-faults on RIOT. This commit re-introduces the
platform specific setup.
SIGEV_THREAD on NuttX currently has a limitation where the thread
is not really a child of original process so it is not possible to
interact with the open POSIX queue. This is addressed by having a
specific thread wait for a condition variable which is triggered
from the handler.
Moves mesh feature configuration to a separate module, deprecating the
bt_mesh_cfg_srv structure. The initial values for the features should
now be enabled through KConfig, where new config entries have been added
for each feature.
This removes the upward dependency on the config server from the core
stack, and makes the config server a pure frontend for the configuration
states, as all spec mandated behavior around the feature states is now
encapsulated.
this is port of ad2fd44d7ad915e66765ba17ce53d4c5829a0efb
Encapsulates the Heartbeat state and functionality in a separate
heartbeat module, removing all manipulation of the heartbeat state from
the transport and config server modules.
this is port of 0dc9e5cd9695e4ab403bf13f4d51d84de6a5ebb9
Currently all provisioning procedure into common source
files call `prov.c`, that will not compile separately.
Add `BT_MESH_NODE` to control whether nodes are supported
and device provisioning is supported, this will be used in
provisioner role.
Add more provisioner OOB authentication method.
this is port of 5374245dd66e630932267663546d5f1108aff9b5 with patch
0bcd66ac36d8c02d2c3b3851c4086e8b692578a6
This is a major refactoring of the handling of the cryptographic
material of both the network and transport layers. The aim is to
encapsulate the key object manipulation, and improve overall modularity.
Pulls Applications and Subnets out of the bt_mesh and into separate
modules, with static storage types on the data. This has several
side-effects:
- The Config Server no longer operates directly on the bt_mesh.subs and
bt_mesh.apps lists, but goes through a public configuration interface,
following the pattern set in #27908.
- All iteration through the keys is done through iteration APIs
- Key resolution on RX and TX is centralized.
- Changes to the keys triggers events the other modules can register
handlers for.
- Friendship credentials are stored in the lpn and friend structures.
this is port of eca014115287bdb8a8a57355514fbd5e1d27b75b
Changes the local network interface to exclusively handle packets for
the local interface, duplicating the buffers in the process.
The loopback mechanism now operates its own packet pool for the local
interface queue. The loopback is moved ahead of encryption, allowing the
local interface packets to go back up the stack without network crypto,
saving a full round of encrypt/decrypt for self-send.
Packets for group addresses the local node subscribes to are now
duplicated, with one unencrypted variant going into the network
queue, and the network bound packets following the regular path to the
advertiser.
Introduces one new configuration for setting the number of loopback
buffers.
this is port of 9bd58062b9fc8272f2950a343bbcef6f3f79f481
and caa9dc7c032f8bfb96f3a6ea20618dd57e0b009f
1 Add Option to specifies the second interval when device
send Unprovisioned Beacon.
2 Move BT_MESH_LPN_SUB_ALL_NODES_ADDR to LPN subgroup.
this is port of 81fc15c4d64aab5f73f8d6ab755fa9688dd67734,
c86966719fef7564e7350cae5f0f2ab843f70eaa and
72315cf01e69ec2df802c6417f100a3777cd0345
Allocates segmented message buffers as slabs in a common pool for RX and
TX. This reduces memory requirements for both TX and RX, as TX messages
can be stored without the network and advertising buffer overhead, and
RX can use only the slabs it needs, instead of allocating a full size
segmented message. This approach also removes the need for decrypting
the segments for each retransmission, reducing overall processing load.
Slab based segmentation for tx also introduces queuing of segmented
messages, which allows the application layer to send multiple messages
to the same destination without violating Bluetooth Mesh specification
v1.0.1, section 3.6.4.1. This mechanism is provided through a flag that
blocks segmented messages to a destination which a message is already
being sent to until the previous message finishes.
This changes the SDU size configuration to a symmetrical
RX_SEG_MAX/TX_SEG_MAX pair of configurations, plus a new segment pool
side configuration. It also removes the binding between the TX_SEG_MAX
config and the advertising buffers, reducing the minimum advertising
buffer count from 6 to 3.
this is port of 901b5b2b2b0a33f5426f621277e7238e8b83740b and
7443c1bd3ded598b56db3c931614072098af84e1
Refactor the handling of network nodes and their keys into a separate
Mesh Configuration Database (CDB). This, not only creates a separation
of the local node and the other nodes, but also makes it possible to
implement functions to manage the whole, or at least parts of the mesh
network.
this is port of 29291bfe9ef5af4e6b7ae630812922f668fd0668
- code simplification
- add some more comments
- call ble_hci_ram_init() before ble_ll_init() to make sure the
buffers are intialized before they are potentially used
We need to update pkg names to represent at path to the targets.
Also update the update_generated_files.sh script to
refer to the targets using a path. This is required
after recent change to Newt.
Currently we have two separate SCA settings: actual SCA as ppm value and
enumerated one based on ranges of SCA value. This means user needs to
update both values and they ideally should be in sync.
To make our life easier, we can just have single BLE_LL_SCA setting to
provide ppm value and enumerated one can be easily determined at build
time.
This patch adds initial support for enhanced LE CoC.
For now we allow for MTU reconfiguration as it bilongs to the
application.
We do not allow for MPS reconfiguration, as it is assumed that MPS
is always used the biggest possible.
However that might change as we start PTS testing.
Some of the initial verification has been done with PTS
To enable feture BLE_L2CAP_ENHANCED_COC shall be enabled along with
BLE_VERSION >= 52 and non zero BLE_L2CAP_COC_MAX_NUM
Updating these files requires some manual work so no one is actually
doing it when they add new features. This script may improve this
situation or at least serve as a documentation of this "feature".
This PR adds support for various log modules which is possible
thanks to modlog feature. With this feature we can specify
a logging level for each module separately which could have the
following advantages:
- Being able to filter out only the logs that we are interested in at
the moment
- Controlling log level in runtime
- Improved readability if we start printing module name in log header
- Ability to use color-coded log messages by mapping module to a
specific color