From 13cbc8bff2d37a2aedb3a7606138c8af15df4802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=96=87=E5=B3=B0?= Date: Wed, 4 Mar 2026 11:31:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0SETTING=5FMAX=5FPOWER?= =?UTF-8?q?=E5=8F=82=E6=95=B0=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/firmware/src/mesh/RadioInterface.cpp | 55 ++++++++++--------- .../esp32c3/diy/esp32c3_moonshine/variant.h | 15 ++++- .../diy/esp32c3_moonshine_mv/variant.h | 9 ++- 3 files changed, 48 insertions(+), 31 deletions(-) diff --git a/code/firmware/src/mesh/RadioInterface.cpp b/code/firmware/src/mesh/RadioInterface.cpp index e8a7976..751ab04 100644 --- a/code/firmware/src/mesh/RadioInterface.cpp +++ b/code/firmware/src/mesh/RadioInterface.cpp @@ -43,12 +43,15 @@ uint32_t pow_of_2(uint32_t n) frequency_switching, wide_lora, #name \ } +#ifndef SETTING_MAX_POWER +#define SETTING_MAX_POWER 3 +#endif const RegionInfo regions[] = { /* https://link.springer.com/content/pdf/bbm%3A978-1-4842-4357-2%2F1.pdf https://www.thethingsnetwork.org/docs/lorawan/regional-parameters/ */ - RDEF(US, 902.0f, 928.0f, 100, 0, 30, true, false, false), + RDEF(US, 902.0f, 928.0f, 100, 0, SETTING_MAX_POWER, true, false, false), /* EN300220 ETSI V3.2.1 [Table B.1, Item H, p. 21] @@ -56,7 +59,7 @@ const RegionInfo regions[] = { https://www.etsi.org/deliver/etsi_en/300200_300299/30022002/03.02.01_60/en_30022002v030201p.pdf FIXME: https://github.com/meshtastic/firmware/issues/3371 */ - RDEF(EU_433, 433.0f, 434.0f, 10, 0, 10, true, false, false), + RDEF(EU_433, 433.0f, 434.0f, 10, 0, SETTING_MAX_POWER, true, false, false), /* https://www.thethingsnetwork.org/docs/lorawan/duty-cycle/ @@ -72,33 +75,33 @@ const RegionInfo regions[] = { AFA) to avoid a duty cycle. (Please refer to line P page 22 of this document.) https://www.etsi.org/deliver/etsi_en/300200_300299/30022002/03.01.01_60/en_30022002v030101p.pdf */ - RDEF(EU_868, 869.4f, 869.65f, 10, 0, 27, false, false, false), + RDEF(EU_868, 869.4f, 869.65f, 10, 0, SETTING_MAX_POWER, false, false, false), /* https://lora-alliance.org/wp-content/uploads/2020/11/lorawan_regional_parameters_v1.0.3reva_0.pdf */ - RDEF(CN, 470.0f, 510.0f, 100, 0, 30, true, false, false), + RDEF(CN, 470.0f, 510.0f, 100, 0, SETTING_MAX_POWER, true, false, false), /* https://lora-alliance.org/wp-content/uploads/2020/11/lorawan_regional_parameters_v1.0.3reva_0.pdf https://www.arib.or.jp/english/html/overview/doc/5-STD-T108v1_5-E1.pdf https://qiita.com/ammo0613/items/d952154f1195b64dc29f */ - RDEF(JP, 920.5f, 923.5f, 100, 0, 13, true, false, false), + RDEF(JP, 920.5f, 923.5f, 100, 0, SETTING_MAX_POWER, true, false, false), /* https://www.iot.org.au/wp/wp-content/uploads/2016/12/IoTSpectrumFactSheet.pdf https://iotalliance.org.nz/wp-content/uploads/sites/4/2019/05/IoT-Spectrum-in-NZ-Briefing-Paper.pdf Also used in Brazil. */ - RDEF(ANZ, 915.0f, 928.0f, 100, 0, 30, true, false, false), + RDEF(ANZ, 915.0f, 928.0f, 100, 0, SETTING_MAX_POWER, true, false, false), /* 433.05 - 434.79 MHz, 25mW EIRP max, No duty cycle restrictions AU Low Interference Potential https://www.acma.gov.au/licences/low-interference-potential-devices-lipd-class-licence NZ General User Radio Licence for Short Range Devices https://gazette.govt.nz/notice/id/2022-go3100 */ - RDEF(ANZ_433, 433.05f, 434.79f, 100, 0, 14, true, false, false), + RDEF(ANZ_433, 433.05f, 434.79f, 100, 0, SETTING_MAX_POWER, true, false, false), /* https://digital.gov.ru/uploaded/files/prilozhenie-12-k-reshenyu-gkrch-18-46-03-1.pdf @@ -106,13 +109,13 @@ const RegionInfo regions[] = { Note: - We do LBT, so 100% is allowed. */ - RDEF(RU, 868.7f, 869.2f, 100, 0, 20, true, false, false), + RDEF(RU, 868.7f, 869.2f, 100, 0, SETTING_MAX_POWER, true, false, false), /* https://www.law.go.kr/LSW/admRulLsInfoP.do?admRulId=53943&efYd=0 https://resources.lora-alliance.org/technical-specifications/rp002-1-0-4-regional-parameters */ - RDEF(KR, 920.0f, 923.0f, 100, 0, 23, true, false, false), + RDEF(KR, 920.0f, 923.0f, 100, 0, SETTING_MAX_POWER, true, false, false), /* Taiwan, 920-925Mhz, limited to 0.5W indoor or coastal, 1.0W outdoor. @@ -120,42 +123,42 @@ const RegionInfo regions[] = { https://www.ncc.gov.tw/english/files/23070/102_5190_230703_1_doc_C.PDF https://gazette.nat.gov.tw/egFront/e_detail.do?metaid=147283 */ - RDEF(TW, 920.0f, 925.0f, 100, 0, 27, true, false, false), + RDEF(TW, 920.0f, 925.0f, 100, 0, SETTING_MAX_POWER, true, false, false), /* https://lora-alliance.org/wp-content/uploads/2020/11/lorawan_regional_parameters_v1.0.3reva_0.pdf */ - RDEF(IN, 865.0f, 867.0f, 100, 0, 30, true, false, false), + RDEF(IN, 865.0f, 867.0f, 100, 0, SETTING_MAX_POWER, true, false, false), /* https://rrf.rsm.govt.nz/smart-web/smart/page/-smart/domain/licence/LicenceSummary.wdk?id=219752 https://iotalliance.org.nz/wp-content/uploads/sites/4/2019/05/IoT-Spectrum-in-NZ-Briefing-Paper.pdf */ - RDEF(NZ_865, 864.0f, 868.0f, 100, 0, 36, true, false, false), + RDEF(NZ_865, 864.0f, 868.0f, 100, 0, SETTING_MAX_POWER, true, false, false), /* https://lora-alliance.org/wp-content/uploads/2020/11/lorawan_regional_parameters_v1.0.3reva_0.pdf */ - RDEF(TH, 920.0f, 925.0f, 100, 0, 16, true, false, false), + RDEF(TH, 920.0f, 925.0f, 100, 0, SETTING_MAX_POWER, true, false, false), /* 433,05-434,7 Mhz 10 mW https://nkrzi.gov.ua/images/upload/256/5810/PDF_UUZ_19_01_2016.pdf */ - RDEF(UA_433, 433.0f, 434.7f, 10, 0, 10, true, false, false), + RDEF(UA_433, 433.0f, 434.7f, 10, 0, SETTING_MAX_POWER, true, false, false), /* 868,0-868,6 Mhz 25 mW https://nkrzi.gov.ua/images/upload/256/5810/PDF_UUZ_19_01_2016.pdf */ - RDEF(UA_868, 868.0f, 868.6f, 1, 0, 14, true, false, false), + RDEF(UA_868, 868.0f, 868.6f, 1, 0, SETTING_MAX_POWER, true, false, false), /* Malaysia 433 - 435 MHz at 100mW, no restrictions. https://www.mcmc.gov.my/skmmgovmy/media/General/pdf/Short-Range-Devices-Specification.pdf */ - RDEF(MY_433, 433.0f, 435.0f, 100, 0, 20, true, false, false), + RDEF(MY_433, 433.0f, 435.0f, 100, 0, SETTING_MAX_POWER, true, false, false), /* Malaysia @@ -164,14 +167,14 @@ const RegionInfo regions[] = { Frequency hopping is used for 919 - 923 MHz. https://www.mcmc.gov.my/skmmgovmy/media/General/pdf/Short-Range-Devices-Specification.pdf */ - RDEF(MY_919, 919.0f, 924.0f, 100, 0, 27, true, true, false), + RDEF(MY_919, 919.0f, 924.0f, 100, 0, SETTING_MAX_POWER, true, true, false), /* Singapore SG_923 Band 30d: 917 - 925 MHz at 100mW, no restrictions. https://www.imda.gov.sg/-/media/imda/files/regulation-licensing-and-consultations/ict-standards/telecommunication-standards/radio-comms/imdatssrd.pdf */ - RDEF(SG_923, 917.0f, 925.0f, 100, 0, 20, true, false, false), + RDEF(SG_923, 917.0f, 925.0f, 100, 0, SETTING_MAX_POWER, true, false, false), /* Philippines @@ -181,8 +184,8 @@ const RegionInfo regions[] = { https://github.com/meshtastic/firmware/issues/4948#issuecomment-2394926135 */ - RDEF(PH_433, 433.0f, 434.7f, 100, 0, 10, true, false, false), RDEF(PH_868, 868.0f, 869.4f, 100, 0, 14, true, false, false), - RDEF(PH_915, 915.0f, 918.0f, 100, 0, 24, true, false, false), + RDEF(PH_433, 433.0f, 434.7f, 100, 0, SETTING_MAX_POWER, true, false, false), RDEF(PH_868, 868.0f, 869.4f, 100, 0, 14, true, false, false), + RDEF(PH_915, 915.0f, 918.0f, 100, 0, SETTING_MAX_POWER, true, false, false), /* Kazakhstan @@ -190,32 +193,32 @@ const RegionInfo regions[] = { 863 - 868 MHz <25 mW EIRP, 500kHz channels allowed, must not be used at airfields https://github.com/meshtastic/firmware/issues/7204 */ - RDEF(KZ_433, 433.075f, 434.775f, 100, 0, 10, true, false, false), - RDEF(KZ_863, 863.0f, 868.0f, 100, 0, 30, true, false, false), + RDEF(KZ_433, 433.075f, 434.775f, 100, 0, SETTING_MAX_POWER, true, false, false), + RDEF(KZ_863, 863.0f, 868.0f, 100, 0, SETTING_MAX_POWER, true, false, false), /* Nepal 865 MHz to 868 MHz frequency band for IoT (Internet of Things), M2M (Machine-to-Machine), and smart metering use, specifically in non-cellular mode. https://www.nta.gov.np/uploads/contents/Radio-Frequency-Policy-2080-English.pdf */ - RDEF(NP_865, 865.0f, 868.0f, 100, 0, 30, true, false, false), + RDEF(NP_865, 865.0f, 868.0f, 100, 0, SETTING_MAX_POWER, true, false, false), /* Brazil 902 - 907.5 MHz , 1W power limit, no duty cycle restrictions https://github.com/meshtastic/firmware/issues/3741 */ - RDEF(BR_902, 902.0f, 907.5f, 100, 0, 30, true, false, false), + RDEF(BR_902, 902.0f, 907.5f, 100, 0, SETTING_MAX_POWER, true, false, false), /* 2.4 GHZ WLAN Band equivalent. Only for SX128x chips. */ - RDEF(LORA_24, 2400.0f, 2483.5f, 100, 0, 10, true, false, true), + RDEF(LORA_24, 2400.0f, 2483.5f, 100, 0, SETTING_MAX_POWER, true, false, true), /* This needs to be last. Same as US. */ - RDEF(UNSET, 902.0f, 928.0f, 100, 0, 30, true, false, false) + RDEF(UNSET, 902.0f, 928.0f, 100, 0, SETTING_MAX_POWER, true, false, false) }; diff --git a/code/firmware/variants/esp32c3/diy/esp32c3_moonshine/variant.h b/code/firmware/variants/esp32c3/diy/esp32c3_moonshine/variant.h index c9d1daa..9074c3c 100644 --- a/code/firmware/variants/esp32c3/diy/esp32c3_moonshine/variant.h +++ b/code/firmware/variants/esp32c3/diy/esp32c3_moonshine/variant.h @@ -13,11 +13,20 @@ #undef GPS_RX_PIN #undef GPS_TX_PIN +#define E220_400M30S +//#define E220_400M33S -#undef TX_GAIN_LORA -#undef SX126X_MAX_POWER -#define TX_GAIN_LORA 7 +#ifdef E220_400M30S +#define SETTING_MAX_POWER 30 +#define TX_GAIN_LORA 8 #define SX126X_MAX_POWER 22 +#endif + +#ifdef E220_400M33S +#define SETTING_MAX_POWER 33 +#define TX_GAIN_LORA 25 +#define SX126X_MAX_POWER 8 +#endif #define USE_LLCC68 #define LORA_SCK 10 diff --git a/code/firmware/variants/esp32c3/diy/esp32c3_moonshine_mv/variant.h b/code/firmware/variants/esp32c3/diy/esp32c3_moonshine_mv/variant.h index f0ee814..132dbc8 100644 --- a/code/firmware/variants/esp32c3/diy/esp32c3_moonshine_mv/variant.h +++ b/code/firmware/variants/esp32c3/diy/esp32c3_moonshine_mv/variant.h @@ -13,8 +13,13 @@ #undef GPS_RX_PIN #undef GPS_TX_PIN -#define TX_GAIN_LORA 8 -#define SX126X_MAX_POWER 22 +#define RA_01SC_P + +#ifdef RA_01SC_P +#define SETTING_MAX_POWER 29 +#define TX_GAIN_LORA 26 +#define SX126X_MAX_POWER 3 +#endif #define USE_LLCC68 #define LORA_SCK 10