Reworked board defines, fixed RSSI and waterfall bugs for SX1262.
This commit is contained in:
		
							parent
							
								
									cac58b318a
								
							
						
					
					
						commit
						6f62a5394b
					
				
							
								
								
									
										392
									
								
								Boards.h
									
									
									
									
									
								
							
							
						
						
									
										392
									
								
								Boards.h
									
									
									
									
									
								
							| @ -13,49 +13,373 @@ | ||||
| // You should have received a copy of the GNU General Public License
 | ||||
| // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | ||||
| 
 | ||||
| #import "Modem.h" | ||||
| #include "Modem.h" | ||||
| 
 | ||||
| #ifndef BOARDS_H | ||||
|   #define BOARDS_H | ||||
| 
 | ||||
|   #define PLATFORM_AVR   0x90 | ||||
|   #define PLATFORM_ESP32 0x80 | ||||
|   #define PLATFORM_NRF52 0x70 | ||||
| 
 | ||||
|   #define MCU_1284P 0x91 | ||||
|   #define MCU_2560  0x92 | ||||
|   #define MCU_ESP32 0x81 | ||||
|   #define MCU_NRF52 0x71 | ||||
| 
 | ||||
|   #define BOARD_RNODE         0x31 | ||||
|   #define BOARD_HMBRW         0x32 | ||||
|   #define BOARD_TBEAM         0x33 | ||||
|   #define BOARD_HUZZAH32      0x34 | ||||
|   #define BOARD_GENERIC_ESP32 0x35 | ||||
|   #define BOARD_LORA32_V2_0   0x36 | ||||
|   #define BOARD_LORA32_V2_1   0x37 | ||||
|   #define BOARD_LORA32_V1_0   0x39 | ||||
|   #define BOARD_HELTEC32_V2   0x38 | ||||
|   #define BOARD_RNODE_NG_20   0x40 | ||||
|   #define BOARD_RNODE_NG_21   0x41 | ||||
|   #define BOARD_RNODE_NG_22   0x42 | ||||
|   #define BOARD_GENERIC_NRF52 0x50 | ||||
|   #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 | ||||
|     #if BOARD_MODEL == BOARD_RAK4630 | ||||
|       #define MODEM SX1262 | ||||
|     #elif BOARD_MODEL == BOARD_GENERIC_NRF52 | ||||
|       #define MODEM SX1262 | ||||
|     #else | ||||
|       #define MODEM SX1276 | ||||
|     #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 | ||||
|    | ||||
|     #define PLATFORM_AVR   0x90 | ||||
|     #define PLATFORM_ESP32 0x80 | ||||
|     #define PLATFORM_NRF52 0x70 | ||||
|   #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 MCU_1284P 0x91 | ||||
|     #define MCU_2560  0x92 | ||||
|     #define MCU_ESP32 0x81 | ||||
|     #define MCU_NRF52 0x71 | ||||
|     #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 | ||||
| 
 | ||||
|     #define BOARD_RNODE         0x31 | ||||
|     #define BOARD_HMBRW         0x32 | ||||
|     #define BOARD_TBEAM         0x33 | ||||
|     #define BOARD_HUZZAH32      0x34 | ||||
|     #define BOARD_GENERIC_ESP32 0x35 | ||||
|     #define BOARD_LORA32_V2_0   0x36 | ||||
|     #define BOARD_LORA32_V2_1   0x37 | ||||
|     #define BOARD_LORA32_V1_0   0x39 | ||||
|     #define BOARD_HELTEC32_V2   0x38 | ||||
|     #define BOARD_RNODE_NG_20   0x40 | ||||
|     #define BOARD_RNODE_NG_21   0x41 | ||||
|     #define BOARD_RNODE_NG_22   0x42 | ||||
|     #define BOARD_GENERIC_NRF52 0x50 | ||||
|     #define BOARD_RAK4630       0x51 | ||||
|   #elif MCU_VARIANT == MCU_ESP32 | ||||
| 
 | ||||
|     #ifndef MODEM | ||||
|       #if BOARD_MODEL == BOARD_RAK4630 | ||||
|         #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 | ||||
|         #define MODEM SX1262 | ||||
|     // 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 | ||||
|         #define MODEM SX1276 | ||||
|         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 | ||||
|  | ||||
							
								
								
									
										318
									
								
								Config.h
									
									
									
									
									
								
							
							
						
						
									
										318
									
								
								Config.h
									
									
									
									
									
								
							| @ -15,7 +15,6 @@ | ||||
| 
 | ||||
| #include "ROM.h" | ||||
| #include "Boards.h" | ||||
| #include "Modem.h" | ||||
| 
 | ||||
| #ifndef CONFIG_H | ||||
| 	#define CONFIG_H | ||||
| @ -46,333 +45,16 @@ | ||||
| 	bool console_active = 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 SINGLE_MTU 255 | ||||
| 	#define HEADER_L   1 | ||||
| 	#define MIN_L	   1 | ||||
| 
 | ||||
| 	#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; | ||||
| 
 | ||||
| 	#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) | ||||
| 
 | ||||
|     #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) | ||||
|         SPIClass spiModem(NRF_SPIM2, pin_miso, pin_sclk, pin_mosi); | ||||
|     #endif | ||||
|  | ||||
							
								
								
									
										8
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								Makefile
									
									
									
									
									
								
							| @ -115,11 +115,11 @@ upload-mega2560: | ||||
| 	arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:mega | ||||
| 
 | ||||
| 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 | ||||
| 	rnodeconf /dev/ttyACM0 --firmware-hash $$(./partition_hashes ./build/esp32.esp32.t-beam/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 | ||||
| 	rnodeconf /dev/ttyACM1 --firmware-hash $$(./partition_hashes ./build/esp32.esp32.t-beam/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-lora32_v10: | ||||
| 	arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:ttgo-lora32 | ||||
|  | ||||
							
								
								
									
										158
									
								
								sx126x.cpp
									
									
									
									
									
								
							
							
						
						
									
										158
									
								
								sx126x.cpp
									
									
									
									
									
								
							| @ -4,9 +4,11 @@ | ||||
| // Modifications and additions copyright 2023 by Mark Qvist
 | ||||
| // Obviously still under the MIT license.
 | ||||
| 
 | ||||
| #include "sx126x.h" | ||||
| #include "Boards.h" | ||||
| 
 | ||||
| #if MODEM == SX1262 | ||||
| #include "sx126x.h" | ||||
| 
 | ||||
| #define MCU_1284P 0x91 | ||||
| #define MCU_2560  0x92 | ||||
| #define MCU_ESP32 0x81 | ||||
| @ -67,6 +69,7 @@ | ||||
| #define IRQ_TX_DONE_MASK_6X         0x01 | ||||
| #define IRQ_RX_DONE_MASK_6X         0x02 | ||||
| #define IRQ_HEADER_DET_MASK_6X      0x10 | ||||
| #define IRQ_PREAMBLE_DET_MASK_6X    0x04 | ||||
| #define IRQ_PAYLOAD_CRC_ERROR_MASK_6X 0x40 | ||||
| 
 | ||||
| #define MODE_LONG_RANGE_MODE_6X     0x01 | ||||
| @ -81,8 +84,16 @@ | ||||
| #define REG_RANDOM_GEN_6X         0x0819 | ||||
| 
 | ||||
| #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 FREQ_DIV_6X (double)pow(2.0, 25.0) | ||||
| #define FREQ_STEP_6X (double)(XTAL_FREQ_6X / FREQ_DIV_6X) | ||||
| @ -126,34 +137,28 @@ bool sx126x::preInit() { | ||||
|   // set SS high
 | ||||
|   digitalWrite(_ss, HIGH); | ||||
|    | ||||
|   Serial.println("SPI INIT"); | ||||
|   #if BOARD_MODEL == BOARD_RNODE_NG_22 | ||||
|     SPI.begin(pin_sclk, pin_miso, pin_mosi, pin_cs); | ||||
|   #else | ||||
|     SPI.begin(); | ||||
|   #endif | ||||
|   Serial.println("DONE"); | ||||
| 
 | ||||
|   // check version (retry for up to 2 seconds)
 | ||||
|   long start = millis(); | ||||
|   uint8_t syncmsb; | ||||
|   uint8_t synclsb; | ||||
|   Serial.println("TRYING REGISTER READ"); | ||||
|   while (((millis() - start) < 2000) && (millis() >= start)) { | ||||
|       syncmsb = readRegister(REG_SYNC_WORD_MSB_6X); | ||||
|       synclsb = readRegister(REG_SYNC_WORD_LSB_6X); | ||||
|       if ( uint16_t(syncmsb << 8 | synclsb) == 0x1424 || uint16_t(syncmsb << 8 | synclsb) == 0x4434) { | ||||
|           Serial.println("CORRECT VALUE RETURNED"); | ||||
|           break; | ||||
|       } | ||||
|       delay(100); | ||||
|   } | ||||
|   if ( uint16_t(syncmsb << 8 | synclsb) != 0x1424 && uint16_t(syncmsb << 8 | synclsb) != 0x4434) { | ||||
|       Serial.println("REG READ FAILED"); | ||||
|       return false; | ||||
|   } | ||||
| 
 | ||||
|   Serial.println("MODEM PREINIT SUCCESS"); | ||||
|   _preinit_done = true; | ||||
|   return true; | ||||
| } | ||||
| @ -193,10 +198,9 @@ uint8_t ISR_VECT sx126x::singleTransfer(uint8_t opcode, uint16_t address, uint8_ | ||||
| 
 | ||||
| void sx126x::rxAntEnable() | ||||
| { | ||||
|         uint8_t byte = 0x01; | ||||
|         // enable dio2 rf switch
 | ||||
|         executeOpcode(OP_DIO2_RF_CTRL_6X, &byte, 1);  | ||||
|         digitalWrite(_rxen, HIGH); | ||||
|   if (_rxen != -1) { | ||||
|     digitalWrite(_rxen, HIGH); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| void sx126x::loraMode() { | ||||
| @ -361,35 +365,48 @@ int sx126x::begin(long frequency) | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|       //#if HAS_TCXO
 | ||||
|           // turn TCXO on
 | ||||
|           enableTCXO(); | ||||
|       //#endif
 | ||||
|       loraMode(); | ||||
|       idle(); | ||||
|       // cannot access registers in sleep mode on sx1262, set to idle instead
 | ||||
|       if (_rxen != -1) { | ||||
|           pinMode(_rxen, OUTPUT); | ||||
|           rxAntEnable(); | ||||
|       } | ||||
|       // calibrate RC64k, RC13M, PLL, ADC and image
 | ||||
|       uint8_t calibrate = 0x7F;  | ||||
|       executeOpcode(OP_CALIBRATE_6X, &calibrate, 1); | ||||
|   loraMode(); | ||||
|   // cannot access registers in sleep mode on sx1262, set to idle instead
 | ||||
|   idle(); | ||||
| 
 | ||||
|       setFrequency(frequency); | ||||
|   #if HAS_TCXO | ||||
|     enableTCXO(); | ||||
|   #endif | ||||
| 
 | ||||
|       // set output power to 2 dBm
 | ||||
|       setTxPower(2); | ||||
|   if (_rxen != -1) { | ||||
|       pinMode(_rxen, OUTPUT); | ||||
|   } | ||||
| 
 | ||||
|       // set LNA boost
 | ||||
|       writeRegister(REG_LNA_6X, 0x96); | ||||
|   #if DIO2_AS_RF_SWITCH | ||||
|     // enable dio2 rf switch
 | ||||
|     uint8_t byte = 0x01; | ||||
|     executeOpcode(OP_DIO2_RF_CTRL_6X, &byte, 1); | ||||
|   #endif | ||||
| 
 | ||||
|       // set base addresses
 | ||||
|       uint8_t basebuf[2] = {0}; | ||||
|       executeOpcode(OP_BUFFER_BASE_ADDR_6X, basebuf, 2); | ||||
|   rxAntEnable(); | ||||
| 
 | ||||
|       setModulationParams(_sf, _bw, _cr, _ldro); | ||||
|       setPacketParams(_preambleLength, _implicitHeaderMode, _payloadLength, _crcMode); | ||||
|   // Set sync word
 | ||||
|   setSyncWord(SYNC_WORD_6X); | ||||
| 
 | ||||
|   // calibrate RC64k, RC13M, PLL, ADC and image
 | ||||
|   uint8_t calibrate = 0x7F;  | ||||
|   executeOpcode(OP_CALIBRATE_6X, &calibrate, 1); | ||||
| 
 | ||||
|   setFrequency(frequency); | ||||
| 
 | ||||
|   // set output power to 2 dBm
 | ||||
|   setTxPower(2); | ||||
|   enableCrc(); | ||||
| 
 | ||||
|   // set LNA boost
 | ||||
|   writeRegister(REG_LNA_6X, 0x96); | ||||
| 
 | ||||
|   // set base addresses
 | ||||
|   uint8_t basebuf[2] = {0}; | ||||
|   executeOpcode(OP_BUFFER_BASE_ADDR_6X, basebuf, 2); | ||||
| 
 | ||||
|   setModulationParams(_sf, _bw, _cr, _ldro); | ||||
|   setPacketParams(_preambleLength, _implicitHeaderMode, _payloadLength, _crcMode); | ||||
| 
 | ||||
|   return 1; | ||||
| } | ||||
| @ -416,9 +433,9 @@ int sx126x::beginPacket(int implicitHeader) | ||||
|     explicitHeaderMode(); | ||||
|   } | ||||
| 
 | ||||
|       _payloadLength = 0; | ||||
|       _fifo_tx_addr_ptr = 0; | ||||
|       setPacketParams(_preambleLength, _implicitHeaderMode, _payloadLength, _crcMode); | ||||
|   _payloadLength = 0; | ||||
|   _fifo_tx_addr_ptr = 0; | ||||
|   setPacketParams(_preambleLength, _implicitHeaderMode, _payloadLength, _crcMode); | ||||
| 
 | ||||
|   return 1; | ||||
| } | ||||
| @ -459,23 +476,18 @@ uint8_t sx126x::modemStatus() { | ||||
|     // imitate the register status from the sx1276 / 78
 | ||||
|     uint8_t buf[2] = {0}; | ||||
| 
 | ||||
| 
 | ||||
|     executeOpcodeRead(OP_GET_IRQ_STATUS_6X, buf, 2); | ||||
| 
 | ||||
|     uint8_t clearbuf[2] = {0}; | ||||
| 
 | ||||
|     uint8_t byte = 0x00; | ||||
| 
 | ||||
|     if (buf[1] & IRQ_PREAMBLE_DET_MASK_6X != 0) { | ||||
|         byte = byte | 0x01 | 0x04; | ||||
|         // clear register after reading
 | ||||
|         clearbuf[1] = IRQ_PREAMBLE_DET_MASK_6X;  | ||||
|     if ((buf[1] & IRQ_PREAMBLE_DET_MASK_6X) != 0) { | ||||
|       byte = byte | 0x01 | 0x04; | ||||
|       // clear register after reading
 | ||||
|       clearbuf[1] = IRQ_PREAMBLE_DET_MASK_6X; | ||||
|     } | ||||
| 
 | ||||
|     if (buf[1] & IRQ_HEADER_DET_MASK_6X != 0) { | ||||
|         byte = byte | 0x02 | 0x04; | ||||
|         // clear register after reading
 | ||||
|         clearbuf[1] = clearbuf[1] | IRQ_HEADER_DET_MASK_6X;  | ||||
|     if ((buf[1] & IRQ_HEADER_DET_MASK_6X) != 0) { | ||||
|       byte = byte | 0x02 | 0x04; | ||||
|     } | ||||
| 
 | ||||
|     executeOpcode(OP_CLEAR_IRQ_STATUS_6X, clearbuf, 2); | ||||
| @ -494,7 +506,7 @@ int ISR_VECT sx126x::currentRssi() { | ||||
|     uint8_t byte = 0; | ||||
|     executeOpcodeRead(OP_CURRENT_RSSI_6X, &byte, 1); | ||||
|     int rssi = -(int(byte)) / 2; | ||||
|     return rssi - RSSI_OFFSET; | ||||
|     return rssi; | ||||
| } | ||||
| 
 | ||||
| uint8_t sx126x::packetRssiRaw() { | ||||
| @ -508,7 +520,7 @@ int ISR_VECT sx126x::packetRssi() { | ||||
|     uint8_t buf[3] = {0}; | ||||
|     executeOpcodeRead(OP_PACKET_STATUS_6X, buf, 3); | ||||
|     int pkt_rssi = -buf[0] / 2; | ||||
|     return pkt_rssi - RSSI_OFFSET; | ||||
|     return pkt_rssi; | ||||
| } | ||||
| 
 | ||||
| uint8_t ISR_VECT sx126x::packetSnrRaw() { | ||||
| @ -653,20 +665,18 @@ void sx126x::receive(int size) | ||||
|     if (_rxen != -1) { | ||||
|         rxAntEnable(); | ||||
|     } | ||||
| 
 | ||||
|     uint8_t mode[3] = {0xFF, 0xFF, 0xFF}; // continuous mode
 | ||||
|     executeOpcode(OP_RX_6X, mode, 3); | ||||
| } | ||||
| 
 | ||||
| void sx126x::idle() | ||||
| { | ||||
|       //#if HAS_TCXO
 | ||||
|           // STDBY_XOSC
 | ||||
|           uint8_t byte = 0x01; | ||||
|       //#else
 | ||||
|       //    // STDBY_RC
 | ||||
|       //    uint8_t byte = 0x00;
 | ||||
|       //#endif
 | ||||
|       executeOpcode(OP_STANDBY_6X, &byte, 1);  | ||||
|   // STDBY_XOSC
 | ||||
|   uint8_t byte = 0x01; | ||||
|   // STDBY_RC
 | ||||
|   // uint8_t byte = 0x00;
 | ||||
|   executeOpcode(OP_STANDBY_6X, &byte, 1);  | ||||
| } | ||||
| 
 | ||||
| void sx126x::sleep() | ||||
| @ -677,7 +687,12 @@ void sx126x::sleep() | ||||
| 
 | ||||
| void sx126x::enableTCXO() { | ||||
|     // only tested for RAK4630, voltage may be different on other platforms
 | ||||
|     uint8_t buf[4] = {MODE_TCXO_3_3V_6X, 0x00, 0x00, 0xFF}; | ||||
|     #if BOARD_MODEL == BOARD_RAK4630 | ||||
|       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); | ||||
| } | ||||
| 
 | ||||
| @ -756,7 +771,7 @@ void sx126x::setSpreadingFactor(int sf) | ||||
| 
 | ||||
|   _sf = sf; | ||||
| 
 | ||||
|       setModulationParams(sf, _bw, _cr, _ldro); | ||||
|   setModulationParams(sf, _bw, _cr, _ldro); | ||||
|   handleLowDataRate(); | ||||
| } | ||||
| 
 | ||||
| @ -834,13 +849,17 @@ void sx126x::setCodingRate4(int denominator) | ||||
| 
 | ||||
| void sx126x::setPreambleLength(long length) | ||||
| { | ||||
|     setPacketParams(length, _implicitHeaderMode, _payloadLength, _crcMode); | ||||
|   _preambleLength = length; | ||||
|   setPacketParams(length, _implicitHeaderMode, _payloadLength, _crcMode); | ||||
| } | ||||
| 
 | ||||
| void sx126x::setSyncWord(int sw) | ||||
| void sx126x::setSyncWord(uint16_t sw) | ||||
| { | ||||
|     writeRegister(REG_SYNC_WORD_MSB_6X, sw & 0xFF00); | ||||
|     writeRegister(REG_SYNC_WORD_LSB_6X, sw & 0x00FF); | ||||
|   // TODO: Fix
 | ||||
|     // 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() | ||||
| @ -921,6 +940,11 @@ void ISR_VECT sx126x::handleDio0Rise() | ||||
|             _onReceive(packetLength); | ||||
|         } | ||||
|     } | ||||
|     // else {
 | ||||
|     //   Serial.println("CRCE");
 | ||||
|     //   Serial.println(buf[0]);
 | ||||
|     //   Serial.println(buf[1]);
 | ||||
|     // }
 | ||||
| } | ||||
| 
 | ||||
| void ISR_VECT sx126x::onDio0Rise() | ||||
| @ -929,3 +953,5 @@ void ISR_VECT sx126x::onDio0Rise() | ||||
| } | ||||
| 
 | ||||
| sx126x sx126x_modem; | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										2
									
								
								sx126x.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								sx126x.h
									
									
									
									
									
								
							| @ -68,7 +68,7 @@ public: | ||||
|   void setSignalBandwidth(long sbw); | ||||
|   void setCodingRate4(int denominator); | ||||
|   void setPreambleLength(long length); | ||||
|   void setSyncWord(int sw); | ||||
|   void setSyncWord(uint16_t sw); | ||||
|   uint8_t modemStatus(); | ||||
|   void enableCrc(); | ||||
|   void disableCrc(); | ||||
|  | ||||
							
								
								
									
										33
									
								
								sx127x.cpp
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								sx127x.cpp
									
									
									
									
									
								
							| @ -4,30 +4,10 @@ | ||||
| // Modifications and additions copyright 2023 by Mark Qvist
 | ||||
| // Obviously still under the MIT license.
 | ||||
| 
 | ||||
| #include "sx127x.h" | ||||
| #include "Boards.h" | ||||
| 
 | ||||
| #define MCU_1284P 0x91 | ||||
| #define MCU_2560  0x92 | ||||
| #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 MODEM == SX1276 | ||||
| #include "sx127x.h" | ||||
| 
 | ||||
| #if MCU_VARIANT == MCU_ESP32 | ||||
|   #if MCU_VARIANT == MCU_ESP32 and !defined(CONFIG_IDF_TARGET_ESP32S3) | ||||
| @ -96,6 +76,7 @@ | ||||
| extern SPIClass SPI; | ||||
| 
 | ||||
| #define MAX_PKT_LENGTH           255 | ||||
| #define SYNC_WORD_7X            0x12 | ||||
| 
 | ||||
| sx127x::sx127x() : | ||||
|   _spiSettings(8E6, MSBFIRST, SPI_MODE0), | ||||
| @ -200,10 +181,10 @@ int sx127x::begin(long frequency) | ||||
|   // set auto AGC
 | ||||
|   writeRegister(REG_MODEM_CONFIG_3_7X, 0x04); | ||||
| 
 | ||||
|   // set output power to 2 dBm
 | ||||
|   setSyncWord(SYNC_WORD_7X); | ||||
|   enableCrc(); | ||||
|   setTxPower(2); | ||||
| 
 | ||||
|   // put in standby mode
 | ||||
|   idle(); | ||||
| 
 | ||||
|   return 1; | ||||
| @ -602,7 +583,7 @@ void sx127x::setPreambleLength(long length) | ||||
|   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); | ||||
| } | ||||
| @ -692,3 +673,5 @@ void ISR_VECT sx127x::onDio0Rise() | ||||
| } | ||||
| 
 | ||||
| sx127x sx127x_modem; | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										6
									
								
								sx127x.h
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								sx127x.h
									
									
									
									
									
								
							| @ -66,17 +66,13 @@ public: | ||||
|   void setSignalBandwidth(long sbw); | ||||
|   void setCodingRate4(int denominator); | ||||
|   void setPreambleLength(long length); | ||||
|   void setSyncWord(int sw); | ||||
|   void setSyncWord(uint8_t sw); | ||||
|   uint8_t modemStatus(); | ||||
|   void enableCrc(); | ||||
|   void disableCrc(); | ||||
|   void enableTCXO(); | ||||
|   void disableTCXO(); | ||||
| 
 | ||||
|   // deprecated
 | ||||
|   void crc() { enableCrc(); } | ||||
|   void noCrc() { disableCrc(); } | ||||
| 
 | ||||
|   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); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user