Skip to content

Conversation

@maje-emb
Copy link
Contributor

This sample showcases how to use the ESB protocol concurrently with Bluetooth.
It runs the ESB radio in PRX (receiver) mode while simultaneously enabling the BLE LBS (LED Button Service).

@maje-emb maje-emb added this to the 3.2.0 milestone Nov 17, 2025
Copilot AI review requested due to automatic review settings November 17, 2025 14:48
@maje-emb maje-emb requested review from a team as code owners November 17, 2025 14:48
@maje-emb maje-emb added the DNM label Nov 17, 2025
@NordicBuilder NordicBuilder added doc-required PR must not be merged without tech writer approval. changelog-entry-required Update changelog before merge. Remove label if entry is not needed or already added. labels Nov 17, 2025
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds a new sample demonstrating concurrent operation of ESB (Enhanced ShockBurst) protocol in PRX (receiver) mode alongside Bluetooth LE. The sample integrates the ESB radio receiver with the LED Button Service (LBS) to showcase multiprotocol operation using MPSL timeslot mechanisms.

Key Changes:

  • Adds a new esb_prx_ble sample that combines ESB receiver functionality with BLE LBS service
  • Implements multiprotocol radio time sharing through MPSL timeslot configuration
  • Includes board-specific configurations for nRF52, nRF53, and nRF54 series devices

Reviewed Changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
sysbuild.cmake Configures empty app core for nRF5340 dual-core architecture
src/main.c Main application implementing ESB PRX with concurrent BLE LBS service
sample.yaml Test configuration for supported development kits
prj.conf Project configuration enabling ESB, BLE, and MPSL timeslot features
boards/*.conf Board-specific DPPI driver configurations for nRF54 series
boards/*.overlay Device tree overlay for nRF54H20DK GPIO and peripheral configuration
README.rst Documentation covering sample overview, requirements, and testing procedures
Kconfig Configuration menu for ESB PRX sample logging
CMakeLists.txt Build configuration for the sample

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@NordicBuilder
Copy link
Contributor

NordicBuilder commented Nov 17, 2025

CI Information

To view the history of this post, click the 'edited' button above
Build number: 3

Inputs:

Sources:

sdk-nrf: PR head: aba9e7080fd9c758ff3bfe30980c483850571da8

more details

sdk-nrf:

PR head: aba9e7080fd9c758ff3bfe30980c483850571da8
merge base: 70c66bf51cba4515dfb6f364362021cd77b013f3
target head (main): e35b0cf5a81f58fdc5ecd40115bc9157647853d0
Diff

Github labels

Enabled Name Description
ci-disabled Disable the ci execution
ci-all-test Run all of ci, no test spec filtering will be done
ci-force-downstream Force execution of downstream even if twister fails
ci-run-twister Force run twister
ci-run-zephyr-twister Force run zephyr twister
List of changed files detected by CI (16)
doc
│  ├── nrf
│  │  ├── releases_and_maturity
│  │  │  ├── releases
│  │  │  │  │ release-notes-changelog.rst
samples
│  ├── esb
│  │  ├── esb_prx
│  │  │  │ README.rst
│  │  ├── esb_prx_ble
│  │  │  ├── CMakeLists.txt
│  │  │  ├── Kconfig
│  │  │  ├── Kconfig.sysbuild
│  │  │  ├── README.rst
│  │  │  ├── boards
│  │  │  │  ├── nrf54h20dk_nrf54h20_cpurad.overlay
│  │  │  │  ├── nrf54l15dk_nrf54l05_cpuapp.conf
│  │  │  │  ├── nrf54l15dk_nrf54l10_cpuapp.conf
│  │  │  │  ├── nrf54l15dk_nrf54l15_cpuapp.conf
│  │  │  │  ├── nrf54lm20dk_nrf54lm20a_cpuapp.conf
│  │  │  │  │ nrf54lv10dk_nrf54lv10a_cpuapp.conf
│  │  │  ├── prj.conf
│  │  │  ├── sample.yaml
│  │  │  ├── src
│  │  │  │  │ main.c
│  │  ├── esb_ptx
│  │  │  │ README.rst

Outputs:

Toolchain

Version: df3cc9d822
Build docker image: docker-dtr.nordicsemi.no/sw-production/ncs-build:df3cc9d822_e595b21c39

Test Spec & Results: ✅ Success; ❌ Failure; 🟠 Queued; 🟡 Progress; ◻️ Skipped; ⚠️ Quarantine

  • ◻️ Toolchain - Skipped: existing toolchain is used
  • ❌ Build twister
    • sdk-nrf test count: 6
  • ❌ Integration tests
    • ⚠️ test-fw-nrfconnect-proprietary_esb
Disabled integration tests
    • test-fw-nrfconnect-nrf_lrcs_positioning
    • desktop52_verification
    • test_ble_nrf_config
    • test-fw-nrfconnect-apps
    • test-fw-nrfconnect-ble_mesh
    • test-fw-nrfconnect-ble_samples
    • test-fw-nrfconnect-chip
    • test-fw-nrfconnect-fem
    • test-fw-nrfconnect-nfc
    • test-fw-nrfconnect-nrf-iot_libmodem-nrf
    • test-fw-nrfconnect-nrf-iot_lwm2m
    • test-fw-nrfconnect-nrf-iot_samples
    • test-fw-nrfconnect-nrf-iot_thingy91
    • test-fw-nrfconnect-nrf-iot_zephyr_lwm2m
    • test-fw-nrfconnect-nrf_crypto
    • test-fw-nrfconnect-ps-main
    • test-fw-nrfconnect-rpc
    • test-fw-nrfconnect-rs
    • test-fw-nrfconnect-tfm
    • test-fw-nrfconnect-thread-main
    • test-low-level
    • test-sdk-audio
    • test-sdk-dfu
    • test-sdk-find-my
    • test-sdk-mcuboot
    • test-sdk-wifi
    • test-secdom-samples-public

Note: This message is automatically posted and updated by the CI

@peknis
Copy link
Contributor

peknis commented Nov 18, 2025

Do the fixes suggested by Copilot and add a changelog entry.

#include <hal/nrf_lrcconf.h>
#endif
#include <nrf_erratas.h>
#if NRF54L_ERRATA_20_PRESENT
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume this is a define? #if defined(?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NRF54L_ERRATA_20_PRESENT can be defined as 1 or 0.

@maje-emb maje-emb force-pushed the esb_mpls_prx_sample branch from fa8a813 to 651511b Compare November 18, 2025 13:42
@maje-emb maje-emb requested a review from a team as a code owner November 18, 2025 13:42
@NordicBuilder NordicBuilder removed the changelog-entry-required Update changelog before merge. Remove label if entry is not needed or already added. label Nov 18, 2025
Copilot AI review requested due to automatic review settings November 19, 2025 09:35
@maje-emb maje-emb force-pushed the esb_mpls_prx_sample branch from 651511b to 2b45e2e Compare November 19, 2025 09:35
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 13 out of 13 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 15 out of 15 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +241 to +243
int err;

while ((err = esb_read_rx_payload(&rx_payload)) == 0) {
Copy link

Copilot AI Nov 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Variable declaration inside a case block without braces can lead to scope issues. Wrap the ESB_EVENT_RX_RECEIVED case in braces to properly scope the 'err' variable and improve code clarity.

Copilot uses AI. Check for mistakes.
Testing LBS service
-------------------

To test the Bluetooth LE LBS service functionality, follow the testing procedure described in the Testing section of the :ref:`peripheral_lbs_testing` sample documentation.
Copy link

Copilot AI Nov 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The reference ':ref:peripheral_lbs_testing' appears incorrect. Based on common NCS documentation patterns, this should likely be ':ref:peripheral_lbs' (without '_testing' suffix) to properly link to the Peripheral LBS sample documentation.

Suggested change
To test the Bluetooth LE LBS service functionality, follow the testing procedure described in the Testing section of the :ref:`peripheral_lbs_testing` sample documentation.
To test the Bluetooth LE LBS service functionality, follow the testing procedure described in the Testing section of the :ref:`peripheral_lbs` sample documentation.

Copilot uses AI. Check for mistakes.
@maje-emb maje-emb force-pushed the esb_mpls_prx_sample branch from c0c6afa to e32c6ee Compare November 19, 2025 10:27
This sample showcases how to use the ESB protocol concurrently with Bluetooth.
It runs the ESB radio in PRX (receiver) mode while simultaneously enabling
the BLE LBS (LED Button Service).

Ref: NCSDK-35772

Signed-off-by: Marcin Jelinski <[email protected]>
Copilot AI review requested due to automatic review settings November 19, 2025 10:32
@maje-emb maje-emb force-pushed the esb_mpls_prx_sample branch from e32c6ee to aba9e70 Compare November 19, 2025 10:32
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 16 out of 16 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

case ESB_EVENT_TX_FAILED:
LOG_DBG("TX FAILED EVENT");
break;
case ESB_EVENT_RX_RECEIVED:
Copy link

Copilot AI Nov 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Variable declaration should be placed at the beginning of the scope or block, not after a case label. Move the int err; declaration before the switch statement or to the beginning of the function to comply with C standards and improve code maintainability.

Copilot uses AI. Check for mistakes.
LOG_DBG("TX FAILED EVENT");
break;
case ESB_EVENT_RX_RECEIVED:
int err;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Copilot is right, either move it to the top, or scope the case in braces {}.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

DNM doc-required PR must not be merged without tech writer approval.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants