From c1637a24287f19ce13d522ad2ec6d4147e6c0ec5 Mon Sep 17 00:00:00 2001 From: Nordic Builder Date: Fri, 24 Jan 2025 09:01:29 +0000 Subject: [PATCH] nrf_modem: update library SHA: 7ae5babeedd5fd67221d18aa7384d6fa86eb5af5 Automatically created by libmodem Github workflow. Signed-off-by: Nordic Builder --- nrf_modem/include/nrf_modem_dect_phy.h | 1448 +++++++++++------ nrf_modem/include/nrf_modem_softsim.h | 10 +- .../cellular/nrf9120/hard-float/libmodem.a | Bin 129066 -> 128662 bytes .../nrf9120/hard-float/libmodem_log.a | Bin 149744 -> 149340 bytes .../cellular/nrf9120/soft-float/libmodem.a | Bin 128850 -> 128442 bytes .../nrf9120/soft-float/libmodem_log.a | Bin 149520 -> 149120 bytes .../cellular/nrf9160/hard-float/libmodem.a | Bin 129066 -> 128662 bytes .../nrf9160/hard-float/libmodem_log.a | Bin 149744 -> 149340 bytes .../cellular/nrf9160/soft-float/libmodem.a | Bin 128850 -> 128442 bytes .../nrf9160/soft-float/libmodem_log.a | Bin 149520 -> 149120 bytes .../cellular/nrf9230/hard-float/libmodem.a | Bin 106246 -> 105834 bytes .../nrf9230/hard-float/libmodem_log.a | Bin 128346 -> 127942 bytes .../cellular/nrf9230/soft-float/libmodem.a | Bin 106074 -> 105662 bytes .../nrf9230/soft-float/libmodem_log.a | Bin 128166 -> 127762 bytes .../dect_phy/nrf9120/hard-float/libmodem.a | Bin 63016 -> 64642 bytes .../nrf9120/hard-float/libmodem_log.a | Bin 70184 -> 71910 bytes .../dect_phy/nrf9120/soft-float/libmodem.a | Bin 62912 -> 64534 bytes .../nrf9120/soft-float/libmodem_log.a | Bin 70080 -> 71810 bytes 18 files changed, 971 insertions(+), 487 deletions(-) diff --git a/nrf_modem/include/nrf_modem_dect_phy.h b/nrf_modem/include/nrf_modem_dect_phy.h index 50e8553ec1..64ce153aa0 100644 --- a/nrf_modem/include/nrf_modem_dect_phy.h +++ b/nrf_modem/include/nrf_modem_dect_phy.h @@ -42,18 +42,21 @@ extern "C" { /** @brief Minimum LBT measurement period in modem time units. */ #define NRF_MODEM_DECT_LBT_PERIOD_MIN (2 * NRF_MODEM_DECT_SYMBOL_DURATION) +/** @brief Signal to noise ratio not measured. */ +#define NRF_MODEM_DECT_PHY_SNR_NOT_MEASURED -32768 /** @brief Symbol RSSI not measured. */ #define NRF_MODEM_DECT_PHY_RSSI_NOT_MEASURED 0 -/** @brief Temperature not measured. */ -#define NRF_MODEM_DECT_PHY_TEMP_NOT_MEASURED 999 /** @brief RSSI-2 not measured. */ #define NRF_MODEM_DECT_PHY_RSSI2_NOT_MEASURED -32768 -/** @brief Signal to noise ratio not measured. */ -#define NRF_MODEM_DECT_PHY_SNR_NOT_MEASURED -32768 +/** @brief Temperature not measured. */ +#define NRF_MODEM_DECT_PHY_TEMP_NOT_MEASURED 999 +/** @brief Voltage not measured. */ +#define NRF_MODEM_DECT_PHY_VOLTAGE_NOT_MEASURED 0 +/** @brief Special handle to cancel all operations in @ref nrf_modem_dect_phy_cancel */ +#define NRF_MODEM_DECT_PHY_HANDLE_CANCEL_ALL UINT32_MAX /** @brief Buffer status and Channel quality indicator not used. */ #define NRF_MODEM_DECT_PHY_BS_CQI_NOT_USED 0 - /** @brief Unspecified link identifier. */ #define NRF_MODEM_DECT_PHY_LINK_UNSPECIFIED ((struct nrf_modem_dect_phy_link_id){ 0 }) @@ -74,9 +77,9 @@ enum nrf_modem_dect_phy_err { */ NRF_MODEM_DECT_PHY_ERR_UNSUPPORTED_OP = 0x2, /** - * @brief Operation is not executing; it cannot be stopped. + * @brief Operation not found. */ - NRF_MODEM_DECT_PHY_ERR_NO_ONGOING_OP = 0x3, + NRF_MODEM_DECT_PHY_ERR_NOT_FOUND = 0x3, /** * @brief Modem out of memory. */ @@ -135,6 +138,10 @@ enum nrf_modem_dect_phy_err { * @brief Operation not executed because combined operation failed. */ NRF_MODEM_DECT_PHY_ERR_COMBINED_OP_FAILED = 0x100A, + /** + * @brief Operation is not allowed in the current radio mode. + */ + NRF_MODEM_DECT_PHY_ERR_RADIO_MODE_CONFLICT = 0x100B, /** * @brief Unsupported carrier. */ @@ -159,6 +166,10 @@ enum nrf_modem_dect_phy_err { * @brief Invalid parameter. */ NRF_MODEM_DECT_PHY_ERR_INVALID_PARAMETER = 0x6005, + /** + * @brief TX power limit exceeded. + */ + NRF_MODEM_DECT_PHY_ERR_TX_POWER_OVER_MAX_LIMIT = 0x6006, /** * @brief Modem error. */ @@ -177,74 +188,6 @@ enum nrf_modem_dect_phy_err { NRF_MODEM_DECT_PHY_ERR_PROD_LOCK = 0x7003, }; -/** - * @brief Modem PHY configuration. - * - * Includes radio state transition latencies and operating temperature limit. - */ -struct nrf_modem_dect_phy_modem_cfg { - /** - * @brief Maximum operating temperature, in degrees Celsius. - * - * The minimum resolution is 1 degree Celsius. - */ - int16_t temperature_limit; - /** - * @brief Latency of radio state transitions, in modem time units. - */ - struct { - /** - * @brief From Idle to RSSI RF sampling start. - */ - uint32_t idle_to_rssi; - /** - * @brief From RF sampling of RSSI to Idle. - */ - uint32_t rssi_to_idle; - /** - * @brief From Idle to RX RF sampling start. - */ - uint32_t idle_to_rx; - /** - * @brief From RF sampling of RX to Idle. - */ - uint32_t rx_to_idle; - /** - * @brief From RF sampling of RX with RSSI measurement to Idle. - */ - uint32_t rx_rssi_to_idle; - /** - * @brief From RX stop request to RF sampling stop. - */ - uint32_t rx_stop_to_rf_off; - /** - * @brief From RX with RSSI measurement stop request to RF sampling stop. - */ - uint32_t rx_rssi_stop_to_rf_off; - /** - * @brief From Idle to TX RF sample transmission start. - */ - uint32_t idle_to_tx; - /** - * @brief From Idle to TX with LBT monitoring RF sampling start. - */ - uint32_t idle_to_tx_with_lbt; - /** - * @brief From TX RF sample transmission end (with or without LBT) to Idle. - */ - uint32_t tx_to_idle; - /** - * @brief From Idle to TX with LBT monitoring RF sampling start in TX-RX operation. - */ - uint32_t idle_to_txrx_with_lbt; - /** - * @brief From TX RF sample transmission end - * to RX RF sampling start in TX-RX operation. - */ - uint32_t txrx_tx_to_rx; - } latency; -}; - /** * @brief Modem PHY capabilities. */ @@ -261,10 +204,6 @@ struct nrf_modem_dect_phy_capability { * @brief Capability variants. */ struct { - /** - * @brief Power class. - */ - uint8_t power_class; /** * @brief Supported reception capability of spatial stream transmissions. */ @@ -273,10 +212,6 @@ struct nrf_modem_dect_phy_capability { * @brief Reception capability of TX diversity transmission. */ uint8_t rx_tx_diversity; - /** - * @brief Receiver sensitivity in dB. - */ - int8_t rx_gain; /** * @brief Maximum supported modulation and coding scheme for reception. */ @@ -304,6 +239,39 @@ struct nrf_modem_dect_phy_capability { } variant[]; }; +/** + * @brief Band information. + */ +struct nrf_modem_dect_phy_band { + /** + * @brief Band group index. + * + * Value 0 refers to RF frequencies operating near 2GHz and + * value 1 to RF frequencies near 1 GHz. + */ + uint8_t band_group_index; + /** + * @brief Band number. + */ + uint8_t band_number; + /** + * @brief Receiver sensitivity capability in dB. + */ + int8_t rx_gain; + /** + * @brief Power class. + */ + uint8_t power_class; + /** + * @brief Minimum carrier number. + */ + uint16_t min_carrier; + /** + * @brief Maximum carrier number. + */ + uint16_t max_carrier; +}; + /** * @brief Reception mode. */ @@ -351,7 +319,7 @@ enum nrf_modem_dect_phy_rssi_interval { /** * @brief Physical header type 1. * - * See 6.2 of [2]. + * See 6.2 in @ref DECT-SPEC "DECT-2020 NR Part 4". */ struct nrf_modem_dect_phy_hdr_type_1 { /** @@ -395,7 +363,7 @@ struct nrf_modem_dect_phy_hdr_type_1 { /** * @brief Feedback format types. * - * See 6.2.2 of [2]. + * See 6.2.2 in @ref DECT-SPEC "DECT-2020 NR Part 4". */ union nrf_modem_dect_phy_feedback { struct { @@ -451,10 +419,9 @@ union nrf_modem_dect_phy_feedback { /** * @brief Physical header type 2. * - * See 6.2 of [2]. + * See 6.2 in @ref DECT-SPEC "DECT-2020 NR Part 4". */ struct nrf_modem_dect_phy_hdr_type_2 { - /** * @brief Packet length in subslots or slots. */ @@ -568,8 +535,7 @@ enum nrf_modem_dect_phy_hdr_status { /** * @brief Radio link identifier. * - * Radio link identifier identifies a radio link using fields that are available in Physical Layer - * Control Field. + * Identifies a radio link using fields that are available in Physical Layer Control Field. */ struct nrf_modem_dect_phy_link_id { /** @@ -594,7 +560,7 @@ struct nrf_modem_dect_phy_link_id { * element value for the PCC to be accepted. PCC rejection will stop PDC reception and return * processing to synchronization search. * - * See 6.2.1 in @ref DECT-SPEC "DECT-2020 NR Part 4". + * See 6.2.1 in @ref DECT-SPEC "DECT-2020 NR Part 4". */ struct nrf_modem_dect_phy_rx_filter { /** @@ -626,155 +592,6 @@ struct nrf_modem_dect_phy_rx_filter { uint16_t receiver_identity; }; -/** - * @brief Reception parameters (PCC). - */ -struct nrf_modem_dect_phy_rx_pcc_status { - /** - * @brief Synchronization Training Field start time. - * - * Start time of the STF of this reception in modem time. - */ - uint64_t stf_start_time; - /** - * @brief Physical layer control field type. - * - * Valid values are 0 and 1 corresponding types 1 and 2, respectively. - * - * See 6.2.1 in @ref DECT-SPEC "DECT-2020 NR Part 4". - */ - uint8_t phy_type; - /** - * @brief Validity of the physical header. - */ - enum nrf_modem_dect_phy_hdr_status header_status; - /** - * @brief Received signal strength indicator (RSSI-2). - * - * Values are in dBm with 0.5 dBm resolution (Q14.1). - * - * See 8.3 in @ref DECT-SPEC "DECT-2020 NR Part 2". - */ - int16_t rssi_2; - /** - * @brief Received signal to noise indicator (SNR). - * - * Values are dB values with 0.25 dB resolution (Q13.2). - * - * See 8.4 in @ref DECT-SPEC "DECT-2020 NR Part 2". - */ - int16_t snr; -}; - -/** - * @brief Reception parameters (PDC). - */ -struct nrf_modem_dect_phy_rx_pdc_status { - /** - * @brief Received signal strength indicator (RSSI-2). - * - * Values are in dBm with 0.5 dBm resolution (Q14.1). - * - * See 8.3 in @ref DECT-SPEC "DECT-2020 NR Part 2". - */ - int16_t rssi_2; - /** - * @brief Received signal to noise indicator (SNR). - * - * Values are dB values with 0.25 dB resolution (Q13.2). - * - * See 8.4 in @ref DECT-SPEC "DECT-2020 NR Part 2". - */ - int16_t snr; -}; - -/** - * @brief Reception parameters for PCC CRC failures. - */ -struct nrf_modem_dect_phy_rx_pcc_crc_failure { - /** - * @brief Synchronization Training Field start time. - * - * Start time of the STF of this reception in modem time. - */ - uint64_t stf_start_time; - /** - * @brief Received signal strength indicator (RSSI-2). - * - * Values are in dBm with 0.5 dBm resolution (Q14.1). - * - * See 8.3 in @ref DECT-SPEC "DECT-2020 NR Part 2". - */ - int16_t rssi_2; - /** - * @brief Received signal to noise indicator (SNR). - * - * Values are dB values with 0.25 dB resolution (Q13.2). - * - * See 8.4 in @ref DECT-SPEC "DECT-2020 NR Part 2". - */ - int16_t snr; -}; - -/** - * @brief Reception parameters for PDC CRC failures. - */ -struct nrf_modem_dect_phy_rx_pdc_crc_failure { - /** - * @brief Received signal strength indicator (RSSI-2). - * - * Values are in dBm with 0.5 dBm resolution (Q14.1). - * - * If this value is not measured, it is reported as - * @ref NRF_MODEM_DECT_PHY_RSSI2_NOT_MEASURED. - * - * See 8.3 in @ref DECT-SPEC "DECT-2020 NR Part 2". - */ - int16_t rssi_2; - /** - * @brief Received signal to noise indicator (SNR). - * - * Values are dB values with 0.25 dB resolution (Q13.2). - * - * If this value is not measured, it is reported as - * @ref NRF_MODEM_DECT_PHY_SNR_NOT_MEASURED. - * - * See 8.4 in @ref DECT-SPEC "DECT-2020 NR Part 2". - */ - int16_t snr; -}; - -/** - * @brief RSSI measurement. - */ -struct nrf_modem_dect_phy_rssi_meas { - /** - * @brief Measurement start time, in modem time units. - */ - uint64_t meas_start_time; - /** - * @brief Handle of the operation. - */ - uint32_t handle; - /** - * @brief The absolute channel frequency number on which the measurements were made. - */ - uint16_t carrier; - /** - * @brief Number of measurements in @ref meas. - */ - uint16_t meas_len; - /** - * @brief RSSI measurements, in dBm. - * - * If a symbol is measured, its measurement is in the interval [-140, -1]. - * If the measurement is saturated, the measured signal strength is reported - * as a positive integer. If a symbol is not measured, its value is reported - * as @ref NRF_MODEM_DECT_PHY_RSSI_NOT_MEASURED. - */ - int8_t *meas; -}; - /** * @brief RX operation. */ @@ -788,7 +605,7 @@ struct nrf_modem_dect_phy_rx_params { */ uint64_t start_time; /** - * @brief Handle for the RX operation. + * @brief Handle for the operation. * * An application-defined handle for the operation. */ @@ -826,7 +643,7 @@ struct nrf_modem_dect_phy_rx_params { * signal level. * * If the duration of the RX operation is long enough to receive multiple slots, - * `rssi_level` will only be used for the first successful reception. Subsequent receptions + * this value will only be used for the first successful reception. Subsequent receptions * during the same RX operation are initiated using a level that has been adjusted based on * the previous successful reception (slow AGC). */ @@ -860,7 +677,7 @@ struct nrf_modem_dect_phy_tx_params { */ uint64_t start_time; /** - * @brief Handle for the TX operation. + * @brief Handle for the operation. * * An application-defined handle for the operation. */ @@ -908,21 +725,20 @@ struct nrf_modem_dect_phy_tx_params { /** * @brief Listen before talk period in modem time units. * - * The period that the channel needs to be measured "free" or "possible" before initiating - * transmission. - * - * The period is split into up to 64 individual integration periods, each period - * being an integer multiple of a symbol duration (2880 modem time units). All integration - * periods have the same length, maximum 7 symbols. The maximum number of integration - * periods is used. For example, LBT periods of up to 64 symbols will be split into one - * symbol long integration periods, and LBT periods of 65-128 symbols will be split into two - * symbol long integration periods. If necessary the LBT period may be shortened slightly - * to fit these constraints while still not exceeding the given LBT length, e.g. - * a period of 71 symbols will effectively be 70 symbols long (35 periods of 2 symbols). - * - * In case the channel is initially detected "busy" the modem will not continue measuring - * the channel. Instead the modem will report an error. Rescheduling a transmission is left - * up to the higher layer. + * This is the required duration for the channel to be assessed as "free" or "available" + * before starting transmission. This duration is divided into as many as 64 separate + * integration periods, with each period being a multiple of the symbol duration. + * Each integration period is of equal length, up to a maximum of 7 symbols. + * The maximum number of integration periods is utilized. For instance, LBT durations of + * up to 64 symbols are divided into integration periods of one symbol each, and + * LBT durations of 65-128 symbols are divided into two-symbol integration periods. + * The LBT duration may be adjusted slightly to meet these requirements without exceeding + * the specified LBT length, for example, a duration of 71 symbols would be adjusted to + * 70 symbols (35 periods of 2 symbols each). + * + * If the channel is initially found to be "busy," the modem will cease further measurement + * of the channel and will report an error instead. It is then the responsibility of the + * higher layer to reschedule the transmission. * * If set to zero, LBT is not used. Otherwise the acceptable value range is * [@ref NRF_MODEM_DECT_LBT_PERIOD_MIN, @ref NRF_MODEM_DECT_LBT_PERIOD_MAX]. @@ -982,7 +798,7 @@ struct nrf_modem_dect_phy_rssi_params { */ uint64_t start_time; /** - * @brief Handle for the RSSI operation. + * @brief Handle for the operation. * * An application-defined handle for the operation. */ @@ -1007,69 +823,256 @@ struct nrf_modem_dect_phy_rssi_params { }; /** - * @brief Link configuration parameters. + * @brief Radio modes. + * + * Different radio modes yield different performance and power consumption. */ -struct nrf_modem_dect_phy_link_config_params { +enum nrf_modem_dect_phy_radio_mode { /** - * @brief Primary link. + * @brief Low latency. * - * The modem tracks the frequency of the primary link for Automatic Frequency Control - * purposes. This frequency is propagated down the tree, that is, the Radio Device uses - * this frequency for all its radio operations except those directed to secondary links. + * This mode has the lowest latency, the best RX/TX switching performance, + * and the highest power consumption. This is the only mode that supports + * starting operations immediately, that is, operations whose configured + * start time is zero. */ - struct nrf_modem_dect_phy_link_id primary_link_id; + NRF_MODEM_DECT_PHY_RADIO_MODE_LOW_LATENCY, /** - * @brief Number of secondary links. + * @brief Low latency with standby. + * + * This mode has the same RX/TX switching performance as the low latency mode, + * but higher operation start-up latency due to radio entering standby mode + * when possible. Power consumption is thus lower compared to the low latency mode. */ - uint8_t secondary_link_count; + NRF_MODEM_DECT_PHY_RADIO_MODE_LOW_LATENCY_WITH_STANDBY, /** - * @brief Secondary links. + * @brief Listen-before-talk disabled, with standby. * - * The modem tracks the frequency of secondary links for Automatic Frequency Control - * purposes. When communicating with a secondary link the modem compensates the frequency - * difference between the secondary link and the primary link. + * This mode has the lowest power consumption, due the to modem entering + * standby mode when possible and not using Listen-Before-Talk, at the cost + * of higher start-up latency and worse RX/TX switching performance compared + * to the other radio modes. */ - struct nrf_modem_dect_phy_link_id secondary_link_ids[]; + NRF_MODEM_DECT_PHY_RADIO_MODE_NON_LBT_WITH_STANDBY, + /** + * @brief Number of radio modes available. + */ + NRF_MODEM_DECT_PHY_RADIO_MODE_COUNT, }; /** - * @brief DECT PHY callbacks. - * - * Callbacks for user operations and incoming data. - * - * @note - * All callbacks are executed in ISR. + * @brief Radio configuration operation. */ -struct nrf_modem_dect_phy_callbacks { +struct nrf_modem_dect_phy_radio_config_params { /** - * @brief DECT PHY initialization callback. + * @brief Operation start time as modem time. * - * The @p err parameter indicates the result of the operation. - * It can be one of the following values: + * If zero, the operation will be executed immediately. * - * - @ref NRF_MODEM_DECT_PHY_SUCCESS - * - @ref NRF_MODEM_DECT_PHY_ERR_NOT_ALLOWED - * - @ref NRF_MODEM_DECT_PHY_ERR_TEMP_HIGH - * - @ref NRF_MODEM_DECT_PHY_ERR_PROD_LOCK + * This kind of scheduling can only be done when the modem is idle. + */ + uint64_t start_time; + /** + * @brief Handle for the operation. * - * @param[in] time Modem time, in modem time units. - * @param temp Temperature in degrees Celsius. - * @param err Operation result. - * @param[in] cfg Modem configuration. + * An application-defined handle for the operation. */ - void (*init)(const uint64_t *time, int16_t temp, enum nrf_modem_dect_phy_err err, - const struct nrf_modem_dect_phy_modem_cfg *cfg); + uint32_t handle; + /** + * @brief Desired radio mode. + */ + enum nrf_modem_dect_phy_radio_mode radio_mode; +}; +/** + * @brief DECT PHY latency information. + * + * Includes radio state transition and configuration latencies. + */ +struct nrf_modem_dect_phy_latency_info { /** - * @brief Callback to indicate the completion of RX, TX and RSSI measurement operations. - * - * The @p err parameter indicates the result of the operation. - * It can be one of the following values: + * @brief Radio mode specific latencies. * - * - @ref NRF_MODEM_DECT_PHY_SUCCESS - * - @ref NRF_MODEM_DECT_PHY_ERR_LBT_CHANNEL_BUSY - * - @ref NRF_MODEM_DECT_PHY_ERR_NO_MEMORY - * - @ref NRF_MODEM_DECT_PHY_ERR_NOT_ALLOWED + * These latencies must be used according to the currently active radio mode + * and operation type (immediate or scheduled). + */ + struct { + /** + * @brief Scheduled operation transition delay. + * + * The delay between transitioning from one scheduled operation to the next. + * + * The start time of a scheduled operation must account for the start time + * of the previous operation, plus its duration, plus the operation + * transition delay in the current radio mode. + */ + uint32_t scheduled_operation_transition; + /** + * @brief Additional delay for scheduled operations. + * + * Used together with the values in @ref operation to calculate the total + * operation start latency for scheduled operations. + */ + uint32_t scheduled_operation_startup; + /** + * @brief Delay in transitioning from one radio mode to another. + */ + uint32_t radio_mode_transition[NRF_MODEM_DECT_PHY_RADIO_MODE_COUNT]; + } radio_mode[NRF_MODEM_DECT_PHY_RADIO_MODE_COUNT]; + + /** + * @brief Duration of radio state transitions. + * + * Immediate operations can use these values directly. + * Scheduled operations must account for this value plus the value + * of @ref scheduled_operation_startup. + */ + struct { + struct { + /** + * @brief Receive operation start latency (IDLE to RF ON). + */ + uint32_t idle_to_active; + /** + * @brief RSSI operation end latency (RF OFF to IDLE). + */ + uint32_t active_to_idle_rssi; + /** + * @brief RX operation end latency (RF OFF to IDLE). + */ + uint32_t active_to_idle_rx; + /** + * @brief RX with RSSI operation end latency (RF OFF to IDLE). + */ + uint32_t active_to_idle_rx_rssi; + /** + * @brief Operation stop latency (STOP_REQ to RF OFF). + */ + uint32_t stop_to_rf_off; + } receive; + struct { + /** + * @brief Transmit operation start latency (IDLE to RF ON). + */ + uint32_t idle_to_active; + /** + * @brief Transmit operation end latency (RF OFF to IDLE). + */ + uint32_t active_to_idle; + } transmit; + } operation; + + /** + * @brief Duration of DECT PHY stack operations. + */ + struct { + /** + * @brief Duration of DECT PHY stack initialization. + * + * Duration of @ref nrf_modem_dect_phy_init(). + */ + uint32_t initialization; + /** + * @brief Duration of DECT PHY stack deinitialization. + * + * Duration of @ref nrf_modem_dect_phy_deinit(). + */ + uint32_t deinitialization; + /** + * @brief Duration of DECT PHY stack configuration. + * + * Duration of @ref nrf_modem_dect_phy_configure(). + */ + uint32_t configuration; + /** + * @brief Duration of DECT PHY stack activation. + * + * Duration of @ref nrf_modem_dect_phy_activate(). + */ + uint32_t activation; + /** + * @brief Duration of DECT PHY stack deactivation. + * + * Duration of @ref nrf_modem_dect_phy_deactivate(). + */ + uint32_t deactivation; + } stack; +}; + +/** + * @brief Link configuration parameters. + */ +struct nrf_modem_dect_phy_link_config_params { + /** + * @brief Primary link. + * + * The modem tracks the frequency of the primary link for Automatic Frequency Control + * purposes. This frequency is propagated down the tree, that is, the Radio Device uses + * this frequency for all its radio operations except those directed to secondary links. + */ + struct nrf_modem_dect_phy_link_id primary_link_id; + /** + * @brief Number of secondary links. + */ + uint8_t secondary_link_count; + /** + * @brief Secondary links. + * + * The modem tracks the frequency of secondary links for Automatic Frequency Control + * purposes. When communicating with a secondary link the modem compensates the frequency + * difference between the secondary link and the primary link. + */ + struct nrf_modem_dect_phy_link_id secondary_link_ids[]; +}; + +/** Events */ + +/** + * @brief Initialization event. + */ +struct nrf_modem_dect_phy_init_event { + /** + * @brief Operation result. + * + * Can be one of the following values: + * + * - @ref NRF_MODEM_DECT_PHY_SUCCESS + * - @ref NRF_MODEM_DECT_PHY_ERR_NOT_ALLOWED + * - @ref NRF_MODEM_DECT_PHY_ERR_TEMP_HIGH + * - @ref NRF_MODEM_DECT_PHY_ERR_PROD_LOCK + */ + enum nrf_modem_dect_phy_err err; + /** + * @brief Temperature in degrees Celsius. + */ + int16_t temp; + /** + * @brief Voltage in millivolts. + */ + uint16_t voltage; + /** + * @brief Operating temperature limit, in degrees Celsius. + */ + uint16_t temperature_limit; +}; + +/** + * @brief Operation complete event. + */ +struct nrf_modem_dect_phy_op_complete_event { + /** + * @brief Handle of the operation. + */ + uint32_t handle; + /** + * @brief Operation result. + * + * Can be one of the following values: + * + * - @ref NRF_MODEM_DECT_PHY_SUCCESS + * - @ref NRF_MODEM_DECT_PHY_ERR_LBT_CHANNEL_BUSY + * - @ref NRF_MODEM_DECT_PHY_ERR_NO_MEMORY + * - @ref NRF_MODEM_DECT_PHY_ERR_NOT_ALLOWED * - @ref NRF_MODEM_DECT_PHY_OK_WITH_HARQ_RESET * - @ref NRF_MODEM_DECT_PHY_ERR_OP_START_TIME_LATE * - @ref NRF_MODEM_DECT_PHY_ERR_LBT_START_TIME_LATE @@ -1089,163 +1092,574 @@ struct nrf_modem_dect_phy_callbacks { * - @ref NRF_MODEM_DECT_PHY_ERR_INVALID_DURATION * - @ref NRF_MODEM_DECT_PHY_ERR_INVALID_PARAMETER * - @ref NRF_MODEM_DECT_PHY_ERR_TEMP_HIGH - * - * @param[in] time Modem time, in modem time units. - * @param temp Temperature in degrees Celsius. - * @param err Operation result. - * @param handle Operation handle. */ - void (*op_complete)(const uint64_t *time, int16_t temperature, - enum nrf_modem_dect_phy_err err, uint32_t handle); + enum nrf_modem_dect_phy_err err; + /** + * @brief Temperature in degrees Celsius. + */ + int16_t temp; + /** + * @brief Voltage in millivolts. + */ + uint16_t voltage; +}; +/** + * @brief RSSI measurement event. + */ +struct nrf_modem_dect_phy_rssi_event { /** - * @brief Callback to receive RSSI measurements. - * - * Callback function to receive the RSSI measurements requested - * with @ref nrf_modem_dect_phy_rssi or @ref nrf_modem_dect_phy_rx. + * @brief Handle of the operation. + */ + uint32_t handle; + /** + * @brief Measurement start time, in modem time units. + */ + uint64_t meas_start_time; + /** + * @brief The absolute channel frequency number on which the measurements were made. + */ + uint16_t carrier; + /** + * @brief Number of measurements in @ref meas. + */ + uint16_t meas_len; + /** + * @brief RSSI measurements, in dBm. * - * @param[in] time Modem time, in modem time units. - * @param[in] meas RSSI measurement. + * If a symbol is measured, its measurement is in the interval [-140, -1]. + * If the measurement is saturated, the measured signal strength is reported + * as a positive integer. If a symbol is not measured, its value is reported + * as @ref NRF_MODEM_DECT_PHY_RSSI_NOT_MEASURED. */ - void (*rssi)(const uint64_t *time, const struct nrf_modem_dect_phy_rssi_meas *meas); + int8_t *meas; +}; +struct nrf_modem_dect_phy_cancel_event { /** - * @brief Callback for @ref nrf_modem_dect_phy_rx_stop. + * @brief Handle of the operation. + */ + uint32_t handle; + /** + * @brief Operation result. * - * When an RX operation is stopped, the operation complete callback will be called - * once the operation has fully stopped. That is, it is possible that the - * operation hasn't been fully stopped at the time this callback is called. - - * The @p err parameter indicates the result of the operation. - * It can be one of the following values: + * Can be one of the following values: * * - @ref NRF_MODEM_DECT_PHY_SUCCESS * - @ref NRF_MODEM_DECT_PHY_ERR_UNSUPPORTED_OP - * - @ref NRF_MODEM_DECT_PHY_ERR_NO_ONGOING_OP + * - @ref NRF_MODEM_DECT_PHY_ERR_NOT_FOUND * - @ref NRF_MODEM_DECT_PHY_ERR_NOT_ALLOWED + */ + enum nrf_modem_dect_phy_err err; +}; + +/** + * @brief PCC reception event. + */ +struct nrf_modem_dect_phy_pcc_event { + /** + * @brief Synchronization Training Field start time. + * + * Start time of the STF of this reception in modem time. + */ + uint64_t stf_start_time; + /** + * @brief Handle for the operation. + */ + uint32_t handle; + /** + * @brief Validity of the physical header. + */ + enum nrf_modem_dect_phy_hdr_status header_status; + /** + * @brief Physical layer control field type. + * + * Valid values are 0 and 1 corresponding types 1 and 2, respectively. + * + * See 6.2.1 in @ref DECT-SPEC "DECT-2020 NR Part 4". + */ + uint8_t phy_type; + /** + * @brief PHY header. + */ + union nrf_modem_dect_phy_hdr hdr; + /** + * @brief Received signal strength indicator (RSSI-2). + * + * Values are in dBm with 0.5 dBm resolution (Q14.1). + * + * See 8.3 in @ref DECT-SPEC "DECT-2020 NR Part 2". + */ + int16_t rssi_2; + /** + * @brief Received signal to noise indicator (SNR). + * + * Values are dB values with 0.25 dB resolution (Q13.2). + * + * See 8.4 in @ref DECT-SPEC "DECT-2020 NR Part 2". + */ + int16_t snr; + /** + * @brief Transaction ID. * - * @param[in] time Modem time, in modem time units. - * @param err Operation result. - * @param handle Operation handle. + * Used to map PCC data with corresponding PDC data. */ - void (*rx_stop)(const uint64_t *time, enum nrf_modem_dect_phy_err err, uint32_t handle); + uint16_t transaction_id; +}; +/** + * @brief PCC reception CRC failure event. + */ +struct nrf_modem_dect_phy_pcc_crc_failure_event { + /** + * @brief Synchronization Training Field start time. + * + * Start time of the STF of this reception in modem time. + */ + uint64_t stf_start_time; + /** + * @brief Handle for the operation. + */ + uint32_t handle; + /** + * @brief Received signal strength indicator (RSSI-2). + * + * Values are in dBm with 0.5 dBm resolution (Q14.1). + * + * See 8.3 in @ref DECT-SPEC "DECT-2020 NR Part 2". + */ + int16_t rssi_2; /** - * @brief Callback for control channel reception. + * @brief Received signal to noise indicator (SNR). + * + * Values are dB values with 0.25 dB resolution (Q13.2). * - * @param[in] time Modem time, in modem time units. - * @param status Reception data. - * @param[in] hdr Physical layer control header. + * See 8.4 in @ref DECT-SPEC "DECT-2020 NR Part 2". */ - void (*pcc)(const uint64_t *time, const struct nrf_modem_dect_phy_rx_pcc_status *status, - const union nrf_modem_dect_phy_hdr *hdr); + int16_t snr; + /** + * @brief Transaction ID. + * + * Used to map PCC data with corresponding PDC data. + */ + uint16_t transaction_id; +}; + +/** + * @brief PDC reception event. + */ +struct nrf_modem_dect_phy_pdc_event { + /** + * @brief Handle for the operation. + */ + uint32_t handle; + /** + * @brief Received signal strength indicator (RSSI-2). + * + * Values are in dBm with 0.5 dBm resolution (Q14.1). + * + * See 8.3 in @ref DECT-SPEC "DECT-2020 NR Part 2". + */ + int16_t rssi_2; + /** + * @brief Received signal to noise indicator (SNR). + * + * Values are dB values with 0.25 dB resolution (Q13.2). + * + * See 8.4 in @ref DECT-SPEC "DECT-2020 NR Part 2". + */ + int16_t snr; + /** + * @brief Transaction ID. + * + * Used to map PCC data with corresponding PDC data. + */ + uint16_t transaction_id; + /** + * @brief Received data payload. + */ + void *data; + /** + * @brief Data payload length, in bytes. + */ + size_t len; +}; +/** + * @brief PDC CRC failure event. + */ +struct nrf_modem_dect_phy_pdc_crc_failure_event { + /** + * @brief Handle for the operation. + */ + uint32_t handle; + /** + * @brief Received signal strength indicator (RSSI-2). + * + * Values are in dBm with 0.5 dBm resolution (Q14.1). + * + * If this value is not measured, it is reported as + * @ref NRF_MODEM_DECT_PHY_RSSI2_NOT_MEASURED. + * + * See 8.3 in @ref DECT-SPEC "DECT-2020 NR Part 2". + */ + int16_t rssi_2; /** - * @brief Callback for CRC failures on the physical control channel. + * @brief Received signal to noise indicator (SNR). + * + * Values are dB values with 0.25 dB resolution (Q13.2). * - * @param[in] time Modem time, in modem time units. - * @param[in] crc_failure CRC failure information. + * If this value is not measured, it is reported as + * @ref NRF_MODEM_DECT_PHY_SNR_NOT_MEASURED. + * + * See 8.4 in @ref DECT-SPEC "DECT-2020 NR Part 2". */ - void (*pcc_crc_err)(const uint64_t *time, - const struct nrf_modem_dect_phy_rx_pcc_crc_failure *crc_failure); + int16_t snr; + /** + * @brief Transaction ID. + * + * Used to map PCC data with corresponding PDC data. + */ + uint16_t transaction_id; +}; +/** + * @brief DECT PHY stack configuration event. + */ +struct nrf_modem_dect_phy_configure_event { /** - * @brief Callback for data channel reception. + * @brief Operation result. * - * @param[in] time Modem time, in modem time units. - * @param status Reception data. - * @param[in] data Data received. - * @param len Size of received data. + * Can be one of the following values: + * + * - @ref NRF_MODEM_DECT_PHY_SUCCESS + * - @ref NRF_MODEM_DECT_PHY_ERR_NOT_ALLOWED + * - @ref NRF_MODEM_DECT_PHY_ERR_INVALID_PARAMETER + */ + enum nrf_modem_dect_phy_err err; + /** + * @brief Temperature in degrees Celsius. + */ + int16_t temp; + /** + * @brief Voltage in millivolts. */ - void (*pdc)(const uint64_t *time, const struct nrf_modem_dect_phy_rx_pdc_status *status, - const void *data, uint32_t len); + uint16_t voltage; +}; +/** + * @brief Radio configuration event. + */ +struct nrf_modem_dect_phy_radio_config_event { + /** + * @brief Handle of the operation. + */ + uint32_t handle; /** - * @brief Callback for CRC failures on the physical data channel. + * @brief Operation result. * - * @param[in] time Modem time, in modem time units. - * @param[in] crc_failure CRC failure information. + * Can be one of the following values: + * + * - @ref NRF_MODEM_DECT_PHY_SUCCESS */ - void (*pdc_crc_err)(const uint64_t *time, - const struct nrf_modem_dect_phy_rx_pdc_crc_failure *crc_failure); + enum nrf_modem_dect_phy_err err; +}; +struct nrf_modem_dect_phy_link_config_event { /** - * @brief Callback for @ref nrf_modem_dect_phy_link_config. + * @brief Operation result. * - * The @p err parameter indicates the result of the operation. - * It can be one of the following values: + * Can be one of the following values: * * - @ref NRF_MODEM_DECT_PHY_SUCCESS * - @ref NRF_MODEM_DECT_PHY_ERR_NO_MEMORY * - @ref NRF_MODEM_DECT_PHY_ERR_NOT_ALLOWED * - @ref NRF_MODEM_DECT_PHY_ERR_INVALID_PARAMETER - * - * @param[in] time Modem time, in modem time units. - * @param err Operation result. */ - void (*link_config)(const uint64_t *time, enum nrf_modem_dect_phy_err err); + enum nrf_modem_dect_phy_err err; +}; +/** + * @brief Time get event. + */ +struct nrf_modem_dect_phy_time_get_event { /** - * @brief Callback for @ref nrf_modem_dect_phy_time_get. + * @brief Operation result. * - * The @p err parameter indicates the result of the operation. - * It can be one of the following values: + * Can be one of the following values: * * - @ref NRF_MODEM_DECT_PHY_SUCCESS + */ + enum nrf_modem_dect_phy_err err; +}; + +/** + * @brief Capability get event. + */ +struct nrf_modem_dect_phy_capability_get_event { + /** + * @brief Operation result. + * + * Can be one of the following values: * - * @param[in] time Modem time, in modem time units. - * @param err Operation result. + * - @ref NRF_MODEM_DECT_PHY_SUCCESS + */ + enum nrf_modem_dect_phy_err err; + /** + * @brief PHY capability. */ - void (*time_get)(const uint64_t *time, enum nrf_modem_dect_phy_err err); + struct nrf_modem_dect_phy_capability *capability; +}; +/** + * @brief Band information event. + */ +struct nrf_modem_dect_phy_band_get_event { /** - * @brief Callback for @ref nrf_modem_dect_phy_capability_get. + * @brief Operation result. * - * The @p err parameter indicates the result of the operation. - * It can be one of the following values: + * Can be one of the following values: * * - @ref NRF_MODEM_DECT_PHY_SUCCESS + */ + enum nrf_modem_dect_phy_err err; + /** + * @brief Supported bands as a bitmap. + */ + uint32_t supported_bands; + /** + * @brief Number of elements in @c band. + */ + uint32_t band_count; + /** + * @brief Band information. + */ + struct nrf_modem_dect_phy_band *band; +}; + +/** + * @brief STF cover sequence control event. + */ +struct nrf_modem_dect_phy_stf_control_event { + /** + * @brief Operation result. + * + * Can be one of the following values: * - * @param[in] time Modem time, in modem time units. - * @param err Operation result. - * @param[in] capability PHY capabilities. + * - @ref NRF_MODEM_DECT_PHY_SUCCESS + * - @ref NRF_MODEM_DECT_PHY_ERR_NOT_ALLOWED */ - void (*capability_get)(const uint64_t *time, enum nrf_modem_dect_phy_err err, - const struct nrf_modem_dect_phy_capability *capability); + enum nrf_modem_dect_phy_err err; +}; +/** + * @brief Deinitialization event. + */ +struct nrf_modem_dect_phy_deinit_event { /** - * @brief Callback for @ref nrf_modem_dect_phy_stf_cover_seq_control. + * @brief Operation result. * - * The @p err parameter indicates the result of the operation. - * It can be one of the following values: + * Can be one of the following values: * * - @ref NRF_MODEM_DECT_PHY_SUCCESS * - @ref NRF_MODEM_DECT_PHY_ERR_NOT_ALLOWED + */ + enum nrf_modem_dect_phy_err err; +}; + +/** + * @brief Activation event. + */ +struct nrf_modem_dect_phy_activate_event { + /** + * @brief Operation result. * - * @param[in] time Modem time, in modem time units. - * @param err Operation result. + * Can be one of the following values: + * + * - @ref NRF_MODEM_DECT_PHY_SUCCESS + * - @ref NRF_MODEM_DECT_PHY_ERR_NOT_ALLOWED + */ + enum nrf_modem_dect_phy_err err; + /** + * @brief Temperature in degrees Celsius. + */ + int16_t temp; + /** + * @brief Voltage in millivolts. */ - void (*stf_cover_seq_control)(const uint64_t *time, enum nrf_modem_dect_phy_err err); + uint16_t voltage; +}; +/** + * @brief Deactivation event. + */ +struct nrf_modem_dect_phy_deactivate_event { /** - * @brief Callback for @ref nrf_modem_dect_phy_deinit. + * @brief Operation result. * - * The @p err parameter indicates the result of the operation. - * It can be one of the following values: + * Can be one of the following values: * * - @ref NRF_MODEM_DECT_PHY_SUCCESS * - @ref NRF_MODEM_DECT_PHY_ERR_NOT_ALLOWED + */ + enum nrf_modem_dect_phy_err err; +}; + +/** + * @brief Latency event. + */ +struct nrf_modem_dect_phy_latency_info_event { + /** + * @brief Operation result. + * + * Can be one of the following values: * - * @param[in] time Modem time, in modem time units. - * @param err Operation result. + * - @ref NRF_MODEM_DECT_PHY_SUCCESS + * - @ref NRF_MODEM_DECT_PHY_ERR_NOT_ALLOWED + */ + enum nrf_modem_dect_phy_err err; + /** + * @brief PHY latency info. + */ + struct nrf_modem_dect_phy_latency_info *latency_info; +}; + +enum nrf_modem_dect_phy_event_id { + /** + * @brief Event to indicate the completion of the DECT PHY stack initialization. + */ + NRF_MODEM_DECT_PHY_EVT_INIT, + /** + * @brief Event to indicate the completion of the DECT PHY stack deinitialization. + */ + NRF_MODEM_DECT_PHY_EVT_DEINIT, + /** + * @brief Event to indicate the completion of the DECT PHY stack configuration. */ - void (*deinit)(const uint64_t *time, enum nrf_modem_dect_phy_err err); + NRF_MODEM_DECT_PHY_EVT_CONFIGURE, + /** + * @brief Event to indicate the completion of radio mode configuration. + */ + NRF_MODEM_DECT_PHY_EVT_RADIO_CONFIG, + /** + * @brief Event to indicate the completion of the DECT PHY stack activation. + */ + NRF_MODEM_DECT_PHY_EVT_ACTIVATE, + /** + * @brief Event to indicate the completion of the DECT PHY stack deactivation. + */ + NRF_MODEM_DECT_PHY_EVT_DEACTIVATE, + /** + * @brief Event to indicate the completion of RX, TX and RSSI measurement operations. + */ + NRF_MODEM_DECT_PHY_EVT_COMPLETED, + /** + * @brief Event to indicate the cancellation of an operation. + */ + NRF_MODEM_DECT_PHY_EVT_CANCELED, + /** + * @brief Event carrying RSSI measurements. + */ + NRF_MODEM_DECT_PHY_EVT_RSSI, + /** + * @brief Event for control channel reception. + */ + NRF_MODEM_DECT_PHY_EVT_PCC, + /** + * @brief Event for CRC failures on the physical control channel. + */ + NRF_MODEM_DECT_PHY_EVT_PCC_ERROR, + /** + * @brief Event for data channel reception. + */ + NRF_MODEM_DECT_PHY_EVT_PDC, + /** + * @brief Event for CRC failures on the physical data channel. + */ + NRF_MODEM_DECT_PHY_EVT_PDC_ERROR, + /** + * @brief Event carrying modem time. + */ + NRF_MODEM_DECT_PHY_EVT_TIME, + /** + * @brief Event carrying capabilities. + */ + NRF_MODEM_DECT_PHY_EVT_CAPABILITY, + /** + * @brief Event carrying band information. + */ + NRF_MODEM_DECT_PHY_EVT_BANDS, + /** + * @brief Event carrying latency information. + */ + NRF_MODEM_DECT_PHY_EVT_LATENCY, + /** + * @brief Event to indicate the completion of link configuration. + */ + NRF_MODEM_DECT_PHY_EVT_LINK_CONFIG, + /** + * @brief Event to indicate the completion of STF configuration. + */ + NRF_MODEM_DECT_PHY_EVT_STF_CONFIG, +}; + +/** + * @brief DECT PHY event. + */ +struct nrf_modem_dect_phy_event { + /** + * @brief Event ID. + */ + enum nrf_modem_dect_phy_event_id id; + /** + * @brief Modem time, in modem time units. + */ + uint64_t time; + /** + * @brief Event data. + */ + union { + struct nrf_modem_dect_phy_init_event init; + struct nrf_modem_dect_phy_deinit_event deinit; + struct nrf_modem_dect_phy_activate_event activate; + struct nrf_modem_dect_phy_deactivate_event deactivate; + struct nrf_modem_dect_phy_configure_event configure; + struct nrf_modem_dect_phy_radio_config_event radio_config; + struct nrf_modem_dect_phy_op_complete_event op_complete; + struct nrf_modem_dect_phy_rssi_event rssi; + struct nrf_modem_dect_phy_cancel_event cancel; + struct nrf_modem_dect_phy_pcc_event pcc; + struct nrf_modem_dect_phy_pcc_crc_failure_event pcc_crc_err; + struct nrf_modem_dect_phy_pdc_event pdc; + struct nrf_modem_dect_phy_pdc_crc_failure_event pdc_crc_err; + struct nrf_modem_dect_phy_time_get_event time_get; + struct nrf_modem_dect_phy_capability_get_event capability_get; + struct nrf_modem_dect_phy_band_get_event band_get; + struct nrf_modem_dect_phy_latency_info_event latency_get; + struct nrf_modem_dect_phy_stf_control_event stf_cover_seq_control; + struct nrf_modem_dect_phy_link_config_event link_config; + }; }; /** - * @brief Configuration for DECT PHY interface. + * @brief DECT PHY configuration parameters. */ -struct nrf_modem_dect_phy_init_params { +struct nrf_modem_dect_phy_config_params { + /** + * @brief Band group index. + * + * Allowed values: 0 or 1. + * Value 0 refers to RF frequencies operating near 2GHz and + * value 1 to RF frequencies near 1 GHz. + */ + uint8_t band_group_index; + /** + * @brief Number of HARQ processes. + * + * The HARQ reception buffer is divided equally between processes. + * Supported values: 1, 2, 4, 8. + */ + uint8_t harq_rx_process_count; /** * @brief HARQ RX buffer expiry time, in microseconds. * @@ -1255,113 +1669,119 @@ struct nrf_modem_dect_phy_init_params { * Maximum supported value: 5000000. */ uint32_t harq_rx_expiry_time_us; - struct { - /** - * @brief Number of HARQ processes. - * - * The HARQ reception buffer is divided equally between processes. - * Supported values: 1, 2, 4, 8. - */ - uint8_t harq_rx_process_count : 4; - /** - * @brief Reserved for future use. - */ - uint8_t reserved : 3; - /** - * @brief Band 4 support. - * - * 1 - Enables band 4 operation. - * 0 - Disables band 4 operation. - * - * Band 4 support is only available for nRF9151 devices. - * - * @warning - * When operating on band 4, carriers outside the [525, 551] range - * shall not be used as they interfere with other radio devices, - * including LTE devices, car keys, and others. - * - * @note - * Band 4 support may only be toggled when de-initialized. - * Toggling band 4 support when already initialized is not supported. - */ - uint8_t band4_support : 1; - }; }; /** - * @brief Set application callbacks for PHY operations. + * @brief Application handler prototype for PHY events. + */ +typedef void (*nrf_modem_dect_phy_event_handler_t)(const struct nrf_modem_dect_phy_event *event); + +/** + * @brief Set the application event handler for PHY events. * - * The application must set the callbacks for PHY operations before attempting other operations. - * That includes PHY initialization itself, that is, nrf_modem_dect_phy_init(). + * The application must set the handler for events coming the DECT PHY before attempting + * other operations. * - * @param cb Application callbacks. + * @param handler Event handler. * * @return 0 On success. - * @retval -NRF_EFAULT @p cb is @c NULL. - * @retval -NRF_EINVAL One of the fields in @p cb is @c NULL. + * @retval -NRF_EFAULT @p handler is @c NULL. */ -int nrf_modem_dect_phy_callback_set(const struct nrf_modem_dect_phy_callbacks *cb); +int nrf_modem_dect_phy_event_handler_set(nrf_modem_dect_phy_event_handler_t handler); /** * @brief Retrieve DECT PHY capabilities. * - * This operation is asynchronous. The result of the operation is sent to the - * @ref nrf_modem_dect_phy_callbacks.capability_get callback. + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_CAPABILITY event. * * @return 0 On success. * @retval -NRF_EPERM The Modem library is not initialized. - * @retval -NRF_EFAULT Callback configuration is invalid. + * @retval -NRF_EFAULT No event handler is set. * @retval -NRF_ENOMEM Not enough shared memory for this request. */ int nrf_modem_dect_phy_capability_get(void); /** - * @brief Initialize DECT PHY interface. + * @brief Initialize the DECT PHY interface. * - * This operation is asynchronous. The result of the operation is sent to the - * @ref nrf_modem_dect_phy_callbacks.init callback. + * Initialize the DECT PHY interface and associated hardware resources. * - * @param[in] params Configuration parameters. + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_INIT event. * * @retval 0 Request was sent to modem. * @retval -NRF_EPERM The Modem library is not initialized. - * @retval -NRF_EFAULT Callback configuration is invalid, or @p params is @c NULL. + * @retval -NRF_EFAULT No event handler is set. * @retval -NRF_ENOMEM Not enough shared memory for this request. */ -int nrf_modem_dect_phy_init(const struct nrf_modem_dect_phy_init_params *params); +int nrf_modem_dect_phy_init(void); /** - * @brief De-initialize DECT PHY interface. + * @brief Deinitialize the DECT PHY interface. * - * Cancel all operations and de-initialize the PHY. + * Deinitialize the DECT PHY interface and all associated hardware resources. + * This implicitly cancels all operations, both executing or scheduled for execution. * - * This operation is asynchronous. The result of the operation is sent to the - * @ref nrf_modem_dect_phy_callbacks.deinit callback. + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_DEINIT event. * * @retval 0 Request was sent to modem. * @retval -NRF_EPERM The Modem library is not initialized. - * @retval -NRF_EFAULT Callback configuration is invalid. + * @retval -NRF_EFAULT No event handler is set. * @retval -NRF_ENOMEM Not enough shared memory for this request. */ int nrf_modem_dect_phy_deinit(void); +/** + * @brief Activate the DECT PHY software stack in given radio mode. + * + * Before each activation, the DECT PHY software stack must be configured using + * @ref nrf_modem_dect_phy_configure. + * + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_ACTIVATE event. + * + * @param mode Desired radio mode. + * + * @retval 0 Request was sent to modem. + * @retval -NRF_EPERM The Modem library is not initialized. + * @retval -NRF_EFAULT No event handler is set. + * @retval -NRF_ENOMEM Not enough shared memory for this request. + */ +int nrf_modem_dect_phy_activate(enum nrf_modem_dect_phy_radio_mode mode); + +/** + * @brief Deactivate the DECT PHY software stack. + * + * Deactivation implicitly cancels all operations, both executing or scheduled for execution. + * + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_DEACTIVATE event. + * + * @retval 0 Request was sent to modem. + * @retval -NRF_EPERM The Modem library is not initialized. + * @retval -NRF_EFAULT No event handler is set. + * @retval -NRF_ENOMEM Not enough shared memory for this request. + */ +int nrf_modem_dect_phy_deactivate(void); + /** * @brief Schedule a reception. * - * Schedule a continuous, semicontinuous or single shot reception at a given time, with parameters. + * Schedule a reception with given parameters. * - * Incoming data received on the physical layer control and data channels is sent to the - * @ref nrf_modem_dect_phy_callbacks.pcc and @ref nrf_modem_dect_phy_callbacks.pdc callbacks. + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_COMPLETED event. * - * When the operation has completed, either successfully or unsuccessfully, the result is sent - * to the @ref nrf_modem_dect_phy_callbacks.op_complete callback, with a `handle` - * parameter equal to the `handle` specified in @p params. + * Data received on the physical layer control and data channels is sent to the application + * in the @ref NRF_MODEM_DECT_PHY_EVT_PCC and @ref NRF_MODEM_DECT_PHY_EVT_PDC events respectively. * * @param[in] params Operation parameters. * * @retval 0 Request was sent to modem. * @retval -NRF_EPERM The Modem library is not initialized. - * @retval -NRF_EFAULT Callback configuration is invalid, or @p params is @c NULL. + * @retval -NRF_EFAULT No event handler is set, or @p params is @c NULL. * @retval -NRF_ENOMEM Not enough shared memory for this request. */ int nrf_modem_dect_phy_rx(const struct nrf_modem_dect_phy_rx_params *params); @@ -1371,15 +1791,14 @@ int nrf_modem_dect_phy_rx(const struct nrf_modem_dect_phy_rx_params *params); * * Schedule a data transmission with given parameters. * - * When the operation has completed, either successfully or unsuccessfully, the result is sent - * to the @ref nrf_modem_dect_phy_callbacks.op_complete callback, with a `handle` - * parameter equal to the `handle` specified in @p params. + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_COMPLETED event. * * @param[in] params Operation parameters. * * @retval 0 Request was sent to modem. * @retval -NRF_EPERM The Modem library is not initialized. - * @retval -NRF_EFAULT Callback configuration is invalid, or @p params is @c NULL. + * @retval -NRF_EFAULT No event handler is set, or @p params is @c NULL. * @retval -NRF_ENOMEM Not enough shared memory for this request. */ int nrf_modem_dect_phy_tx(const struct nrf_modem_dect_phy_tx_params *params); @@ -1399,15 +1818,14 @@ int nrf_modem_dect_phy_tx(const struct nrf_modem_dect_phy_tx_params *params); * received. In that case modem will inject ACK or NACK feedback into the Transmission feedback * field based on the PDC reception result once the reception is complete. * - * When the operation has completed, either successfully or unsuccessfully, the result is sent - * to the @ref nrf_modem_dect_phy_callbacks.op_complete callback, with a `handle` - * parameter equal to the `handle` specified in @p params. + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_COMPLETED event. * * @param[in] params Operation parameters. * * @retval 0 Request was sent to modem. * @retval -NRF_EPERM The Modem library is not initialized. - * @retval -NRF_EFAULT Callback configuration is invalid, or @p params is @c NULL. + * @retval -NRF_EFAULT No event handler is set, or @p params is @c NULL. * @retval -NRF_ENOMEM Not enough shared memory for this request. */ int nrf_modem_dect_phy_tx_harq(const struct nrf_modem_dect_phy_tx_params *params); @@ -1422,19 +1840,14 @@ int nrf_modem_dect_phy_tx_harq(const struct nrf_modem_dect_phy_tx_params *params * The RX operation scheduling is relative to the end of the TX operation and must include * the guard time. * - * When the TX operation has completed, either successfully or unsuccessfully, the result is sent - * to the @ref nrf_modem_dect_phy_callbacks.op_complete callback, with a `handle` - * parameter equal to the `handle` specified in @p params.tx. - * - * When the RX operation has completed, either successfully or unsuccessfully, the result is sent - * to the @ref nrf_modem_dect_phy_callbacks.op_complete callback, with a `handle` - * parameter equal to the `handle` specified in @p params.rx. + * These operations are performed asynchronously. + * Completion of each of operation is indicated by one @ref NRF_MODEM_DECT_PHY_EVT_COMPLETED event. * * @param[in] params Operation parameters. * * @retval 0 Request was sent to the modem. * @retval -NRF_EPERM The Modem library is not initialized. - * @retval -NRF_EFAULT Callback configuration is invalid, or @p params is @c NULL. + * @retval -NRF_EFAULT No event handler is set, or @p params is @c NULL. * @retval -NRF_ENOMEM Not enough shared memory for this request. */ int nrf_modem_dect_phy_tx_rx(const struct nrf_modem_dect_phy_tx_rx_params *params); @@ -1443,69 +1856,135 @@ int nrf_modem_dect_phy_tx_rx(const struct nrf_modem_dect_phy_tx_rx_params *param * @brief Schedule an RSSI measurement operation. * * Schedule an RSSI measurement operation with given parameters. - * The measurements are sent to the @ref nrf_modem_dect_phy_callbacks.rssi callback. * - * When the operation has completed, either successfully or unsuccessfully, the result is sent - * to the @ref nrf_modem_dect_phy_callbacks.op_complete callback, with a `handle` - * parameter equal to the `handle` specified in @p params. + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_COMPLETED event. + * The measurements are sent in the @ref NRF_MODEM_DECT_PHY_EVT_RSSI event. * * @param[in] params Operation parameters. * * @retval 0 Request was sent to modem. * @retval -NRF_EPERM The Modem library is not initialized. - * @retval -NRF_EFAULT Callback configuration is invalid, or @p params is @c NULL. + * @retval -NRF_EFAULT No event handler is set, or @p params is @c NULL. * @retval -NRF_ENOMEM Not enough shared memory for this request. */ int nrf_modem_dect_phy_rssi(const struct nrf_modem_dect_phy_rssi_params *params); /** - * @brief Stop an ongoing reception. + * @brief Cancel an operation. * - * Stop an ongoing reception before its duration has ended; this can take more or less - * time depending on the internal state of the operation at the time the request is received. + * Cancel an ongoing operation or an operation scheduled to be executed. * - * This operation is asynchronous. The result of the operation is sent to the - * @ref nrf_modem_dect_phy_callbacks.rx_stop callback. + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_CANCELED event. * - * @note - * Only RX operations can be stopped. + * When an operation is canceled, a @ref NRF_MODEM_DECT_PHY_EVT_COMPLETED event is sent to the + * application. If the operation is canceled while it is executing, the event reports that the + * operation completed successfully. If the operation was scheduled but not yet executing, the + * @ref NRF_MODEM_DECT_PHY_EVT_COMPLETED event will indicate the status as + * @ref NRF_MODEM_DECT_PHY_ERR_OP_CANCELED. * - * @param handle Handle of the operation to be stopped. + * @param handle Handle of the operation to be canceled, + * or @ref NRF_MODEM_DECT_PHY_HANDLE_CANCEL_ALL to cancel all operations. * * @retval 0 Request was sent to modem. * @retval -NRF_EPERM The Modem library is not initialized. - * @retval -NRF_EFAULT Callback configuration is invalid. + * @retval -NRF_EFAULT No event handler is set. * @retval -NRF_ENOMEM Not enough shared memory for this request. */ -int nrf_modem_dect_phy_rx_stop(uint32_t handle); +int nrf_modem_dect_phy_cancel(uint32_t handle); + +/** + * @brief Configure the PHY stack. + * + * This operation can only be performed when the DECT PHY is deactivated. + * + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_CONFIGURE event. + * + * @param[in] params PHY configuration parameters. + * + * @retval 0 Request was sent to modem. + * @retval -NRF_EPERM The Modem library is not initialized. + * @retval -NRF_EFAULT No event handler is set, or @p params is @c NULL. + * @retval -NRF_ENOMEM Not enough shared memory for this request. + */ +int nrf_modem_dect_phy_configure(const struct nrf_modem_dect_phy_config_params *params); + +/** + * @brief Configure radio mode. + * + * Configure the radio for the desired operation latency, RX/TX performance and power consumption. + * + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_RADIO_CONFIG event. + * + * @param[in] params Radio mode configuration parameters. + * + * @retval 0 Request was sent to modem. + * @retval -NRF_EPERM The Modem library is not initialized. + * @retval -NRF_EFAULT No event handler is set, or @p params is @c NULL. + * @retval -NRF_ENOMEM Not enough shared memory for this request. + */ +int nrf_modem_dect_phy_radio_config(const struct nrf_modem_dect_phy_radio_config_params *params); /** * @brief Configure links. * - * This operation is asynchronous. The result of the operation is sent to the - * @ref nrf_modem_dect_phy_callbacks.link_config callback. + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_LINK_CONFIG event. * * @param[in] params Link configuration parameters. * * @retval 0 Request was sent to modem. * @retval -NRF_EPERM The Modem library is not initialized. - * @retval -NRF_EFAULT Callback configuration is invalid, or @p params is @c NULL. + * @retval -NRF_EFAULT No event handler is set, or @p params is @c NULL. * @retval -NRF_ENOMEM Not enough shared memory for this request. * @retval -NRF_ENOSYS Functionality not implemented. */ int nrf_modem_dect_phy_link_config(const struct nrf_modem_dect_phy_link_config_params *params); /** - * @brief Query modem time. + * @brief Retrieve band information. + * + * This operation can only be performed when the DECT PHY is deactivated. + * + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_BANDS event. + * + * @retval 0 Request was sent to modem. + * @retval -NRF_EPERM The Modem library is not initialized. + * @retval -NRF_EFAULT No event handler is set. + * @retval -NRF_ENOMEM Not enough shared memory for this request. + */ +int nrf_modem_dect_phy_band_get(void); + +/** + * @brief Retrieve latency information. + * + * This operation can only be performed when the DECT PHY is deactivated. + * + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_LATENCY event. + * + * @retval 0 Request was sent to modem. + * @retval -NRF_EPERM The Modem library is not initialized. + * @retval -NRF_EFAULT No event handler is set. + * @retval -NRF_ENOMEM Not enough shared memory for this request. + */ +int nrf_modem_dect_phy_latency_get(void); + +/** + * @brief Retrieve modem time. * * Retrieve modem time, in modem time units. * - * This operation is asynchronous. The result of the operation is sent to the - * @ref nrf_modem_dect_phy_callbacks.time_get callback. + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_TIME event. * * @retval 0 Request was sent to modem. * @retval -NRF_EPERM The Modem library is not initialized. - * @retval -NRF_EFAULT Callback configuration is invalid. + * @retval -NRF_EFAULT No event handler is set. * @retval -NRF_ENOMEM Not enough shared memory for this request. */ int nrf_modem_dect_phy_time_get(void); @@ -1514,20 +1993,21 @@ int nrf_modem_dect_phy_time_get(void); * @brief STF cover sequence control. * * Enable or disable STF cover sequence. + * The default, applied at each initialization, is enabled. * * @note * This API is intended for certification purposes only. * It should not be used for normal operation. * - * This operation is asynchronous. The result of the operation is sent to the - * @ref nrf_modem_dect_phy_callbacks.stf_cover_seq_control callback. + * This operation is performed asynchronously. + * Completion of this operation is indicated by the @ref NRF_MODEM_DECT_PHY_EVT_STF_CONFIG event. * * @param rx_enable Enable STF cover sequence for reception. * @param tx_enable Enable STF cover sequence for transmission. * * @retval 0 Request was sent to modem. * @retval -NRF_EPERM The Modem library is not initialized. - * @retval -NRF_EFAULT Callback configuration is invalid. + * @retval -NRF_EFAULT No event handler is set. * @retval -NRF_ENOMEM Not enough shared memory for this request. */ int nrf_modem_dect_phy_stf_cover_seq_control(bool rx_enable, bool tx_enable); diff --git a/nrf_modem/include/nrf_modem_softsim.h b/nrf_modem/include/nrf_modem_softsim.h index 8dd3125a8b..6749f19fdc 100644 --- a/nrf_modem/include/nrf_modem_softsim.h +++ b/nrf_modem/include/nrf_modem_softsim.h @@ -36,9 +36,10 @@ enum nrf_modem_softsim_cmd { * * @details This handler lets the application process a SoftSIM request. * The application must then call @ref nrf_modem_softsim_res with the response data - * requested. + * requested, and @ref nrf_modem_softsim_data_free when the request is not referenced + * anymore and can be freed. * - * @note This handler is executed in an interrupt service routine. + * @note This handler is executed in an interrupt service routine (ISR). * Offload any intensive operations as necessary. * * @param cmd SoftSIM request command. @@ -52,7 +53,7 @@ typedef void (*nrf_modem_softsim_req_handler_t)(enum nrf_modem_softsim_cmd cmd, /** * @brief Set a handler function for SoftSIM requests. * - * @note The handler is executed in an interrupt service routine. + * @note The handler is executed in an interrupt service routine (ISR). * Take care to offload any processing as appropriate. * * @param handler The SoftSIM request handler. Use @c NULL to unset handler. @@ -67,6 +68,9 @@ int nrf_modem_softsim_req_handler_set(nrf_modem_softsim_req_handler_t handler); * @details This function is used to respond to the Modem with the data requested by a specific * request. * + * @note This function takes care of copying @p data to an internal buffer, so any + * heap allocation for @p data can be freed immediately after calling this function. + * * @param cmd SoftSIM response command. * @param req_id Request ID used to match request and response. * @param[in] data Pointer to the data of the SoftSIM response. diff --git a/nrf_modem/lib/cellular/nrf9120/hard-float/libmodem.a b/nrf_modem/lib/cellular/nrf9120/hard-float/libmodem.a index 332eec1559ca7e4740f6b966c6ac0d003e5e8e93..4ea83ae9969379afb494407a5d1fe391fba16649 100644 GIT binary patch delta 2846 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 X`{6V$SF!^i6tpwm=(~Il@6-JW%F-k) delta 3357 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 VCWc1}xj)5DBX-9P;~jTF^B?64T897t delta 4021 zcmcgv4NP0t6+ZXbCI;JJupv%xz|#1XHp_4cRD<$XyebAW?0r$V97X+EgkrDO*@aC0C=GyCm(-eOwbj zY{@3I4}JIZ`OZD(+;`u*_deQ>#ddYYcHIiP0Q&BMb3*|4gGns_!yk6uKZ5^D=dYk| zP#*1VAHWJAN-eC2)iXe%uzP^~{|EwUvfM@MERZOE*bd|<7V1_4=_|N5hRr~t2z3Fu zF9iQf$H}WezG?)qfS|G68!1We{tRMZPnS>Z|(2&O*T`&8F>1iYn5q`;!H?)b`+K zs}?-Q($BTbkn~kOcl%fR+_AFS-mp<4xIFaFCc8Pj4%nsg$mD<$CcQ?u~tWy#-}V zZ3-tV8NW%>52cb_wCGTwyWGo^EWgt7!QTYyBa1Ah^;?Uq7;C9)eUqL&v@y8BUr-j? zQ0v>^_cn}2j9mjhmv=m3YESTO^#0Ws?^9>kYmY?E=vxDq0=EK3B0ha{KnnaLz-qbV zv8?whKb=vGMPSJ0b@(+tuv)#gN7X)?*H$$a(U*-yjQLitwNle=_5L6N{hD@xT78CE zLxaUDxT(;q*=F*ybe6Xi)~0Z?GCQ#Qrp*sI!MUBkT(iv_u#_bajn0IRH-&SRk(;!u zwSZ2ys#f<4rSiNkYQkOtq#Lcf2zwOb)ofveh7a4Q?P7|Q_5Jr0I*$M#Kspp*%#=i4 zeOwjihW&N>_tw=n@1u`(n4}ke)TD9_6M(p**acbe0ZcP~3E&3ftpGEeXJw}U>P)YE z8Z)xwegGxoX93iV>j1Qjp8?P_t^qJJJ^)~0+z4P}{2YLT@pl1S(&1wUC2>n9PTV5I zM32#GVxb?=gTz61byt&8dbax@d4jI{Ni}-+V{4(K*gB~0^=eW;_h4H}FJK#>cd+fE zRpJifp#!3o4AFN*JF(GEu)Ru?PukI2g6%Y|$M(1M*h#x8yb7RH99Sh7>9vyyL{C3L z(WM56p#wz*YVOfvk=!0Tw!5(P(ZfA`K;rfHi~XkV{hctuU0%UiE|8%HvU zV9)qPI*^x2I_MpY?pOohr=-sy757!iF9=)uQqJijBVXIw>C;t@OIqp2X16H_*+ z=7VeU(w4hVOpRLPm&^AS84@ifAzpg)iz}LFKxi-+#g?2;=B7ne^0IX9x;(3H0!F(-eI_KJsW?q?bSgV>ZSWNcg- zlqd&T77`^w9{=r-i<-m_e@5IyCqBGJSVvpchBVa3^ZKsHYVfda?NDxaU=F zil-l6ObV7_I7R}yk0emSV@vE9c!t}!y`p~=9OQPXY^&ilZa*a3u`s}GlWfPq@Df`K zzguF*>tTuu4mluE%sxl5G=;Eb$L^h5Dx7Y&xceL#39=O>Yyf#u1^fJPg-mW+@i<_9 zoIe}mG~7)YXU(rf#%xL%n>ow<(9YquhjTIKt(+_8IS4zsfJcy=sE%_Z=N8UwoR4ts zomK zi7oar?ooJVfLZ*@Ai0@49yL*lLnsl<{d)u!g%||8W)LQJBCUB3f3ZES6v3{EXa@1+ zOp>l*QF6zUzoT<;$LrCKsK+CsrPLU~N^L^0%Y=rSW^6VjujiiVAS`G**dR(Cz+a1V zPhoDhD$IyPL^StC zHYB%k&%#Zh=al&TcQD=YWkDnO)!~pUJ#-XZi*I8VZ-ea(>^9h_Sq*k*&+IYi!PTV@Ei z%wH`W`=QI1NUV*Yy(6KvX;PHKE%~D%RHG9TqUZPa(63hu`*hsj9~#dTK9{%Q5Ppzu MxU1to9dp`$1Nqnx%>V!Z diff --git a/nrf_modem/lib/cellular/nrf9160/hard-float/libmodem.a b/nrf_modem/lib/cellular/nrf9160/hard-float/libmodem.a index 332eec1559ca7e4740f6b966c6ac0d003e5e8e93..4ea83ae9969379afb494407a5d1fe391fba16649 100644 GIT binary patch delta 2846 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 X`{6V$SF!^i6tpwm=(~Il@6-JW%F-k) delta 3357 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 VCWc1}xj)5DBX-9P;~jTF^B?64T897t delta 4021 zcmcgv4NP0t6+ZXbCI;JJupv%xz|#1XHp_4cRD<$XyebAW?0r$V97X+EgkrDO*@aC0C=GyCm(-eOwbj zY{@3I4}JIZ`OZD(+;`u*_deQ>#ddYYcHIiP0Q&BMb3*|4gGns_!yk6uKZ5^D=dYk| zP#*1VAHWJAN-eC2)iXe%uzP^~{|EwUvfM@MERZOE*bd|<7V1_4=_|N5hRr~t2z3Fu zF9iQf$H}WezG?)qfS|G68!1We{tRMZPnS>Z|(2&O*T`&8F>1iYn5q`;!H?)b`+K zs}?-Q($BTbkn~kOcl%fR+_AFS-mp<4xIFaFCc8Pj4%nsg$mD<$CcQ?u~tWy#-}V zZ3-tV8NW%>52cb_wCGTwyWGo^EWgt7!QTYyBa1Ah^;?Uq7;C9)eUqL&v@y8BUr-j? zQ0v>^_cn}2j9mjhmv=m3YESTO^#0Ws?^9>kYmY?E=vxDq0=EK3B0ha{KnnaLz-qbV zv8?whKb=vGMPSJ0b@(+tuv)#gN7X)?*H$$a(U*-yjQLitwNle=_5L6N{hD@xT78CE zLxaUDxT(;q*=F*ybe6Xi)~0Z?GCQ#Qrp*sI!MUBkT(iv_u#_bajn0IRH-&SRk(;!u zwSZ2ys#f<4rSiNkYQkOtq#Lcf2zwOb)ofveh7a4Q?P7|Q_5Jr0I*$M#Kspp*%#=i4 zeOwjihW&N>_tw=n@1u`(n4}ke)TD9_6M(p**acbe0ZcP~3E&3ftpGEeXJw}U>P)YE z8Z)xwegGxoX93iV>j1Qjp8?P_t^qJJJ^)~0+z4P}{2YLT@pl1S(&1wUC2>n9PTV5I zM32#GVxb?=gTz61byt&8dbax@d4jI{Ni}-+V{4(K*gB~0^=eW;_h4H}FJK#>cd+fE zRpJifp#!3o4AFN*JF(GEu)Ru?PukI2g6%Y|$M(1M*h#x8yb7RH99Sh7>9vyyL{C3L z(WM56p#wz*YVOfvk=!0Tw!5(P(ZfA`K;rfHi~XkV{hctuU0%UiE|8%HvU zV9)qPI*^x2I_MpY?pOohr=-sy757!iF9=)uQqJijBVXIw>C;t@OIqp2X16H_*+ z=7VeU(w4hVOpRLPm&^AS84@ifAzpg)iz}LFKxi-+#g?2;=B7ne^0IX9x;(3H0!F(-eI_KJsW?q?bSgV>ZSWNcg- zlqd&T77`^w9{=r-i<-m_e@5IyCqBGJSVvpchBVa3^ZKsHYVfda?NDxaU=F zil-l6ObV7_I7R}yk0emSV@vE9c!t}!y`p~=9OQPXY^&ilZa*a3u`s}GlWfPq@Df`K zzguF*>tTuu4mluE%sxl5G=;Eb$L^h5Dx7Y&xceL#39=O>Yyf#u1^fJPg-mW+@i<_9 zoIe}mG~7)YXU(rf#%xL%n>ow<(9YquhjTIKt(+_8IS4zsfJcy=sE%_Z=N8UwoR4ts zomK zi7oar?ooJVfLZ*@Ai0@49yL*lLnsl<{d)u!g%||8W)LQJBCUB3f3ZES6v3{EXa@1+ zOp>l*QF6zUzoT<;$LrCKsK+CsrPLU~N^L^0%Y=rSW^6VjujiiVAS`G**dR(Cz+a1V zPhoDhD$IyPL^StC zHYB%k&%#Zh=al&TcQD=YWkDnO)!~pUJ#-XZi*I8VZ-ea(>^9h_Sq*k*&+IYi!PTV@Ei z%wH`W`=QI1NUV*Yy(6KvX;PHKE%~D%RHG9TqUZPa(63hu`*hsj9~#dTK9{%Q5Ppzu MxU1to9dp`$1Nqnx%>V!Z diff --git a/nrf_modem/lib/cellular/nrf9230/hard-float/libmodem.a b/nrf_modem/lib/cellular/nrf9230/hard-float/libmodem.a index 02e2920da367d32fe1ac20049825a84548fe645f..e93ad7e0616cc781248ce33b759d10baf75ce08e 100644 GIT binary patch delta 3026 zcmcgudu&rx82`T8-fk-`bnDi=I_QI~g)!)4W8HYHj@cE)C=wtt5Zb-$WRCJsahkNz zgg+GG^Z-{y5S8Eq645GENdOIsfD4&HGoprRFatHD8W*M*@jJH# zBYau|ki_5%0RJ8#z|3c^qTo?L4)fiB#Tx<3_5fCX{nw}~08FA`8{j`e=mrVP=;r?i zo}>pH%cnm_WRapft8nUM$7DxYYkODMy~0RcF&tj$ioG8m2rTWa%M*sf3*Q)q zTKMsua6#t^@39MLcKXb2mnAQ7<CJWILlYL2tt8@p0|W&|L)!m8_(4F}OZ!-6kg zVUY&?oeu`a&sVX70c%qlL#xTs={9;Qe5Jv7cKDq!jbrD;pMS&a3hV0FI%R1vZBQ>i z9gmqZq_D=LFAY@$VA9Y1`bJ}L{Lt!Hj?&B?pW|fv$EPV`bA(8zXDz1Qrq8gDZJg^w zP2}+0!-Cc%00>Y3GwJ;eL>_B8rRHr8)IoqS=lcPkN-!N>P~Qb`AYmU#*wpesy#e4B zjB`Eb2LP5NxQ#Q_>*c%(U}r+#&$%7oP0o4LRXAru2nOgvXa@L#^Ac(qobLuW$GHmN zJm*e;?>RdFVw?j2KXJALjBs`W{K~n5R>z;Q3_!`b8X%o>D}aXcasVCY6##jh7o`Ij z`NbU(-_p4vE@FFEcyT$qOmi1&T)Cb^Kx9YTN<{)A#x;k%91o#@9~c4{A~OtEv2}gYl&Vo;uN_JMoktRrAqmzR`fGFE=)yBn~ms? ze(k_AQE*IS@6}JxxAFbCrVZwTL28&+<_VRhdVQIG3IN4v2%Usc zgtde)!9WNSHV{IDHG}|ReKAez2%896!hM7c!b-wwLJt8zDyYIqQFS$HQ++}T)?gSj zr5|eW6zZh+rem?$#2--}8c-9{FMeWZfL<s4$MGf4o_)HrNnPHpOvSUkmu#m)Pr|0ZCgjh6%?X>D5ZP+jnXq4wZ4JEj2ftQYGZQBY0uX+&lpj~k5snwnhS>}&>H0v z#&?A8EFE6iK0(YEPSNr>FOAuOxmn+lajm=wrQoe-s2(CcgWw|Yk$z2CzN5*qN=oMW ze1G`ZEv>AhvWDyAw^7?IMGxkwGZm+QsN;wzuVrm4glT1_FoTp1?Vw{de=rlE)h-ZZ`0H zij<9&G`b3&))RbK$Rb07*=~4Dj6{0WKJu#lj~61ie^`3sHlpXr>4-Z41Z7L(AAMG z&GBO+A4N6~Sk~ySj%+-16;{K)VPaSx_UxCgozhn%{9jDfL}1x}&e+gg2Xz{2bdOI1#n%kk7p^?+6!P1d>?>W@B;u=!JPnk zg1gNC4$#8>+x4m2Pw4>(s{e3pBLNrTdefj*Z&st!-9(n~$Ff27omb^5)X#teI(swNcgrs|vKFQNeJ61RIXf~JG>GS7OO;0${3@=GK_av0P31#mQ zJAJ@PiIFDDT$Iu8!a-Wj^)Y2re_r}|Q|yu8g5(M8QjYF^q9|oij(5Fs>3PgdDr#b) zOV3-CSNBV$NwrJaGjU`#M*b`p!^*W2B{|6ewVV8OJ6e^$oO`h#O;+reA9tpd824S9 zmcKUeZ^Rnfy00?#H<^68zLN9` z!69#`!`~J~-7ih(+V7n%16?561`{Ic!1#f2tT)J)>o8yb!%EDPgqp?RvkmhY!;BGz zoxv9e_;T^JNN5i;^O;wDJDGp1LFl85M;X}+F^<3^8jBfhphKKq>J3}6AT%X*!3j4{^JSx|%#>JV-IEnK=*yY~U zIHjvG)8vpn{{vRU+Dr^lE-)M-DK0q4Epb7b8KN}O{?Y<^Z_WL4EE1Zwjvh;?yIFEBh%&DRA2G4mtf4Q_?f|7%+ z)8eW%-vvE!a<+A`%sryX9+~_tDO-{)J{VTk3s}FMme&`Vx-$UI0Ijcg8t>sf>z6ZH u@O&!ii9;NYz0r!bYSv5rbc}JTJ-#Rvrsl?L+woxP2WBFJZX82L#{U4>r>86E>OWq3G(yoMQIMn)_ODhsPp=?)+QimbL&D^zHQf;zlk)}h(5 zpyC$2En`}mke0aHgc!+Kr@NRGH?C>25~-REy4q!1v!JzIy2UOUQumyXJA;~Lb+hSB z{@?GO|2_A?{pP!utG9g4P55*V+5G@oAES;V08gUh{{kR=wC>4e|6h`Sf?T__+P`iA z_%VHnJM&}u{u=-x=DiO757~j`ubkHle!$!+KL)H)3#=B~TWcP#H~$FCt+&?zdm`EY zOXBecU_Z6uX@bcw9w+BEc~4+?^3tTGNr^kltE%d&N^25Vm6oq~sr04t^0KlOPW6H) zxqQ{qB!1!ER=#WPCg)#5@2Vd%T8v*S9yEB1(d0}^-0tf!w-1#%3s;`;7|va5|L(_9 z`6p&$bVxi<@k)_kf@dKUSZ=7*mIa@n#UnO_IghU|^kE-xRv5-+d3a%X;OmxB>)@TX z9m>&y>9);&mLoi?FlNKSoUbSREqbd$w?F6pzkj%Y`KHXE&~=Eq0_*Kk-E4iM;Hq_# zC9PypMX0r2&0#Usl2@5c z>0oLfRp@p}PTNE@W>w}^QC9HFl2;uW&q}(U&iCa**5o`T zX9k_#h&z)~Vz$lo>Hd9SZemWTm7>l;xna*#t-@?mj_WOp#q`v2ctUP4+w_*Woau=a zD=fMDnL=lfR-n&~u$}pb^opeypN!86)FIRWIsDzCT4&HNzh(2kqOJRx$~m!hk3tGC67vB11p5VlCpaL{4se1hF9Vz;HUNAq5>68f0fve7xI@DKRPa0zzrs;s9l&Mb zj|pBQ>H)@yuL0a3J`FHQ#D(1^mPPkHTf-QGi|RtDQ4J_1Y6of$ss#n$IJTEZ9`*8a##Piiz>@un=CfNaxUXFg^d_mWHS8 z(*)2Q^F`|z>|ikq$jtM&bBoTWMe^Qfg6ylX1y51Xpn^aF*$>6u@VtoeT)}o9z%xY3 z&yZqYXcuvs6f5DVh(o2=4?Yy}`%E*elpCI3RdZ@U-Ar!SjNbiJNex*MxCH@V4Nz;H;nm z-=eewf+2ztg0T`E!w1-i=Z-%`yTbc-B24zUSkuRG*_ zULKt=iL=lvbQk(LQ27dl1A{jOSh^V3#cBDei<-s#?g7xI-=G5JOT>KYvK&RF-x2U8 zTNtPpwtJ)j{?CgG)1uH-Vp0ZWVi~|e>8H8~MRX6EEPA`wb(wL^YHivt9P}_LBYD?kJ>5*3_KL9GOQmc19rxvd-LP3w%OlWWWy$L;9J>CkQ z)gKc5lhC8m?<3tSJ!n68ul&h}?iIBHcku-J;h4FcKWz^8I_VGaIWI69yl&u5A9G|L qW;Y%^&0Jp`VM@V#-?!XIGCXtm#W_FNtgt#&%e z+4GPR;-pE5LMAz71?uBCuL4-%#~;#e*} z=XPb7#sVe7WI49*)h(1DXg2P`cf@MPlf+fZ{w2K z_R^llvN%r@pXJL8?I^j^74LEQRr|J*hyQ%=@X}4isoGzcc@^_pMBeTHqOW0pp<|xM z=Kr)0a>>`?+*GW*t7uWYt{D);O-$L)g;&{H$ ztGwHG({M)7+WJNxHOW>APAMK{FB3H>dSO=rMl|#m)VAGJr>8iLe71KE)}G@v^k!F5 zgqTH&#y>7g&+BM+cvO2)$)zrOQsvU_hj~}}0OSB#hT6qEVSeh0zv0wOnlozUq}eh1 z7q7HCVmWh;#eq+L#T|&$Yx>aQ%`UO|$-+r+uI{c?-GSKa4o_AIvy)0_>WXr@0}jvV zlAf-~e#rjzqH1@DUSxXH0-x|*^E3E~`PJd%mwMUYRl?6KC}3*%n+2=YgtRCC1+rlV zE{Ue_s`8fj&~Gstw;A9p@os>2;#zWf~`v6W8*8_YY^|O*&iE&SzC$0ndi_|YjZYOpCTq52C zaD{jRKqoP_dYw28r;&Igjt+T|;s&@a9lD8&0D7d|M_dhXpZGN#KD{ao6eHOr*-X3) zz)I`~un{j0t5we#nVA=@2{IdRSyRdyczjKeo#b2a`4zv1&lp}?TgtNdpYS=CkEjbW zKi^eX%0A#%G2hC|>Py*m{>%Cxoepb*%+5JJ{X9Nc#vQ#@%VumT7FR(bg3@-rCFmM= zHV$B1L=aDWdqB91-o(*D#R-Vx?bDO_t)Q9xhTjXin3X#lT!!*^fI6OeZG>f_IyC$h zUfbYe?fh_qOEH-=a}`VG9Svqyz`w?N0TVzL)#KyVnOP&BzRsn*W#V%?lKJ{|X3CoH zCMR9Qm@(J^?2AYdnSVCmac6jsQR_tv440H?hzulmAVy$JGOt394^8})yJHjjurGF; znHSKbhEH&(M%$7BdR0Ex?TBu-157jU#%fU8?Q< zDYJ&3JJmM$te0v>%P;J@uhzPSEe+>fYm3(vyc3p&&)iJ6^b4;(KQFxb-Y2ep0X>=@ zINA7|AAOei_?qUcQ#iFev%?{EzNu zMqDwAS?j-+G9X?1`v&%YY9Q;-ImKJnX9uMiZ>V$RcKoB`AF%>e`}syTQuA$MGee}} zE)>A?1sV}Jy%0b&Ajqi^u?B(rL6qT!1w0xANZ*ZEkHGUs#GzPt7>GPAX=-_x zUuZb-d(=Y1^yzzS{`jn68e5Ii^`Ah~O4CeV9F!+4K{OxS#4Z~2RYD85k>5x$Yjd}< zR(#c#*V&ktA`1nb@r65xFrCK(gn>0;$Y&HJ0v4SRnK3*^gumT1wYS>9lIeC;SRKR7DUI8wL+cOOX6&W>S8+;hPE6fLEJWYgBX z!7_P=D^Y7b!jeLTSVX5EjVcLLm^Z|ZhNaS0M7a_0UK9R>!j1vF_k@jqRj__69Fw+9 z*m3ZOA+`xV9bzY%p;HQ3qJl-M*v7`iPlckg1@nuFbMo@EJ=@sn5bZ7H8N5u0U6Jl8 zW2Ef_u#=9nIhr^fFC}6;?L|FgQ4bj}I-v_cw6mo>S@N@zXG(rC!XcP1g>uQuBv(tW zle|&#R>`|1ACP=R@~`Iofm*=!vRRTJ(sY9dG#_`XmUgdZfgPRrFd^QxCRL`t=VLoet^W z3et~!-+UzAX(J9*4}#@->|Lngz$f*;i5?s|Inu~!>yjhQLFd dK6!{O9<4jjU&rP%=U8dBRDRuj;x@Ax{|zyfSbhKi diff --git a/nrf_modem/lib/cellular/nrf9230/soft-float/libmodem.a b/nrf_modem/lib/cellular/nrf9230/soft-float/libmodem.a index 49c5a815b0d7cf2da31c6f60815eb5566ef41e60..c6fe3112cfc9d215b66bb1b65a4455f04e6e8599 100644 GIT binary patch delta 3113 zcmcgudu&tZ6+g$m&I>1X?8JE!KS=B*F>wkZo)d^+k&}i7XH^$LsL0EqPLq{Tx)p*Z zTl=%4ZNg#PmTe57O`1B!(zvZtXrY?6F=(?X(lnWlz9yuAx-k!tHNZr6zUv1wVp}_D z`=sCZ`_At??!Djr?$Le!t&B5oW=x(AZUET%AF%sZ0G|hR9YEma)t?{1FB1Gehz%-t z`}Qq>`{5VA2e==8_eX#vKHdcI-y;Z^|Il5OmI4Zxt^-!(06MAx8+-pfHa-WKg!c~M z7eeqp3B4Bp{~wt85OAfK{x!mnsh`r9ty%3{?Q{$ckBxnOY~X1})4*`!;K1PUu;1TE z9~9Q8n^rsJV~4Sut~tBIuNa3{q$@L)KTGM#Ci}LmloGz?+;`XF8vWr?cQ6On(lvv< zTq*%EG;0;ILldk6+*}+OZ-=wt58HY%xTj-kdik?E%jmVgx+~_8Oy2zIx39!r{Ag)* zN@eNr3ZLW!du(2;G8DTu5c2j0W)?$zp4iVr(ZIHmO~tCk(4#Yp&U!Bk8EX|^8&)ij2bBR?$Zmy8cv%5pHST{U(HKSK#Nr&&|xaNJa<%Ww( z0LhCt-J|S1jouau{#f{ZF*In+K)xHH!ZmYOCByze)s_r89aziP5c$qT}5EA?>z)J}}F8B$6Hxl+c3Hy%Vy#NnkoZAHN1L#SxUoh936g&!W zG@(xm9tL<#a52Cc!37Y6C@)mK0G9-B<;Ebm2jH^cCjqVqZUXp|;1PhBU?;#0!2y6J z!FGVZ3wH6{iD%piAPIH=WC{KffL8DjfKKq^00n|~r~%5uwcC6ee1!Jz@Zn?hF3)}{ z>+|6=G|Kb$=rqso(TaW_UZU+h7tl|5uA|#Lx6tMRAGXnV2Wrto=LW1eMxPGYR43H( z~4grE|(ix8f=<^*4E6vUnSLXW~OcBBFCx3FZ=d2fKK)fnP#0 zVw%ex;RrKVrs~|S8s29v(#ZZnYOOEJ2;}k`m8ieolJQm{fLBe^y9=mg=k2t!8h-x? zUw%?K9{$a~HDxJF?sTG#wlwJEBVy6(*3pg$UHEU``Dt1w>K1Xu;T=DCwlb9(o;drp z?4%WMdC#41$V(~Vyy(rMlofA@v2R+^l*k1G-povs?te#-H_GuZspfe+(rLjFO0 z$BvJtO8La~B7D>9H7e&iG9P--@VMCje`=sbV3dE^h_44r?D~tx{_0n2Yo&{xnA_vI z;ehe>QJ2QPA^Oo3h*h+zD=M1XP2=t8Dz@h-+5`E9!lIJ0ipnChwWP{sGe6i^YcMzr z^#B~FWsERZFrH?F7)Hi8V=p7f*v$wqo~hz#590tMm+=ioHlvTRi!s3fkPoiII<2JR zL&V#xC@G|4Aj_(|G6$Vb|+K=!(^lxENC>C{=B{4F=0M4jBwj8$fn*aKx~A&0p- zVezL7e41b_{j8{@Ay@IGTrj(^e>d#U1nx1)=iyQ8ESN~xZpF@q=My$J zL5|OXqY3-CVr${`G=HxANekAf8l19mJ$~P)Wv9v-e?XNv!Ig5%f-SOc15U|5+JFzE z^KdKfqz`7Em#??ts_a-s{F5$_D?PZ7y_7WRwxhD<3Re`DP7d)HVtmRFkIBKxIDqoU z9yGca*ve*j6qTpUL~&k()@%KQg{kt;I* delta 3361 zcmcgudr*{B6hCJlyaZYvt}AaBWjBFkX?P<_=`5R!;HYCsCM>YH6vaxG;W#c$(@YQZ z(JjAlCT;wqnnslTsx3-s8k_MkNHkQ`pzsL{VeXIm`E<7(Hk5GQaz~=XcLJ z_kQ=g-(iowAM*8wAv-_tl>jvT4K{oX@J}E{02rO~|2cgB#`%Bn^#yl(;M~C&T)hqdXMUJm|wIL`xFzYN4zCV4Z4TLUw7>BAs4*o`91nIU#2>t%;?1FCO; zUz(^{T7)`TEbY}qC20UOkN{%Mz3h4{$jvjH@Wx+SZta=OX6pQLDn&Vo@{tOz$)_Mc!J4i9Df0apK_y0|tbz!J={Mq))d~ild}}=qF{HPVzoWN_3+E?IN|& zq93F0(vCjhQG#&D?$~e+D|)tUa!q7ED$4c*0=-Vbg^!z zTeHC=oyf;`OkV4rUQOl7u{6*)y%o^QUR^z1J(9T)vwUnt66pHE3_=^BgJ2}kw*vG% z(U&lxZ6Ky=9h}=p{D=b9w-GiIq6nOa@tDHAGhT6;Ki_oXE!2F|?CBOR-&HZqVy$#s ze+E8QKIRI7dd#&n_E!~R)a1374i@27jFYm9u^(fl-->bGeFpNHXpvx6M#rciA;hQ? zLDoVvL`+elgD*9HQj3O6Wy~6aLFy{Oe6jyz5=M!0o@841ObN~rH6_vFswdW$AM~QK zMjQ(|a7?j7;2y=Msz>voz;&NC2IWCJ44zbM`ngK;;jmk=sZ^640k2Q7BjM;2J6bwY zit}d_!{U|qtXk}}<>pG4O7WFBn zx7aqiAKz$`Zd-!0q^HU-J2n?=ZLN*2jV_y#yjYUUut}W0f1C8$LYx~uH;k$~Wi?8t zQZZG!vJj7FXQ>+Le9%-IgFdH;`LRO?+%6JKTr`tU(ulvIass!!8!|+S)OQp092oR1 z`;O*s^j&a+Z#2!RtA$Ynuf~VY%|u49w3j8^G?PU(Ulg@*25y-*`2{G|kG$WK1vkxH zpnqj*6i2GbmMMOA7O7p-3M%Zet4XE^?}SK?qZ8fkjHq%-VIX}L>9>nTIf?q^p#TG- zHYZ)bgr2fV+H@ygQ0t}t;9c0M*2>^dL_byNPg2zRU_D*&03K3*M(+2&_7a*xe+NwG BqCfxu diff --git a/nrf_modem/lib/cellular/nrf9230/soft-float/libmodem_log.a b/nrf_modem/lib/cellular/nrf9230/soft-float/libmodem_log.a index 2738be575b1b32692a04b931ca15c41fc6e63b61..3d7df09854a93956ef1cf2cb4090a68bbdf194e4 100644 GIT binary patch delta 3867 zcmcImdr*|u6+d?$ERWr0c`YEXWkGg%x+*FIS~rt)0gYJ&r&eO?qmV2}4f0wfl%He#xbI^Sipy?6VTMFmC{tjZ@@@c;e z2KYAI#HaZ-{Jk4MfT^#+{{c6!HJ{F)v|mGyMfi50oHW$(Kv+hejGjy?6Khf zFM)4;2JE{=Ds3>f=uzMw#>Mcs_+-x!Woc;a;%sZSHS4G4RaNy>TWhkGZ7pB2ZR@u3 z^0Kle9$jRDQn@VK+TFF5XKz^R`7HXMy4kwYJfWJczs_t6^y`+sEuKY7&rNGu-?Q>i zuwto|znx)bTJBgC84&HPE`Sd`m8*7W3SKYdeGmR|{{gdG`d{>Asf_mUz7NKHhptaH zzN|3W>@@eX9W1`jX%ryqOy@7`Tb=#)S~mv`IqtTW1lu`JEKYKF6itkV*iBBAabFQd zUmjN^tBmbptitggd7R;Fb6j<)y^r*QU$Gyd|A#Fn{;|@8dmH(-@LPfcF zVM&}je^iG{)c100FOIA7W0E!8vD#4>g1!1)W;t#;9#~4j0X^EObarRI!d_IwjFkMz zLh8YCWyoY#8J{k?G)g^r4&Q@?!;=8=5$uhF59{1PW?ybno_xUnToSH-$(i$PARlz* ztO?>Q*=XW{>vLEaU$H)(o%1}mzE$D>9J4pHYqS8sAdlZ^PV!vaP^i+SC;=3Z2`g~o zh-dMp!4P*J4ue|&&J%Y43=`J^+!h)W$U1 zfD6LEI^}PM8#HJKxI1Og0U`JxfL?F{F&=Ogu?yfw!rwuR2dyEt19S*|1X)oDaE#c= zN1Tc7H2{62kOzpL2Y8pb0pNY%pCvBFYap%%_@nSI2p%F%1-MLHhu0+h5y3ZzO#ruu ze-1E4ya2Be`Ny=ekBm5cOyXvMN#YEEZ-{Xo=%aZGKt+r?khls!OS}UhLio{w;{+Q$ zpHw`hVR|02)5W6sD?1&mkzc}bA75SLVq^Rx>;rjzt%F(ke(cxsFKb=Q$xG@S>|OqP zor|62vGopigKw{QF(3a6_D23(1I1iwC}Anw>`G?se6`EW&huKAS>X%jeffsaFYp9G zcyJqn+DZNqhQ#r&Fr+Mm_j(LGy;0AGd48i=F&x5;rwqKQQLm2B0+dNz6D&NmMfGrs zT<*cxMy=F)kQqXyIkT-?xy!8R)pF}whOj^2WFYQ}hmafEttSnq}EZEN|C-4 z1AkApXc!i#{*OhNiw8H+B5qq@2usHZOj#|m!Z|JPoS(`j`SvDrK(qnio{HNtOl-(A z*i^=5UbeNK-#6z+kbb8tBT@LCmcA#0{V^?lb)G$gzcl(a7FOxa-ApeXpI~~=&5;j6 z{4-dBrOIL!;dy>MICRQ%$aOsIUmu%i1$p-+v#jjd2CkZzy`eYZCv4+%DaX9t^cR>e zU}j03_x{gVwnl8?ZK-Dm)QW|R`MT7!@ZC?ym!Qs($pY~ZCl$TKe(R30gk9;qQ>N5r zsIJ(2c{bbKET}Hno~yQefB5f|~94B!mSMNAtyFo`jF48r)GrAZ4Y-%QiXYmC!|9?S7mvtR*aVBjm}Es)yx zFq4%1D$^%U2jV~p26^?2XOLp{vZP2l2G$JGrXJy0Ix@e#G0eRTeasDdL>Q=`@F5)l z8->P7g!3A}Y9q(nWE}`?Lg&dk2#yFHE$d)7CG=~u*1}n#r{;BfxFigV9H5uR_p)@w zLaUU}&Ia6g<5=Nvitda`tjs9@M$+j3I0OaW1HSN}NTW|^isd-eSX5uOEqFli`-0C4z99HA@j5)| zh%jymzAgB!;BN%0@Kcm;KyZZMIKe40bL%@+e!-%Z%J#7?bzOO5UAE+~vM4EXKikBt z(kuJfeo5EC`hz;OQ{`};^hpOBO*`zDxE+0IRR}7vpCT|b1R$u5NpJs+MMZvv!`XHR zifFm6^U5#ux?{7l>7)g3ve>i}7(ogBjaCy(*b)0TI4%A9AdAXNKraYw8-m&i%t+ti zc?e?v`4)@i^!=rFnQ`B8L)Z`I*keqx9b$&OAI|aVC!A9G8&1pZ1rfJM=o<>D6W4ER znzOzck4^8czxi`Dpf~&Y19*IjqvPWb$@K9LhGd{5KDi&$j~zVc{Rc{~%cZ#eYAAG3rv%J zIlvxEeE-Gqt>=J!-I7WHMt=J!;b)Sj@T4d0{{3Nx3q zteR7uHK%%RO|Cy`QgT?>9A}>2Y57GoHMrB#?XOF_C5MzdnVSuo!s~j?{+u~yLk9o8 zr*|8b7#*9zWbQ7Vq)YT%_IQi@b)~EIMF)#{&%J-#y~kYX$JdO`lC7?|p3}plyFVHC zzAV`aT-5in3(`j~QA?-lnI65X+H-uY{n?0q_wDuyqiYXODWA4zd&#Y#NSDncTep^w z_rQo`m#tewTgG;W+RpHNGH&WBuq}02Jm<$Di+p43zGCSON#Q%oli5LjqS{Kmc!dHxi;p1T*96-V;2 z#o=R_HPRb>BZf*z(e2a5dvJVd3A57JXNswY^sD_gmu&q`$-ofS{A@*B!PZ{)=)LUA z;{d^^#l6h6z!r9hH1{ZrGfk5?rr@c*5nbFB{406in_8Q<#L%^()@qC3%+Afra#K2o z!t5Ddn=7^C_E4?|GXHr=wmQ^>+ZQK!-}kRv)-Hv1Z_Dz0Ci~AUUn55)g#k#A2@3(B z(?7qeH_~?)o5q&_P7!wk^b;Eat_vL(s_J)%4Ja(AClk>>N9g%P>|Z4GcH++fb_uK#ddv`UHGqkT zerCaVL5u%)wS{_S;BjkPn3?Zb>tPU#aBm)@mxx@dXmY|s*Xf% zH8Mq?@bgVHe8akL!g{{p@JEXt5^xQs>puylmC{^+BXdvGS8{}l@|EPX)N!E-{#OBeg~fUh3azd+Ru zfUhQ1pQq{(a8T$LRX4(~9?(s2{sBGO41>aut`3M%&TnBeBj-Y4#qwo^#m?+(Wo!#O z;iEGq%>XsYQd)4i(sZHQ0j$)I`E(GI@ufhV89bXrN-+`NFDg|()H8*iE4V;#k>GcO z^uaP=s1kf$uwJl9uuZT-aHrs2!B+)e6MR$fgy1Q`bAlID{t#e57zPEe3*HpGE%>FN zjJv94Krmh~NzkEEF?X?iC2Je|c|=1^y|bxieUnppYY&^O{9zlbip>UR!Kp-%UNR^g5t@ItWK{-aTQ$6M9U9HVgJ^lkY&= zR}*m)6G48I2-+a>qeTBw%$J32)jDY4_{|Y}1nn5!tD3R;mqGph$i+Fk(f%Zwvg!LH ze82=S#GlTvhsQqw(5p<|&92jp9Kaj-ozO=`pz;8VaAt_stiFEBoeOZiHhd(& zO`DetO8W)32fqcll~(Zs0BcYD^?$c#?*O=7^M(q2)d08B4vq)V+FP9fzpxFvsbe?I zOmM@2c8C8f;l6Nu?bT@fS7$hWWQoCX;jy?cG7@)ma(XHpyE_vis$BDG9;=$?!S>EX zJ!8YZ&WF)ysfcvVsheIiWBy!bVl&UJa@Wkk?#N{HT2jJXRdp^;EmN4PtLog?7U?h( zSe*;sk91(tCy98>vdJ)P7(N=6>whuoN2Bx3JSk7gb$eX%>g9#GcU5@`s;jC!9=E%I zN^5L=3GVe|8t=-J{HJ3*v8;oqGur$~&Noe}G~>kxrPG{yFghnQzq?j4rog zUTPTrD$jzW%58qR?E7#{>5ndd#$p&g0^0^=r%W9{Ljsud6_O1j;cgI0ljQmm*zZ4G zF~*qt@Ytx;3E21Dl|FMZWEb{qZ8j879w#ki65|$j&zGy^e|&R(PGQeFoaC|#D{zJ@ zJ+^4P>C)y1(1hd_KW}Hv=W%wrD_n^ILf^ZT&O*v%0s!0@jad%Ue zFcd$b`%W}_vxE(pOZPS`r+WuBdb13Wh%b8w8%$yNo_DZ0It(Bi(^C^Ly4fluVQO=h zIiF+#3Ih^wYO_`0qVdsYQR$f!+ihfLH2*O z#1^Om|F)$Q;&@3+#*Jwc{hOcbpBf}^?~04jipKAJW30(^cfPtSN|vW6+aa(khC=}) z`HZDWmEf!|nbQ*kv_I&I*v;yHfiJo=Szhdebiv7ZLvf|g;w-u>;Oj@zal_FlTCkqC z^Req_On>37?zA?EG?0U<-#J07t1Vw;>)!1O|JoN%%qg67w3Gsg$lmEY?29GID-=%z4|}Cg zTu^kmpI~foEhuVm$;K)k8959+;Op>N$>DW!uyTiuzE-)YN?dGwtm7gi9IP}}6FxWVq?*l z2620@RXWqy%KPzBb(7en%573>(;41RlsZb~;$(SUiBpE`>h_Kc1j!KvaYZjk8m`z_ z9l-tm^i?abDahgQwYRKG?l36Ttg5lU^elY#Ak5+ zHsS|U%i;qLm0D*W?;R+er8^D#%y!a_=hgDY=h}RFuk=}N761+48!NwgZ(&hq(l3Wz+La#Vyp~OxlE9PF*8zeP+Pp&L6T88sXQ4gomS4Z z5a(`FxkB_2x0!RJ@H67h1-Q7$$+%~*)1JtYRT2jbbtxYFw*#x&)iIW$(Cxt0?eS?$ z*AcL{1ATQUmx=BINa$}*SK>H_E#zT1q54n3pW~A;|AZP<8IC)VqgYMEg}gTk+h-=@ zVQx`~akG-~YtB)I#Etnt%ka@z4xIaeid=?Ie~?@poWT$!gA5)Szz|^idL7TQu(6Pp zOVuZtaO9r{giJ<`0+oVswT}L|3XJANUsPN-sn%f}1`b?Nn=Z9J88E&Ymudnbt=Bb-kA=9T^cip8!@QUASn&Bxz?|NFx)*)-cTy8%Dl zlZG3^OjvTV+^gnbD5ZCQO3U&f%b6&xhLh29dXf;m6+PQH%%7Du^UvV^g+y=Y@BIY> zux-l*kof>h`2bn~nx2)Mg+7>WWS38RF9Ujn1MT1rdl@Bp2T>OJNk;Dn+O8z03{$w? z%_t4$fh2BFcCCS;XOS`hR?|0}O5IFq0oa%yC6dAY z3$O8~^=Af7ZoneFl>yk(g3W}MVQ2zNnV!BeJ30M{(~-2 z%WQR5Sn4!6?if7+%N!Q;c10?Cxaehv(qDe6`0Ad$&tYdmi`x@8!{H)2x{1ZlPIc>c zFxT+on=7X>>G&oRJG)Y~BOGp^9^6K+4Rv=D)c3yv~0kNgI!0cjbX#wyNP=GVWO#SoFroiY{E5!qtw?UL=&UL zkoq=h^aw+B2+?@yZ^`B|#WwC0F}F;oqqDdGdNNt)(U%hwMj!n)?Ke>ioE76T^bu68 z4k}Iuiq*_TDeW1$;A)7o|stG!Tr6CBL3870tXbwTxMF=A}0?m9Novk4V z%~bMVCe=#cwv4_nR$tPj@_!JYpL5;>s cOA@fTz-m6nCda?&e7%u>x$X70U7QmAUwix{HUIzs delta 6093 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 LpTw5062|@)88r|T diff --git a/nrf_modem/lib/dect_phy/nrf9120/hard-float/libmodem_log.a b/nrf_modem/lib/dect_phy/nrf9120/hard-float/libmodem_log.a index 75d1025569114bc4dfb2f14979cdd0bb2bf025ee..a50e03235353f6e629b00d25e397984167038021 100644 GIT binary patch delta 8047 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 delta 7108 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 diff --git a/nrf_modem/lib/dect_phy/nrf9120/soft-float/libmodem.a b/nrf_modem/lib/dect_phy/nrf9120/soft-float/libmodem.a index 7f2427af751e714e3ed792fba5ca1169642575a5..d30c4326cdecc5f068600957e1bfdeb998e14da5 100644 GIT binary patch delta 6625 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 delta 5716 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 F{0C@JD31UD diff --git a/nrf_modem/lib/dect_phy/nrf9120/soft-float/libmodem_log.a b/nrf_modem/lib/dect_phy/nrf9120/soft-float/libmodem_log.a index 509c8ab3058426388bf3a92130292ed46c551a38..4885eed799f3d683d4352b82cc9c1e04bd643d8b 100644 GIT binary patch delta 8054 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 delta 7126 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