Initial commit

This commit is contained in:
2026-02-26 16:13:54 +03:00
parent 180207aa2e
commit 0e74e0cd10
9 changed files with 476 additions and 28 deletions

147
Boards.h
View File

@@ -122,6 +122,10 @@
#define MODEL_FE 0xFE // Homebrew board, max 17dBm output power #define MODEL_FE 0xFE // Homebrew board, max 17dBm output power
#define MODEL_FF 0xFF // Homebrew board, max 14dBm output power #define MODEL_FF 0xFF // Homebrew board, max 14dBm output power
#define BOARD_AETHERNODE 0xF3 // Aethernode
#define BOARD_MESHADVENTURER 0xF4 // Meshadventurer
#define BOARD_PROMICRO 0xF5 // FakeTec (Promicro)
#if defined(__AVR_ATmega1284P__) #if defined(__AVR_ATmega1284P__)
#define PLATFORM PLATFORM_AVR #define PLATFORM PLATFORM_AVR
#define MCU_VARIANT MCU_1284P #define MCU_VARIANT MCU_1284P
@@ -219,14 +223,89 @@
#define PIN_GPS_RX 34 #define PIN_GPS_RX 34
#if BOARD_MODEL == BOARD_GENERIC_ESP32 #if BOARD_MODEL == BOARD_GENERIC_ESP32
#define HAS_DISPLAY true
#define HAS_BLUETOOTH true #define HAS_BLUETOOTH true
#define HAS_WIFI true
#define HAS_CONSOLE true #define HAS_CONSOLE true
#define HAS_EEPROM true #define HAS_EEPROM true
const int pin_cs = 4; #define HAS_BUSY true
const int pin_reset = 33; #define HAS_INPUT true
const int pin_dio = 39; #define HAS_TCXO true
const int pin_led_rx = 14; #define MODEM SX1262
const int pin_led_tx = 32; #define DIO2_AS_RF_SWITCH true
#define HAS_RF_SWITCH_RX_TX false
const int pin_cs = 5;
const int pin_sclk = 18;
const int pin_miso = 19;
const int pin_mosi = 23;
const int pin_busy = 32;
const int pin_reset = 34;
const int pin_dio = 33;
const int pin_txen = -1;
const int pin_rxen = -1;
const int pin_tcxo_enable = -1;
const int pin_btn_usr1 = 39;
const int pin_led_rx = 2;
const int pin_led_tx = 4;
#elif BOARD_MODEL == BOARD_MESHADVENTURER
#define HAS_DISPLAY true
#define HAS_BLUETOOTH true
#define HAS_WIFI true
#define HAS_CONSOLE true
#define HAS_EEPROM true
#define HAS_BUSY true
#define HAS_INPUT true
#define HAS_TCXO true
#define MODEM SX1262
#define DIO2_AS_RF_SWITCH false
#define HAS_RF_SWITCH_RX_TX true
#define HAS_LORA_LNA true
#define LORA_LNA_GAIN 17
#define LORA_LNA_GVT 12
const int pin_cs = 18;
const int pin_sclk = 5;
const int pin_miso = 19;
const int pin_mosi = 27;
const int pin_busy = 32;
const int pin_reset = 23;
const int pin_dio = 33;
const int pin_txen = 13;
const int pin_rxen = 14;
const int pin_tcxo_enable = -1;
const int pin_btn_usr1 = 39;
const int pin_led_rx = 2;
const int pin_led_tx = 4;
#elif BOARD_MODEL == BOARD_AETHERNODE
#define HAS_DISPLAY true
#define HAS_BLUETOOTH true
#define HAS_WIFI true
#define HAS_CONSOLE true
#define HAS_EEPROM true
#define HAS_BUSY true
#define HAS_INPUT true
#define HAS_TCXO true
#define MODEM SX1262
#define DIO2_AS_RF_SWITCH true
#define HAS_RF_SWITCH_RX_TX false
const int pin_cs = 5;
const int pin_sclk = 18;
const int pin_miso = 19;
const int pin_mosi = 23;
const int pin_busy = 32;
const int pin_reset = 34;
const int pin_dio = 33;
const int pin_txen = -1;
const int pin_rxen = -1;
const int pin_tcxo_enable = -1;
const int pin_btn_usr1 = 39;
const int pin_led_rx = 2;
const int pin_led_tx = 4;
#elif BOARD_MODEL == BOARD_TBEAM #elif BOARD_MODEL == BOARD_TBEAM
#define HAS_DISPLAY true #define HAS_DISPLAY true
@@ -887,6 +966,64 @@
const int DISPLAY_BL_PIN = PIN_T114_TFT_BLGT; const int DISPLAY_BL_PIN = PIN_T114_TFT_BLGT;
const int DISPLAY_RST = PIN_T114_TFT_RST; const int DISPLAY_RST = PIN_T114_TFT_RST;
#elif BOARD_MODEL == BOARD_PROMICRO
//TODO:
// - Fix low output power
// - Make compatible with non-TCXO radios
// - Add PMU
#define MODEM SX1262
#define HAS_EEPROM false
#define HAS_BLUETOOTH false
#define HAS_BLE true
#define HAS_CONSOLE false
#define HAS_PMU false
#define HAS_NP false
#define HAS_SD false
#define HAS_TCXO true
#define HAS_BUSY true
#define HAS_RF_SWITCH_RX_TX true
#define DIO2_AS_RF_SWITCH true
#define OCP_TUNED 0x38
#define HAS_SLEEP false
#define BLE_MANUFACTURER "DIY"
#define BLE_MODEL "ProMicro"
#define HAS_INPUT true
#define EEPROM_SIZE 296
#define EEPROM_OFFSET EEPROM_SIZE-EEPROM_RESERVED
#define CONFIG_UART_BUFFER_SIZE 6144
#define CONFIG_QUEUE_SIZE 6144
#define CONFIG_QUEUE_MAX_LENGTH 200
//Confused with the pin numbers??
//https://github.com/pdcook/nRFMicro-Arduino-Core/blob/a83161e619da8668f726b52578a3dd89c1ef5956/variants/nice_nano/variant.h#L59
#define HAS_DISPLAY true
#define I2C_SDA 8 //P1.04
#define I2C_SCL 7 //P0.11
#define LED_ON LOW
#define LED_OFF HIGH
#define PIN_LED_RED 22 //P0.15
const int pin_led_rx = PIN_LED_RED;
const int pin_led_tx = PIN_LED_RED;
#define PIN_VEXT_EN 21 //P0.13
const int pin_btn_usr1 = 6; //P1.00
const int pin_reset = 10; //P0.09
const int pin_cs = 13; //P1.13
const int pin_sclk = 12; //P1.11
const int pin_mosi = 14; //P1.15
const int pin_miso = 15; //P0.02
const int pin_busy = 16; //P0.29
const int pin_dio = 11; //P0.10
const int pin_tcxo_enable = -1;
const int pin_rxen = 2; //P0.17
const int pin_txen = -1;
#else #else
#error An unsupported nRF board was selected. Cannot compile RNode firmware. #error An unsupported nRF board was selected. Cannot compile RNode firmware.
#endif #endif

View File

@@ -65,6 +65,26 @@
#define DISP_ADDR 0x3C #define DISP_ADDR 0x3C
#define SCL_OLED 18 #define SCL_OLED 18
#define SDA_OLED 17 #define SDA_OLED 17
#elif BOARD_MODEL == BOARD_GENERIC_ESP32
#define DISP_RST -1
#define DISP_ADDR 0x3C
#define SCL_OLED 22
#define SDA_OLED 11
#elif BOARD_MODEL == BOARD_MESHADVENTURER
#define DISP_RST -1
#define DISP_ADDR 0x3C
#define SCL_OLED 22
#define SDA_OLED 21
#elif BOARD_MODEL == BOARD_AETHERNODE
#define DISP_RST -1
#define DISP_ADDR 0x3C
#define SCL_OLED 22
#define SDA_OLED 21
#elif BOARD_MODEL == BOARD_PROMICRO
#define DISP_RST -1
#define DISP_ADDR 0x3C
#define SCL_OLED 7
#define SDA_OLED 8
#elif BOARD_MODEL == BOARD_RAK4631 #elif BOARD_MODEL == BOARD_RAK4631
// RAK1921/SSD1306 // RAK1921/SSD1306
#define DISP_RST -1 #define DISP_RST -1
@@ -311,6 +331,9 @@ bool display_init() {
#elif BOARD_MODEL == BOARD_HELTEC_T114 #elif BOARD_MODEL == BOARD_HELTEC_T114
pinMode(PIN_T114_TFT_EN, OUTPUT); pinMode(PIN_T114_TFT_EN, OUTPUT);
digitalWrite(PIN_T114_TFT_EN, LOW); digitalWrite(PIN_T114_TFT_EN, LOW);
#elif BOARD_MODEL == BOARD_PROMICRO
Wire.setPins(SDA_OLED, SCL_OLED);
Wire.begin();
#elif BOARD_MODEL == BOARD_TECHO #elif BOARD_MODEL == BOARD_TECHO
display.init(0, true, 10, false, displaySPI, SPISettings(4000000, MSBFIRST, SPI_MODE0)); display.init(0, true, 10, false, displaySPI, SPISettings(4000000, MSBFIRST, SPI_MODE0));
display.setPartialWindow(0, 0, DISP_W, DISP_H); display.setPartialWindow(0, 0, DISP_W, DISP_H);
@@ -434,6 +457,15 @@ bool display_init() {
#elif BOARD_MODEL == BOARD_TECHO #elif BOARD_MODEL == BOARD_TECHO
disp_mode = DISP_MODE_PORTRAIT; disp_mode = DISP_MODE_PORTRAIT;
display.setRotation(3); display.setRotation(3);
#elif BOARD_MODEL == BOARD_MESHADVENTURER
disp_mode = DISP_MODE_LANDSCAPE;
display.setRotation(0);
#elif BOARD_MODEL == BOARD_AETHERNODE
disp_mode = DISP_MODE_LANDSCAPE;
display.setRotation(0);
#elif BOARD_MODEL == BOARD_PROMICRO
disp_mode = DISP_MODE_LANDSCAPE;
display.setRotation(0);
#else #else
disp_mode = DISP_MODE_PORTRAIT; disp_mode = DISP_MODE_PORTRAIT;
display.setRotation(3); display.setRotation(3);
@@ -1071,6 +1103,7 @@ void update_display(bool blank = false) {
#if BOARD_MODEL == BOARD_HELTEC_T114 #if BOARD_MODEL == BOARD_HELTEC_T114
display.clear(); display.clear();
display.display(); display.display();
digitalWrite(PIN_T114_TFT_BLGT, HIGH);
#elif BOARD_MODEL != BOARD_TDECK && BOARD_MODEL != BOARD_TECHO #elif BOARD_MODEL != BOARD_TDECK && BOARD_MODEL != BOARD_TECHO
display.clearDisplay(); display.clearDisplay();
display.display(); display.display();
@@ -1128,6 +1161,9 @@ void update_display(bool blank = false) {
void display_unblank() { void display_unblank() {
last_unblank_event = millis(); last_unblank_event = millis();
#if BOARD_MODEL == BOARD_HELTEC_T114
digitalWrite(PIN_T114_TFT_BLGT, LOW);
#endif
} }
void ext_fb_enable() { void ext_fb_enable() {

View File

@@ -17,7 +17,7 @@
ARDUINO_ESP_CORE_VER = 2.0.17 ARDUINO_ESP_CORE_VER = 2.0.17
# Version 3.2.0 of the Arduino ESP core is based on ESP-IDF v5.4.1 # Version 3.2.0 of the Arduino ESP core is based on ESP-IDF v5.4.1
# ARDUINO_ESP_CORE_VER = 3.2.0 #ARDUINO_ESP_CORE_VER = 3.3.7
all: release all: release
@@ -51,10 +51,12 @@ prep-nrf:
arduino-cli core install rakwireless:nrf52 --config-file arduino-cli.yaml arduino-cli core install rakwireless:nrf52 --config-file arduino-cli.yaml
arduino-cli core install Heltec_nRF52:Heltec_nRF52 --config-file arduino-cli.yaml arduino-cli core install Heltec_nRF52:Heltec_nRF52 --config-file arduino-cli.yaml
arduino-cli core install adafruit:nrf52 --config-file arduino-cli.yaml arduino-cli core install adafruit:nrf52 --config-file arduino-cli.yaml
arduino-cli core install "promicro:nrf52" --config-file arduino-cli.yaml
sed -i.bak 's/nicenanov2\.build\.ldscript=nrf52840_s140_v7\.ld/nicenanov2.build.ldscript=nrf52840_s140_v6.ld/' ~/.arduino15/packages/promicro/hardware/nrf52/1.0.2/boards.txt
arduino-cli lib install "GxEPD2" arduino-cli lib install "GxEPD2"
arduino-cli config set library.enable_unsafe_install true arduino-cli config set library.enable_unsafe_install true
arduino-cli lib install --git-url https://github.com/liamcottle/esp8266-oled-ssd1306#e16cee124fe26490cb14880c679321ad8ac89c95 arduino-cli lib install --git-url https://github.com/liamcottle/esp8266-oled-ssd1306#e16cee124fe26490cb14880c679321ad8ac89c95
pip install adafruit-nrfutil --upgrade pip install adafruit-nrfutil --upgrade --break-system-packages
console-site: console-site:
make -C Console clean site make -C Console clean site
@@ -140,12 +142,21 @@ firmware-featheresp32: check_bt_buffers
firmware-genericesp32: check_bt_buffers firmware-genericesp32: check_bt_buffers
arduino-cli compile --log --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 --log --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-meshadventurer: check_bt_buffers
arduino-cli compile --log --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=0xF4\""
firmware-aethernode: check_bt_buffers
arduino-cli compile --log --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: firmware-rak4631:
arduino-cli compile --log --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 --log --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\""
firmware-heltec_t114: firmware-heltec_t114:
arduino-cli compile --log --fqbn Heltec_nRF52:Heltec_nRF52:HT-n5262 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x3C\"" arduino-cli compile --log --fqbn Heltec_nRF52:Heltec_nRF52:HT-n5262 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x3C\""
firmware-promicro:
arduino-cli compile --log --fqbn promicro:nrf52:nicenanov2:softdevice=s140v6 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0xF5\""
firmware-techo: firmware-techo:
arduino-cli compile --log --fqbn adafruit:nrf52:pca10056 -e --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x44\"" arduino-cli compile --log --fqbn adafruit:nrf52:pca10056 -e --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x44\""
@@ -155,6 +166,27 @@ firmware-xiao_s3:
upload: upload:
arduino-cli upload -p /dev/ttyUSB0 --fqbn unsignedio:avr:rnode arduino-cli upload -p /dev/ttyUSB0 --fqbn unsignedio:avr:rnode
upload-genericesp32:
arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:esp32
@sleep 1
rnodeconf /dev/ttyUSB0 --firmware-hash $$(./partition_hashes ./build/esp32.esp32.esp32/RNode_Firmware.ino.bin)
@sleep 3
python ./Release/esptool/esptool.py --chip esp32 --port /dev/ttyACM0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x210000 ./Release/console_image.bin
upload-meshadventurer:
arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:esp32
@sleep 1
rnodeconf /dev/ttyUSB0 --firmware-hash $$(./partition_hashes ./build/esp32.esp32.esp32/RNode_Firmware.ino.bin)
@sleep 3
python ./Release/esptool/esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x210000 ./Release/console_image.bin
upload-aethernode:
arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:esp32
@sleep 1
rnodeconf /dev/ttyUSB0 --firmware-hash $$(./partition_hashes ./build/esp32.esp32.esp32/RNode_Firmware.ino.bin)
@sleep 3
python ./Release/esptool/esptool.py --chip esp32 --port /dev/ttyACM0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x210000 ./Release/console_image.bin
upload-mega2560: upload-mega2560:
arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:mega arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:mega
@@ -198,7 +230,7 @@ upload-heltec32_v2:
@sleep 1 @sleep 1
rnodeconf /dev/ttyUSB0 --firmware-hash $$(./partition_hashes ./build/esp32.esp32.heltec_wifi_lora_32_V2/RNode_Firmware.ino.bin) rnodeconf /dev/ttyUSB0 --firmware-hash $$(./partition_hashes ./build/esp32.esp32.heltec_wifi_lora_32_V2/RNode_Firmware.ino.bin)
@sleep 3 @sleep 3
python ./Release/esptool/esptool.py --chip esp32 --port /dev/ttyUSB1 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x210000 ./Release/console_image.bin python ./Release/esptool/esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x210000 ./Release/console_image.bin
upload-heltec32_v3: upload-heltec32_v3:
arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:heltec_wifi_lora_32_V3 arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:heltec_wifi_lora_32_V3
@@ -266,6 +298,11 @@ upload-heltec_t114:
@sleep 1 @sleep 1
rnodeconf /dev/ttyACM0 --firmware-hash $$(./partition_hashes from_device /dev/ttyACM0) rnodeconf /dev/ttyACM0 --firmware-hash $$(./partition_hashes from_device /dev/ttyACM0)
upload-promicro:
arduino-cli upload -p /dev/ttyACM0 --fqbn promicro:nrf52:nicenanov2:softdevice=s140v6
@sleep 6
rnodeconf /dev/ttyACM0 --firmware-hash $$(./partition_hashes from_device /dev/ttyACM0)
upload-techo: upload-techo:
arduino-cli upload -p /dev/ttyACM0 --fqbn adafruit:nrf52:pca10056 arduino-cli upload -p /dev/ttyACM0 --fqbn adafruit:nrf52:pca10056
@sleep 6 @sleep 6
@@ -488,6 +525,24 @@ release-genericesp32: check_bt_buffers
zip --junk-paths ./Release/rnode_firmware_esp32_generic.zip ./Release/esptool/esptool.py ./Release/console_image.bin build/rnode_firmware_esp32_generic.boot_app0 build/rnode_firmware_esp32_generic.bin build/rnode_firmware_esp32_generic.bootloader build/rnode_firmware_esp32_generic.partitions zip --junk-paths ./Release/rnode_firmware_esp32_generic.zip ./Release/esptool/esptool.py ./Release/console_image.bin build/rnode_firmware_esp32_generic.boot_app0 build/rnode_firmware_esp32_generic.bin build/rnode_firmware_esp32_generic.bootloader build/rnode_firmware_esp32_generic.partitions
rm -r build rm -r build
release-meshadventurer: check_bt_buffers
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=0xF4\""
cp ~/.arduino15/packages/esp32/hardware/esp32/$(ARDUINO_ESP_CORE_VER)/tools/partitions/boot_app0.bin build/rnode_firmware_meshadventurer.boot_app0
cp build/esp32.esp32.esp32/RNode_Firmware.ino.bin build/rnode_firmware_meshadventurer.bin
cp build/esp32.esp32.esp32/RNode_Firmware.ino.bootloader.bin build/rnode_firmware_meshadventurer.bootloader
cp build/esp32.esp32.esp32/RNode_Firmware.ino.partitions.bin build/rnode_firmware_meshadventurer.partitions
zip --junk-paths ./Release/rnode_firmware_meshadventurer.zip ./Release/esptool/esptool.py ./Release/console_image.bin build/rnode_firmware_meshadventurer.boot_app0 build/rnode_firmware_meshadventurer.bin build/rnode_firmware_meshadventurer.bootloader build/rnode_firmware_meshadventurer.partitions
rm -r build
release-aethernode: check_bt_buffers
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\""
cp ~/.arduino15/packages/esp32/hardware/esp32/$(ARDUINO_ESP_CORE_VER)/tools/partitions/boot_app0.bin build/rnode_firmware_aethernode.boot_app0
cp build/esp32.esp32.esp32/RNode_Firmware.ino.bin build/rnode_firmware_aethernode.bin
cp build/esp32.esp32.esp32/RNode_Firmware.ino.bootloader.bin build/rnode_firmware_aethernode.bootloader
cp build/esp32.esp32.esp32/RNode_Firmware.ino.partitions.bin build/rnode_firmware_aethernode.partitions
zip --junk-paths ./Release/rnode_firmware_aethernode.zip ./Release/esptool/esptool.py ./Release/console_image.bin build/rnode_firmware_aethernode.boot_app0 build/rnode_firmware_aethernode.bin build/rnode_firmware_aethernode.bootloader build/rnode_firmware_aethernode.partitions
rm -r build
release-mega2560: release-mega2560:
arduino-cli compile --fqbn arduino:avr:mega -e --build-property "compiler.cpp.extra_flags=\"-DMODEM=0x01\"" arduino-cli compile --fqbn arduino:avr:mega -e --build-property "compiler.cpp.extra_flags=\"-DMODEM=0x01\""
cp build/arduino.avr.mega/RNode_Firmware.ino.hex Release/rnode_firmware_m2560.hex cp build/arduino.avr.mega/RNode_Firmware.ino.hex Release/rnode_firmware_m2560.hex
@@ -503,6 +558,11 @@ release-heltec_t114:
cp build/Heltec_nRF52.Heltec_nRF52.HT-n5262/RNode_Firmware.ino.hex build/rnode_firmware_heltec_t114.hex cp build/Heltec_nRF52.Heltec_nRF52.HT-n5262/RNode_Firmware.ino.hex build/rnode_firmware_heltec_t114.hex
adafruit-nrfutil dfu genpkg --dev-type 0x0052 --application build/rnode_firmware_heltec_t114.hex Release/rnode_firmware_heltec_t114.zip adafruit-nrfutil dfu genpkg --dev-type 0x0052 --application build/rnode_firmware_heltec_t114.hex Release/rnode_firmware_heltec_t114.zip
release-promicro:
arduino-cli compile --log --fqbn promicro:nrf52:nicenanov2:softdevice=s140v6 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0xF5\""
cp build/promicro.nrf52.nicenanov2/RNode_Firmware.ino.hex build/rnode_firmware_promicro.hex
adafruit-nrfutil dfu genpkg --dev-type 0x0052 --application build/rnode_firmware_promicro.hex Release/rnode_firmware_promicro.zip
release-techo: release-techo:
arduino-cli compile --log --fqbn adafruit:nrf52:pca10056 -e --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x44\"" arduino-cli compile --log --fqbn adafruit:nrf52:pca10056 -e --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x44\""
cp build/adafruit.nrf52.pca10056/RNode_Firmware.ino.hex build/rnode_firmware_techo.hex cp build/adafruit.nrf52.pca10056/RNode_Firmware.ino.hex build/rnode_firmware_techo.hex

View File

@@ -89,6 +89,12 @@ void setup() {
pinMode(PIN_LED_BLUE, OUTPUT); pinMode(PIN_LED_BLUE, OUTPUT);
delay(200); delay(200);
#endif #endif
#if BOARD_MODEL == BOARD_PROMICRO
delay(200);
pinMode(PIN_VEXT_EN, OUTPUT);
digitalWrite(PIN_VEXT_EN, HIGH);
delay(200);
#endif
if (!eeprom_begin()) { Serial.write("EEPROM initialisation failed.\r\n"); } if (!eeprom_begin()) { Serial.write("EEPROM initialisation failed.\r\n"); }
#endif #endif
@@ -129,7 +135,7 @@ void setup() {
boot_seq(); boot_seq();
#endif #endif
#if BOARD_MODEL != BOARD_RAK4631 && BOARD_MODEL != BOARD_HELTEC_T114 && BOARD_MODEL != BOARD_TECHO && BOARD_MODEL != BOARD_T3S3 && BOARD_MODEL != BOARD_TBEAM_S_V1 && BOARD_MODEL != BOARD_HELTEC32_V4 #if BOARD_MODEL != BOARD_RAK4631 && BOARD_MODEL != BOARD_HELTEC_T114 && BOARD_MODEL != BOARD_PROMICRO && BOARD_MODEL != BOARD_TECHO && BOARD_MODEL != BOARD_T3S3 && BOARD_MODEL != BOARD_TBEAM_S_V1 && BOARD_MODEL != BOARD_HELTEC32_V4
// Some boards need to wait until the hardware UART is set up before booting // Some boards need to wait until the hardware UART is set up before booting
// the full firmware. In the case of the RAK4631 and Heltec T114, the line below will wait // the full firmware. In the case of the RAK4631 and Heltec T114, the line below will wait
// until a serial connection is actually established with a master. Thus, it // until a serial connection is actually established with a master. Thus, it
@@ -535,7 +541,9 @@ bool startRadio() {
// Flash an info pattern to indicate // Flash an info pattern to indicate
// that the radio is now on // that the radio is now on
kiss_indicate_radiostate(); kiss_indicate_radiostate();
led_indicate_info(3); if (!display_blanked) {
led_indicate_info(3);
}
return true; return true;
} }
@@ -575,7 +583,7 @@ volatile bool queue_flushing = false;
void flush_queue(void) { void flush_queue(void) {
if (!queue_flushing) { if (!queue_flushing) {
queue_flushing = true; queue_flushing = true;
led_tx_on(); if (!display_blanked) { led_tx_on(); }
#if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52 #if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
while (!fifo16_isempty(&packet_starts)) { while (!fifo16_isempty(&packet_starts)) {
@@ -596,7 +604,7 @@ void flush_queue(void) {
} }
} }
lora_receive(); led_tx_off(); lora_receive(); if (!display_blanked) { led_tx_off(); }
} }
queue_height = 0; queue_height = 0;
@@ -615,7 +623,8 @@ void flush_queue(void) {
void pop_queue() { void pop_queue() {
if (!queue_flushing) { if (!queue_flushing) {
queue_flushing = true; led_tx_on(); queue_flushing = true;
if (!display_blanked) { led_tx_on(); }
#if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52 #if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
if (!fifo16_isempty(&packet_starts)) { if (!fifo16_isempty(&packet_starts)) {
@@ -637,7 +646,8 @@ void pop_queue() {
queued_bytes -= length; queued_bytes -= length;
} }
lora_receive(); led_tx_off(); lora_receive();
if (!display_blanked) { led_tx_off(); }
} }
#if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52 #if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
@@ -751,7 +761,7 @@ void transmit(uint16_t size) {
add_airtime(written); add_airtime(written);
} else { } else {
led_tx_on(); uint16_t written = 0; if (!display_blanked) { led_tx_on(); } uint16_t written = 0;
if (size > SINGLE_MTU) { size = SINGLE_MTU; } if (size > SINGLE_MTU) { size = SINGLE_MTU; }
if (!implicit) { LoRa->beginPacket(); } if (!implicit) { LoRa->beginPacket(); }
else { LoRa->beginPacket(size); } else { LoRa->beginPacket(size); }
@@ -984,7 +994,7 @@ void serial_callback(uint8_t sbyte) {
} else if (command == CMD_RADIO_LOCK) { } else if (command == CMD_RADIO_LOCK) {
update_radio_lock(); update_radio_lock();
kiss_indicate_radio_lock(); kiss_indicate_radio_lock();
} else if (command == CMD_BLINK) { } else if (command == CMD_BLINK && !display_blanked) {
led_indicate_info(sbyte); led_indicate_info(sbyte);
} else if (command == CMD_RANDOM) { } else if (command == CMD_RANDOM) {
kiss_indicate_random(getRandom()); kiss_indicate_random(getRandom());
@@ -1431,13 +1441,15 @@ void update_modem_status() {
if (carrier_detected) { dcd = true; } else { dcd = false; } if (carrier_detected) { dcd = true; } else { dcd = false; }
dcd_led = dcd; dcd_led = dcd;
if (dcd_led) { led_rx_on(); } if (!display_blanked && dcd_led) { led_rx_on(); }
else { else {
if (interference_detected) { if (interference_detected) {
if (led_id_filter >= LED_ID_TRIG && noise_floor_sampled) { led_id_on(); } if (led_id_filter >= LED_ID_TRIG && noise_floor_sampled && !display_blanked) { led_id_on(); }
} else { } else {
if (airtime_lock) { led_indicate_airtime_lock(); } if (airtime_lock && !display_blanked) { led_indicate_airtime_lock(); }
else { led_rx_off(); led_id_off(); } else {
if (!display_blanked) { led_rx_off(); led_id_off(); }
}
} }
} }
} }
@@ -1707,7 +1719,9 @@ void loop() {
console_loop(); console_loop();
#endif #endif
} else { } else {
led_indicate_standby(); if (!display_blanked) {
led_indicate_standby();
}
} }
} else { } else {

View File

@@ -135,7 +135,7 @@ uint8_t boot_vector = 0x00;
#define NUMPIXELS 1 #define NUMPIXELS 1
Adafruit_NeoPixel pixels(NUMPIXELS, pin_np, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel pixels(NUMPIXELS, pin_np, NEO_GRB + NEO_KHZ800);
uint8_t npr = 0; uint8_t npr = 0;
uint8_t npg = 0; uint8_t npg = 0;
uint8_t npb = 0; uint8_t npb = 0;
float npi = NP_M; float npi = NP_M;
@@ -340,6 +340,20 @@ uint8_t boot_vector = 0x00;
void led_tx_off() { digitalWrite(pin_led_tx, LOW); } void led_tx_off() { digitalWrite(pin_led_tx, LOW); }
void led_id_on() { } void led_id_on() { }
void led_id_off() { } void led_id_off() { }
#elif BOARD_MODEL == BOARD_AETHERNODE
void led_rx_on() { digitalWrite(pin_led_rx, HIGH); }
void led_rx_off() { digitalWrite(pin_led_rx, LOW); }
void led_tx_on() { digitalWrite(pin_led_tx, HIGH); }
void led_tx_off() { digitalWrite(pin_led_tx, LOW); }
void led_id_on() { }
void led_id_off() { }
#elif BOARD_MODEL == BOARD_MESHADVENTURER
void led_rx_on() { digitalWrite(pin_led_rx, HIGH); }
void led_rx_off() { digitalWrite(pin_led_rx, LOW); }
void led_tx_on() { digitalWrite(pin_led_tx, HIGH); }
void led_tx_off() { digitalWrite(pin_led_tx, LOW); }
void led_id_on() { }
void led_id_off() { }
#endif #endif
#elif MCU_VARIANT == MCU_NRF52 #elif MCU_VARIANT == MCU_NRF52
#if HAS_NP == true #if HAS_NP == true
@@ -356,7 +370,14 @@ uint8_t boot_vector = 0x00;
void led_tx_off() { digitalWrite(pin_led_tx, LOW); } void led_tx_off() { digitalWrite(pin_led_tx, LOW); }
void led_id_on() { } void led_id_on() { }
void led_id_off() { } void led_id_off() { }
#elif BOARD_MODEL == BOARD_HELTEC_T114 #elif BOARD_MODEL == BOARD_PROMICRO
void led_rx_on() { digitalWrite(pin_led_rx, LED_ON); }
void led_rx_off() { digitalWrite(pin_led_rx, LED_OFF); }
void led_tx_on() { digitalWrite(pin_led_tx, LED_ON); }
void led_tx_off() { digitalWrite(pin_led_tx, LED_OFF); }
void led_id_on() { }
void led_id_off() { }
#elif BOARD_MODEL == BOARD_HELTEC_T114
// Heltec T114 pulls pins LOW to turn on // Heltec T114 pulls pins LOW to turn on
void led_rx_on() { digitalWrite(pin_led_rx, LOW); } void led_rx_on() { digitalWrite(pin_led_rx, LOW); }
void led_rx_off() { digitalWrite(pin_led_rx, HIGH); } void led_rx_off() { digitalWrite(pin_led_rx, HIGH); }
@@ -1340,7 +1361,7 @@ void setTXPower() {
if (model == MODEL_12) LoRa->setTxPower(mapped_lora_txp, PA_OUTPUT_RFO_PIN); if (model == MODEL_12) LoRa->setTxPower(mapped_lora_txp, PA_OUTPUT_RFO_PIN);
if (model == MODEL_C6) LoRa->setTxPower(mapped_lora_txp, PA_OUTPUT_RFO_PIN); if (model == MODEL_C6) LoRa->setTxPower(mapped_lora_txp, PA_OUTPUT_RFO_PIN);
if (model == MODEL_C7) LoRa->setTxPower(mapped_lora_txp, PA_OUTPUT_RFO_PIN); if (model == MODEL_C7) LoRa->setTxPower(mapped_lora_txp, PA_OUTPUT_RFO_PIN);
if (model == MODEL_A1) LoRa->setTxPower(mapped_lora_txp, PA_OUTPUT_PA_BOOST_PIN); if (model == MODEL_A1) LoRa->setTxPower(mapped_lora_txp, PA_OUTPUT_PA_BOOST_PIN);
if (model == MODEL_A2) LoRa->setTxPower(mapped_lora_txp, PA_OUTPUT_PA_BOOST_PIN); if (model == MODEL_A2) LoRa->setTxPower(mapped_lora_txp, PA_OUTPUT_PA_BOOST_PIN);
@@ -1653,6 +1674,12 @@ bool eeprom_model_valid() {
if (model == MODEL_FF) { if (model == MODEL_FF) {
#elif BOARD_MODEL == BOARD_GENERIC_ESP32 #elif BOARD_MODEL == BOARD_GENERIC_ESP32
if (model == MODEL_FF || model == MODEL_FE) { if (model == MODEL_FF || model == MODEL_FE) {
#elif BOARD_MODEL == BOARD_AETHERNODE
if (model == MODEL_FF || model == MODEL_FE) {
#elif BOARD_MODEL == BOARD_MESHADVENTURER
if (model == MODEL_FF || model == MODEL_FE) {
#elif BOARD_MODEL == BOARD_PROMICRO
if (model == MODEL_FF || model == MODEL_FE) {
#else #else
if (false) { if (false) {
#endif #endif

View File

@@ -4,4 +4,7 @@ board_manager:
- https://raw.githubusercontent.com/RAKwireless/RAKwireless-Arduino-BSP-Index/main/package_rakwireless_index.json - https://raw.githubusercontent.com/RAKwireless/RAKwireless-Arduino-BSP-Index/main/package_rakwireless_index.json
- https://github.com/HelTecAutomation/Heltec_nRF52/releases/download/1.7.0/package_heltec_nrf_index.json - https://github.com/HelTecAutomation/Heltec_nRF52/releases/download/1.7.0/package_heltec_nrf_index.json
- https://adafruit.github.io/arduino-board-index/package_adafruit_index.json - https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
- http://unsigned.io/arduino/package_unsignedio_UnsignedBoards_index.json ## proMicro
# - https://raw.githubusercontent.com/pdcook/nRFMicro-Arduino-Core/main/package_nRFMicro_index.json #can't use it bc the name has spaces, i created the file below
- https://gist.githubusercontent.com/gargomoma/b5cffc40e5df88462f2b488492feb6ca/raw/198c5706289014dd64be31607495e02f056d52a3/nrf_cli_fix.json
- https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

133
energysave.patch Normal file
View File

@@ -0,0 +1,133 @@
diff --git a/Display.h b/Display.h
index 7d903b9..882af8d 100644
--- a/Display.h
+++ b/Display.h
@@ -1071,6 +1071,7 @@ void update_display(bool blank = false) {
#if BOARD_MODEL == BOARD_HELTEC_T114
display.clear();
display.display();
+ digitalWrite(PIN_T114_TFT_BLGT, HIGH);
#elif BOARD_MODEL != BOARD_TDECK && BOARD_MODEL != BOARD_TECHO
display.clearDisplay();
display.display();
@@ -1128,6 +1129,9 @@ void update_display(bool blank = false) {
void display_unblank() {
last_unblank_event = millis();
+ #if BOARD_MODEL == BOARD_HELTEC_T114
+ digitalWrite(PIN_T114_TFT_BLGT, LOW);
+ #endif
}
void ext_fb_enable() {
diff --git a/RNode_Firmware.ino b/RNode_Firmware.ino
index 5649206..ba157e6 100644
--- a/RNode_Firmware.ino
+++ b/RNode_Firmware.ino
@@ -535,7 +535,9 @@ bool startRadio() {
// Flash an info pattern to indicate
// that the radio is now on
kiss_indicate_radiostate();
- led_indicate_info(3);
+ if (!display_blanked) {
+ led_indicate_info(3);
+ }
return true;
}
@@ -575,7 +577,7 @@ volatile bool queue_flushing = false;
void flush_queue(void) {
if (!queue_flushing) {
queue_flushing = true;
- led_tx_on();
+ if (!display_blanked) { led_tx_on(); }
#if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
while (!fifo16_isempty(&packet_starts)) {
@@ -596,7 +598,7 @@ void flush_queue(void) {
}
}
- lora_receive(); led_tx_off();
+ lora_receive(); if (!display_blanked) { led_tx_off(); }
}
queue_height = 0;
@@ -615,7 +617,8 @@ void flush_queue(void) {
void pop_queue() {
if (!queue_flushing) {
- queue_flushing = true; led_tx_on();
+ queue_flushing = true;
+ if (!display_blanked) { led_tx_on(); }
#if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
if (!fifo16_isempty(&packet_starts)) {
@@ -637,7 +640,8 @@ void pop_queue() {
queued_bytes -= length;
}
- lora_receive(); led_tx_off();
+ lora_receive();
+ if (!display_blanked) { led_tx_off(); }
}
#if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
@@ -751,7 +755,7 @@ void transmit(uint16_t size) {
add_airtime(written);
} else {
- led_tx_on(); uint16_t written = 0;
+ if (!display_blanked) { led_tx_on(); } uint16_t written = 0;
if (size > SINGLE_MTU) { size = SINGLE_MTU; }
if (!implicit) { LoRa->beginPacket(); }
else { LoRa->beginPacket(size); }
@@ -984,7 +988,7 @@ void serial_callback(uint8_t sbyte) {
} else if (command == CMD_RADIO_LOCK) {
update_radio_lock();
kiss_indicate_radio_lock();
- } else if (command == CMD_BLINK) {
+ } else if (command == CMD_BLINK && !display_blanked) {
led_indicate_info(sbyte);
} else if (command == CMD_RANDOM) {
kiss_indicate_random(getRandom());
@@ -1431,13 +1435,15 @@ void update_modem_status() {
if (carrier_detected) { dcd = true; } else { dcd = false; }
dcd_led = dcd;
- if (dcd_led) { led_rx_on(); }
+ if (!display_blanked && dcd_led) { led_rx_on(); }
else {
if (interference_detected) {
- if (led_id_filter >= LED_ID_TRIG && noise_floor_sampled) { led_id_on(); }
+ if (led_id_filter >= LED_ID_TRIG && noise_floor_sampled && !display_blanked) { led_id_on(); }
} else {
- if (airtime_lock) { led_indicate_airtime_lock(); }
- else { led_rx_off(); led_id_off(); }
+ if (airtime_lock && !display_blanked) { led_indicate_airtime_lock(); }
+ else {
+ if (!display_blanked) { led_rx_off(); led_id_off(); }
+ }
}
}
}
@@ -1707,7 +1713,9 @@ void loop() {
console_loop();
#endif
} else {
- led_indicate_standby();
+ if (!display_blanked) {
+ led_indicate_standby();
+ }
}
} else {
diff --git a/arduino-cli.yaml b/arduino-cli.yaml
index 6dd5f8d..d358070 100644
--- a/arduino-cli.yaml
+++ b/arduino-cli.yaml
@@ -4,4 +4,3 @@ board_manager:
- https://raw.githubusercontent.com/RAKwireless/RAKwireless-Arduino-BSP-Index/main/package_rakwireless_index.json
- https://github.com/HelTecAutomation/Heltec_nRF52/releases/download/1.7.0/package_heltec_nrf_index.json
- https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
- - http://unsigned.io/arduino/package_unsignedio_UnsignedBoards_index.json

View File

@@ -87,7 +87,7 @@
#define FREQ_DIV_6X (double)pow(2.0, 25.0) #define FREQ_DIV_6X (double)pow(2.0, 25.0)
#define FREQ_STEP_6X (double)(XTAL_FREQ_6X / FREQ_DIV_6X) #define FREQ_STEP_6X (double)(XTAL_FREQ_6X / FREQ_DIV_6X)
#if BOARD_MODEL == BOARD_TECHO #if BOARD_MODEL == BOARD_TECHO || BOARD_MODEL == BOARD_PROMICRO
SPIClass spim3 = SPIClass(NRF_SPIM3, pin_miso, pin_sclk, pin_mosi) ; SPIClass spim3 = SPIClass(NRF_SPIM3, pin_miso, pin_sclk, pin_mosi) ;
#define SPI spim3 #define SPI spim3
@@ -125,7 +125,7 @@ bool sx126x::preInit() {
pinMode(_ss, OUTPUT); pinMode(_ss, OUTPUT);
digitalWrite(_ss, HIGH); digitalWrite(_ss, HIGH);
#if BOARD_MODEL == BOARD_T3S3 || BOARD_MODEL == BOARD_HELTEC32_V3 || BOARD_MODEL == BOARD_HELTEC32_V4 || BOARD_MODEL == BOARD_TDECK || BOARD_MODEL == BOARD_XIAO_S3 #if BOARD_MODEL == BOARD_T3S3 || BOARD_MODEL == BOARD_HELTEC32_V3 || BOARD_MODEL == BOARD_HELTEC32_V4 || BOARD_MODEL == BOARD_TDECK || BOARD_MODEL == BOARD_XIAO_S3 || BOARD_MODEL == BOARD_GENERIC_ESP32 || BOARD_MODEL == BOARD_MESHADVENTURER || BOARD_MODEL == BOARD_AETHERNODE
SPI.begin(pin_sclk, pin_miso, pin_mosi, pin_cs); SPI.begin(pin_sclk, pin_miso, pin_mosi, pin_cs);
#elif BOARD_MODEL == BOARD_TECHO #elif BOARD_MODEL == BOARD_TECHO
SPI.setPins(pin_miso, pin_sclk, pin_mosi); SPI.setPins(pin_miso, pin_sclk, pin_mosi);
@@ -285,6 +285,22 @@ void sx126x::reset(void) {
} }
} }
void sx126x::setDCDCRegulator(void) {
// Documentation
// 5. Power Distribution -> 5.1 Selecting DC-DC Converter or LDO Regulation
// 13.1.11 SetRegulatorMode
uint8_t mode_byte = MODE_STDBY_RC_6X;
executeOpcode(OP_STANDBY_6X, &mode_byte, 1);
// Enable DC-DC regulator for high power operation
uint8_t reg_mode = 0x01; // 0x00 = LDO, 0x01 = DC-DC
executeOpcode(OP_REGULATOR_MODE_6X, &reg_mode, 1);
delay(5);
waitOnBusy();
}
void sx126x::calibrate(void) { void sx126x::calibrate(void) {
// Put in STDBY_RC mode before calibration // Put in STDBY_RC mode before calibration
uint8_t mode_byte = MODE_STDBY_RC_6X; uint8_t mode_byte = MODE_STDBY_RC_6X;
@@ -316,9 +332,19 @@ int sx126x::begin(long frequency) {
if (!_preinit_done) { if (!preInit()) { return false; } } if (!_preinit_done) { if (!preInit()) { return false; } }
if (_rxen != -1) { pinMode(_rxen, OUTPUT); } if (_rxen != -1) { pinMode(_rxen, OUTPUT); }
//TODO: if it works, make it optional
//#ifdef SX1262_USE_DCDC_REGULATOR
setDCDCRegulator();
//#endif
calibrate(); calibrate();
calibrate_image(frequency); calibrate_image(frequency);
enableTCXO(); #if HAS_TCXO
enableTCXO();
//13.1.15 SetRxTxFallbackMode to STDBY_XOSC
uint8_t fallback_mode = 0x30; // STDBY_XOSC after TX/RX
executeOpcode(OP_RX_TX_FALLBACK_MODE_6X, &fallback_mode, 1);
#endif
loraMode(); loraMode();
standby(); standby();
@@ -400,6 +426,9 @@ int sx126x::beginPacket(int implicitHeader) {
int sx126x::endPacket() { int sx126x::endPacket() {
setPacketParams(_preambleLength, _implicitHeaderMode, _payloadLength, _crcMode); setPacketParams(_preambleLength, _implicitHeaderMode, _payloadLength, _crcMode);
if (_rxen != -1) { digitalWrite(_rxen, LOW); } //Set RXen low when transmitting
uint8_t timeout[3] = {0}; // Put in single TX mode uint8_t timeout[3] = {0}; // Put in single TX mode
executeOpcode(OP_TX_6X, timeout, 3); executeOpcode(OP_TX_6X, timeout, 3);
@@ -642,6 +671,14 @@ void sx126x::enableTCXO() {
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_HELTEC32_V4 #elif BOARD_MODEL == BOARD_HELTEC32_V4
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_GENERIC_ESP32
uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF};
#elif BOARD_MODEL == BOARD_MESHADVENTURER
uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF};
#elif BOARD_MODEL == BOARD_AETHERNODE
uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF};
#elif BOARD_MODEL == BOARD_PROMICRO
uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF};
#endif #endif
executeOpcode(OP_DIO3_TCXO_CTRL_6X, buf, 4); executeOpcode(OP_DIO3_TCXO_CTRL_6X, buf, 4);
#endif #endif

View File

@@ -74,6 +74,7 @@ public:
void disableCrc(); void disableCrc();
void enableTCXO(); void enableTCXO();
void disableTCXO(); void disableTCXO();
void setDCDCRegulator();
void rxAntEnable(); void rxAntEnable();
void loraMode(); void loraMode();