Merge remote-tracking branch 'upstream/master'

This commit is contained in:
jacob.eva 2024-07-24 16:12:39 +01:00
commit 46f34e7492
No known key found for this signature in database
GPG Key ID: 0B92E083BBCCAA1E
7 changed files with 180 additions and 60 deletions

View File

@ -14,6 +14,7 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>. // along with this program. If not, see <https://www.gnu.org/licenses/>.
#include "Interfaces.h" #include "Interfaces.h"
#include "ROM.h"
#ifndef BOARDS_H #ifndef BOARDS_H
#define BOARDS_H #define BOARDS_H
@ -24,6 +25,7 @@
#define MCU_ESP32 0x81 #define MCU_ESP32 0x81
#define MCU_NRF52 0x71 #define MCU_NRF52 0x71
// Boards
#define BOARD_RNODE 0x31 #define BOARD_RNODE 0x31
#define BOARD_HMBRW 0x32 #define BOARD_HMBRW 0x32
#define BOARD_TBEAM 0x33 #define BOARD_TBEAM 0x33
@ -36,10 +38,11 @@
#define BOARD_HELTEC32_V3 0x3A #define BOARD_HELTEC32_V3 0x3A
#define BOARD_RNODE_NG_20 0x40 #define BOARD_RNODE_NG_20 0x40
#define BOARD_RNODE_NG_21 0x41 #define BOARD_RNODE_NG_21 0x41
#define BOARD_RNODE_NG_22 0x42 #define BOARD_T3S3 0x42
#define BOARD_GENERIC_NRF52 0x50 #define BOARD_GENERIC_NRF52 0x50
#define BOARD_FREENODE 0x52 #define BOARD_FREENODE 0x52
// Displays
#define OLED 0x01 #define OLED 0x01
#define EINK_BW 0x02 #define EINK_BW 0x02
#define EINK_3C 0x03 #define EINK_3C 0x03
@ -545,7 +548,7 @@
} }
}; };
#elif BOARD_MODEL == BOARD_RNODE_NG_22 #elif BOARD_MODEL == BOARD_T3S3
#define IS_ESP32S3 true #define IS_ESP32S3 true
#define HAS_DISPLAY true #define HAS_DISPLAY true
@ -585,7 +588,7 @@
#endif #endif
#endif #endif
#if BOARD_VARIANT == MODEL_A1
const uint8_t interfaces[INTERFACE_COUNT] = {SX1262}; const uint8_t interfaces[INTERFACE_COUNT] = {SX1262};
const bool interface_cfg[INTERFACE_COUNT][3] = { const bool interface_cfg[INTERFACE_COUNT][3] = {
// SX1262 // SX1262
@ -595,6 +598,17 @@
true // DIO2_AS_RF_SWITCH true // DIO2_AS_RF_SWITCH
}, },
}; };
#elif BOARD_VARIANT == MODEL_A5 // SX1280 with PA
const uint8_t interfaces[INTERFACE_COUNT] = {SX1280};
const bool interface_cfg[INTERFACE_COUNT][3] = {
// SX1280
{
false, // DEFAULT_SPI
false, // HAS_TCXO
false // DIO2_AS_RF_SWITCH
},
};
#endif
const uint8_t interface_pins[INTERFACE_COUNT][10] = { const uint8_t interface_pins[INTERFACE_COUNT][10] = {
// SX1262 // SX1262
{ {
@ -610,7 +624,6 @@
-1 // pin_tcxo_enable -1 // pin_tcxo_enable
} }
}; };
#else #else
#error An unsupported ESP32 board was selected. Cannot compile RNode firmware. #error An unsupported ESP32 board was selected. Cannot compile RNode firmware.
#endif #endif
@ -652,6 +665,7 @@
#define INTERFACE_COUNT 2 #define INTERFACE_COUNT 2
#define CONFIG_QUEUE_1_SIZE 20000
// first interface in list is the primary // first interface in list is the primary
const uint8_t interfaces[INTERFACE_COUNT] = {SX126X, SX128X}; const uint8_t interfaces[INTERFACE_COUNT] = {SX126X, SX128X};
const bool interface_cfg[INTERFACE_COUNT][3] = { const bool interface_cfg[INTERFACE_COUNT][3] = {
@ -724,6 +738,7 @@
#endif #endif
#ifndef INTERFACE_SPI #ifndef INTERFACE_SPI
// INTERFACE_SPI is only required on NRF52 platforms, as the SPI pins are set in the class constructor and not by a setter method.
// Even if custom SPI interfaces are not needed, the array must exist to prevent compilation errors. // Even if custom SPI interfaces are not needed, the array must exist to prevent compilation errors.
#define INTERFACE_SPI #define INTERFACE_SPI
const SPIClass interface_spi[1]; const SPIClass interface_spi[1];

View File

@ -68,7 +68,7 @@ void busyCallback(const void* p) {
#define DISP_RST -1 #define DISP_RST -1
#define DISP_ADDR 0x3C #define DISP_ADDR 0x3C
#endif #endif
#elif BOARD_MODEL == BOARD_RNODE_NG_22 #elif BOARD_MODEL == BOARD_T3S3
#if DISPLAY == OLED #if DISPLAY == OLED
#define DISP_RST 21 #define DISP_RST 21
#define DISP_ADDR 0x3C #define DISP_ADDR 0x3C
@ -200,7 +200,7 @@ bool display_init() {
digitalWrite(pin_display_en, LOW); digitalWrite(pin_display_en, LOW);
delay(50); delay(50);
digitalWrite(pin_display_en, HIGH); digitalWrite(pin_display_en, HIGH);
#elif BOARD_MODEL == BOARD_RNODE_NG_22 #elif BOARD_MODEL == BOARD_T3S3
Wire.begin(SDA_OLED, SCL_OLED); Wire.begin(SDA_OLED, SCL_OLED);
#elif BOARD_MODEL == BOARD_HELTEC32_V2 #elif BOARD_MODEL == BOARD_HELTEC32_V2
Wire.begin(SDA_OLED, SCL_OLED); Wire.begin(SDA_OLED, SCL_OLED);

View File

@ -71,8 +71,11 @@ firmware-tbeam:
firmware-tbeam_sx126x: firmware-tbeam_sx126x:
arduino-cli compile --fqbn esp32:esp32:t-beam -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x33\" \"-DMODEM=0x03\"" arduino-cli compile --fqbn esp32:esp32:t-beam -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x33\" \"-DMODEM=0x03\""
firmware-t3s3: firmware-t3s3_sx1262:
arduino-cli compile --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc" -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x42\"" arduino-cli compile --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc" -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x42\" \"-DBOARD_VARIANT=0xA1\""
firmware-t3s3_sx1280_pa:
arduino-cli compile --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc" -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x42\" \"-DBOARD_VARIANT=0xA5\""
firmware-lora32_v10: firmware-lora32_v10:
arduino-cli compile --fqbn esp32:esp32:ttgo-lora32 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x39\"" arduino-cli compile --fqbn esp32:esp32:ttgo-lora32 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x39\""
@ -113,8 +116,14 @@ firmware-featheresp32:
firmware-genericesp32: firmware-genericesp32:
arduino-cli compile --fqbn esp32:esp32:esp32 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x35\"" arduino-cli compile --fqbn esp32:esp32:esp32 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x35\""
firmware-rak4631:
arduino-cli compile --fqbn rakwireless:nrf52:WisCoreRAK4631Board -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x51\" \"-DBOARD_VARIANT=0x12\""
firmware-rak4631_sx1280:
arduino-cli compile --fqbn rakwireless:nrf52:WisCoreRAK4631Board -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x51\" \"-DBOARD_VARIANT=0x14\""
firmware-freenode: firmware-freenode:
arduino-cli compile --fqbn rakwireless:nrf52:WisCoreRAK4631Board -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x52\"" arduino-cli compile --fqbn rakwireless:nrf52:WisCoreRAK4631Board -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x52\" \"-DBOARD_VARIANT=0x21\""
upload: upload:
arduino-cli upload -p /dev/ttyUSB0 --fqbn unsignedio:avr:rnode arduino-cli upload -p /dev/ttyUSB0 --fqbn unsignedio:avr:rnode
@ -209,8 +218,6 @@ upload-freenode:
@sleep 3 @sleep 3
python3 rnodeconf.py /dev/ttyACM0 --set-firmware-length $$(ls -l ./build/rakwireless.nrf52.WisCoreRAK4631Board/freeNode_Firmware.ino.bin | awk '{print $$5}') python3 rnodeconf.py /dev/ttyACM0 --set-firmware-length $$(ls -l ./build/rakwireless.nrf52.WisCoreRAK4631Board/freeNode_Firmware.ino.bin | awk '{print $$5}')
release: release-all release: release-all
release-all: console-site spiffs-image release-tbeam release-tbeam_sx1262 release-lora32_v10 release-lora32_v20 release-lora32_v21 release-lora32_v10_extled release-lora32_v20_extled release-lora32_v21_extled release-lora32_v21_tcxo release-featheresp32 release-genericesp32 release-heltec32_v2 release-heltec32_v3 release-heltec32_v2_extled release-rnode_ng_20 release-rnode_ng_21 release-t3s3 release-hashes release-all: console-site spiffs-image release-tbeam release-tbeam_sx1262 release-lora32_v10 release-lora32_v20 release-lora32_v21 release-lora32_v10_extled release-lora32_v20_extled release-lora32_v21_extled release-lora32_v21_tcxo release-featheresp32 release-genericesp32 release-heltec32_v2 release-heltec32_v3 release-heltec32_v2_extled release-rnode_ng_20 release-rnode_ng_21 release-t3s3 release-hashes
@ -380,3 +387,13 @@ release-freenode:
arduino-cli compile --fqbn rakwireless:nrf52:WisCoreRAK4631Board -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x51\"" arduino-cli compile --fqbn rakwireless:nrf52:WisCoreRAK4631Board -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x51\""
cp build/rakwireless.nrf52.WisCoreRAK4631Board/freeNode_Firmware.ino.hex build/freeNode_Firmware.hex cp build/rakwireless.nrf52.WisCoreRAK4631Board/freeNode_Firmware.ino.hex build/freeNode_Firmware.hex
adafruit-nrfutil dfu genpkg --dev-type 0x0052 --application build/freeNode_Firmware.hex Release/freeNode_Firmware.zip adafruit-nrfutil dfu genpkg --dev-type 0x0052 --application build/freeNode_Firmware.hex Release/freeNode_Firmware.zip
release-rak4631:
arduino-cli compile --fqbn rakwireless:nrf52:WisCoreRAK4631Board -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x51\" \"-DBOARD_VARIANT=0x12\""
cp build/rakwireless.nrf52.WisCoreRAK4631Board/RNode_Firmware_CE.ino.hex build/rnode_firmware_rak4631.hex
adafruit-nrfutil dfu genpkg --dev-type 0x0052 --application build/rnode_firmware_rak4631.hex Release/rnode_firmware_rak4631.zip
release-rak4631_sx1280:
arduino-cli compile --fqbn rakwireless:nrf52:WisCoreRAK4631Board -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x51\" \"-DBOARD_VARIANT=0x14\""
cp build/rakwireless.nrf52.WisCoreRAK4631Board/RNode_Firmware_CE.ino.hex build/rnode_firmware_rak4631_sx1280.hex
adafruit-nrfutil dfu genpkg --dev-type 0x0052 --application build/rnode_firmware_rak4631_sx1280.hex Release/rnode_firmware_rak4631_sx1280.zip

View File

@ -33,6 +33,7 @@ You must have at least version `2.1.3` of `rnodeconf` installed to update the RN
| Name | Manufacturer | Link | Transceiver | MCU | Description | | Name | Manufacturer | Link | Transceiver | MCU | Description |
| :---: | :---: | :---: | :---: | :---: | :---: | | :---: | :---: | :---: | :---: | :---: | :---: |
| Handheld v2.x RNodes | [Mark Qvist](https://unsigned.io) | [Buy here](https://unsigned.io/shop/product/handheld-rnode) | SX1276 | ESP32 | | Handheld v2.x RNodes | [Mark Qvist](https://unsigned.io) | [Buy here](https://unsigned.io/shop/product/handheld-rnode) | SX1276 | ESP32 |
| openCom XL | [Liberated Embedded Systems](https://liberatedsystems.co.uk) | [Buy here](https://store.liberatedsystems.co.uk/product/opencom-xl/) | SX1262 & SX1280 | nRF52 | Supports utilisation of both modems at once |
### Homebrew devices ### Homebrew devices
| Board name | Link | Transceiver | MCU | Description | | Board name | Link | Transceiver | MCU | Description |

3
ROM.h
View File

@ -30,8 +30,11 @@
#define PRODUCT_FREENODE 0x20 #define PRODUCT_FREENODE 0x20
#define MODEL_11 0x11 #define MODEL_11 0x11
#define MODEL_12 0x12 #define MODEL_12 0x12
#define MODEL_13 0x13 // RAK4631 LF with WisBlock SX1280 module (LIBSYS002)
#define MODEL_14 0x14 // RAK4631 HF with WisBlock SX1280 module (LIBSYS002)
#define MODEL_21 0x21 // European band, 868MHz #define MODEL_21 0x21 // European band, 868MHz
#define MODEL_A1 0xA1 #define MODEL_A1 0xA1
#define MODEL_A5 0xA5 // T3S3 SX1280 PA
#define MODEL_A6 0xA6 #define MODEL_A6 0xA6
#define MODEL_A4 0xA4 #define MODEL_A4 0xA4
#define MODEL_A9 0xA9 #define MODEL_A9 0xA9

112
Radio.cpp
View File

@ -735,7 +735,7 @@ void sx126x::enableTCXO() {
uint8_t buf[4] = {MODE_TCXO_3_3V_6X, 0x00, 0x00, 0xFF}; uint8_t buf[4] = {MODE_TCXO_3_3V_6X, 0x00, 0x00, 0xFF};
#elif BOARD_MODEL == BOARD_TBEAM #elif BOARD_MODEL == BOARD_TBEAM
uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF}; uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF};
#elif BOARD_MODEL == BOARD_RNODE_NG_22 #elif BOARD_MODEL == BOARD_T3S3
uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF}; uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF};
#else #else
uint8_t buf[4] = {0}; uint8_t buf[4] = {0};
@ -2192,9 +2192,8 @@ void sx128x::disableTCXO() {
} }
void sx128x::setTxPower(int level, int outputPin) { void sx128x::setTxPower(int level, int outputPin) {
// PA calculation currently only works for the LoRa1280F27. Support for uint8_t tx_buf[2];
// other assemblies would be appreciated in a PR. #if BOARD_VARIANT == MODEL_21
if (outputPin == PA_OUTPUT_PA_BOOST_PIN) {
if (level > 27) { if (level > 27) {
level = 27; level = 27;
} else if (level < 0) { } else if (level < 0) {
@ -2290,32 +2289,113 @@ void sx128x::setTxPower(int level, int outputPin) {
case 27: case 27:
reg_value = 13; reg_value = 13;
break; break;
default:
reg_value = 0;
break;
} }
tx_buf[0] = reg_value + 18;
uint8_t tx_buf[2];
tx_buf[0] = reg_value;
tx_buf[1] = 0xE0; // ramping time - 20 microseconds tx_buf[1] = 0xE0; // ramping time - 20 microseconds
executeOpcode(OP_TX_PARAMS_8X, tx_buf, 2); executeOpcode(OP_TX_PARAMS_8X, tx_buf, 2);
} else {
#elif BOARD_VARIANT == MODEL_A5
// T3S3 SX1280 PA
if (level > 20) {
level = 20;
} else if (level < 0) {
level = 0;
}
_txp = level;
int reg_value;
switch (level) {
/*case 0:
reg_value = -18;
break;
case 1:
reg_value = -17;
break;
case 2:
reg_value = -16;
break;
case 3:
reg_value = -15;
break;
case 4:
reg_value = -14;
break;
case 5:
reg_value = -13;
break;
case 6:
reg_value = -12;
break;
case 7:
reg_value = -10;
break;
case 8:
reg_value = -9;
break;
case 9:
reg_value = -8;
break;
case 10:
reg_value = -7;
break;
case 11:
reg_value = -6;
break;
case 12:
reg_value = -5;
break;
case 13:
reg_value = -4;
break;
case 14:
reg_value = -3;
break;
case 15:
reg_value = -2;
break;
case 16:
reg_value = -1;
break;
case 17:
reg_value = 0;
break;
case 18:
reg_value = 1;
break;
case 19:
reg_value = 2;
break;*/
case 20:
reg_value = 3;
break;
default:
reg_value = 0;
break;
}
tx_buf[0] = reg_value + 18;
tx_buf[1] = 0xE0; // ramping time - 20 microseconds
#else
// For SX1280 boards with no specific PA requirements
if (level > 13) { if (level > 13) {
level = 13; level = 13;
} else if (level < -18) { } else if (level < -18) {
level = -18; level = -18;
} }
_txp = level; _txp = level;
level = level + 18; tx_buf[0] = level + 18;
uint8_t tx_buf[2];
tx_buf[0] = level;
tx_buf[1] = 0xE0; // ramping time - 20 microseconds tx_buf[1] = 0xE0; // ramping time - 20 microseconds
#endif
executeOpcode(OP_TX_PARAMS_8X, tx_buf, 2); executeOpcode(OP_TX_PARAMS_8X, tx_buf, 2);
}
} }
uint8_t sx128x::getTxPower() { uint8_t sx128x::getTxPower() {

View File

@ -71,9 +71,9 @@ uint8_t eeprom_read(uint32_t mapped_addr);
#if BOARD_MODEL == BOARD_HELTEC32_V3 #if BOARD_MODEL == BOARD_HELTEC32_V3
//https://github.com/espressif/esp-idf/issues/8855 //https://github.com/espressif/esp-idf/issues/8855
#include "hal/wdt_hal.h" #include "hal/wdt_hal.h"
#elif BOARD_MODEL == BOARD_RNODE_NG_22 #elif BOARD_MODEL == BOARD_T3S3
#include "hal/wdt_hal.h" #include "hal/wdt_hal.h"
#else BOARD_MODEL != BOARD_RNODE_NG_22 #else BOARD_MODEL != BOARD_T3S3
#include "soc/rtc_wdt.h" #include "soc/rtc_wdt.h"
#endif #endif
#define ISR_VECT IRAM_ATTR #define ISR_VECT IRAM_ATTR
@ -143,7 +143,7 @@ uint8_t boot_vector = 0x00;
void led_rx_off() { digitalWrite(pin_led_rx, LOW); } void led_rx_off() { digitalWrite(pin_led_rx, LOW); }
void led_tx_on() { digitalWrite(pin_led_tx, HIGH); } void led_tx_on() { digitalWrite(pin_led_tx, HIGH); }
void led_tx_off() { digitalWrite(pin_led_tx, LOW); } void led_tx_off() { digitalWrite(pin_led_tx, LOW); }
#elif BOARD_MODEL == BOARD_RNODE_NG_22 #elif BOARD_MODEL == BOARD_T3S3
void led_rx_on() { digitalWrite(pin_led_rx, HIGH); } void led_rx_on() { digitalWrite(pin_led_rx, HIGH); }
void led_rx_off() { digitalWrite(pin_led_rx, LOW); } void led_rx_off() { digitalWrite(pin_led_rx, LOW); }
void led_tx_on() { digitalWrite(pin_led_tx, HIGH); } void led_tx_on() { digitalWrite(pin_led_tx, HIGH); }
@ -971,6 +971,9 @@ void set_implicit_length(uint8_t len) {
} }
void setTXPower(RadioInterface* radio, int txp) { void setTXPower(RadioInterface* radio, int txp) {
// Todo, revamp this function. The current parameters for setTxPower are
// suboptimal, as some chips have power amplifiers which means that the max
// dBm is not always the same.
if (model == MODEL_11) { if (model == MODEL_11) {
if (interfaces[radio->getIndex()] == SX128X) { if (interfaces[radio->getIndex()] == SX128X) {
radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN); radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN);
@ -998,6 +1001,7 @@ void setTXPower(RadioInterface* radio, int txp) {
if (model == MODEL_A2) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN); if (model == MODEL_A2) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN);
if (model == MODEL_A3) radio->setTxPower(txp, PA_OUTPUT_RFO_PIN); if (model == MODEL_A3) radio->setTxPower(txp, PA_OUTPUT_RFO_PIN);
if (model == MODEL_A4) radio->setTxPower(txp, PA_OUTPUT_RFO_PIN); if (model == MODEL_A4) radio->setTxPower(txp, PA_OUTPUT_RFO_PIN);
if (model == MODEL_A5) radio->setTxPower(txp, PA_OUTPUT_RFO_PIN);
if (model == MODEL_A6) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN); if (model == MODEL_A6) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN);
if (model == MODEL_A7) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN); if (model == MODEL_A7) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN);
if (model == MODEL_A8) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN); if (model == MODEL_A8) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN);
@ -1346,8 +1350,8 @@ bool eeprom_model_valid() {
if (model == MODEL_A3 || model == MODEL_A8) { if (model == MODEL_A3 || model == MODEL_A8) {
#elif BOARD_MODEL == BOARD_RNODE_NG_21 #elif BOARD_MODEL == BOARD_RNODE_NG_21
if (model == MODEL_A2 || model == MODEL_A7) { if (model == MODEL_A2 || model == MODEL_A7) {
#elif BOARD_MODEL == BOARD_RNODE_NG_22 #elif BOARD_MODEL == BOARD_T3S3
if (model == MODEL_A1 || model == MODEL_A6) { if (model == MODEL_A1 || model == MODEL_A5 || model == MODEL_A6) {
#elif BOARD_MODEL == BOARD_HMBRW #elif BOARD_MODEL == BOARD_HMBRW
if (model == MODEL_FF || model == MODEL_FE) { if (model == MODEL_FF || model == MODEL_FE) {
#elif BOARD_MODEL == BOARD_TBEAM #elif BOARD_MODEL == BOARD_TBEAM