Factor out board config detection

This commit is contained in:
Adam Novak 2022-02-13 16:58:04 -05:00
parent 498b1f12e9
commit e67b38c005
6 changed files with 65 additions and 41 deletions

View File

@ -1,20 +1,13 @@
#include "ROM.h" #include "ROM.h"
#include "Platform.h"
#ifndef CONFIG_H #ifndef CONFIG_H
#define CONFIG_H #define CONFIG_H
#define MAJ_VERS 0x01 #define MAJ_VERS 0x01
#define MIN_VERS 0x1B #define MIN_VERS 0x1B
#define PLATFORM_AVR 0x90
#define PLATFORM_ESP32 0x80
#define PLATFORM_LINUX 0x70
#define MCU_1284P 0x91
#define MCU_2560 0x92
#define MCU_ESP32 0x81
#define MCU_LINUX 0x71
#define BOARD_RNODE 0x31 #define BOARD_RNODE 0x31
#define BOARD_HMBRW 0x32 #define BOARD_HMBRW 0x32
#define BOARD_TBEAM 0x33 #define BOARD_TBEAM 0x33
@ -24,24 +17,25 @@
#define BOARD_LORA32_V2_1 0x37 #define BOARD_LORA32_V2_1 0x37
#define BOARD_SPIDEV 0x38 #define BOARD_SPIDEV 0x38
#define LIBRARY_ARDUINO 0x1
#define LIBRARY_C 0x2
#define MODE_HOST 0x11 #define MODE_HOST 0x11
#define MODE_TNC 0x12 #define MODE_TNC 0x12
#if defined(__AVR_ATmega1284P__) #if defined(__AVR_ATmega1284P__)
#define PLATFORM PLATFORM_AVR #define PLATFORM PLATFORM_AVR
#define MCU_VARIANT MCU_1284P #define MCU_VARIANT MCU_1284P
#define LIBRARY_TYPE LIBRARY_ARDUINO
#elif defined(__AVR_ATmega2560__) #elif defined(__AVR_ATmega2560__)
#define PLATFORM PLATFORM_AVR #define PLATFORM PLATFORM_AVR
#define MCU_VARIANT MCU_2560 #define MCU_VARIANT MCU_2560
#define LIBRARY_TYPE LIBRARY_ARDUINO
#elif defined(ESP32) #elif defined(ESP32)
#define PLATFORM PLATFORM_ESP32 #define PLATFORM PLATFORM_ESP32
#define MCU_VARIANT MCU_ESP32 #define MCU_VARIANT MCU_ESP32
#define LIBRARY_TYPE LIBRARY_ARDUINO
#elif defined(__unix__) #elif defined(__unix__)
#define PLATFORM PLATFORM_LINUX #define PLATFORM PLATFORM_LINUX
#define MCU_VARIANT MCU_LINUX #define MCU_VARIANT MCU_LINUX
#define LIBRARY_TYPE LIBRARY_C
#else #else
#error "The firmware cannot be compiled for the selected MCU variant" #error "The firmware cannot be compiled for the selected MCU variant"
#endif #endif
@ -63,7 +57,6 @@
const int pin_led_tx = 13; const int pin_led_tx = 13;
#define BOARD_MODEL BOARD_RNODE #define BOARD_MODEL BOARD_RNODE
#define LIBRARY_TYPE LIBRARY_ARDUINO
#define CONFIG_UART_BUFFER_SIZE 6144 #define CONFIG_UART_BUFFER_SIZE 6144
#define CONFIG_QUEUE_SIZE 6144 #define CONFIG_QUEUE_SIZE 6144
@ -80,7 +73,6 @@
const int pin_led_tx = 13; const int pin_led_tx = 13;
#define BOARD_MODEL BOARD_HMBRW #define BOARD_MODEL BOARD_HMBRW
#define LIBRARY_TYPE LIBRARY_ARDUINO
#define CONFIG_UART_BUFFER_SIZE 768 #define CONFIG_UART_BUFFER_SIZE 768
#define CONFIG_QUEUE_SIZE 5120 #define CONFIG_QUEUE_SIZE 5120
@ -142,8 +134,6 @@
#error An unsupported board was selected. Cannot compile RNode firmware. #error An unsupported board was selected. Cannot compile RNode firmware.
#endif #endif
#define LIBRARY_TYPE LIBRARY_ARDUINO
#define CONFIG_UART_BUFFER_SIZE 6144 #define CONFIG_UART_BUFFER_SIZE 6144
#define CONFIG_QUEUE_SIZE 6144 #define CONFIG_QUEUE_SIZE 6144
#define CONFIG_QUEUE_MAX_LENGTH 200 #define CONFIG_QUEUE_MAX_LENGTH 200
@ -162,7 +152,6 @@
const int pin_led_tx = -1; const int pin_led_tx = -1;
#define BOARD_MODEL BOARD_SPIDEV #define BOARD_MODEL BOARD_SPIDEV
#define LIBRARY_TYPE LIBRARY_C
#define CONFIG_UART_BUFFER_SIZE 6144 #define CONFIG_UART_BUFFER_SIZE 6144
#define CONFIG_QUEUE_SIZE 6144 #define CONFIG_QUEUE_SIZE 6144

View File

@ -6,24 +6,6 @@
#include "LoRa.h" #include "LoRa.h"
#define MCU_1284P 0x91
#define MCU_2560 0x92
#define MCU_ESP32 0x81
#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
#endif
#ifndef MCU_VARIANT
#error No MCU variant defined, cannot compile
#endif
#if MCU_VARIANT == MCU_ESP32 #if MCU_VARIANT == MCU_ESP32
#include "soc/rtc_wdt.h" #include "soc/rtc_wdt.h"
#define ISR_VECT IRAM_ATTR #define ISR_VECT IRAM_ATTR
@ -654,4 +636,4 @@ void ISR_VECT LoRaClass::onDio0Rise()
LoRa.handleDio0Rise(); LoRa.handleDio0Rise();
} }
LoRaClass LoRa; LoRaClass LoRa;

14
LoRa.h
View File

@ -7,8 +7,16 @@
#ifndef LORA_H #ifndef LORA_H
#define LORA_H #define LORA_H
#include <Arduino.h> #include "Platform.h"
#include <SPI.h>
#if LIBRARY_TYPE == LIBRARY_ARDUINO
#include <Arduino.h>
#include <SPI.h>
#elif LIBRARY_TYPE == LIBRARY_C
#include <cstdlib>
#include <cstdint>
#include "ArduinoOnLinux/Stream.h"
#endif
#define LORA_DEFAULT_SS_PIN 10 #define LORA_DEFAULT_SS_PIN 10
#define LORA_DEFAULT_RESET_PIN 9 #define LORA_DEFAULT_RESET_PIN 9
@ -103,4 +111,4 @@ private:
extern LoRaClass LoRa; extern LoRaClass LoRa;
#endif #endif

View File

@ -1,7 +1,7 @@
#include "MD5.h" #include "MD5.h"
#if LIBRARY_TYPE == LIBRARY_ARDUINO #if LIBRARY_TYPE == LIBRARY_ARDUINO
#include "Arduino.h" #include <Arduino.h>
#elif LIBRARY_TYPE == LIBRARY_C #elif LIBRARY_TYPE == LIBRARY_C
#include <cstdlib> #include <cstdlib>
#endif #endif

View File

@ -145,6 +145,9 @@ clean:
rm -Rf bin rm -Rf bin
rm -Rf obj rm -Rf obj
obj/MD5.o: MD5.cpp MD5.h Config.h ROM.h prep-linux obj/MD5.o: MD5.cpp MD5.h Config.h ROM.h Platform.h prep-linux
$(CC) -c -o $@ $<
obj/LoRa.o: LoRa.cpp LoRa.h Platform.h prep-linux
$(CC) -c -o $@ $< $(CC) -c -o $@ $<

42
Platform.h Normal file
View File

@ -0,0 +1,42 @@
#ifndef PLATFORM_H
#define PLATFORM_H
// Determine the platform, MCU, and C library we are building for.
#define PLATFORM_AVR 0x90
#define PLATFORM_ESP32 0x80
#define PLATFORM_LINUX 0x70
#define MCU_1284P 0x91
#define MCU_2560 0x92
#define MCU_ESP32 0x81
#define MCU_LINUX 0x71
#define LIBRARY_ARDUINO 0x1
#define LIBRARY_C 0x2
#if defined(__AVR_ATmega1284P__)
#define PLATFORM PLATFORM_AVR
#define MCU_VARIANT MCU_1284P
#define LIBRARY_TYPE LIBRARY_ARDUINO
#elif defined(__AVR_ATmega2560__)
#define PLATFORM PLATFORM_AVR
#define MCU_VARIANT MCU_2560
#define LIBRARY_TYPE LIBRARY_ARDUINO
#elif defined(ESP32)
#define PLATFORM PLATFORM_ESP32
#define MCU_VARIANT MCU_ESP32
#define LIBRARY_TYPE LIBRARY_ARDUINO
#elif defined(__unix__)
#define PLATFORM PLATFORM_LINUX
#define MCU_VARIANT MCU_LINUX
#define LIBRARY_TYPE LIBRARY_C
#else
#error "The firmware cannot be compiled for the selected MCU variant"
#endif
#ifndef MCU_VARIANT
#error No MCU variant defined, cannot compile
#endif
#endif