Merge pull request #3836 from ndoo/regulatory-gain

Add REGULATORY_GAIN configuration to remain within regulatory ERP limit
This commit is contained in:
Thomas Göttgens 2024-06-20 22:53:18 +02:00 committed by GitHub
commit f145b5f16f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 24 additions and 8 deletions

View File

@ -75,11 +75,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif #endif
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// Regulatory overrides for producing regional builds // Regulatory overrides
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// Define if region should override user saved region // Override user saved region, for producing region-locked builds
// #define LORA_REGIONCODE meshtastic_Config_LoRaConfig_RegionCode_SG_923 // #define REGULATORY_LORA_REGIONCODE meshtastic_Config_LoRaConfig_RegionCode_SG_923
// Total system gain in dBm to subtract from Tx power to remain within regulatory ERP limit for non-licensed operators
// This value should be set in variant.h and is PA gain + antenna gain (if system ships with an antenna)
#ifndef REGULATORY_GAIN_LORA
#define REGULATORY_GAIN_LORA 0
#endif
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// Feature toggles // Feature toggles

View File

@ -154,8 +154,8 @@ static uint8_t bytes[MAX_RHPACKETLEN];
void initRegion() void initRegion()
{ {
const RegionInfo *r = regions; const RegionInfo *r = regions;
#ifdef LORA_REGIONCODE #ifdef REGULATORY_LORA_REGIONCODE
for (; r->code != meshtastic_Config_LoRaConfig_RegionCode_UNSET && r->code != LORA_REGIONCODE; r++) for (; r->code != meshtastic_Config_LoRaConfig_RegionCode_UNSET && r->code != REGULATORY_LORA_REGIONCODE; r++)
; ;
LOG_INFO("Wanted region %d, regulatory override to %s\n", config.lora.region, r->name); LOG_INFO("Wanted region %d, regulatory override to %s\n", config.lora.region, r->name);
#else #else
@ -478,8 +478,8 @@ void RadioInterface::applyModemConfig()
power = loraConfig.tx_power; power = loraConfig.tx_power;
if ((power == 0) || ((power > myRegion->powerLimit) && !devicestate.owner.is_licensed)) if ((power == 0) || ((power + REGULATORY_GAIN_LORA > myRegion->powerLimit) && !devicestate.owner.is_licensed))
power = myRegion->powerLimit; power = myRegion->powerLimit - REGULATORY_GAIN_LORA;
if (power == 0) if (power == 0)
power = 17; // Default to this power level if we don't have a valid regional power limit (powerLimit of myRegion defaults power = 17; // Default to this power level if we don't have a valid regional power limit (powerLimit of myRegion defaults

View File

@ -3,7 +3,7 @@
extends = nrf52840_base extends = nrf52840_base
board = xiao_ble_sense board = xiao_ble_sense
board_level = extra board_level = extra
build_flags = ${nrf52840_base.build_flags} -Ivariants/xiao_ble -Ivariants/xiao_ble/softdevice -Ivariants/xiao_ble/softdevice/nrf52 -D EBYTE_E22 -DPRIVATE_HW build_flags = ${nrf52840_base.build_flags} -Ivariants/xiao_ble -Ivariants/xiao_ble/softdevice -Ivariants/xiao_ble/softdevice/nrf52 -D EBYTE_E22 -DEBYTE_E22_900M30S -DPRIVATE_HW
-L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m4/fpv4-sp-d16-hard" -L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m4/fpv4-sp-d16-hard"
board_build.ldscript = variants/xiao_ble/nrf52840_s140_v7.ld board_build.ldscript = variants/xiao_ble/nrf52840_s140_v7.ld
build_src_filter = ${nrf52_base.build_src_filter} +<../variants/xiao_ble> build_src_filter = ${nrf52_base.build_src_filter} +<../variants/xiao_ble>

View File

@ -142,6 +142,16 @@ static const uint8_t SCK = PIN_SPI_SCK;
// (which is the default for the sx1262interface code) // (which is the default for the sx1262interface code)
#define SX126X_DIO2_AS_RF_SWITCH #define SX126X_DIO2_AS_RF_SWITCH
#define SX126X_DIO3_TCXO_VOLTAGE 1.8 #define SX126X_DIO3_TCXO_VOLTAGE 1.8
#ifdef EBYTE_E22_900M30S
// 10dB PA gain and 30dB rated output; based on PA output table from Ebyte Robin <sales06@ebyte.com>
#define REGULATORY_GAIN_LORA 10
#define SX126X_MAX_POWER 20
#endif
#ifdef EBYTE_E22_900M33S
// 25dB PA gain and 33dB rated output; based on TX Power Curve from E22-900M33S_UserManual_EN_v1.0.pdf
#define REGULATORY_GAIN_LORA 25
#define SX126X_MAX_POWER 8
#endif
#endif #endif
/* /*