Commit Graph

86 Commits

Author SHA1 Message Date
Sumeet Singh a690a05965 feat(nimble): Added support for Enhanced ATT or ATT over Enhanced L2CAP Credit Based Flow Control Mode 2024-11-28 12:33:01 +05:30
Rahul Tank 74c95610a2 Revert "feat(nimble): Added support for Enhanced ATT or ATT over Enhanced L2CAP Credit Based Flow Control Mode"
This reverts commit 1be1f55eaa.
2024-05-29 12:38:21 +05:30
Sumeet Singh 1be1f55eaa feat(nimble): Added support for Enhanced ATT or ATT over Enhanced L2CAP Credit Based Flow Control Mode 2024-05-17 12:24:51 +05:30
Sumeet Singh 2795cb8849 feat(nimble): read multiple variable length characteristics 2024-03-11 10:48:23 +05:30
Roshan Bangar dd288f2b76 Feature : HID service support 2024-02-20 18:48:53 +05:30
isha.pardikar@espressif.com 066bfccb8b NimBLE: Added support of encrypted advertising data 2024-02-20 12:22:49 +05:30
isha.pardikar@espressif.com 67bf2ca800 NimBLE: Added support for writing data more than BLE_ATT_ATTR_MAX_LEN 2024-02-20 11:18:11 +05:30
Rahul Tank 6336a6de85 Added return value (success / failure ) to nimble_port_init 2024-02-14 18:51:52 +05:30
Petro Karashchenko 3720e7656c porting/examples/linux: update steps in README.md
Signed-off-by: Petro Karashchenko <petro.karashchenko@gmail.com>
2023-08-01 08:44:18 +02:00
Mingjie Shen 28649933ad porting/examples: Fix implicit function declaration 2023-07-19 13:53:55 +02:00
Petro Karashchenko a0f74cd181 porting/examples/nuttx: align parameters passed to ble_npl_task_init()
Signed-off-by: Petro Karashchenko <petro.karashchenko@gmail.com>
2023-07-08 22:08:07 +02:00
raiden00pl 88758a8107 porting/nuttx/example: perform initialization if not done by NSH
For example, when Nimble NuttX example is the entry point for users applications.
2023-03-14 01:17:11 +01:00
Xiang Xiao e0e9629afe porting/nuttx; Fix error: unrecognized command-line option '-m32'
-m32 is supported by x64 toolchain, not arm-none-eabi-gcc

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2023-02-21 12:12:26 +01:00
Xiang Xiao ed083b36cb porting/nuttx: Fix error: implicit declaration of function 'usleep'
Report here:
https://github.com/apache/nuttx/actions/runs/4098214664/jobs/7067171681

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2023-02-06 08:44:58 +01:00
Szymon Janc 33942430e3 nimble/ports: Refresh syscfg 2023-02-02 20:04:35 +01:00
Szymon Janc 2587fbfd8b nimble/mesh: Fix build on linux
Use MIN/MAX macros instead of min/max.
2022-12-13 00:21:58 +01:00
Rahul Tank 18203ccafc nimble/host: Add HCI Commands/ events for connection subrating 2022-10-05 16:09:52 +02:00
Szymon Janc b21575c894 nimble/ports: Refresh syscfg 2022-10-03 15:22:29 +02:00
Hang Fan d21a386e96 porting/examples: Fix build error
Add default macro of MYNEWT_VAL_BLE_L2CAP_COC_SDU_BUFF_COUNT
to avoid build error.
2022-09-27 08:32:45 +02:00
Szymon Janc 60b51b0b80 nimble/ports: Refresh syscfg 2022-09-08 11:58:53 +02:00
Krzysztof Kopyściński acaa9351b1 nimble/host/sm: rename BLE_SM_SC_LVL to BLE_SM_LVL
This rename makes it consistent with Core specification Vol. 3,
part C, 10.2.1 LE security mode 1. This level specifies security
requirements for both SC and legacy pairing, not only SC.
Updated description of this setting.
2022-06-29 13:53:36 +02:00
Rahul Tank 7ee72efb48 nimble/host: Add HCI commands / events for LE Power control 2022-04-19 10:32:31 +02:00
Andrzej Kaczmarek 8272e8baba porting: Fix dummy build
Dummy transport is no longer needed, use socket transport instead.
2022-03-24 18:27:11 +01:00
Andrzej Kaczmarek fd62bd71f9 porting: Update for new HCI transport
Adds required files to build, updates Linux sample app and also
regenerate syscfg.h.
2022-03-17 11:48:16 +01:00
Szymon Janc 4ac4eeca3a nimble/ports: Refresh syscfg 2022-02-09 09:54:31 +01:00
Szymon Janc 3a6ab21ad4 nimble/ports: Refresh syscfg 2021-12-30 12:50:20 +01:00
Szymon Janc f771348a4e ports: Build NimBLE with 32-bit environment
Some code in NimBLE assumes that pointers are 4 bytes. Until this
is properly fixed build with -m32 to make sure resulting binary
is no misbehaving.
2021-12-23 14:47:43 +01:00
Krzysztof Kopyściński bc142016bd host/mesh: fix loopback in net
net_buf structure in Zephyr has field user_data, which was wrongly
ported as os_mbuf->om_data. To stick with porting net_buf as os_mbuf
we can base on old Zephyr's implementation, which was changed in commit
dd09cbc1c455ab1e067b53f46bee7b6d50689bbc. Before it, user_data was part
of data buffer of net_buf. We can implement this the same way, so
data_buf is last N octets of os_mbuf->om_data.

Accomodate mbuf allocation and freeing to NimBLE.
2021-12-02 07:40:45 +01:00
Krzysztof Kopyściński 5cc57dee07 porting: fix blemesh build after mesh sync 2021-11-10 06:24:00 +01:00
Krzysztof Kopyściński 7914dbd984 porting/blemesh: add missing defs
Added defs included in Mesh sync
2021-11-10 06:24:00 +01:00
Krzysztof Kopyściński 04d723ed05 host/mesh: define Low Latency mode for non-NimBLE controller
This fixes build for porting
2021-11-10 06:24:00 +01:00
Krzysztof Kopyściński e8a42b4fd1 host/mesh: Increase default CDB node count
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
2021-11-10 06:24:00 +01:00
Szymon Janc 17f985ff00 porting: Fix typo in linux blemesh sample 2021-10-01 09:02:42 +02:00
Krzysztof Kopyściński 4ad4395d7c ble_sm: add Secure Connections Only mode
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.
2021-05-06 13:20:06 +02:00
Szymon Janc dd7ebf179f porting: Fix mempool initialization
This fix crash on init due to changes in mmepool init after recent
sync with core.
2021-04-12 11:02:11 +02:00
Krzysztof Kopyściński 0aa3fe6d51 porting: fix typo in CROSS_COMPILE 2021-02-17 14:45:44 +01:00
Matias N f25b1de0d3 nuttx example: generate random address 2021-02-04 17:57:51 +01:00
Krzysztof Kopyściński 5bcfd162e7 mesh: fix cdb.c conflicts when BLE_MESH_CDB is disabled 2021-01-12 14:05:19 +01:00
Krzysztof Kopyściński 011dbfda65 mesh: Encapsulate feature config
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
2021-01-12 14:05:19 +01:00
Krzysztof Kopyściński c06a03adfc mesh: Move heartbeat to separate module
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
2021-01-12 14:05:19 +01:00
Krzysztof Kopyściński 044f08b117 mesh: split prov.c into two separate modules
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
2021-01-12 14:05:19 +01:00
Krzysztof Kopyściński 7ad5d4d8cb mesh: Isolate cryptographic material
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
2021-01-12 14:05:19 +01:00
Krzysztof Kopyściński baf1549bc8 mesh: Change the default value to syscfg
Move default value of segment retransmit and timeout value
to syscfg.

this is port of 4acfd5f6aff7d77ee4c5eec218864ec9693d2b7c
2021-01-12 14:05:19 +01:00
Krzysztof Kopyściński 78f95c5b7f mesh: replace zephyr integer types with C99 types
this is port of a1b77fd589dbe7284c17b029f251426a724abd47
2021-01-12 14:05:19 +01:00
Krzysztof Kopyściński 97279150a1 mesh: Move Replay Protect to seperate module
Move RPL to seperate module, and remove it in bt_mesh
structure.

this is port of 2a6b1bab93fbfa31f7469b351ca0d84934cb0966
2021-01-12 14:05:19 +01:00
Krzysztof Kopyściński 27cb1c9411 mesh: Network loopback
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
2021-01-12 14:05:19 +01:00
Krzysztof Kopyściński bfe7f21053 mesh: Add Option config unprov beacon interval
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
2021-01-12 14:05:19 +01:00
Krzysztof Kopyściński 6b6c67eebf mesh: Slab based segmentation handling
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
2021-01-12 14:05:19 +01:00
Krzysztof Kopyściński 0b1e0d72a8 mesh: Add database for managing nodes and keys
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
2021-01-12 14:05:19 +01:00
Matias N c14c47bb68 add support for NuttX 2020-12-17 18:37:20 +01:00