Reworked board defines, fixed RSSI and waterfall bugs for SX1262.
This commit is contained in:
		
							
								
								
									
										338
									
								
								Boards.h
									
									
									
									
									
								
							
							
						
						
									
										338
									
								
								Boards.h
									
									
									
									
									
								
							@@ -13,7 +13,7 @@
 | 
				
			|||||||
// You should have received a copy of the GNU General Public License
 | 
					// You should have received a copy of the GNU General Public License
 | 
				
			||||||
// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
					// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#import "Modem.h"
 | 
					#include "Modem.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef BOARDS_H
 | 
					#ifndef BOARDS_H
 | 
				
			||||||
  #define BOARDS_H
 | 
					  #define BOARDS_H
 | 
				
			||||||
@@ -42,15 +42,25 @@
 | 
				
			|||||||
  #define BOARD_GENERIC_NRF52 0x50
 | 
					  #define BOARD_GENERIC_NRF52 0x50
 | 
				
			||||||
  #define BOARD_RAK4630       0x51
 | 
					  #define BOARD_RAK4630       0x51
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #if defined(__AVR_ATmega1284P__)
 | 
				
			||||||
 | 
					    #define PLATFORM PLATFORM_AVR
 | 
				
			||||||
 | 
					    #define MCU_VARIANT MCU_1284P
 | 
				
			||||||
 | 
					  #elif defined(__AVR_ATmega2560__)
 | 
				
			||||||
 | 
					    #define PLATFORM PLATFORM_AVR
 | 
				
			||||||
 | 
					    #define MCU_VARIANT MCU_2560
 | 
				
			||||||
 | 
					  #elif defined(ESP32)
 | 
				
			||||||
 | 
					    #define PLATFORM PLATFORM_ESP32
 | 
				
			||||||
 | 
					    #define MCU_VARIANT MCU_ESP32
 | 
				
			||||||
 | 
					  #elif defined(NRF52840_XXAA)
 | 
				
			||||||
 | 
					    #define PLATFORM PLATFORM_NRF52
 | 
				
			||||||
 | 
					    #define MCU_VARIANT MCU_NRF52
 | 
				
			||||||
 | 
					  #else
 | 
				
			||||||
 | 
					      #error "The firmware cannot be compiled for the selected MCU variant"
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  #ifndef MODEM
 | 
					  #ifndef MODEM
 | 
				
			||||||
    #if BOARD_MODEL == BOARD_RAK4630
 | 
					    #if BOARD_MODEL == BOARD_RAK4630
 | 
				
			||||||
      #define MODEM SX1262
 | 
					      #define MODEM SX1262
 | 
				
			||||||
      #elif BOARD_MODEL == BOARD_RNODE_NG_22
 | 
					 | 
				
			||||||
        #define MODEM SX1262
 | 
					 | 
				
			||||||
        const int pin_cs = 7;
 | 
					 | 
				
			||||||
        const int pin_sclk = 5;
 | 
					 | 
				
			||||||
        const int pin_mosi = 6;
 | 
					 | 
				
			||||||
        const int pin_miso = 3;
 | 
					 | 
				
			||||||
    #elif BOARD_MODEL == BOARD_GENERIC_NRF52
 | 
					    #elif BOARD_MODEL == BOARD_GENERIC_NRF52
 | 
				
			||||||
      #define MODEM SX1262
 | 
					      #define MODEM SX1262
 | 
				
			||||||
    #else
 | 
					    #else
 | 
				
			||||||
@@ -58,4 +68,318 @@
 | 
				
			|||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #define HAS_DISPLAY false
 | 
				
			||||||
 | 
					  #define HAS_BLUETOOTH false
 | 
				
			||||||
 | 
					  #define HAS_TCXO false
 | 
				
			||||||
 | 
					  #define HAS_PMU false
 | 
				
			||||||
 | 
					  #define HAS_NP false
 | 
				
			||||||
 | 
					  #define HAS_EEPROM false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #if defined(ENABLE_TCXO)
 | 
				
			||||||
 | 
					      #define HAS_TCXO true
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #if MCU_VARIANT == MCU_1284P
 | 
				
			||||||
 | 
					    const int pin_cs = 4;
 | 
				
			||||||
 | 
					    const int pin_reset = 3;
 | 
				
			||||||
 | 
					    const int pin_dio = 2;
 | 
				
			||||||
 | 
					    const int pin_led_rx = 12;
 | 
				
			||||||
 | 
					    const int pin_led_tx = 13;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #define BOARD_MODEL BOARD_RNODE
 | 
				
			||||||
 | 
					    #define HAS_EEPROM true
 | 
				
			||||||
 | 
					    #define CONFIG_UART_BUFFER_SIZE 6144
 | 
				
			||||||
 | 
					    #define CONFIG_QUEUE_SIZE 6144
 | 
				
			||||||
 | 
					    #define CONFIG_QUEUE_MAX_LENGTH 200
 | 
				
			||||||
 | 
					    #define EEPROM_SIZE 4096
 | 
				
			||||||
 | 
					    #define EEPROM_OFFSET EEPROM_SIZE-EEPROM_RESERVED
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  #elif MCU_VARIANT == MCU_2560
 | 
				
			||||||
 | 
					    const int pin_cs = 5;
 | 
				
			||||||
 | 
					    const int pin_reset = 4;
 | 
				
			||||||
 | 
					    const int pin_dio = 2;
 | 
				
			||||||
 | 
					    const int pin_led_rx = 12;
 | 
				
			||||||
 | 
					    const int pin_led_tx = 13;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #define BOARD_MODEL BOARD_HMBRW
 | 
				
			||||||
 | 
					    #define HAS_EEPROM true
 | 
				
			||||||
 | 
					    #define CONFIG_UART_BUFFER_SIZE 768
 | 
				
			||||||
 | 
					    #define CONFIG_QUEUE_SIZE 5120
 | 
				
			||||||
 | 
					    #define CONFIG_QUEUE_MAX_LENGTH 24
 | 
				
			||||||
 | 
					    #define EEPROM_SIZE 4096
 | 
				
			||||||
 | 
					    #define EEPROM_OFFSET EEPROM_SIZE-EEPROM_RESERVED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #elif MCU_VARIANT == MCU_ESP32
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Board models for ESP32 based builds are
 | 
				
			||||||
 | 
					    // defined by the build target in the makefile.
 | 
				
			||||||
 | 
					    // If you are not using make to compile this
 | 
				
			||||||
 | 
					    // firmware, you can manually define model here.
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    // #define BOARD_MODEL BOARD_GENERIC_ESP32
 | 
				
			||||||
 | 
					    #define CONFIG_UART_BUFFER_SIZE 6144
 | 
				
			||||||
 | 
					    #define CONFIG_QUEUE_SIZE 6144
 | 
				
			||||||
 | 
					    #define CONFIG_QUEUE_MAX_LENGTH 200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #define EEPROM_SIZE 1024
 | 
				
			||||||
 | 
					    #define EEPROM_OFFSET EEPROM_SIZE-EEPROM_RESERVED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #define GPS_BAUD_RATE 9600
 | 
				
			||||||
 | 
					    #define PIN_GPS_TX 12
 | 
				
			||||||
 | 
					    #define PIN_GPS_RX 34
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #if BOARD_MODEL == BOARD_GENERIC_ESP32
 | 
				
			||||||
 | 
					      #define HAS_BLUETOOTH true
 | 
				
			||||||
 | 
					      #define HAS_CONSOLE true
 | 
				
			||||||
 | 
					      #define HAS_EEPROM true
 | 
				
			||||||
 | 
					      const int pin_cs = 4;
 | 
				
			||||||
 | 
					      const int pin_reset = 36;
 | 
				
			||||||
 | 
					      const int pin_dio = 39;
 | 
				
			||||||
 | 
					      const int pin_led_rx = 14;
 | 
				
			||||||
 | 
					      const int pin_led_tx = 32;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #elif BOARD_MODEL == BOARD_TBEAM
 | 
				
			||||||
 | 
					      #define HAS_DISPLAY true
 | 
				
			||||||
 | 
					      #define HAS_PMU true
 | 
				
			||||||
 | 
					      #define HAS_BLUETOOTH true
 | 
				
			||||||
 | 
					      #define HAS_CONSOLE true
 | 
				
			||||||
 | 
					      #define HAS_SD false
 | 
				
			||||||
 | 
					      #define HAS_EEPROM true
 | 
				
			||||||
 | 
					      #define I2C_SDA 21
 | 
				
			||||||
 | 
					      #define I2C_SCL 22
 | 
				
			||||||
 | 
					      #define PMU_IRQ 35
 | 
				
			||||||
 | 
					      const int pin_cs = 18;
 | 
				
			||||||
 | 
					      const int pin_reset = 23;
 | 
				
			||||||
 | 
					      const int pin_led_rx = 2;
 | 
				
			||||||
 | 
					      const int pin_led_tx = 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      #if MODEM == SX1262
 | 
				
			||||||
 | 
					        #define HAS_TCXO true
 | 
				
			||||||
 | 
					        #define HAS_BUSY true
 | 
				
			||||||
 | 
					        #define DIO2_AS_RF_SWITCH true
 | 
				
			||||||
 | 
					        const int pin_busy = 32;
 | 
				
			||||||
 | 
					        const int pin_dio = 33;
 | 
				
			||||||
 | 
					        const int pin_tcxo_enable = -1;
 | 
				
			||||||
 | 
					      #else
 | 
				
			||||||
 | 
					        const int pin_dio = 26;
 | 
				
			||||||
 | 
					      #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #elif BOARD_MODEL == BOARD_HUZZAH32
 | 
				
			||||||
 | 
					      #define HAS_BLUETOOTH true
 | 
				
			||||||
 | 
					      #define HAS_CONSOLE true
 | 
				
			||||||
 | 
					      #define HAS_EEPROM true
 | 
				
			||||||
 | 
					      const int pin_cs = 4;
 | 
				
			||||||
 | 
					      const int pin_reset = 36;
 | 
				
			||||||
 | 
					      const int pin_dio = 39;
 | 
				
			||||||
 | 
					      const int pin_led_rx = 14;
 | 
				
			||||||
 | 
					      const int pin_led_tx = 32;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #elif BOARD_MODEL == BOARD_LORA32_V1_0
 | 
				
			||||||
 | 
					      #define HAS_DISPLAY true
 | 
				
			||||||
 | 
					      #define HAS_BLUETOOTH true
 | 
				
			||||||
 | 
					      #define HAS_CONSOLE true
 | 
				
			||||||
 | 
					      #define HAS_EEPROM true
 | 
				
			||||||
 | 
					      const int pin_cs = 18;
 | 
				
			||||||
 | 
					      const int pin_reset = 14;
 | 
				
			||||||
 | 
					      const int pin_dio = 26;
 | 
				
			||||||
 | 
					      #if defined(EXTERNAL_LEDS)
 | 
				
			||||||
 | 
					        const int pin_led_rx = 25;
 | 
				
			||||||
 | 
					        const int pin_led_tx = 2;
 | 
				
			||||||
 | 
					      #else
 | 
				
			||||||
 | 
					        const int pin_led_rx = 2;
 | 
				
			||||||
 | 
					        const int pin_led_tx = 2;
 | 
				
			||||||
 | 
					      #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #elif BOARD_MODEL == BOARD_LORA32_V2_0
 | 
				
			||||||
 | 
					      #define HAS_DISPLAY true
 | 
				
			||||||
 | 
					      #define HAS_BLUETOOTH true
 | 
				
			||||||
 | 
					      #define HAS_CONSOLE true
 | 
				
			||||||
 | 
					      #define HAS_EEPROM true
 | 
				
			||||||
 | 
					      const int pin_cs = 18;
 | 
				
			||||||
 | 
					      const int pin_reset = 12;
 | 
				
			||||||
 | 
					      const int pin_dio = 26;
 | 
				
			||||||
 | 
					      #if defined(EXTERNAL_LEDS)
 | 
				
			||||||
 | 
					        const int pin_led_rx = 2;
 | 
				
			||||||
 | 
					        const int pin_led_tx = 0;
 | 
				
			||||||
 | 
					      #else
 | 
				
			||||||
 | 
					        const int pin_led_rx = 22;
 | 
				
			||||||
 | 
					        const int pin_led_tx = 22;
 | 
				
			||||||
 | 
					      #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #elif BOARD_MODEL == BOARD_LORA32_V2_1
 | 
				
			||||||
 | 
					      #define HAS_DISPLAY true
 | 
				
			||||||
 | 
					      #define HAS_BLUETOOTH true
 | 
				
			||||||
 | 
					      #define HAS_PMU true
 | 
				
			||||||
 | 
					      #define HAS_CONSOLE true
 | 
				
			||||||
 | 
					      #define HAS_EEPROM true
 | 
				
			||||||
 | 
					      const int pin_cs = 18;
 | 
				
			||||||
 | 
					      const int pin_reset = 23;
 | 
				
			||||||
 | 
					      const int pin_dio = 26;
 | 
				
			||||||
 | 
					      #if HAS_TCXO == true
 | 
				
			||||||
 | 
					        const int pin_tcxo_enable = 33;
 | 
				
			||||||
 | 
					      #endif
 | 
				
			||||||
 | 
					      #if defined(EXTERNAL_LEDS)
 | 
				
			||||||
 | 
					        const int pin_led_rx = 15;
 | 
				
			||||||
 | 
					        const int pin_led_tx = 4;
 | 
				
			||||||
 | 
					      #else
 | 
				
			||||||
 | 
					        const int pin_led_rx = 25;
 | 
				
			||||||
 | 
					        const int pin_led_tx = 25;
 | 
				
			||||||
 | 
					      #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #elif BOARD_MODEL == BOARD_HELTEC32_V2
 | 
				
			||||||
 | 
					      #define HAS_DISPLAY true
 | 
				
			||||||
 | 
					      #define HAS_BLUETOOTH true
 | 
				
			||||||
 | 
					      #define HAS_CONSOLE true
 | 
				
			||||||
 | 
					      #define HAS_EEPROM true
 | 
				
			||||||
 | 
					      const int pin_cs = 18;
 | 
				
			||||||
 | 
					      const int pin_reset = 23;
 | 
				
			||||||
 | 
					      const int pin_dio = 26;
 | 
				
			||||||
 | 
					      #if defined(EXTERNAL_LEDS)
 | 
				
			||||||
 | 
					        const int pin_led_rx = 36;
 | 
				
			||||||
 | 
					        const int pin_led_tx = 37;
 | 
				
			||||||
 | 
					      #else
 | 
				
			||||||
 | 
					        const int pin_led_rx = 25;
 | 
				
			||||||
 | 
					        const int pin_led_tx = 25;
 | 
				
			||||||
 | 
					      #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #elif BOARD_MODEL == BOARD_RNODE_NG_20
 | 
				
			||||||
 | 
					      #define HAS_DISPLAY true
 | 
				
			||||||
 | 
					      #define HAS_BLUETOOTH true
 | 
				
			||||||
 | 
					      #define HAS_NP true
 | 
				
			||||||
 | 
					      #define HAS_CONSOLE true
 | 
				
			||||||
 | 
					      #define HAS_EEPROM true
 | 
				
			||||||
 | 
					      const int pin_cs = 18;
 | 
				
			||||||
 | 
					      const int pin_reset = 12;
 | 
				
			||||||
 | 
					      const int pin_dio = 26;
 | 
				
			||||||
 | 
					      const int pin_np = 4;
 | 
				
			||||||
 | 
					      #if HAS_NP == false
 | 
				
			||||||
 | 
					        #if defined(EXTERNAL_LEDS)
 | 
				
			||||||
 | 
					          const int pin_led_rx = 2;
 | 
				
			||||||
 | 
					          const int pin_led_tx = 0;
 | 
				
			||||||
 | 
					        #else
 | 
				
			||||||
 | 
					          const int pin_led_rx = 22;
 | 
				
			||||||
 | 
					          const int pin_led_tx = 22;
 | 
				
			||||||
 | 
					        #endif
 | 
				
			||||||
 | 
					      #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #elif BOARD_MODEL == BOARD_RNODE_NG_21
 | 
				
			||||||
 | 
					      #define HAS_DISPLAY true
 | 
				
			||||||
 | 
					      #define HAS_BLUETOOTH true
 | 
				
			||||||
 | 
					      #define HAS_CONSOLE true
 | 
				
			||||||
 | 
					      #define HAS_PMU true
 | 
				
			||||||
 | 
					      #define HAS_NP true
 | 
				
			||||||
 | 
					      #define HAS_SD false
 | 
				
			||||||
 | 
					      #define HAS_EEPROM true
 | 
				
			||||||
 | 
					      const int pin_cs = 18;
 | 
				
			||||||
 | 
					      const int pin_reset = 23;
 | 
				
			||||||
 | 
					      const int pin_dio = 26;
 | 
				
			||||||
 | 
					      const int pin_np = 12;
 | 
				
			||||||
 | 
					      const int pin_dac = 25;
 | 
				
			||||||
 | 
					      const int pin_adc = 34;
 | 
				
			||||||
 | 
					      const int SD_MISO = 2;
 | 
				
			||||||
 | 
					      const int SD_MOSI = 15;
 | 
				
			||||||
 | 
					      const int SD_CLK = 14;
 | 
				
			||||||
 | 
					      const int SD_CS = 13;
 | 
				
			||||||
 | 
					      #if HAS_NP == false
 | 
				
			||||||
 | 
					        #if defined(EXTERNAL_LEDS)
 | 
				
			||||||
 | 
					          const int pin_led_rx = 12;
 | 
				
			||||||
 | 
					          const int pin_led_tx = 4;
 | 
				
			||||||
 | 
					        #else
 | 
				
			||||||
 | 
					          const int pin_led_rx = 25;
 | 
				
			||||||
 | 
					          const int pin_led_tx = 25;
 | 
				
			||||||
 | 
					        #endif
 | 
				
			||||||
 | 
					      #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #elif BOARD_MODEL == BOARD_RNODE_NG_22
 | 
				
			||||||
 | 
					      #define IS_ESP32S3 true
 | 
				
			||||||
 | 
					      #define MODEM SX1262
 | 
				
			||||||
 | 
					      #define HAS_DISPLAY true
 | 
				
			||||||
 | 
					      #define HAS_BLE true
 | 
				
			||||||
 | 
					      #define HAS_BLUETOOTH false // TODO: Implement
 | 
				
			||||||
 | 
					      #define HAS_CONSOLE false   // TODO: Implement
 | 
				
			||||||
 | 
					      #define HAS_PMU true
 | 
				
			||||||
 | 
					      #define HAS_NP true
 | 
				
			||||||
 | 
					      #define HAS_SD false
 | 
				
			||||||
 | 
					      #define HAS_EEPROM true
 | 
				
			||||||
 | 
					      #define HAS_RF_SWITCH_RX_TX true
 | 
				
			||||||
 | 
					      #define HAS_BUSY true
 | 
				
			||||||
 | 
					      const int pin_cs = 7;
 | 
				
			||||||
 | 
					      const int pin_sclk = 5;
 | 
				
			||||||
 | 
					      const int pin_mosi = 6;
 | 
				
			||||||
 | 
					      const int pin_miso = 3;
 | 
				
			||||||
 | 
					      const int pin_reset = 8;
 | 
				
			||||||
 | 
					      const int pin_rxen = 21;
 | 
				
			||||||
 | 
					      const int pin_dio = 33;
 | 
				
			||||||
 | 
					      const int pin_busy = 34;
 | 
				
			||||||
 | 
					      const int pin_np = 38;
 | 
				
			||||||
 | 
					      const int pin_dac = 25;
 | 
				
			||||||
 | 
					      const int pin_adc = 1;
 | 
				
			||||||
 | 
					      const int SD_MISO = 2;
 | 
				
			||||||
 | 
					      const int SD_MOSI = 11;
 | 
				
			||||||
 | 
					      const int SD_CLK = 14;
 | 
				
			||||||
 | 
					      const int SD_CS = 13;
 | 
				
			||||||
 | 
					      #if HAS_NP == false
 | 
				
			||||||
 | 
					        #if defined(EXTERNAL_LEDS)
 | 
				
			||||||
 | 
					          const int pin_led_rx = 37;
 | 
				
			||||||
 | 
					          const int pin_led_tx = 37;
 | 
				
			||||||
 | 
					        #else
 | 
				
			||||||
 | 
					          const int pin_led_rx = 37;
 | 
				
			||||||
 | 
					          const int pin_led_tx = 37;
 | 
				
			||||||
 | 
					        #endif
 | 
				
			||||||
 | 
					      #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #else
 | 
				
			||||||
 | 
					      #error An unsupported ESP32 board was selected. Cannot compile RNode firmware.
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  #elif MCU_VARIANT == MCU_NRF52
 | 
				
			||||||
 | 
					    #if BOARD_MODEL == BOARD_RAK4630
 | 
				
			||||||
 | 
					      #define HAS_EEPROM false
 | 
				
			||||||
 | 
					      #define HAS_DISPLAY false // set for debugging
 | 
				
			||||||
 | 
					      #define HAS_BLUETOOTH true
 | 
				
			||||||
 | 
					      #define HAS_CONSOLE false
 | 
				
			||||||
 | 
					      #define HAS_PMU false
 | 
				
			||||||
 | 
					      #define HAS_NP false
 | 
				
			||||||
 | 
					      #define HAS_SD false
 | 
				
			||||||
 | 
					      #define HAS_TCXO true
 | 
				
			||||||
 | 
					      #define HAS_RF_SWITCH_RX_TX true
 | 
				
			||||||
 | 
					      #define HAS_BUSY true
 | 
				
			||||||
 | 
					      #define CONFIG_UART_BUFFER_SIZE 6144
 | 
				
			||||||
 | 
					      #define CONFIG_QUEUE_SIZE 6144
 | 
				
			||||||
 | 
					      #define CONFIG_QUEUE_MAX_LENGTH 200
 | 
				
			||||||
 | 
					      #define EEPROM_SIZE 200
 | 
				
			||||||
 | 
					      #define EEPROM_OFFSET EEPROM_SIZE-EEPROM_RESERVED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // following pins are for the sx1262
 | 
				
			||||||
 | 
					      const int pin_rxen = 37;
 | 
				
			||||||
 | 
					      const int pin_reset = 38;
 | 
				
			||||||
 | 
					      const int pin_cs = 42;
 | 
				
			||||||
 | 
					      const int pin_sclk = 43;
 | 
				
			||||||
 | 
					      const int pin_mosi = 44;
 | 
				
			||||||
 | 
					      const int pin_miso = 45;
 | 
				
			||||||
 | 
					      const int pin_busy = 46;
 | 
				
			||||||
 | 
					      const int pin_dio = 47;
 | 
				
			||||||
 | 
					      const int pin_led_rx = LED_BLUE;
 | 
				
			||||||
 | 
					      const int pin_led_tx = LED_GREEN;
 | 
				
			||||||
 | 
					      const int pin_tcxo_enable = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #else
 | 
				
			||||||
 | 
					      #error An unsupported nRF board was selected. Cannot compile RNode firmware.
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #ifndef HAS_RF_SWITCH_RX_TX
 | 
				
			||||||
 | 
					    const int pin_rxen = -1;
 | 
				
			||||||
 | 
					    const int pin_txen = -1;
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #ifndef HAS_BUSY
 | 
				
			||||||
 | 
					    const int pin_busy = -1;
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #ifndef DIO2_AS_RF_SWITCH
 | 
				
			||||||
 | 
					    #define DIO2_AS_RF_SWITCH false
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										318
									
								
								Config.h
									
									
									
									
									
								
							
							
						
						
									
										318
									
								
								Config.h
									
									
									
									
									
								
							@@ -15,7 +15,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "ROM.h"
 | 
					#include "ROM.h"
 | 
				
			||||||
#include "Boards.h"
 | 
					#include "Boards.h"
 | 
				
			||||||
#include "Modem.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef CONFIG_H
 | 
					#ifndef CONFIG_H
 | 
				
			||||||
	#define CONFIG_H
 | 
						#define CONFIG_H
 | 
				
			||||||
@@ -46,333 +45,16 @@
 | 
				
			|||||||
	bool console_active = false;
 | 
						bool console_active = false;
 | 
				
			||||||
	bool modem_installed = false;
 | 
						bool modem_installed = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	#if defined(__AVR_ATmega1284P__)
 | 
					 | 
				
			||||||
	    #define PLATFORM PLATFORM_AVR
 | 
					 | 
				
			||||||
	    #define MCU_VARIANT MCU_1284P
 | 
					 | 
				
			||||||
	#elif defined(__AVR_ATmega2560__)
 | 
					 | 
				
			||||||
	    #define PLATFORM PLATFORM_AVR
 | 
					 | 
				
			||||||
	    #define MCU_VARIANT MCU_2560
 | 
					 | 
				
			||||||
	#elif defined(ESP32)
 | 
					 | 
				
			||||||
	    #define PLATFORM PLATFORM_ESP32
 | 
					 | 
				
			||||||
	    #define MCU_VARIANT MCU_ESP32
 | 
					 | 
				
			||||||
    #elif defined(NRF52840_XXAA)
 | 
					 | 
				
			||||||
        #define PLATFORM PLATFORM_NRF52
 | 
					 | 
				
			||||||
        #define MCU_VARIANT MCU_NRF52
 | 
					 | 
				
			||||||
	#else
 | 
					 | 
				
			||||||
	    #error "The firmware cannot be compiled for the selected MCU variant"
 | 
					 | 
				
			||||||
	#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	#define MTU   	   508
 | 
						#define MTU   	   508
 | 
				
			||||||
	#define SINGLE_MTU 255
 | 
						#define SINGLE_MTU 255
 | 
				
			||||||
	#define HEADER_L   1
 | 
						#define HEADER_L   1
 | 
				
			||||||
	#define MIN_L	   1
 | 
						#define MIN_L	   1
 | 
				
			||||||
 | 
					 | 
				
			||||||
	#define CMD_L      64
 | 
						#define CMD_L      64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// MCU dependent configuration parameters
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #define HAS_DISPLAY false
 | 
					 | 
				
			||||||
    #define HAS_BLUETOOTH false
 | 
					 | 
				
			||||||
    #define HAS_TCXO false
 | 
					 | 
				
			||||||
    #define HAS_PMU false
 | 
					 | 
				
			||||||
    #define HAS_NP false
 | 
					 | 
				
			||||||
    #define HAS_EEPROM false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #if defined(ENABLE_TCXO)
 | 
					 | 
				
			||||||
        #define HAS_TCXO true
 | 
					 | 
				
			||||||
    #endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	#if MCU_VARIANT == MCU_1284P
 | 
					 | 
				
			||||||
		const int pin_cs = 4;
 | 
					 | 
				
			||||||
		const int pin_reset = 3;
 | 
					 | 
				
			||||||
		const int pin_dio = 2;
 | 
					 | 
				
			||||||
		const int pin_led_rx = 12;
 | 
					 | 
				
			||||||
		const int pin_led_tx = 13;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		#define BOARD_MODEL BOARD_RNODE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        #define HAS_EEPROM true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		#define CONFIG_UART_BUFFER_SIZE 6144
 | 
					 | 
				
			||||||
		#define CONFIG_QUEUE_SIZE 6144
 | 
					 | 
				
			||||||
		#define CONFIG_QUEUE_MAX_LENGTH 200
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		#define EEPROM_SIZE 4096
 | 
					 | 
				
			||||||
		#define EEPROM_OFFSET EEPROM_SIZE-EEPROM_RESERVED
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	#elif MCU_VARIANT == MCU_2560
 | 
					 | 
				
			||||||
		const int pin_cs = 5;
 | 
					 | 
				
			||||||
		const int pin_reset = 4;
 | 
					 | 
				
			||||||
		const int pin_dio = 2;
 | 
					 | 
				
			||||||
		const int pin_led_rx = 12;
 | 
					 | 
				
			||||||
		const int pin_led_tx = 13;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		#define BOARD_MODEL BOARD_HMBRW
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        #define HAS_EEPROM true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		#define CONFIG_UART_BUFFER_SIZE 768
 | 
					 | 
				
			||||||
		#define CONFIG_QUEUE_SIZE 5120
 | 
					 | 
				
			||||||
		#define CONFIG_QUEUE_MAX_LENGTH 24
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		#define EEPROM_SIZE 4096
 | 
					 | 
				
			||||||
		#define EEPROM_OFFSET EEPROM_SIZE-EEPROM_RESERVED
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	#elif MCU_VARIANT == MCU_ESP32
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Board models for ESP32 based builds are
 | 
					 | 
				
			||||||
		// defined by the build target in the makefile.
 | 
					 | 
				
			||||||
		// If you are not using make to compile this
 | 
					 | 
				
			||||||
		// firmware, you can manually define model here.
 | 
					 | 
				
			||||||
		//
 | 
					 | 
				
			||||||
		// #define BOARD_MODEL BOARD_GENERIC_ESP32
 | 
					 | 
				
			||||||
		#define CONFIG_UART_BUFFER_SIZE 6144
 | 
					 | 
				
			||||||
		#define CONFIG_QUEUE_SIZE 6144
 | 
					 | 
				
			||||||
		#define CONFIG_QUEUE_MAX_LENGTH 200
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		#define EEPROM_SIZE 1024
 | 
					 | 
				
			||||||
		#define EEPROM_OFFSET EEPROM_SIZE-EEPROM_RESERVED
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		#define GPS_BAUD_RATE 9600
 | 
					 | 
				
			||||||
		#define PIN_GPS_TX 12
 | 
					 | 
				
			||||||
		#define PIN_GPS_RX 34
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		#if BOARD_MODEL == BOARD_GENERIC_ESP32
 | 
					 | 
				
			||||||
			const int pin_cs = 4;
 | 
					 | 
				
			||||||
			const int pin_reset = 36;
 | 
					 | 
				
			||||||
			const int pin_dio = 39;
 | 
					 | 
				
			||||||
			const int pin_led_rx = 14;
 | 
					 | 
				
			||||||
			const int pin_led_tx = 32;
 | 
					 | 
				
			||||||
            #define HAS_BLUETOOTH true
 | 
					 | 
				
			||||||
            #define HAS_CONSOLE true
 | 
					 | 
				
			||||||
            #define HAS_EEPROM true
 | 
					 | 
				
			||||||
		#elif BOARD_MODEL == BOARD_TBEAM
 | 
					 | 
				
			||||||
			const int pin_cs = 18;
 | 
					 | 
				
			||||||
			const int pin_reset = 23;
 | 
					 | 
				
			||||||
			const int pin_dio = 26;
 | 
					 | 
				
			||||||
			const int pin_led_rx = 2;
 | 
					 | 
				
			||||||
			const int pin_led_tx = 4;
 | 
					 | 
				
			||||||
            #define HAS_DISPLAY true
 | 
					 | 
				
			||||||
            #define HAS_PMU true
 | 
					 | 
				
			||||||
            #define HAS_BLUETOOTH true
 | 
					 | 
				
			||||||
            #define HAS_CONSOLE true
 | 
					 | 
				
			||||||
            #define HAS_SD false
 | 
					 | 
				
			||||||
            #define HAS_EEPROM true
 | 
					 | 
				
			||||||
            #if MODEM == SX1262
 | 
					 | 
				
			||||||
            	// TODO: Figure out how on earth the SX1262 T-Beams are actually connected
 | 
					 | 
				
			||||||
            	// #define HAS_RF_SWITCH_RX_TX true
 | 
					 | 
				
			||||||
	            // const int pin_rxen = 32;
 | 
					 | 
				
			||||||
            	#define HAS_BUSY true
 | 
					 | 
				
			||||||
				const int pin_busy = 32;
 | 
					 | 
				
			||||||
            #endif
 | 
					 | 
				
			||||||
		#elif BOARD_MODEL == BOARD_HUZZAH32
 | 
					 | 
				
			||||||
			const int pin_cs = 4;
 | 
					 | 
				
			||||||
			const int pin_reset = 36;
 | 
					 | 
				
			||||||
			const int pin_dio = 39;
 | 
					 | 
				
			||||||
			const int pin_led_rx = 14;
 | 
					 | 
				
			||||||
			const int pin_led_tx = 32;
 | 
					 | 
				
			||||||
			#define HAS_BLUETOOTH true
 | 
					 | 
				
			||||||
            #define HAS_CONSOLE true
 | 
					 | 
				
			||||||
            #define HAS_EEPROM true
 | 
					 | 
				
			||||||
		#elif BOARD_MODEL == BOARD_LORA32_V1_0
 | 
					 | 
				
			||||||
			const int pin_cs = 18;
 | 
					 | 
				
			||||||
			const int pin_reset = 14;
 | 
					 | 
				
			||||||
			const int pin_dio = 26;
 | 
					 | 
				
			||||||
			#if defined(EXTERNAL_LEDS)
 | 
					 | 
				
			||||||
				const int pin_led_rx = 25;
 | 
					 | 
				
			||||||
				const int pin_led_tx = 2;
 | 
					 | 
				
			||||||
			#else
 | 
					 | 
				
			||||||
				const int pin_led_rx = 2;
 | 
					 | 
				
			||||||
				const int pin_led_tx = 2;
 | 
					 | 
				
			||||||
			#endif
 | 
					 | 
				
			||||||
            #define HAS_DISPLAY true
 | 
					 | 
				
			||||||
            #define HAS_BLUETOOTH true
 | 
					 | 
				
			||||||
            #define HAS_CONSOLE true
 | 
					 | 
				
			||||||
            #define HAS_EEPROM true
 | 
					 | 
				
			||||||
		#elif BOARD_MODEL == BOARD_LORA32_V2_0
 | 
					 | 
				
			||||||
			const int pin_cs = 18;
 | 
					 | 
				
			||||||
			const int pin_reset = 12;
 | 
					 | 
				
			||||||
			const int pin_dio = 26;
 | 
					 | 
				
			||||||
			#if defined(EXTERNAL_LEDS)
 | 
					 | 
				
			||||||
				const int pin_led_rx = 2;
 | 
					 | 
				
			||||||
				const int pin_led_tx = 0;
 | 
					 | 
				
			||||||
			#else
 | 
					 | 
				
			||||||
				const int pin_led_rx = 22;
 | 
					 | 
				
			||||||
				const int pin_led_tx = 22;
 | 
					 | 
				
			||||||
			#endif
 | 
					 | 
				
			||||||
            #define HAS_DISPLAY true
 | 
					 | 
				
			||||||
            #define HAS_BLUETOOTH true
 | 
					 | 
				
			||||||
            #define HAS_CONSOLE true
 | 
					 | 
				
			||||||
            #define HAS_EEPROM true
 | 
					 | 
				
			||||||
		#elif BOARD_MODEL == BOARD_LORA32_V2_1
 | 
					 | 
				
			||||||
			const int pin_cs = 18;
 | 
					 | 
				
			||||||
			const int pin_reset = 23;
 | 
					 | 
				
			||||||
			const int pin_dio = 26;
 | 
					 | 
				
			||||||
			#if HAS_TCXO == true
 | 
					 | 
				
			||||||
				const int pin_tcxo_enable = 33;
 | 
					 | 
				
			||||||
			#endif
 | 
					 | 
				
			||||||
			#if defined(EXTERNAL_LEDS)
 | 
					 | 
				
			||||||
				const int pin_led_rx = 15;
 | 
					 | 
				
			||||||
				const int pin_led_tx = 4;
 | 
					 | 
				
			||||||
			#else
 | 
					 | 
				
			||||||
				const int pin_led_rx = 25;
 | 
					 | 
				
			||||||
				const int pin_led_tx = 25;
 | 
					 | 
				
			||||||
			#endif
 | 
					 | 
				
			||||||
            #define HAS_DISPLAY true
 | 
					 | 
				
			||||||
            #define HAS_BLUETOOTH true
 | 
					 | 
				
			||||||
            #define HAS_PMU true
 | 
					 | 
				
			||||||
            #define HAS_CONSOLE true
 | 
					 | 
				
			||||||
            #define HAS_EEPROM true
 | 
					 | 
				
			||||||
		#elif BOARD_MODEL == BOARD_HELTEC32_V2
 | 
					 | 
				
			||||||
			const int pin_cs = 18;
 | 
					 | 
				
			||||||
			const int pin_reset = 23;
 | 
					 | 
				
			||||||
			const int pin_dio = 26;
 | 
					 | 
				
			||||||
			#if defined(EXTERNAL_LEDS)
 | 
					 | 
				
			||||||
				const int pin_led_rx = 36;
 | 
					 | 
				
			||||||
				const int pin_led_tx = 37;
 | 
					 | 
				
			||||||
			#else
 | 
					 | 
				
			||||||
				const int pin_led_rx = 25;
 | 
					 | 
				
			||||||
				const int pin_led_tx = 25;
 | 
					 | 
				
			||||||
			#endif
 | 
					 | 
				
			||||||
            #define HAS_DISPLAY true
 | 
					 | 
				
			||||||
			#define HAS_BLUETOOTH true
 | 
					 | 
				
			||||||
            #define HAS_CONSOLE true
 | 
					 | 
				
			||||||
            #define HAS_EEPROM true
 | 
					 | 
				
			||||||
		#elif BOARD_MODEL == BOARD_RNODE_NG_20
 | 
					 | 
				
			||||||
            #define HAS_DISPLAY true
 | 
					 | 
				
			||||||
            #define HAS_BLUETOOTH true
 | 
					 | 
				
			||||||
			#define HAS_NP true
 | 
					 | 
				
			||||||
            #define HAS_CONSOLE true
 | 
					 | 
				
			||||||
            #define HAS_EEPROM true
 | 
					 | 
				
			||||||
			const int pin_cs = 18;
 | 
					 | 
				
			||||||
			const int pin_reset = 12;
 | 
					 | 
				
			||||||
			const int pin_dio = 26;
 | 
					 | 
				
			||||||
			const int pin_np = 4;
 | 
					 | 
				
			||||||
			#if HAS_NP == false
 | 
					 | 
				
			||||||
				#if defined(EXTERNAL_LEDS)
 | 
					 | 
				
			||||||
					const int pin_led_rx = 2;
 | 
					 | 
				
			||||||
					const int pin_led_tx = 0;
 | 
					 | 
				
			||||||
				#else
 | 
					 | 
				
			||||||
					const int pin_led_rx = 22;
 | 
					 | 
				
			||||||
					const int pin_led_tx = 22;
 | 
					 | 
				
			||||||
				#endif
 | 
					 | 
				
			||||||
			#endif
 | 
					 | 
				
			||||||
		#elif BOARD_MODEL == BOARD_RNODE_NG_21
 | 
					 | 
				
			||||||
            #define HAS_DISPLAY true
 | 
					 | 
				
			||||||
            #define HAS_BLUETOOTH true
 | 
					 | 
				
			||||||
			#define HAS_CONSOLE true
 | 
					 | 
				
			||||||
            #define HAS_PMU true
 | 
					 | 
				
			||||||
			#define HAS_NP true
 | 
					 | 
				
			||||||
			#define HAS_SD false
 | 
					 | 
				
			||||||
            #define HAS_EEPROM true
 | 
					 | 
				
			||||||
			const int pin_cs = 18;
 | 
					 | 
				
			||||||
			const int pin_reset = 23;
 | 
					 | 
				
			||||||
			const int pin_dio = 26;
 | 
					 | 
				
			||||||
			const int pin_np = 12;
 | 
					 | 
				
			||||||
			const int pin_dac = 25;
 | 
					 | 
				
			||||||
			const int pin_adc = 34;
 | 
					 | 
				
			||||||
			const int SD_MISO = 2;
 | 
					 | 
				
			||||||
			const int SD_MOSI = 15;
 | 
					 | 
				
			||||||
			const int SD_CLK = 14;
 | 
					 | 
				
			||||||
			const int SD_CS = 13;
 | 
					 | 
				
			||||||
			#if HAS_NP == false
 | 
					 | 
				
			||||||
				#if defined(EXTERNAL_LEDS)
 | 
					 | 
				
			||||||
					const int pin_led_rx = 12;
 | 
					 | 
				
			||||||
					const int pin_led_tx = 4;
 | 
					 | 
				
			||||||
				#else
 | 
					 | 
				
			||||||
					const int pin_led_rx = 25;
 | 
					 | 
				
			||||||
					const int pin_led_tx = 25;
 | 
					 | 
				
			||||||
				#endif
 | 
					 | 
				
			||||||
			#endif
 | 
					 | 
				
			||||||
        #elif BOARD_MODEL == BOARD_RNODE_NG_22
 | 
					 | 
				
			||||||
			#define IS_ESP32S3 true
 | 
					 | 
				
			||||||
            #define HAS_DISPLAY true
 | 
					 | 
				
			||||||
			#define HAS_BLE true
 | 
					 | 
				
			||||||
            #define HAS_BLUETOOTH false // TODO: Implement
 | 
					 | 
				
			||||||
			#define HAS_CONSOLE false   // TODO: Implement
 | 
					 | 
				
			||||||
            #define HAS_PMU true
 | 
					 | 
				
			||||||
			#define HAS_NP true
 | 
					 | 
				
			||||||
			#define HAS_SD false
 | 
					 | 
				
			||||||
            #define HAS_EEPROM true
 | 
					 | 
				
			||||||
            #define HAS_RF_SWITCH_RX_TX true
 | 
					 | 
				
			||||||
            #define HAS_BUSY true
 | 
					 | 
				
			||||||
			const int pin_reset = 8;
 | 
					 | 
				
			||||||
            const int pin_rxen = 21;
 | 
					 | 
				
			||||||
			const int pin_dio = 33;
 | 
					 | 
				
			||||||
			const int pin_busy = 34;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			const int pin_np = 38;
 | 
					 | 
				
			||||||
			const int pin_dac = 25;
 | 
					 | 
				
			||||||
			const int pin_adc = 1;
 | 
					 | 
				
			||||||
			const int SD_MISO = 2;
 | 
					 | 
				
			||||||
			const int SD_MOSI = 11;
 | 
					 | 
				
			||||||
			const int SD_CLK = 14;
 | 
					 | 
				
			||||||
			const int SD_CS = 13;
 | 
					 | 
				
			||||||
			#if HAS_NP == false
 | 
					 | 
				
			||||||
				#if defined(EXTERNAL_LEDS)
 | 
					 | 
				
			||||||
					const int pin_led_rx = 37;
 | 
					 | 
				
			||||||
					const int pin_led_tx = 37;
 | 
					 | 
				
			||||||
				#else
 | 
					 | 
				
			||||||
					const int pin_led_rx = 37;
 | 
					 | 
				
			||||||
					const int pin_led_tx = 37;
 | 
					 | 
				
			||||||
				#endif
 | 
					 | 
				
			||||||
			#endif
 | 
					 | 
				
			||||||
        #endif
 | 
					 | 
				
			||||||
    #elif PLATFORM == PLATFORM_NRF52
 | 
					 | 
				
			||||||
        #if BOARD_MODEL == BOARD_RAK4630
 | 
					 | 
				
			||||||
            #define HAS_EEPROM false
 | 
					 | 
				
			||||||
            #define HAS_DISPLAY false // set for debugging
 | 
					 | 
				
			||||||
            #define HAS_BLUETOOTH true
 | 
					 | 
				
			||||||
            #define HAS_CONSOLE false
 | 
					 | 
				
			||||||
            #define HAS_PMU false
 | 
					 | 
				
			||||||
            #define HAS_NP false
 | 
					 | 
				
			||||||
            #define HAS_SD false
 | 
					 | 
				
			||||||
            #define HAS_TCXO true
 | 
					 | 
				
			||||||
            #define HAS_RF_SWITCH_RX_TX true
 | 
					 | 
				
			||||||
            #define HAS_BUSY true
 | 
					 | 
				
			||||||
            #define CONFIG_UART_BUFFER_SIZE 6144
 | 
					 | 
				
			||||||
            #define CONFIG_QUEUE_SIZE 6144
 | 
					 | 
				
			||||||
            #define CONFIG_QUEUE_MAX_LENGTH 200
 | 
					 | 
				
			||||||
            #define EEPROM_SIZE 200
 | 
					 | 
				
			||||||
            //#define EEPROM_OFFSET EEPROM_SIZE+0xED000-EEPROM_RESERVED
 | 
					 | 
				
			||||||
            #define EEPROM_OFFSET EEPROM_SIZE-EEPROM_RESERVED
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // following pins are for the sx1262
 | 
					 | 
				
			||||||
            const int pin_rxen = 37;
 | 
					 | 
				
			||||||
            const int pin_reset = 38;
 | 
					 | 
				
			||||||
            const int pin_cs = 42;
 | 
					 | 
				
			||||||
            const int pin_sclk = 43;
 | 
					 | 
				
			||||||
            const int pin_mosi = 44;
 | 
					 | 
				
			||||||
            const int pin_miso = 45;
 | 
					 | 
				
			||||||
            const int pin_busy = 46;
 | 
					 | 
				
			||||||
            const int pin_dio = 47;
 | 
					 | 
				
			||||||
            const int pin_led_rx = LED_BLUE;
 | 
					 | 
				
			||||||
            const int pin_led_tx = LED_GREEN;
 | 
					 | 
				
			||||||
            const int pin_tcxo_enable = -1;
 | 
					 | 
				
			||||||
        #endif
 | 
					 | 
				
			||||||
	#else
 | 
					 | 
				
			||||||
		#error An unsupported board was selected. Cannot compile RNode firmware.
 | 
					 | 
				
			||||||
	#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    bool mw_radio_online = false;
 | 
					    bool mw_radio_online = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	#if BOARD_MODEL == BOARD_TBEAM
 | 
					 | 
				
			||||||
		#define I2C_SDA 21
 | 
					 | 
				
			||||||
		#define I2C_SCL 22
 | 
					 | 
				
			||||||
		#define PMU_IRQ 35
 | 
					 | 
				
			||||||
	#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	#define eeprom_addr(a) (a+EEPROM_OFFSET)
 | 
						#define eeprom_addr(a) (a+EEPROM_OFFSET)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #ifndef HAS_RF_SWITCH_RX_TX
 | 
					 | 
				
			||||||
        const int pin_rxen = -1;
 | 
					 | 
				
			||||||
        const int pin_txen = -1;
 | 
					 | 
				
			||||||
    #endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #ifndef HAS_BUSY
 | 
					 | 
				
			||||||
        const int pin_busy = -1;
 | 
					 | 
				
			||||||
    #endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #if (MODEM == SX1262 || MODEM == SX1280) && defined(NRF52840_XXAA)
 | 
					    #if (MODEM == SX1262 || MODEM == SX1280) && defined(NRF52840_XXAA)
 | 
				
			||||||
        SPIClass spiModem(NRF_SPIM2, pin_miso, pin_sclk, pin_mosi);
 | 
					        SPIClass spiModem(NRF_SPIM2, pin_miso, pin_sclk, pin_mosi);
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								Makefile
									
									
									
									
									
								
							@@ -115,11 +115,11 @@ upload-mega2560:
 | 
				
			|||||||
	arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:mega
 | 
						arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:mega
 | 
				
			||||||
 | 
					
 | 
				
			||||||
upload-tbeam:
 | 
					upload-tbeam:
 | 
				
			||||||
	arduino-cli upload -p /dev/ttyACM0 --fqbn esp32:esp32:t-beam
 | 
						arduino-cli upload -p /dev/ttyACM1 --fqbn esp32:esp32:t-beam
 | 
				
			||||||
	@sleep 1
 | 
						@sleep 1
 | 
				
			||||||
	rnodeconf /dev/ttyACM0 --firmware-hash $$(./partition_hashes ./build/esp32.esp32.t-beam/RNode_Firmware.ino.bin)
 | 
						rnodeconf /dev/ttyACM1 --firmware-hash $$(./partition_hashes ./build/esp32.esp32.t-beam/RNode_Firmware.ino.bin)
 | 
				
			||||||
	@sleep 3
 | 
					#	@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
 | 
					#	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-lora32_v10:
 | 
					upload-lora32_v10:
 | 
				
			||||||
	arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:ttgo-lora32
 | 
						arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:ttgo-lora32
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								ROM.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								ROM.h
									
									
									
									
									
								
							@@ -72,4 +72,5 @@
 | 
				
			|||||||
	#define BT_ENABLE_BYTE 0x73
 | 
						#define BT_ENABLE_BYTE 0x73
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	#define EEPROM_RESERVED 200
 | 
						#define EEPROM_RESERVED 200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										92
									
								
								sx126x.cpp
									
									
									
									
									
								
							
							
						
						
									
										92
									
								
								sx126x.cpp
									
									
									
									
									
								
							@@ -4,9 +4,11 @@
 | 
				
			|||||||
// Modifications and additions copyright 2023 by Mark Qvist
 | 
					// Modifications and additions copyright 2023 by Mark Qvist
 | 
				
			||||||
// Obviously still under the MIT license.
 | 
					// Obviously still under the MIT license.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "sx126x.h"
 | 
					 | 
				
			||||||
#include "Boards.h"
 | 
					#include "Boards.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if MODEM == SX1262
 | 
				
			||||||
 | 
					#include "sx126x.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MCU_1284P 0x91
 | 
					#define MCU_1284P 0x91
 | 
				
			||||||
#define MCU_2560  0x92
 | 
					#define MCU_2560  0x92
 | 
				
			||||||
#define MCU_ESP32 0x81
 | 
					#define MCU_ESP32 0x81
 | 
				
			||||||
@@ -67,6 +69,7 @@
 | 
				
			|||||||
#define IRQ_TX_DONE_MASK_6X         0x01
 | 
					#define IRQ_TX_DONE_MASK_6X         0x01
 | 
				
			||||||
#define IRQ_RX_DONE_MASK_6X         0x02
 | 
					#define IRQ_RX_DONE_MASK_6X         0x02
 | 
				
			||||||
#define IRQ_HEADER_DET_MASK_6X      0x10
 | 
					#define IRQ_HEADER_DET_MASK_6X      0x10
 | 
				
			||||||
 | 
					#define IRQ_PREAMBLE_DET_MASK_6X    0x04
 | 
				
			||||||
#define IRQ_PAYLOAD_CRC_ERROR_MASK_6X 0x40
 | 
					#define IRQ_PAYLOAD_CRC_ERROR_MASK_6X 0x40
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MODE_LONG_RANGE_MODE_6X     0x01
 | 
					#define MODE_LONG_RANGE_MODE_6X     0x01
 | 
				
			||||||
@@ -81,8 +84,16 @@
 | 
				
			|||||||
#define REG_RANDOM_GEN_6X         0x0819
 | 
					#define REG_RANDOM_GEN_6X         0x0819
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MODE_TCXO_3_3V_6X           0x07
 | 
					#define MODE_TCXO_3_3V_6X           0x07
 | 
				
			||||||
 | 
					#define MODE_TCXO_3_0V_6X           0x06
 | 
				
			||||||
 | 
					#define MODE_TCXO_2_7V_6X           0x06
 | 
				
			||||||
 | 
					#define MODE_TCXO_2_4V_6X           0x06
 | 
				
			||||||
 | 
					#define MODE_TCXO_2_2V_6X           0x03
 | 
				
			||||||
 | 
					#define MODE_TCXO_1_8V_6X           0x02
 | 
				
			||||||
 | 
					#define MODE_TCXO_1_7V_6X           0x01
 | 
				
			||||||
 | 
					#define MODE_TCXO_1_6V_6X           0x00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SYNC_WORD_6X              0x1424
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define IRQ_PREAMBLE_DET_MASK_6X    0x04
 | 
					 | 
				
			||||||
#define XTAL_FREQ_6X (double)32000000
 | 
					#define XTAL_FREQ_6X (double)32000000
 | 
				
			||||||
#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)
 | 
				
			||||||
@@ -126,34 +137,28 @@ bool sx126x::preInit() {
 | 
				
			|||||||
  // set SS high
 | 
					  // set SS high
 | 
				
			||||||
  digitalWrite(_ss, HIGH);
 | 
					  digitalWrite(_ss, HIGH);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  Serial.println("SPI INIT");
 | 
					 | 
				
			||||||
  #if BOARD_MODEL == BOARD_RNODE_NG_22
 | 
					  #if BOARD_MODEL == BOARD_RNODE_NG_22
 | 
				
			||||||
    SPI.begin(pin_sclk, pin_miso, pin_mosi, pin_cs);
 | 
					    SPI.begin(pin_sclk, pin_miso, pin_mosi, pin_cs);
 | 
				
			||||||
  #else
 | 
					  #else
 | 
				
			||||||
    SPI.begin();
 | 
					    SPI.begin();
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
  Serial.println("DONE");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // check version (retry for up to 2 seconds)
 | 
					  // check version (retry for up to 2 seconds)
 | 
				
			||||||
  long start = millis();
 | 
					  long start = millis();
 | 
				
			||||||
  uint8_t syncmsb;
 | 
					  uint8_t syncmsb;
 | 
				
			||||||
  uint8_t synclsb;
 | 
					  uint8_t synclsb;
 | 
				
			||||||
  Serial.println("TRYING REGISTER READ");
 | 
					 | 
				
			||||||
  while (((millis() - start) < 2000) && (millis() >= start)) {
 | 
					  while (((millis() - start) < 2000) && (millis() >= start)) {
 | 
				
			||||||
      syncmsb = readRegister(REG_SYNC_WORD_MSB_6X);
 | 
					      syncmsb = readRegister(REG_SYNC_WORD_MSB_6X);
 | 
				
			||||||
      synclsb = readRegister(REG_SYNC_WORD_LSB_6X);
 | 
					      synclsb = readRegister(REG_SYNC_WORD_LSB_6X);
 | 
				
			||||||
      if ( uint16_t(syncmsb << 8 | synclsb) == 0x1424 || uint16_t(syncmsb << 8 | synclsb) == 0x4434) {
 | 
					      if ( uint16_t(syncmsb << 8 | synclsb) == 0x1424 || uint16_t(syncmsb << 8 | synclsb) == 0x4434) {
 | 
				
			||||||
          Serial.println("CORRECT VALUE RETURNED");
 | 
					 | 
				
			||||||
          break;
 | 
					          break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      delay(100);
 | 
					      delay(100);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if ( uint16_t(syncmsb << 8 | synclsb) != 0x1424 && uint16_t(syncmsb << 8 | synclsb) != 0x4434) {
 | 
					  if ( uint16_t(syncmsb << 8 | synclsb) != 0x1424 && uint16_t(syncmsb << 8 | synclsb) != 0x4434) {
 | 
				
			||||||
      Serial.println("REG READ FAILED");
 | 
					 | 
				
			||||||
      return false;
 | 
					      return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Serial.println("MODEM PREINIT SUCCESS");
 | 
					 | 
				
			||||||
  _preinit_done = true;
 | 
					  _preinit_done = true;
 | 
				
			||||||
  return true;
 | 
					  return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -193,11 +198,10 @@ uint8_t ISR_VECT sx126x::singleTransfer(uint8_t opcode, uint16_t address, uint8_
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void sx126x::rxAntEnable()
 | 
					void sx126x::rxAntEnable()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
        uint8_t byte = 0x01;
 | 
					  if (_rxen != -1) {
 | 
				
			||||||
        // enable dio2 rf switch
 | 
					 | 
				
			||||||
        executeOpcode(OP_DIO2_RF_CTRL_6X, &byte, 1); 
 | 
					 | 
				
			||||||
    digitalWrite(_rxen, HIGH);
 | 
					    digitalWrite(_rxen, HIGH);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void sx126x::loraMode() {
 | 
					void sx126x::loraMode() {
 | 
				
			||||||
    // enable lora mode on the SX1262 chip
 | 
					    // enable lora mode on the SX1262 chip
 | 
				
			||||||
@@ -361,17 +365,29 @@ int sx126x::begin(long frequency)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      //#if HAS_TCXO
 | 
					 | 
				
			||||||
          // turn TCXO on
 | 
					 | 
				
			||||||
          enableTCXO();
 | 
					 | 
				
			||||||
      //#endif
 | 
					 | 
				
			||||||
  loraMode();
 | 
					  loraMode();
 | 
				
			||||||
      idle();
 | 
					 | 
				
			||||||
  // cannot access registers in sleep mode on sx1262, set to idle instead
 | 
					  // cannot access registers in sleep mode on sx1262, set to idle instead
 | 
				
			||||||
 | 
					  idle();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #if HAS_TCXO
 | 
				
			||||||
 | 
					    enableTCXO();
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (_rxen != -1) {
 | 
					  if (_rxen != -1) {
 | 
				
			||||||
      pinMode(_rxen, OUTPUT);
 | 
					      pinMode(_rxen, OUTPUT);
 | 
				
			||||||
          rxAntEnable();
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #if DIO2_AS_RF_SWITCH
 | 
				
			||||||
 | 
					    // enable dio2 rf switch
 | 
				
			||||||
 | 
					    uint8_t byte = 0x01;
 | 
				
			||||||
 | 
					    executeOpcode(OP_DIO2_RF_CTRL_6X, &byte, 1);
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  rxAntEnable();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Set sync word
 | 
				
			||||||
 | 
					  setSyncWord(SYNC_WORD_6X);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // calibrate RC64k, RC13M, PLL, ADC and image
 | 
					  // calibrate RC64k, RC13M, PLL, ADC and image
 | 
				
			||||||
  uint8_t calibrate = 0x7F; 
 | 
					  uint8_t calibrate = 0x7F; 
 | 
				
			||||||
  executeOpcode(OP_CALIBRATE_6X, &calibrate, 1);
 | 
					  executeOpcode(OP_CALIBRATE_6X, &calibrate, 1);
 | 
				
			||||||
@@ -380,6 +396,7 @@ int sx126x::begin(long frequency)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // set output power to 2 dBm
 | 
					  // set output power to 2 dBm
 | 
				
			||||||
  setTxPower(2);
 | 
					  setTxPower(2);
 | 
				
			||||||
 | 
					  enableCrc();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // set LNA boost
 | 
					  // set LNA boost
 | 
				
			||||||
  writeRegister(REG_LNA_6X, 0x96);
 | 
					  writeRegister(REG_LNA_6X, 0x96);
 | 
				
			||||||
@@ -459,23 +476,18 @@ uint8_t sx126x::modemStatus() {
 | 
				
			|||||||
    // imitate the register status from the sx1276 / 78
 | 
					    // imitate the register status from the sx1276 / 78
 | 
				
			||||||
    uint8_t buf[2] = {0};
 | 
					    uint8_t buf[2] = {0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    executeOpcodeRead(OP_GET_IRQ_STATUS_6X, buf, 2);
 | 
					    executeOpcodeRead(OP_GET_IRQ_STATUS_6X, buf, 2);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    uint8_t clearbuf[2] = {0};
 | 
					    uint8_t clearbuf[2] = {0};
 | 
				
			||||||
 | 
					 | 
				
			||||||
    uint8_t byte = 0x00;
 | 
					    uint8_t byte = 0x00;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (buf[1] & IRQ_PREAMBLE_DET_MASK_6X != 0) {
 | 
					    if ((buf[1] & IRQ_PREAMBLE_DET_MASK_6X) != 0) {
 | 
				
			||||||
      byte = byte | 0x01 | 0x04;
 | 
					      byte = byte | 0x01 | 0x04;
 | 
				
			||||||
      // clear register after reading
 | 
					      // clear register after reading
 | 
				
			||||||
      clearbuf[1] = IRQ_PREAMBLE_DET_MASK_6X;
 | 
					      clearbuf[1] = IRQ_PREAMBLE_DET_MASK_6X;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (buf[1] & IRQ_HEADER_DET_MASK_6X != 0) {
 | 
					    if ((buf[1] & IRQ_HEADER_DET_MASK_6X) != 0) {
 | 
				
			||||||
      byte = byte | 0x02 | 0x04;
 | 
					      byte = byte | 0x02 | 0x04;
 | 
				
			||||||
        // clear register after reading
 | 
					 | 
				
			||||||
        clearbuf[1] = clearbuf[1] | IRQ_HEADER_DET_MASK_6X; 
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    executeOpcode(OP_CLEAR_IRQ_STATUS_6X, clearbuf, 2);
 | 
					    executeOpcode(OP_CLEAR_IRQ_STATUS_6X, clearbuf, 2);
 | 
				
			||||||
@@ -494,7 +506,7 @@ int ISR_VECT sx126x::currentRssi() {
 | 
				
			|||||||
    uint8_t byte = 0;
 | 
					    uint8_t byte = 0;
 | 
				
			||||||
    executeOpcodeRead(OP_CURRENT_RSSI_6X, &byte, 1);
 | 
					    executeOpcodeRead(OP_CURRENT_RSSI_6X, &byte, 1);
 | 
				
			||||||
    int rssi = -(int(byte)) / 2;
 | 
					    int rssi = -(int(byte)) / 2;
 | 
				
			||||||
    return rssi - RSSI_OFFSET;
 | 
					    return rssi;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint8_t sx126x::packetRssiRaw() {
 | 
					uint8_t sx126x::packetRssiRaw() {
 | 
				
			||||||
@@ -508,7 +520,7 @@ int ISR_VECT sx126x::packetRssi() {
 | 
				
			|||||||
    uint8_t buf[3] = {0};
 | 
					    uint8_t buf[3] = {0};
 | 
				
			||||||
    executeOpcodeRead(OP_PACKET_STATUS_6X, buf, 3);
 | 
					    executeOpcodeRead(OP_PACKET_STATUS_6X, buf, 3);
 | 
				
			||||||
    int pkt_rssi = -buf[0] / 2;
 | 
					    int pkt_rssi = -buf[0] / 2;
 | 
				
			||||||
    return pkt_rssi - RSSI_OFFSET;
 | 
					    return pkt_rssi;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint8_t ISR_VECT sx126x::packetSnrRaw() {
 | 
					uint8_t ISR_VECT sx126x::packetSnrRaw() {
 | 
				
			||||||
@@ -653,19 +665,17 @@ void sx126x::receive(int size)
 | 
				
			|||||||
    if (_rxen != -1) {
 | 
					    if (_rxen != -1) {
 | 
				
			||||||
        rxAntEnable();
 | 
					        rxAntEnable();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    uint8_t mode[3] = {0xFF, 0xFF, 0xFF}; // continuous mode
 | 
					    uint8_t mode[3] = {0xFF, 0xFF, 0xFF}; // continuous mode
 | 
				
			||||||
    executeOpcode(OP_RX_6X, mode, 3);
 | 
					    executeOpcode(OP_RX_6X, mode, 3);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void sx126x::idle()
 | 
					void sx126x::idle()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
      //#if HAS_TCXO
 | 
					 | 
				
			||||||
  // STDBY_XOSC
 | 
					  // STDBY_XOSC
 | 
				
			||||||
  uint8_t byte = 0x01;
 | 
					  uint8_t byte = 0x01;
 | 
				
			||||||
      //#else
 | 
					  // STDBY_RC
 | 
				
			||||||
      //    // STDBY_RC
 | 
					 | 
				
			||||||
  // uint8_t byte = 0x00;
 | 
					  // uint8_t byte = 0x00;
 | 
				
			||||||
      //#endif
 | 
					 | 
				
			||||||
  executeOpcode(OP_STANDBY_6X, &byte, 1); 
 | 
					  executeOpcode(OP_STANDBY_6X, &byte, 1); 
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -677,7 +687,12 @@ void sx126x::sleep()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void sx126x::enableTCXO() {
 | 
					void sx126x::enableTCXO() {
 | 
				
			||||||
    // only tested for RAK4630, voltage may be different on other platforms
 | 
					    // only tested for RAK4630, voltage may be different on other platforms
 | 
				
			||||||
 | 
					    #if BOARD_MODEL == BOARD_RAK4630
 | 
				
			||||||
      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
 | 
				
			||||||
 | 
					      uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF};
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    executeOpcode(OP_DIO3_TCXO_CTRL_6X, buf, 4);
 | 
					    executeOpcode(OP_DIO3_TCXO_CTRL_6X, buf, 4);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -834,13 +849,17 @@ void sx126x::setCodingRate4(int denominator)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void sx126x::setPreambleLength(long length)
 | 
					void sx126x::setPreambleLength(long length)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  _preambleLength = length;
 | 
				
			||||||
  setPacketParams(length, _implicitHeaderMode, _payloadLength, _crcMode);
 | 
					  setPacketParams(length, _implicitHeaderMode, _payloadLength, _crcMode);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void sx126x::setSyncWord(int sw)
 | 
					void sx126x::setSyncWord(uint16_t sw)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    writeRegister(REG_SYNC_WORD_MSB_6X, sw & 0xFF00);
 | 
					  // TODO: Fix
 | 
				
			||||||
    writeRegister(REG_SYNC_WORD_LSB_6X, sw & 0x00FF);
 | 
					    // writeRegister(REG_SYNC_WORD_MSB_6X, (sw & 0xFF00) >> 8);
 | 
				
			||||||
 | 
					    // writeRegister(REG_SYNC_WORD_LSB_6X, sw & 0x00FF);
 | 
				
			||||||
 | 
					    writeRegister(REG_SYNC_WORD_MSB_6X, 0x14);
 | 
				
			||||||
 | 
					    writeRegister(REG_SYNC_WORD_LSB_6X, 0x24);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void sx126x::enableCrc()
 | 
					void sx126x::enableCrc()
 | 
				
			||||||
@@ -921,6 +940,11 @@ void ISR_VECT sx126x::handleDio0Rise()
 | 
				
			|||||||
            _onReceive(packetLength);
 | 
					            _onReceive(packetLength);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    // else {
 | 
				
			||||||
 | 
					    //   Serial.println("CRCE");
 | 
				
			||||||
 | 
					    //   Serial.println(buf[0]);
 | 
				
			||||||
 | 
					    //   Serial.println(buf[1]);
 | 
				
			||||||
 | 
					    // }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ISR_VECT sx126x::onDio0Rise()
 | 
					void ISR_VECT sx126x::onDio0Rise()
 | 
				
			||||||
@@ -929,3 +953,5 @@ void ISR_VECT sx126x::onDio0Rise()
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sx126x sx126x_modem;
 | 
					sx126x sx126x_modem;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										2
									
								
								sx126x.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								sx126x.h
									
									
									
									
									
								
							@@ -68,7 +68,7 @@ public:
 | 
				
			|||||||
  void setSignalBandwidth(long sbw);
 | 
					  void setSignalBandwidth(long sbw);
 | 
				
			||||||
  void setCodingRate4(int denominator);
 | 
					  void setCodingRate4(int denominator);
 | 
				
			||||||
  void setPreambleLength(long length);
 | 
					  void setPreambleLength(long length);
 | 
				
			||||||
  void setSyncWord(int sw);
 | 
					  void setSyncWord(uint16_t sw);
 | 
				
			||||||
  uint8_t modemStatus();
 | 
					  uint8_t modemStatus();
 | 
				
			||||||
  void enableCrc();
 | 
					  void enableCrc();
 | 
				
			||||||
  void disableCrc();
 | 
					  void disableCrc();
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										33
									
								
								sx127x.cpp
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								sx127x.cpp
									
									
									
									
									
								
							@@ -4,30 +4,10 @@
 | 
				
			|||||||
// Modifications and additions copyright 2023 by Mark Qvist
 | 
					// Modifications and additions copyright 2023 by Mark Qvist
 | 
				
			||||||
// Obviously still under the MIT license.
 | 
					// Obviously still under the MIT license.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "sx127x.h"
 | 
					 | 
				
			||||||
#include "Boards.h"
 | 
					#include "Boards.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MCU_1284P 0x91
 | 
					#if MODEM == SX1276
 | 
				
			||||||
#define MCU_2560  0x92
 | 
					#include "sx127x.h"
 | 
				
			||||||
#define MCU_ESP32 0x81
 | 
					 | 
				
			||||||
#define MCU_NRF52 0x71
 | 
					 | 
				
			||||||
#if defined(__AVR_ATmega1284P__)
 | 
					 | 
				
			||||||
  #define PLATFORM PLATFORM_AVR
 | 
					 | 
				
			||||||
  #define MCU_VARIANT MCU_1284P
 | 
					 | 
				
			||||||
#elif defined(__AVR_ATmega2560__)
 | 
					 | 
				
			||||||
  #define PLATFORM PLATFORM_AVR
 | 
					 | 
				
			||||||
  #define MCU_VARIANT MCU_2560
 | 
					 | 
				
			||||||
#elif defined(ESP32)
 | 
					 | 
				
			||||||
  #define PLATFORM PLATFORM_ESP32
 | 
					 | 
				
			||||||
  #define MCU_VARIANT MCU_ESP32
 | 
					 | 
				
			||||||
#elif defined(NRF52840_XXAA)
 | 
					 | 
				
			||||||
  #define PLATFORM PLATFORM_NRF52
 | 
					 | 
				
			||||||
  #define MCU_VARIANT MCU_NRF52
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef MCU_VARIANT
 | 
					 | 
				
			||||||
  #error No MCU variant defined, cannot compile
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if MCU_VARIANT == MCU_ESP32
 | 
					#if MCU_VARIANT == MCU_ESP32
 | 
				
			||||||
  #if MCU_VARIANT == MCU_ESP32 and !defined(CONFIG_IDF_TARGET_ESP32S3)
 | 
					  #if MCU_VARIANT == MCU_ESP32 and !defined(CONFIG_IDF_TARGET_ESP32S3)
 | 
				
			||||||
@@ -96,6 +76,7 @@
 | 
				
			|||||||
extern SPIClass SPI;
 | 
					extern SPIClass SPI;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MAX_PKT_LENGTH           255
 | 
					#define MAX_PKT_LENGTH           255
 | 
				
			||||||
 | 
					#define SYNC_WORD_7X            0x12
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sx127x::sx127x() :
 | 
					sx127x::sx127x() :
 | 
				
			||||||
  _spiSettings(8E6, MSBFIRST, SPI_MODE0),
 | 
					  _spiSettings(8E6, MSBFIRST, SPI_MODE0),
 | 
				
			||||||
@@ -200,10 +181,10 @@ int sx127x::begin(long frequency)
 | 
				
			|||||||
  // set auto AGC
 | 
					  // set auto AGC
 | 
				
			||||||
  writeRegister(REG_MODEM_CONFIG_3_7X, 0x04);
 | 
					  writeRegister(REG_MODEM_CONFIG_3_7X, 0x04);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // set output power to 2 dBm
 | 
					  setSyncWord(SYNC_WORD_7X);
 | 
				
			||||||
 | 
					  enableCrc();
 | 
				
			||||||
  setTxPower(2);
 | 
					  setTxPower(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // put in standby mode
 | 
					 | 
				
			||||||
  idle();
 | 
					  idle();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return 1;
 | 
					  return 1;
 | 
				
			||||||
@@ -602,7 +583,7 @@ void sx127x::setPreambleLength(long length)
 | 
				
			|||||||
  writeRegister(REG_PREAMBLE_LSB_7X, (uint8_t)(length >> 0));
 | 
					  writeRegister(REG_PREAMBLE_LSB_7X, (uint8_t)(length >> 0));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void sx127x::setSyncWord(int sw)
 | 
					void sx127x::setSyncWord(uint8_t sw)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    writeRegister(REG_SYNC_WORD_7X, sw);
 | 
					    writeRegister(REG_SYNC_WORD_7X, sw);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -692,3 +673,5 @@ void ISR_VECT sx127x::onDio0Rise()
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sx127x sx127x_modem;
 | 
					sx127x sx127x_modem;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										6
									
								
								sx127x.h
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								sx127x.h
									
									
									
									
									
								
							@@ -66,17 +66,13 @@ public:
 | 
				
			|||||||
  void setSignalBandwidth(long sbw);
 | 
					  void setSignalBandwidth(long sbw);
 | 
				
			||||||
  void setCodingRate4(int denominator);
 | 
					  void setCodingRate4(int denominator);
 | 
				
			||||||
  void setPreambleLength(long length);
 | 
					  void setPreambleLength(long length);
 | 
				
			||||||
  void setSyncWord(int sw);
 | 
					  void setSyncWord(uint8_t sw);
 | 
				
			||||||
  uint8_t modemStatus();
 | 
					  uint8_t modemStatus();
 | 
				
			||||||
  void enableCrc();
 | 
					  void enableCrc();
 | 
				
			||||||
  void disableCrc();
 | 
					  void disableCrc();
 | 
				
			||||||
  void enableTCXO();
 | 
					  void enableTCXO();
 | 
				
			||||||
  void disableTCXO();
 | 
					  void disableTCXO();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // deprecated
 | 
					 | 
				
			||||||
  void crc() { enableCrc(); }
 | 
					 | 
				
			||||||
  void noCrc() { disableCrc(); }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  byte random();
 | 
					  byte random();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void setPins(int ss = LORA_DEFAULT_SS_PIN, int reset = LORA_DEFAULT_RESET_PIN, int dio0 = LORA_DEFAULT_DIO0_PIN, int busy = LORA_DEFAULT_BUSY_PIN);
 | 
					  void setPins(int ss = LORA_DEFAULT_SS_PIN, int reset = LORA_DEFAULT_RESET_PIN, int dio0 = LORA_DEFAULT_DIO0_PIN, int busy = LORA_DEFAULT_BUSY_PIN);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user