mirror of
https://github.com/meshtastic/firmware.git
synced 2025-06-08 22:22:05 +00:00
Merge pull request #3836 from ndoo/regulatory-gain
Add REGULATORY_GAIN configuration to remain within regulatory ERP limit
This commit is contained in:
commit
f145b5f16f
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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>
|
||||||
|
@ -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
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user