RSSI-based jamming detection.

  • 2026 Silicon Laboratories Inc.

This module implements the jamming detection algorithm: sample RSSI per channel every 100 ms over a configurable window (e.g. 150 samples = 15 s), count samples above a configurable RSSI threshold, and mark a channel as jammed when a configurable number of samples in the window are above the threshold.

Modules#

sl_jamming_detection_collection_t

sl_jamming_detection_statistics_t

sl_jamming_detection_config_t

sl_jamming_detection_collection_t.samples

sl_jamming_detection_statistics_t.statistics

sl_jamming_detection_config_t.settings

Macros#

#define
SL_JAMMING_DETECTION_NUM_CHANNELS ZPAL_RADIO_NUM_CHANNELS_LR_CH_CFG_1_2

Max number of channels to monitor.

#define
SL_JAMMING_DETECTION_NUM_STATS_CHANNELS (ZPAL_RADIO_NUM_CHANNELS + ZPAL_RADIO_NUM_CHANNELS_LR_CH_CFG3)
#define
SL_JAMMING_DETECTION_NUM_COLLECTION_CHANNELS (SL_JAMMING_DETECTION_NUM_STATS_CHANNELS)

Typedefs#

typedef zpal_status_t(*
sl_jamming_detection_collection_callback_t)(const sl_jamming_detection_collection_t *collection)
typedef zpal_status_t(*
sl_jamming_detection_report_callback_t)(const sl_jamming_detection_statistics_t *statistics)

Callback invoked when jamming is detected on one or more channels.

Functions#

sl_jamming_detection_init(const sl_jamming_detection_config_t *config)

Initialize the jamming detection module.

sl_jamming_detection_default_config(sl_jamming_detection_config_t *config)

Fill a config with default jamming detection values.

Enable the jamming detection collection.

Set the report interval in seconds.

sl_jamming_detection_set_channel_configuration(uint8_t logical_channel, int8_t threshold, uint8_t critical_number_of_samples)

Set the configuration for a specific channel.

Macro Definition Documentation#

SL_JAMMING_DETECTION_NUM_CHANNELS#

#define SL_JAMMING_DETECTION_NUM_CHANNELS
Value:
ZPAL_RADIO_NUM_CHANNELS_LR_CH_CFG_1_2

Max number of channels to monitor.


SL_JAMMING_DETECTION_NUM_STATS_CHANNELS#

#define SL_JAMMING_DETECTION_NUM_STATS_CHANNELS
Value:
(ZPAL_RADIO_NUM_CHANNELS + ZPAL_RADIO_NUM_CHANNELS_LR_CH_CFG3)

SL_JAMMING_DETECTION_NUM_COLLECTION_CHANNELS#

#define SL_JAMMING_DETECTION_NUM_COLLECTION_CHANNELS
Value:
(SL_JAMMING_DETECTION_NUM_STATS_CHANNELS)

Typedef Documentation#

sl_jamming_detection_collection_callback_t#

typedef zpal_status_t(* sl_jamming_detection_collection_callback_t) (const sl_jamming_detection_collection_t *collection) )(const sl_jamming_detection_collection_t *collection)

sl_jamming_detection_report_callback_t#

typedef zpal_status_t(* sl_jamming_detection_report_callback_t) (const sl_jamming_detection_statistics_t *statistics) )(const sl_jamming_detection_statistics_t *statistics)

Callback invoked when jamming is detected on one or more channels.

Parameters
TypeDirectionArgument NameDescription
[in]statistics

Struct with channel_bitmap and per-channel statistics (threshold, counts).


Function Documentation#

sl_jamming_detection_init#

zpal_status_t sl_jamming_detection_init (const sl_jamming_detection_config_t * config)

Initialize the jamming detection module.

Parameters
TypeDirectionArgument NameDescription
const sl_jamming_detection_config_t *[in]config

Configuration (threshold, samples, detection-callback). Must not be NULL.

Returns

  • ZPAL_STATUS_OK on success, ZPAL_STATUS_INVALID_ARGUMENT if config is NULL or invalid.


sl_jamming_detection_default_config#

zpal_status_t sl_jamming_detection_default_config (sl_jamming_detection_config_t * config)

Fill a config with default jamming detection values.

Parameters
TypeDirectionArgument NameDescription
sl_jamming_detection_config_t *[out]config

Config to fill. Must not be NULL.

Call this before modifying only the fields you need (e.g. callback, threshold), then pass the config to sl_jamming_detection_init().

Returns

  • ZPAL_STATUS_OK on success, ZPAL_STATUS_INVALID_ARGUMENT if config is NULL.


sl_jamming_detection_enable_collection#

zpal_status_t sl_jamming_detection_enable_collection (uint16_t periods)

Enable the jamming detection collection.

Parameters
TypeDirectionArgument NameDescription
uint16_t[in]periods

Duration in periods (100 ms each) to collect samples (0xffff means forever).

Use 0 to disable collection.

Returns

  • ZPAL_STATUS_OK on success


sl_jamming_detection_set_report_interval_sec#

zpal_status_t sl_jamming_detection_set_report_interval_sec (uint16_t interval_sec)

Set the report interval in seconds.

Parameters
TypeDirectionArgument NameDescription
uint16_t[in]interval_sec

Interval between reporting jamming detection events (in seconds).

Use 0 to disable periodic jamming reports (evaluation timing is skipped). Values from 1 to 20 set the interval in seconds; values greater than 20 are invalid.

Returns

  • ZPAL_STATUS_OK on success, ZPAL_STATUS_INVALID_ARGUMENT if invalid argument.


sl_jamming_detection_set_channel_configuration#

zpal_status_t sl_jamming_detection_set_channel_configuration (uint8_t logical_channel, int8_t threshold, uint8_t critical_number_of_samples)

Set the configuration for a specific channel.

Parameters
TypeDirectionArgument NameDescription
uint8_t[in]logical_channel

index.

int8_t[in]threshold

RSSI threshold in dBm.

uint8_t[in]critical_number_of_samples

Number of samples above threshold to trigger jamming detection.

Returns

  • ZPAL_STATUS_OK on success, ZPAL_STATUS_FAIL if failure.