Squashed commit of the following:
commit 2e25bff15413f2365f1b18c901f93297ce07c645
Author: jeremy <jeremy@ubuntu>
Date:   Thu Sep 12 10:19:07 2024 -0400
    Adds t-echo support
commit aa44625847179c5b3c4d03b9f7e062f409da0d8a
Author: jeremy <jeremy@ubuntu>
Date:   Thu Sep 12 10:19:07 2024 -0400
    Adds t-echo support
			
			
This commit is contained in:
		
							parent
							
								
									07b7e28c74
								
							
						
					
					
						commit
						02f9dc1345
					
				
							
								
								
									
										16
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| { | ||||
|     "files.associations": { | ||||
|         "array": "cpp", | ||||
|         "deque": "cpp", | ||||
|         "list": "cpp", | ||||
|         "string": "cpp", | ||||
|         "unordered_map": "cpp", | ||||
|         "unordered_set": "cpp", | ||||
|         "vector": "cpp", | ||||
|         "string_view": "cpp", | ||||
|         "initializer_list": "cpp", | ||||
|         "ranges": "cpp", | ||||
|         "span": "cpp", | ||||
|         "format": "cpp" | ||||
|     } | ||||
| } | ||||
							
								
								
									
										64
									
								
								Boards.h
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								Boards.h
									
									
									
									
									
								
							| @ -39,6 +39,7 @@ | ||||
|   #define BOARD_RNODE_NG_20   0x40 | ||||
|   #define BOARD_RNODE_NG_21   0x41 | ||||
|   #define BOARD_T3S3   0x42 | ||||
|   #define BOARD_TECHO         0x43 | ||||
|   #define BOARD_GENERIC_NRF52 0x50 | ||||
|   #define BOARD_RAK4631       0x51 | ||||
| 
 | ||||
| @ -50,7 +51,7 @@ | ||||
|   #if defined(ESP32) | ||||
|     #define PLATFORM PLATFORM_ESP32 | ||||
|     #define MCU_VARIANT MCU_ESP32 | ||||
|   #elif defined(NRF52840_XXAA) | ||||
|   #elif defined(NRF52840_XXAA) || defined(_VARIANT_PCA10056_) | ||||
|     #include <variant.h> | ||||
|     #define PLATFORM PLATFORM_NRF52 | ||||
|     #define MCU_VARIANT MCU_NRF52 | ||||
| @ -629,7 +630,66 @@ | ||||
|     #endif | ||||
|    | ||||
|   #elif MCU_VARIANT == MCU_NRF52 | ||||
|     #if BOARD_MODEL == BOARD_RAK4631 || BOARD_MODEL == BOARD_FREENODE | ||||
|      #if BOARD_MODEL == BOARD_TECHO | ||||
|       #define VALIDATE_FIRMWARE false | ||||
|       //#define GPS_BAUD_RATE 115200
 | ||||
|       //#define PIN_GPS_TX 41
 | ||||
|       //#define PIN_GPS_RX 40
 | ||||
|       #define EEPROM_SIZE 296 | ||||
|       #define EEPROM_OFFSET EEPROM_SIZE-EEPROM_RESERVED | ||||
|       //#define HAS_EEPROM true
 | ||||
|       //#define HAS_SD true
 | ||||
|       //#define HAS_DISPLAY true
 | ||||
|       //#define HAS_CONSOLE true
 | ||||
|       //#define HAS_TXCO true
 | ||||
|       //#define DISPLAY EINK_BW
 | ||||
|       //#define HAS_BLE true
 | ||||
|       //#define HAS_PMU true
 | ||||
|       #define CONFIG_UART_BUFFER_SIZE 40000 | ||||
|       #define CONFIG_QUEUE_0_SIZE 6144 | ||||
|       #define CONFIG_QUEUE_MAX_LENGTH 200 | ||||
|       #define BLE_MANUFACTURER "LilyGO" | ||||
|       #define BLE_MODEL "T-Echo" | ||||
|       #define INTERFACE_COUNT 1 | ||||
|       //#define I2C_SDA 26
 | ||||
|       //#define I2C_SCL 27
 | ||||
|       #define CONFIG_QUEUE_1_SIZE 40000 | ||||
|       // first interface in list is the primary
 | ||||
|       const uint8_t interfaces[INTERFACE_COUNT] = {SX126X}; | ||||
|       const bool interface_cfg[INTERFACE_COUNT][3] = {  | ||||
|                   // SX1262
 | ||||
|           { | ||||
|               false, // DEFAULT_SPI
 | ||||
|               true, // HAS_TCXO
 | ||||
|               true  // DIO2_AS_RF_SWITCH
 | ||||
|           } | ||||
|       }; | ||||
| 
 | ||||
|       const int8_t interface_pins[INTERFACE_COUNT][10] = {  | ||||
|                   // SX1262
 | ||||
|           { | ||||
|               24, // pin_ss 
 | ||||
|               19, // pin_sclk
 | ||||
|               22, // pin_mosi
 | ||||
|               23, // pin_miso
 | ||||
|               17, // pin_busy
 | ||||
|               20, // pin_dio
 | ||||
|               25, // pin_reset
 | ||||
|               -1, // pin_txen
 | ||||
|               -1, // pin_rxen
 | ||||
|               21  // pin_tcxo_enable
 | ||||
|           } | ||||
|       }; | ||||
| 
 | ||||
|       const int pin_disp_cs = 30; | ||||
|       const int pin_disp_dc = 28; | ||||
|       const int pin_disp_reset = 2; | ||||
|       const int pin_disp_busy = 3; | ||||
|       const int pin_disp_en = 43; | ||||
| 
 | ||||
|       const int pin_led_rx = LED_BLUE; | ||||
|       const int pin_led_tx = LED_RED; | ||||
|     #elif BOARD_MODEL == BOARD_RAK4631 || BOARD_MODEL == BOARD_FREENODE | ||||
|       #define HAS_EEPROM false | ||||
|       #define HAS_DISPLAY true | ||||
|       #define DISPLAY EINK_BW | ||||
|  | ||||
							
								
								
									
										6
									
								
								Device.h
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								Device.h
									
									
									
									
									
								
							| @ -275,6 +275,7 @@ bool device_firmware_ok() { | ||||
| 
 | ||||
| #if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52 | ||||
| bool device_init() { | ||||
|   #if VALIDATE_FIRMWARE | ||||
|   if (bt_ready) { | ||||
|     #if MCU_VARIANT == MCU_ESP32 | ||||
|     for (uint8_t i=0; i<EEPROM_SIG_LEN; i++){dev_eeprom_signature[i]=EEPROM.read(eeprom_addr(ADDR_SIGNATURE+i));} | ||||
| @ -310,9 +311,9 @@ bool device_init() { | ||||
| 
 | ||||
|     hash.end(dev_hash); | ||||
|     #endif | ||||
| 
 | ||||
|     device_load_signature(); | ||||
|     device_validate_signature(); | ||||
| 
 | ||||
|     device_validate_partitions(); | ||||
| 
 | ||||
|     #if MCU_VARIANT == MCU_NRF52 | ||||
| @ -323,5 +324,8 @@ bool device_init() { | ||||
|   } else { | ||||
|     return false; | ||||
|   } | ||||
|   #else //if VALIDATE_FIRMWARE is false
 | ||||
|   return true; | ||||
|   #endif | ||||
| } | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										15
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								Makefile
									
									
									
									
									
								
							| @ -37,6 +37,7 @@ prep-samd: | ||||
| 
 | ||||
| prep-nrf: | ||||
| 	arduino-cli core update-index --config-file arduino-cli.yaml | ||||
| 	arduino-cli core install adafruit:nrf52 --config-file arduino-cli.yaml | ||||
| 	arduino-cli core install rakwireless:nrf52 --config-file arduino-cli.yaml | ||||
| 	arduino-cli lib install "Crypto" | ||||
| 	arduino-cli lib install "Adafruit GFX Library" | ||||
| @ -62,6 +63,14 @@ firmware-tbeam: | ||||
| firmware-tbeam_sx126x: | ||||
| 	arduino-cli compile --fqbn esp32:esp32:t-beam -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x33\" \"-DMODEM=0x03\"" | ||||
| 
 | ||||
| firmware-techo: firmware-techo4 firmware-techo9 | ||||
| 
 | ||||
| firmware-techo4: | ||||
| 	arduino-cli compile --fqbn adafruit:nrf52:pca10056 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x43\" \"-DBOARD_VARIANT=0x16\"" | ||||
| 
 | ||||
| firmware-techo9: | ||||
| 	arduino-cli compile --fqbn adafruit:nrf52:pca10056 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x43\"  \"-DBOARD_VARIANT=0x17\"" | ||||
| 
 | ||||
| firmware-t3s3_sx1262: | ||||
| 	arduino-cli compile --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc" -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x42\" \"-DBOARD_VARIANT=0xA1\"" | ||||
| 
 | ||||
| @ -123,6 +132,12 @@ upload-tbeam: | ||||
| 	@sleep 3 | ||||
| 	python3 ./Release/esptool/esptool.py --chip esp32 --port $(or $(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-techo: | ||||
| 	arduino-cli upload -p $(or $(port), /dev/ttyACM0) --fqbn adafruit:nrf52:pca10056 | ||||
| 	unzip -o build/adafruit.nrf52.pca10056/RNode_Firmware_CE.ino.zip -d build/adafruit.nrf52.pca10056 | ||||
| 	#rnodeconf $(or $(port), /dev/ttyACM0) --firmware-hash $$(sha256sum ./build/adafruit.nrf52.pca10056/RNode_Firmware_CE.ino.bin | grep -o '^\S*') | ||||
| 	../Reticulum/RNS/Utilities/rnodeconf.py $(or $(port), /dev/ttyACM0) --firmware-hash $$(sha256sum ./build/adafruit.nrf52.pca10056/RNode_Firmware_CE.ino.bin | grep -o '^\S*') | ||||
| 
 | ||||
| upload-lora32_v10: | ||||
| 	arduino-cli upload -p $(or $(port), /dev/ttyUSB0) --fqbn esp32:esp32:ttgo-lora32 | ||||
| 	@sleep 1 | ||||
|  | ||||
| @ -17,8 +17,9 @@ | ||||
| #include <SPI.h> | ||||
| #include "Utilities.h" | ||||
| 
 | ||||
| #if MCU_VARIANT == MCU_NRF52  | ||||
|         #define INTERFACE_SPI | ||||
| #if MCU_VARIANT == MCU_NRF52 | ||||
|   #define INTERFACE_SPI | ||||
|   #if BOARD_MODEL == BOARD_RAK4631  | ||||
|         // Required because on RAK4631, non-default SPI pins must be initialised when class is declared.
 | ||||
|       SPIClass interface_spi[1] = { | ||||
|             // SX1262
 | ||||
| @ -29,6 +30,17 @@ | ||||
|                 interface_pins[0][2] | ||||
|                ) | ||||
|       }; | ||||
|   #elif BOARD_MODEL == BOARD_TECHO | ||||
|     SPIClass interface_spi[1] = { | ||||
|             // SX1262
 | ||||
|             SPIClass( | ||||
|                 NRF_SPIM3,  | ||||
|                 interface_pins[0][3],  | ||||
|                 interface_pins[0][1],  | ||||
|                 interface_pins[0][2] | ||||
|                ) | ||||
|       }; | ||||
|   #endif | ||||
| #endif | ||||
| 
 | ||||
| #ifndef INTERFACE_SPI | ||||
| @ -1101,11 +1113,11 @@ void validate_status() { | ||||
|         if (eeprom_checksum_valid()) { | ||||
|           eeprom_ok = true; | ||||
|           if (modems_installed) { | ||||
|               if (device_init()) { | ||||
|                 hw_ready = true; | ||||
|               } else { | ||||
|                 hw_ready = false; | ||||
|               } | ||||
|             if (device_init()) { | ||||
|               hw_ready = true; | ||||
|             } else { | ||||
|               hw_ready = false; | ||||
|             } | ||||
|           } else { | ||||
|             hw_ready = false; | ||||
|             Serial.write("No valid radio module found\r\n"); | ||||
|  | ||||
							
								
								
									
										3
									
								
								ROM.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								ROM.h
									
									
									
									
									
								
							| @ -32,6 +32,9 @@ | ||||
|     #define MODEL_12 0x12 | ||||
|     #define MODEL_13 0x13 // RAK4631 LF with WisBlock SX1280 module (LIBSYS002)
 | ||||
|     #define MODEL_14 0x14 // RAK4631 HF with WisBlock SX1280 module (LIBSYS002)
 | ||||
| 	#define PRODUCT_TECHO 0x15 | ||||
| 	#define MODEL_16 0x16 // T-Echo 433
 | ||||
| 	#define MODEL_17 0x17 // T-Echo 915
 | ||||
|     #define MODEL_21 0x21 // European band, 868MHz
 | ||||
| 	#define MODEL_A1 0xA1 | ||||
|     #define MODEL_A5 0xA5 // T3S3 SX1280 PA
 | ||||
|  | ||||
| @ -744,6 +744,8 @@ void sx126x::enableTCXO() { | ||||
|       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}; | ||||
|     #elif BOARD_MODEL == BOARD_TECHO | ||||
|       uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF}; | ||||
|     #elif BOARD_MODEL == BOARD_T3S3 | ||||
|       uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF}; | ||||
|     #else | ||||
| @ -2563,6 +2565,9 @@ void sx128x::disableCrc() | ||||
| byte sx128x::random() | ||||
| { | ||||
|     // todo: implement
 | ||||
|     return 0x4; //chosen  by fair die roll
 | ||||
|                 //guarenteed to be random
 | ||||
|                 //https://xkcd.com/221/
 | ||||
| } | ||||
| 
 | ||||
| void sx128x::setSPIFrequency(uint32_t frequency) | ||||
|  | ||||
							
								
								
									
										13
									
								
								Utilities.h
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								Utilities.h
									
									
									
									
									
								
							| @ -210,7 +210,12 @@ uint8_t boot_vector = 0x00; | ||||
| 		void led_rx_off() {	digitalWrite(pin_led_rx, LOW); } | ||||
| 		void led_tx_on()  { digitalWrite(pin_led_tx, HIGH); } | ||||
| 		void led_tx_off() { digitalWrite(pin_led_tx, LOW); } | ||||
|     #endif | ||||
| 	#elif BOARD_MODEL == BOARD_TECHO | ||||
| 		void led_rx_on()  { digitalWrite(pin_led_rx, HIGH); } | ||||
| 		void led_rx_off() {	digitalWrite(pin_led_rx, LOW); } | ||||
| 		void led_tx_on()  { digitalWrite(pin_led_tx, HIGH); } | ||||
| 		void led_tx_off() { digitalWrite(pin_led_tx, LOW); } | ||||
| 	#endif | ||||
| #endif | ||||
| 
 | ||||
| void hard_reset(void) { | ||||
| @ -1160,6 +1165,8 @@ uint16_t getQueueSize(uint8_t index) { | ||||
|         case 11: | ||||
|             return CONFIG_QUEUE_11_SIZE; | ||||
|         #endif | ||||
| 		default: | ||||
|             return CONFIG_QUEUE_0_SIZE; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| @ -1334,7 +1341,7 @@ bool eeprom_product_valid() { | ||||
| 	#if PLATFORM == PLATFORM_ESP32 | ||||
| 	if (rval == PRODUCT_RNODE || rval == BOARD_RNODE_NG_20 || rval == BOARD_RNODE_NG_21 || rval == PRODUCT_HMBRW || rval == PRODUCT_TBEAM || rval == PRODUCT_T32_10 || rval == PRODUCT_T32_20 || rval == PRODUCT_T32_21 || rval == PRODUCT_H32_V2 || rval == PRODUCT_H32_V3) { | ||||
| 	#elif PLATFORM == PLATFORM_NRF52 | ||||
| 	if (rval == PRODUCT_RAK4631 || rval == PRODUCT_HMBRW || rval == PRODUCT_FREENODE) { | ||||
| 	if (rval == PRODUCT_TECHO || rval == MODEL_16 || rval == MODEL_17 || rval == PRODUCT_RAK4631 || rval == PRODUCT_HMBRW || rval == PRODUCT_FREENODE) { | ||||
| 	#else | ||||
| 	if (false) { | ||||
| 	#endif | ||||
| @ -1362,6 +1369,8 @@ bool eeprom_model_valid() { | ||||
| 	if (model == MODEL_FF || model == MODEL_FE) { | ||||
| 	#elif BOARD_MODEL == BOARD_TBEAM | ||||
| 	if (model == MODEL_E4 || model == MODEL_E9 || model == MODEL_E3 || model == MODEL_E8) { | ||||
| 	#elif BOARD_MODEL == BOARD_TECHO | ||||
| 	if (model == MODEL_16 || model == MODEL_17) { | ||||
| 	#elif BOARD_MODEL == BOARD_LORA32_V1_0 | ||||
| 	if (model == MODEL_BA || model == MODEL_BB) { | ||||
| 	#elif BOARD_MODEL == BOARD_LORA32_V2_0 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user