From 314ba3b10c38eb97e635c36e78512aa20032a57e Mon Sep 17 00:00:00 2001 From: DanielV Date: Fri, 9 May 2025 16:29:27 +0200 Subject: [PATCH 1/6] Create library.json --- library.json | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 library.json diff --git a/library.json b/library.json new file mode 100644 index 0000000..bae6eae --- /dev/null +++ b/library.json @@ -0,0 +1,26 @@ +{ + "name": "SWL2001", + "version": "0.1.0", + "description": "LoRaWAN Library", + "keywords": "LoRa, LoRaWAN, SX126x, SX127x", + "authors": [ + { + "name": "LoRa-NET", + "url": "https://github.com/Lora-net", + "maintainer": true + } + ], + "repository": { + "type": "git", + "url": "https://github.com/Lora-net/SWL2001.git" + }, + "homepage": "https://github.com/Lora-net/SWL2001", + "export": { + "include": [ + "lbm_lib/*" + ] + }, + "frameworks": "*", + "platforms": "*", + "license": "BDS-3" +} From 401c299241af2b5c6588315110e191d703e4a3a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Vikstr=C3=B6m?= Date: Mon, 12 May 2025 14:48:14 +0200 Subject: [PATCH 2/6] Add build flags --- library.json | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/library.json b/library.json index bae6eae..cb27709 100644 --- a/library.json +++ b/library.json @@ -20,6 +20,39 @@ "lbm_lib/*" ] }, + "build": { + "includeDir": "lbm_lib", + "srcDir": "lbm_lib", + "flags": [ + "-I lbm_lib/smtc_modem_api", + "-I lbm_lib/smtc_modem_core", + "-I lbm_lib/smtc_modem_core/logging", + "-I lbm_lib/smtc_modem_core/lorawan_api", + "-I lbm_lib/smtc_modem_core/lorawan_manager", + "-I lbm_lib/smtc_modem_core/lorawan_packages/application_layer_clock_syncronization", + "-I lbm_lib/smtc_modem_core/lorawan_packages/firmware_management_protocol", + "-I lbm_lib/smtc_modem_core/lorawan_packages/fragmented_data_block_transport", + "-I lbm_lib/smtc_modem_core/lorawan_packages/lorawan_certification", + "-I lbm_lib/smtc_modem_core/lorawan_packages/multi_package_access", + "-I lbm_lib/smtc_modem_core/lorawan_packages/remote_multicast_setup", + "-I lbm_lib/smtc_modem_core/lr1mac/src", + "-I lbm_lib/smtc_modem_core/lr1mac/src/services", + "-I lbm_lib/smtc_modem_core/lr1mac/src/smtc_real/src", + "-I lbm_lib/smtc_modem_core/modem_services", + "-I lbm_lib/smtc_modem_core/modem_supervisor", + "-I lbm_lib/smtc_modem_core/modem_utilities", + "-I lbm_lib/smtc_modem_core/radio_drivers", + "-I lbm_lib/smtc_modem_core/radio_drivers/lr11xx_driver/src", + "-I lbm_lib/smtc_modem_core/radio_planner/src", + "-I lbm_lib/smtc_modem_core/smtc_modem_crypto/smtc_secure_element", + "-I lbm_lib/smtc_modem_core/smtc_ral/src", + "-I lbm_lib/smtc_modem_core/smtc_ralf/src", + "-I lbm_lib/smtc_modem_hal" + ], + "srcFilter": [ + "-" + ] + }, "frameworks": "*", "platforms": "*", "license": "BDS-3" From b01472ac9e6afa94f5176b7fa7829efc71fff49a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Vikstr=C3=B6m?= Date: Mon, 12 May 2025 19:59:19 +0200 Subject: [PATCH 3/6] Try fixing C syntax for CPP --- lbm_lib/smtc_modem_core/lr1mac/src/lr1mac_defs.h | 8 -------- lbm_lib/smtc_modem_core/lr1mac/src/lr1mac_utilities.c | 8 ++++++++ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lbm_lib/smtc_modem_core/lr1mac/src/lr1mac_defs.h b/lbm_lib/smtc_modem_core/lr1mac/src/lr1mac_defs.h index b44ffc3..c1d71f1 100644 --- a/lbm_lib/smtc_modem_core/lr1mac/src/lr1mac_defs.h +++ b/lbm_lib/smtc_modem_core/lr1mac/src/lr1mac_defs.h @@ -254,14 +254,6 @@ typedef enum cid_from_device_e NB_MAC_CMD_ANS } cid_from_device_t; -static const uint8_t lr1mac_cmd_mac_ans_size[NB_MAC_CMD_ANS] = { - [LINK_CHECK_ANS] = LINK_CHECK_ANS_SIZE, [LINK_ADR_ANS] = LINK_ADR_ANS_SIZE, - [DUTY_CYCLE_ANS] = DUTY_CYCLE_ANS_SIZE, [RXPARRAM_SETUP_ANS] = RXPARRAM_SETUP_ANS_SIZE, - [DEV_STATUS_ANS] = DEV_STATUS_ANS_SIZE, [NEW_CHANNEL_ANS] = NEW_CHANNEL_ANS_SIZE, - [RXTIMING_SETUP_ANS] = RXTIMING_SETUP_ANS_SIZE, [TXPARAM_SETUP_ANS] = TXPARAM_SETUP_ANS_SIZE, - [DL_CHANNEL_ANS] = DL_CHANNEL_ANS_SIZE, -}; - typedef enum lr1mac_bandwidth_e { BW125 = RAL_LORA_BW_125_KHZ, diff --git a/lbm_lib/smtc_modem_core/lr1mac/src/lr1mac_utilities.c b/lbm_lib/smtc_modem_core/lr1mac/src/lr1mac_utilities.c index 0873d3c..efc893e 100644 --- a/lbm_lib/smtc_modem_core/lr1mac/src/lr1mac_utilities.c +++ b/lbm_lib/smtc_modem_core/lr1mac/src/lr1mac_utilities.c @@ -46,6 +46,14 @@ #include "smtc_modem_hal.h" #include "smtc_modem_hal_dbg_trace.h" +static const uint8_t lr1mac_cmd_mac_ans_size[NB_MAC_CMD_ANS] = { + [LINK_CHECK_ANS] = LINK_CHECK_ANS_SIZE, [LINK_ADR_ANS] = LINK_ADR_ANS_SIZE, + [DUTY_CYCLE_ANS] = DUTY_CYCLE_ANS_SIZE, [RXPARRAM_SETUP_ANS] = RXPARRAM_SETUP_ANS_SIZE, + [DEV_STATUS_ANS] = DEV_STATUS_ANS_SIZE, [NEW_CHANNEL_ANS] = NEW_CHANNEL_ANS_SIZE, + [RXTIMING_SETUP_ANS] = RXTIMING_SETUP_ANS_SIZE, [TXPARAM_SETUP_ANS] = TXPARAM_SETUP_ANS_SIZE, + [DL_CHANNEL_ANS] = DL_CHANNEL_ANS_SIZE, +}; + uint32_t lr1mac_utilities_crc( uint8_t* buf, int len ) { uint32_t crc = 0xFFFFFFFA; From afb8974a883d4415cd3d7fdd57c146433eb8d2f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Vikstr=C3=B6m?= Date: Tue, 13 May 2025 09:11:05 +0200 Subject: [PATCH 4/6] Build explicit files --- library.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/library.json b/library.json index cb27709..80e8222 100644 --- a/library.json +++ b/library.json @@ -44,13 +44,28 @@ "-I lbm_lib/smtc_modem_core/radio_drivers", "-I lbm_lib/smtc_modem_core/radio_drivers/lr11xx_driver/src", "-I lbm_lib/smtc_modem_core/radio_planner/src", + "-I lbm_lib/smtc_modem_core/smtc_modem_crypto", "-I lbm_lib/smtc_modem_core/smtc_modem_crypto/smtc_secure_element", "-I lbm_lib/smtc_modem_core/smtc_ral/src", "-I lbm_lib/smtc_modem_core/smtc_ralf/src", "-I lbm_lib/smtc_modem_hal" ], "srcFilter": [ - "-" + "-", + "-", + "+", + "+", + "+", + "+", + "+", + "+", + "+", + "+", + "+", + "+", + "+", + "+", + "+" ] }, "frameworks": "*", From b70d59783f74e4c814cca5edf86209c912e8bd1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Vikstr=C3=B6m?= Date: Wed, 14 May 2025 15:29:23 +0200 Subject: [PATCH 5/6] Add definitions for transparent external radio --- lbm_lib/smtc_modem_core/smtc_modem.c | 4 + lbm_lib/smtc_modem_core/smtc_modem_test.c | 5 + .../smtc_ral/src/ral_transparent.h | 466 ++++++++++++++++++ .../smtc_ralf/src/ralf_transparent.h | 110 +++++ library.json | 30 +- 5 files changed, 612 insertions(+), 3 deletions(-) create mode 100644 lbm_lib/smtc_modem_core/smtc_ral/src/ral_transparent.h create mode 100644 lbm_lib/smtc_modem_core/smtc_ralf/src/ralf_transparent.h diff --git a/lbm_lib/smtc_modem_core/smtc_modem.c b/lbm_lib/smtc_modem_core/smtc_modem.c index 370ab51..39e9a35 100644 --- a/lbm_lib/smtc_modem_core/smtc_modem.c +++ b/lbm_lib/smtc_modem_core/smtc_modem.c @@ -82,6 +82,8 @@ #include "ralf_lr11xx.h" #elif defined( SX127X ) #include "ralf_sx127x.h" +#elif defined( TRANSPARENT_RADIO ) +#include "ralf_transparent.h" #endif #if defined( ADD_SMTC_STREAM ) @@ -196,6 +198,8 @@ ralf_t modem_radio = RALF_LR11XX_INSTANTIATE( NULL ); #include "sx127x.h" static sx127x_t sx127x; ralf_t modem_radio = RALF_SX127X_INSTANTIATE( &sx127x ); +#elif defined( TRANSPARENT_RADIO ) +ralf_t modem_radio = RALF_TRANSPARENT_INSTANTIATE( NULL ); #else #error "Please select radio board.." #endif diff --git a/lbm_lib/smtc_modem_core/smtc_modem_test.c b/lbm_lib/smtc_modem_core/smtc_modem_test.c index 4daeae6..0a02265 100644 --- a/lbm_lib/smtc_modem_core/smtc_modem_test.c +++ b/lbm_lib/smtc_modem_core/smtc_modem_test.c @@ -69,6 +69,7 @@ #include "lr11xx_hal.h" #elif defined( SX127X ) #include "sx127x_hal.h" +#elif defined( TRANSPARENT_RADIO ) #else #error "Please select radio board.." #endif @@ -748,6 +749,8 @@ smtc_modem_return_code_t smtc_modem_test_direct_radio_write( uint8_t* command, u #elif defined( SX127X ) // if( sx127x_hal_write( ( sx127x_t* ) ( modem_test_context.rp->radio->ral.context ), command, data, // data_length ) != SX127X_HAL_STATUS_OK ) +#elif defined( TRANSPARENT_RADIO ) + return SMTC_MODEM_RC_OK; #else return SMTC_MODEM_RC_FAIL; #endif @@ -777,6 +780,8 @@ smtc_modem_return_code_t smtc_modem_test_direct_radio_read( uint8_t* command, ui #elif defined( SX127X ) // if( sx127x_hal_read( ( sx127x_t* ) ( modem_test_context.rp->radio->ral.context ), command, data, // data_length ) != SX127X_HAL_STATUS_OK ) +#elif defined( TRANSPARENT_RADIO ) + return SMTC_MODEM_RC_OK; #else return SMTC_MODEM_RC_FAIL; #endif diff --git a/lbm_lib/smtc_modem_core/smtc_ral/src/ral_transparent.h b/lbm_lib/smtc_modem_core/smtc_ral/src/ral_transparent.h new file mode 100644 index 0000000..6fb9585 --- /dev/null +++ b/lbm_lib/smtc_modem_core/smtc_ral/src/ral_transparent.h @@ -0,0 +1,466 @@ +/** + * @file ral_transparent.h + * + * @brief Radio abstraction layer definition for external implementation + * + * The Clear BSD License + * Copyright Semtech Corporation 2021. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted (subject to the limitations in the disclaimer + * below) provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Semtech corporation nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY + * THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT + * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SEMTECH CORPORATION BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RAL_TRANSPARENT_H +#define RAL_TRANSPARENT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * ----------------------------------------------------------------------------- + * --- DEPENDENCIES ------------------------------------------------------------ + */ + +#include +#include +#include "ral_defs.h" + +/* + * ----------------------------------------------------------------------------- + * --- PUBLIC MACROS ----------------------------------------------------------- + */ + +#define RAL_TRANSPARENT_DRV_INSTANTIATE \ + { \ + .handles_part = ral_transparent_handles_part, .reset = ral_transparent_reset, .init = ral_transparent_init, \ + .wakeup = ral_transparent_wakeup, .set_sleep = ral_transparent_set_sleep, .set_standby = ral_transparent_set_standby, \ + .set_fs = ral_transparent_set_fs, .set_tx = ral_transparent_set_tx, .set_rx = ral_transparent_set_rx, \ + .cfg_rx_boosted = ral_transparent_cfg_rx_boosted, .set_rx_tx_fallback_mode = ral_transparent_set_rx_tx_fallback_mode, \ + .stop_timer_on_preamble = ral_transparent_stop_timer_on_preamble, \ + .set_rx_duty_cycle = ral_transparent_set_rx_duty_cycle, .set_lora_cad = ral_transparent_set_lora_cad, \ + .set_tx_cw = ral_transparent_set_tx_cw, .set_tx_infinite_preamble = ral_transparent_set_tx_infinite_preamble, \ + .cal_img = ral_transparent_cal_img, .set_tx_cfg = ral_transparent_set_tx_cfg, \ + .set_pkt_payload = ral_transparent_set_pkt_payload, .get_pkt_payload = ral_transparent_get_pkt_payload, \ + .get_irq_status = ral_transparent_get_irq_status, .clear_irq_status = ral_transparent_clear_irq_status, \ + .get_and_clear_irq_status = ral_transparent_get_and_clear_irq_status, \ + .set_dio_irq_params = ral_transparent_set_dio_irq_params, .set_rf_freq = ral_transparent_set_rf_freq, \ + .set_pkt_type = ral_transparent_set_pkt_type, .get_pkt_type = ral_transparent_get_pkt_type, \ + .set_gfsk_mod_params = ral_transparent_set_gfsk_mod_params, .set_gfsk_pkt_params = ral_transparent_set_gfsk_pkt_params, \ + .set_lora_mod_params = ral_transparent_set_lora_mod_params, .set_lora_pkt_params = ral_transparent_set_lora_pkt_params, \ + .set_lora_cad_params = ral_transparent_set_lora_cad_params, \ + .set_lora_symb_nb_timeout = ral_transparent_set_lora_symb_nb_timeout, \ + .set_flrc_mod_params = ral_transparent_set_flrc_mod_params, .set_flrc_pkt_params = ral_transparent_set_flrc_pkt_params, \ + .get_gfsk_rx_pkt_status = ral_transparent_get_gfsk_rx_pkt_status, \ + .get_lora_rx_pkt_status = ral_transparent_get_lora_rx_pkt_status, \ + .get_flrc_rx_pkt_status = ral_transparent_get_flrc_rx_pkt_status, .get_rssi_inst = ral_transparent_get_rssi_inst, \ + .get_lora_time_on_air_in_ms = ral_transparent_get_lora_time_on_air_in_ms, \ + .get_gfsk_time_on_air_in_ms = ral_transparent_get_gfsk_time_on_air_in_ms, \ + .get_flrc_time_on_air_in_ms = ral_transparent_get_flrc_time_on_air_in_ms, \ + .set_gfsk_sync_word = ral_transparent_set_gfsk_sync_word, .set_lora_sync_word = ral_transparent_set_lora_sync_word, \ + .set_flrc_sync_word = ral_transparent_set_flrc_sync_word, .set_gfsk_crc_params = ral_transparent_set_gfsk_crc_params, \ + .set_flrc_crc_params = ral_transparent_set_flrc_crc_params, \ + .set_gfsk_whitening_seed = ral_transparent_set_gfsk_whitening_seed, .lr_fhss_init = ral_transparent_lr_fhss_init, \ + .lr_fhss_build_frame = ral_transparent_lr_fhss_build_frame, .lr_fhss_handle_hop = ral_transparent_lr_fhss_handle_hop, \ + .lr_fhss_handle_tx_done = ral_transparent_lr_fhss_handle_tx_done, \ + .lr_fhss_get_time_on_air_in_ms = ral_transparent_lr_fhss_get_time_on_air_in_ms, \ + .lr_fhss_get_hop_sequence_count = ral_transparent_lr_fhss_get_hop_sequence_count, \ + .lr_fhss_get_bit_delay_in_us = ral_transparent_lr_fhss_get_bit_delay_in_us, \ + .get_lora_rx_pkt_cr_crc = ral_transparent_get_lora_rx_pkt_cr_crc, \ + .get_tx_consumption_in_ua = ral_transparent_get_tx_consumption_in_ua, \ + .get_gfsk_rx_consumption_in_ua = ral_transparent_get_gfsk_rx_consumption_in_ua, \ + .get_lora_rx_consumption_in_ua = ral_transparent_get_lora_rx_consumption_in_ua, \ + .get_random_numbers = ral_transparent_get_random_numbers, .handle_rx_done = ral_transparent_handle_rx_done, \ + .handle_tx_done = ral_transparent_handle_tx_done, .get_lora_cad_det_peak = ral_transparent_get_lora_cad_det_peak \ + } + +#define RAL_TRANSPARENT_INSTANTIATE( ctx ) \ + { \ + .context = ctx, .driver = RAL_TRANSPARENT_DRV_INSTANTIATE, \ + } + +/* + * ----------------------------------------------------------------------------- + * --- PUBLIC CONSTANTS -------------------------------------------------------- + */ + +/* + * ----------------------------------------------------------------------------- + * --- PUBLIC TYPES ------------------------------------------------------------ + */ + +/* + * ----------------------------------------------------------------------------- + * --- PUBLIC FUNCTIONS PROTOTYPES --------------------------------------------- + */ + +/** + * @see ral_handles_part + */ +bool ral_transparent_handles_part( const char* part_number ); + +/** + * @see ral_reset + */ +ral_status_t ral_transparent_reset( const void* context ); + +/** + * @see ral_init + */ +ral_status_t ral_transparent_init( const void* context ); + +/** + * @see ral_wakeup + */ +ral_status_t ral_transparent_wakeup( const void* context ); + +/** + * @see ral_set_sleep + */ +ral_status_t ral_transparent_set_sleep( const void* context, const bool retain_config ); + +/** + * @see ral_set_standby + */ +ral_status_t ral_transparent_set_standby( const void* context, ral_standby_cfg_t standby_cfg ); + +/** + * @see ral_set_fs + */ +ral_status_t ral_transparent_set_fs( const void* context ); + +/** + * @see ral_set_tx + */ +ral_status_t ral_transparent_set_tx( const void* context ); + +/** + * @see ral_set_rx + */ +ral_status_t ral_transparent_set_rx( const void* context, const uint32_t timeout_in_ms ); + +/** + * @see ral_cfg_rx_boosted + */ +ral_status_t ral_transparent_cfg_rx_boosted( const void* context, const bool enable_boost_mode ); + +/** + * @see ral_set_rx_tx_fallback_mode + */ +ral_status_t ral_transparent_set_rx_tx_fallback_mode( const void* context, const ral_fallback_modes_t ral_fallback_mode ); + +/** + * @see ral_stop_timer_on_preamble + */ +ral_status_t ral_transparent_stop_timer_on_preamble( const void* context, const bool enable ); + +/** + * @see ral_set_rx_duty_cycle + */ +ral_status_t ral_transparent_set_rx_duty_cycle( const void* context, const uint32_t rx_time_in_ms, + const uint32_t sleep_time_in_ms ); + +/** + * @see ral_set_lora_cad + */ +ral_status_t ral_transparent_set_lora_cad( const void* context ); + +/** + * @see ral_set_tx_cw + */ +ral_status_t ral_transparent_set_tx_cw( const void* context ); + +/** + * @see ral_set_tx_infinite_preamble + */ +ral_status_t ral_transparent_set_tx_infinite_preamble( const void* context ); + +/** + * @see ral_cal_img + */ +ral_status_t ral_transparent_cal_img( const void* context, const uint16_t freq1_in_mhz, const uint16_t freq2_in_mhz ); + +/** + * @see ral_set_tx_cfg + */ +ral_status_t ral_transparent_set_tx_cfg( const void* context, const int8_t output_pwr_in_dbm, const uint32_t rf_freq_in_hz ); + +/** + * @see ral_set_pkt_payload + */ +ral_status_t ral_transparent_set_pkt_payload( const void* context, const uint8_t* buffer, const uint16_t size ); + +/** + * @see ral_get_pkt_payload + */ +ral_status_t ral_transparent_get_pkt_payload( const void* context, uint16_t max_size_in_bytes, uint8_t* buffer, + uint16_t* size_in_bytes ); + +/** + * @see ral_get_irq_status + */ +ral_status_t ral_transparent_get_irq_status( const void* context, ral_irq_t* irq ); + +/** + * @see ral_clear_irq_status + */ +ral_status_t ral_transparent_clear_irq_status( const void* context, const ral_irq_t irq ); + +/** + * @see ral_get_and_clear_irq_status + */ +ral_status_t ral_transparent_get_and_clear_irq_status( const void* context, ral_irq_t* irq ); + +/** + * @see ral_set_dio_irq_params + */ +ral_status_t ral_transparent_set_dio_irq_params( const void* context, const ral_irq_t irq ); + +/** + * @see ral_set_rf_freq + */ +ral_status_t ral_transparent_set_rf_freq( const void* context, const uint32_t freq_in_hz ); + +/** + * @see ral_set_pkt_type + */ +ral_status_t ral_transparent_set_pkt_type( const void* context, const ral_pkt_type_t pkt_type ); + +/** + * @see ral_get_pkt_type + */ +ral_status_t ral_transparent_get_pkt_type( const void* context, ral_pkt_type_t* pkt_type ); + +/** + * @see ral_set_gfsk_mod_params + */ +ral_status_t ral_transparent_set_gfsk_mod_params( const void* context, const ral_gfsk_mod_params_t* params ); + +/** + * @see ral_set_gfsk_pkt_params + */ +ral_status_t ral_transparent_set_gfsk_pkt_params( const void* context, const ral_gfsk_pkt_params_t* params ); + +/** + * @see ral_set_gfsk_pkt_address + */ +ral_status_t ral_transparent_set_gfsk_pkt_address( const void* context, const uint8_t node_address, + const uint8_t braodcast_address ); + +/** + * @see ral_set_lora_mod_params + */ +ral_status_t ral_transparent_set_lora_mod_params( const void* context, const ral_lora_mod_params_t* params ); + +/** + * @see ral_set_lora_pkt_params + */ +ral_status_t ral_transparent_set_lora_pkt_params( const void* context, const ral_lora_pkt_params_t* params ); + +/** + * @see ral_set_lora_cad_params + */ +ral_status_t ral_transparent_set_lora_cad_params( const void* context, const ral_lora_cad_params_t* params ); + +/** + * @see ral_set_lora_symb_nb_timeout + */ +ral_status_t ral_transparent_set_lora_symb_nb_timeout( const void* context, const uint16_t nb_of_symbs ); + +/** + * @see ral_set_flrc_mod_params + */ +ral_status_t ral_transparent_set_flrc_mod_params( const void* context, const ral_flrc_mod_params_t* params ); + +/** + * @see ral_set_flrc_pkt_params + */ +ral_status_t ral_transparent_set_flrc_pkt_params( const void* context, const ral_flrc_pkt_params_t* params ); + +/** + * @see ral_get_gfsk_rx_pkt_status + */ +ral_status_t ral_transparent_get_gfsk_rx_pkt_status( const void* context, ral_gfsk_rx_pkt_status_t* rx_pkt_status ); + +/** + * @see ral_get_lora_rx_pkt_status + */ +ral_status_t ral_transparent_get_lora_rx_pkt_status( const void* context, ral_lora_rx_pkt_status_t* rx_pkt_status ); + +/** + * @see ral_get_flrc_rx_pkt_status + */ +ral_status_t ral_transparent_get_flrc_rx_pkt_status( const void* context, ral_flrc_rx_pkt_status_t* rx_pkt_status ); + +/** + * @see ral_get_rssi_inst + */ +ral_status_t ral_transparent_get_rssi_inst( const void* context, int16_t* rssi_in_dbm ); + +/** + * @see ral_get_lora_time_on_air_in_ms + */ +uint32_t ral_transparent_get_lora_time_on_air_in_ms( const ral_lora_pkt_params_t* pkt_p, + const ral_lora_mod_params_t* mod_p ); + +/** + * @see ral_get_gfsk_time_on_air_in_ms + */ +uint32_t ral_transparent_get_gfsk_time_on_air_in_ms( const ral_gfsk_pkt_params_t* pkt_p, + const ral_gfsk_mod_params_t* mod_p ); + +/** + * @see ral_get_flrc_time_on_air_in_ms + */ +uint32_t ral_transparent_get_flrc_time_on_air_in_ms( const ral_flrc_pkt_params_t* pkt_p, + const ral_flrc_mod_params_t* mod_p ); + +/** + * @see ral_set_gfsk_sync_word + */ +ral_status_t ral_transparent_set_gfsk_sync_word( const void* context, const uint8_t* sync_word, + const uint8_t sync_word_len ); + +/** + * @see ral_set_lora_sync_word + */ +ral_status_t ral_transparent_set_lora_sync_word( const void* context, const uint8_t sync_word ); + +/** + * @see ral_set_flrc_sync_word + */ +ral_status_t ral_transparent_set_flrc_sync_word( const void* context, const uint8_t* sync_word, + const uint8_t sync_word_len ); + +/** + * @see ral_set_gfsk_crc_params + * + * @remark RAL Interface declares seed and polynomial as uint32_t but transparent drivers handles uint16_t only + */ +ral_status_t ral_transparent_set_gfsk_crc_params( const void* context, const uint32_t seed, const uint32_t polynomial ); + +/** + * @see ral_set_flrc_crc_params + */ +ral_status_t ral_transparent_set_flrc_crc_params( const void* context, const uint32_t seed ); + +/** + * @see ral_set_gfsk_whitening_seed + */ +ral_status_t ral_transparent_set_gfsk_whitening_seed( const void* context, const uint16_t seed ); + +/** + * @see ral_lr_fhss_init + */ +ral_status_t ral_transparent_lr_fhss_init( const void* context, const ral_lr_fhss_params_t* lr_fhss_params ); + +/** + * @see ral_lr_fhss_build_frame + */ +ral_status_t ral_transparent_lr_fhss_build_frame( const void* context, const ral_lr_fhss_params_t* lr_fhss_params, + ral_lr_fhss_memory_state_t state, uint16_t hop_sequence_id, + const uint8_t* payload, uint16_t payload_length ); + +/** + * @see ral_lr_fhss_handle_hop + */ +ral_status_t ral_transparent_lr_fhss_handle_hop( const void* context, const ral_lr_fhss_params_t* lr_fhss_params, + ral_lr_fhss_memory_state_t state ); + +/** + * @see ral_lr_fhss_handle_tx_done + */ +ral_status_t ral_transparent_lr_fhss_handle_tx_done( const void* context, const ral_lr_fhss_params_t* lr_fhss_params, + ral_lr_fhss_memory_state_t state ); + +/** + * @see ral_lr_fhss_get_time_on_air_in_ms + */ +ral_status_t ral_transparent_lr_fhss_get_time_on_air_in_ms( const void* context, const ral_lr_fhss_params_t* lr_fhss_params, + uint16_t payload_length, uint32_t* time_on_air ); + +/** + * @see ral_lr_fhss_get_hop_sequence_count + */ +ral_status_t ral_transparent_lr_fhss_get_hop_sequence_count( const void* context, const ral_lr_fhss_params_t* lr_fhss_params, + unsigned int* hop_sequence_count ); + +/** + * @see ral_lr_fhss_get_bit_delay_in_us + */ +ral_status_t ral_transparent_lr_fhss_get_bit_delay_in_us( const void* context, const ral_lr_fhss_params_t* params, + uint16_t payload_length, uint16_t* delay ); + +/** + * @see ral_get_lora_rx_pkt_cr_crc + */ +ral_status_t ral_transparent_get_lora_rx_pkt_cr_crc( const void* context, ral_lora_cr_t* cr, bool* is_crc_present ); + +/** + * @see ral_get_tx_consumption_in_ua + */ +ral_status_t ral_transparent_get_tx_consumption_in_ua( const void* context, const int8_t output_pwr_in_dbm, + const uint32_t rf_freq_in_hz, uint32_t* pwr_consumption_in_ua ); + +/** + * @see ral_get_gfsk_rx_consumption_in_ua + */ +ral_status_t ral_transparent_get_gfsk_rx_consumption_in_ua( const void* context, const uint32_t br_in_bps, + const uint32_t bw_dsb_in_hz, const bool rx_boosted, + uint32_t* pwr_consumption_in_ua ); + +/** + * @see ral_get_lora_rx_consumption_in_ua + */ +ral_status_t ral_transparent_get_lora_rx_consumption_in_ua( const void* context, const ral_lora_bw_t bw, + const bool rx_boosted, uint32_t* pwr_consumption_in_ua ); +/** + * @see ral_get_random_numbers + */ +ral_status_t ral_transparent_get_random_numbers( const void* context, uint32_t* numbers, unsigned int n ); + +/** + * @see ral_handle_rx_done + */ +ral_status_t ral_transparent_handle_rx_done( const void* context ); + +/** + * @see ral_handle_tx_done + */ +ral_status_t ral_transparent_handle_tx_done( const void* context ); + +/** + * @see ral_get_lora_cad_det_peak + */ +ral_status_t ral_transparent_get_lora_cad_det_peak( const void* context, ral_lora_sf_t sf, ral_lora_bw_t bw, + ral_lora_cad_symbs_t nb_symbol, uint8_t* cad_det_peak ); + +#ifdef __cplusplus +} +#endif + +#endif // RAL_TRANSPARENT_H + +/* --- EOF ------------------------------------------------------------------ */ diff --git a/lbm_lib/smtc_modem_core/smtc_ralf/src/ralf_transparent.h b/lbm_lib/smtc_modem_core/smtc_ralf/src/ralf_transparent.h new file mode 100644 index 0000000..d7f4aa7 --- /dev/null +++ b/lbm_lib/smtc_modem_core/smtc_ralf/src/ralf_transparent.h @@ -0,0 +1,110 @@ +/** + * @file ralf_transparent.h + * + * @brief Radio abstraction layer definition for externat implementation + * + * The Clear BSD License + * Copyright Semtech Corporation 2021. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted (subject to the limitations in the disclaimer + * below) provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Semtech corporation nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY + * THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT + * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SEMTECH CORPORATION BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RALF_TRANSPARENT_H__ +#define RALF_TRANSPARENT_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * ----------------------------------------------------------------------------- + * --- DEPENDENCIES ------------------------------------------------------------ + */ + +#include +#include + +#include "ral_transparent.h" +#include "ralf.h" + +/* + * ----------------------------------------------------------------------------- + * --- PUBLIC MACROS ----------------------------------------------------------- + */ + +#define RALF_DRV_TRANSPARENT_INSTANTIATE \ + { \ + .setup_gfsk = ralf_transparent_setup_gfsk, .setup_lora = ralf_transparent_setup_lora, \ + .setup_flrc = ralf_transparent_setup_flrc, .setup_lora_cad = ralf_transparent_setup_lora_cad, \ + } + +#define RALF_TRANSPARENT_INSTANTIATE( ctx ) \ + { \ + .ral = RAL_TRANSPARENT_INSTANTIATE( ctx ), .ralf_drv = RALF_DRV_TRANSPARENT_INSTANTIATE, \ + } + +/* + * ----------------------------------------------------------------------------- + * --- PUBLIC CONSTANTS -------------------------------------------------------- + */ + +/* + * ----------------------------------------------------------------------------- + * --- PUBLIC TYPES ------------------------------------------------------------ + */ + +/* + * ----------------------------------------------------------------------------- + * --- PUBLIC FUNCTIONS PROTOTYPES --------------------------------------------- + */ + +/** + * @see ralf_setup_gfsk + */ +ral_status_t ralf_transparent_setup_gfsk( const ralf_t* ral, const ralf_params_gfsk_t* params ); + +/** + * @see ralf_setup_lora + */ +ral_status_t ralf_transparent_setup_lora( const ralf_t* ral, const ralf_params_lora_t* params ); + +/** + * @see ralf_setup_flrc + */ +ral_status_t ralf_transparent_setup_flrc( const ralf_t* radio, const ralf_params_flrc_t* params ); + +/** + * @see ralf_setup_cad + */ +ral_status_t ralf_transparent_setup_lora_cad( const ralf_t* radio, const ralf_params_lora_cad_t* params ); + +#ifdef __cplusplus +} +#endif + +#endif // RALF_TRANSPARENT_H__ + +/* --- EOF ------------------------------------------------------------------ */ diff --git a/library.json b/library.json index 80e8222..3267522 100644 --- a/library.json +++ b/library.json @@ -35,10 +35,15 @@ "-I lbm_lib/smtc_modem_core/lorawan_packages/lorawan_certification", "-I lbm_lib/smtc_modem_core/lorawan_packages/multi_package_access", "-I lbm_lib/smtc_modem_core/lorawan_packages/remote_multicast_setup", + "-I lbm_lib/smtc_modem_core/lr1mac", "-I lbm_lib/smtc_modem_core/lr1mac/src", + "-I lbm_lib/smtc_modem_core/lr1mac/src/relay/common", + "-I lbm_lib/smtc_modem_core/lr1mac/src/relay/relay_rx", + "-I lbm_lib/smtc_modem_core/lr1mac/src/relay/relay_tx", "-I lbm_lib/smtc_modem_core/lr1mac/src/services", "-I lbm_lib/smtc_modem_core/lr1mac/src/smtc_real/src", "-I lbm_lib/smtc_modem_core/modem_services", + "-I lbm_lib/smtc_modem_core/modem_services/relay_service", "-I lbm_lib/smtc_modem_core/modem_supervisor", "-I lbm_lib/smtc_modem_core/modem_utilities", "-I lbm_lib/smtc_modem_core/radio_drivers", @@ -48,16 +53,34 @@ "-I lbm_lib/smtc_modem_core/smtc_modem_crypto/smtc_secure_element", "-I lbm_lib/smtc_modem_core/smtc_ral/src", "-I lbm_lib/smtc_modem_core/smtc_ralf/src", - "-I lbm_lib/smtc_modem_hal" + "-I lbm_lib/smtc_modem_hal", + "-D REGION_AS_923", + "-D REGION_AU_915", + "-D REGION_CN_470", + "-D REGION_CN_470_RP_1_0", + "-D REGION_EU_868", + "-D REGION_IN_865", + "-D REGION_KR_920", + "-D REGION_RU_864", + "-D REGION_US_915", + "-D REGION_WW2G4", + "-D ADD_RELAY_TX", + "-D ADD_RELAY_RX" + ], "srcFilter": [ "-", - "-", + "+", + "+", "+", + "+", + "+", + "+", "+", "+", "+", "+", + "+", "+", "+", "+", @@ -65,7 +88,8 @@ "+", "+", "+", - "+" + "+", + "+" ] }, "frameworks": "*", From 54d1a41f48cf8deece898c0858ac03be27625ce9 Mon Sep 17 00:00:00 2001 From: DanielV Date: Tue, 3 Jun 2025 09:52:13 +0200 Subject: [PATCH 6/6] Update library.json Co-authored-by: Maurus Cuelenaere --- library.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library.json b/library.json index 80e8222..5324449 100644 --- a/library.json +++ b/library.json @@ -70,5 +70,5 @@ }, "frameworks": "*", "platforms": "*", - "license": "BDS-3" + "license": "BSD-3" }