Refactor header files - includes should only declare, not define

This commit is contained in:
Sassa NF
2024-12-23 09:36:23 +00:00
parent cb6b93f9ff
commit ca6a61ff93
6 changed files with 132 additions and 73 deletions

View File

@@ -57,6 +57,7 @@ void _onUsbEvent0(void *arg, esp_event_base_t event_base, int32_t event_id,
bool Comms::initComms(Config &c)
{
bool fine = false;
#ifndef HELTEC
if (c.listen_on_usb.equalsIgnoreCase("readline"))
{
// comms using readline plaintext protocol
@@ -68,13 +69,14 @@ bool Comms::initComms(Config &c)
fine = true;
}
#endif
if (c.listen_on_serial0.equalsIgnoreCase("readline"))
{
// comms using readline plaintext protocol
Comms0 = new ReadlineComms("UART0", Serial0);
Serial0.onReceive(_onReceive0, false);
Serial0.begin(115200);
Comms0 = new ReadlineComms("UART0", SERIAL0);
SERIAL0.onReceive(_onReceive0, false);
SERIAL0.begin(115200);
Serial.println("Initialized communications on Serial0 using readline protocol");
}

View File

@@ -5,6 +5,12 @@
#include <HardwareSerial.h>
#include <config.h>
#ifdef HELTEC
#define SERIAL0 Serial
#else
#define SERIAL0 Serial0
#endif
enum MessageType
{
WRAP = 0,
@@ -69,7 +75,7 @@ struct Comms
struct NoopComms : Comms
{
NoopComms() : Comms("no-op", Serial0) {};
NoopComms() : Comms("no-op", SERIAL0) {};
virtual bool send(Message &) { return true; };
virtual void _onReceive() {};

View File

@@ -1,3 +1,5 @@
#ifndef __LILY_GO_H
#define __LILY_GO_H
// Define for our code
#define RST_OLED UNUSED_PIN
@@ -25,32 +27,43 @@
// Assume MISO and MOSI being wrong when not using Heltec's board definition
// and use hspi to make it work anyway. See heltec_setup() for the actual SPI setup.
#include <SPI.h>
SPIClass *hspi = new SPIClass(2);
SX1262 radio = new Module(SS, DIO1, RST_LoRa, BUSY_LoRa, *hspi);
extern SPIClass *hspi;
#define RADIO_TYPE SX1262
#define RADIO_MODULE_INIT() new Module(SS, DIO1, RST_LoRa, BUSY_LoRa, *hspi);
#else // ARDUINO_heltec_wifi_32_lora_V3
#ifdef USING_SX1280PA
SX1280 radio = new Module(RADIO_CS_PIN, RADIO_DIO1_PIN, RADIO_RST_PIN, RADIO_BUSY_PIN);
#define RADIO_TYPE SX1280
#define RADIO_MODULE_INIT() \
new Module(RADIO_CS_PIN, RADIO_DIO1_PIN, RADIO_RST_PIN, RADIO_BUSY_PIN);
#endif // end USING_SX1280PA
#ifdef USING_SX1262
// Default SPI on pins from pins_arduino.h
SX1262 radio = new Module(RADIO_CS_PIN, RADIO_DIO1_PIN, RADIO_RST_PIN, RADIO_BUSY_PIN);
#define RADIO_TYPE SX1262
#define RADIO_MODULE_INIT() \
new Module(RADIO_CS_PIN, RADIO_DIO1_PIN, RADIO_RST_PIN, RADIO_BUSY_PIN)
#endif // end USING_SX1262
#ifdef USING_LR1121
// Default SPI on pins from pins_arduino.h
LR1121 radio = new Module(RADIO_CS_PIN, RADIO_DIO9_PIN, RADIO_RST_PIN, RADIO_BUSY_PIN);
#define RADIO_TYPE LR1121
#define RADIO_MODULE_INIT() \
new Module(RADIO_CS_PIN, RADIO_DIO9_PIN, RADIO_RST_PIN, RADIO_BUSY_PIN);
#endif // end USING_LR1121
#ifdef USING_SX1276
// Default SPI on pins from pins_arduino.h
SX1276 radio = new Module(RADIO_CS_PIN, RADIO_DIO1_PIN, RADIO_RST_PIN, RADIO_BUSY_PIN);
#define RADIO_TYPE SX1276
#define RADIO_MODULE_INIT() \
new Module(RADIO_CS_PIN, RADIO_DIO1_PIN, RADIO_RST_PIN, RADIO_BUSY_PIN);
#endif // end USING_SX1276
#endif // end ARDUINO_heltec_wifi_32_lora_V3
#endif // end HELTEC_NO_RADIO_INSTANCE
void heltec_led(int led) {}
extern RADIO_TYPE radio;
void heltec_deep_sleep() {}
void heltec_led(int led);
void heltec_delay(int millisec) { delay(millisec); }
void heltec_deep_sleep(int sleep_seconds = 0);
void heltec_delay(int millisec);
#ifndef HELTEC_NO_DISPLAY_INSTANCE
/**
@@ -89,78 +102,34 @@ class PrintSplitter : public Print
#endif
#define SCREEN_ADDRESS 0x3C
SSD1306Wire display(SCREEN_ADDRESS, I2C_SDA, I2C_SCL, DISPLAY_GEOMETRY);
#define DISPLAY_TYPE SSD1306Wire
#define DISPLAY_INIT() SSD1306Wire(SCREEN_ADDRESS, I2C_SDA, I2C_SCL, DISPLAY_GEOMETRY)
// SH1106Wire display(0x3c, I2C_SDA, I2C_SCL, DISPLAY_GEOMETRY);
PrintSplitter both(Serial, display);
#define BOTH_TYPE PrintSplitter
#define BOTH_INIT() PrintSplitter(Serial, display)
#else
Print &both = Serial;
#define DISPLAY_TYPE void *
#define BOTH_TYPE Print &
#define BOTH_INIT() Serial
#endif
extern DISPLAY_TYPE display;
extern BOTH_TYPE both;
// some fake pin
#ifdef T3_V1_6_SX1276
#define BUTTON_PIN 22
#endif
#define BUTTON BUTTON_PIN
#include "HotButton.h"
HotButton button(BUTTON);
extern HotButton button;
void heltec_loop()
{
#ifndef DT3_V1_6_SX1276
button.update();
#endif
}
void heltec_loop();
// This file contains a binary patch for the SX1262
#include "modules/SX126x/patches/SX126x_patch_scan.h"
void heltec_display_power(bool on)
{
#ifndef HELTEC_NO_DISPLAY_INSTANCE
if (on)
{
#ifdef HELTEC_WIRELESS_STICK
// They hooked the display to "external" power, and didn't tell anyone
heltec_ve(true);
delay(5);
#endif
pinMode(RST_OLED, OUTPUT);
digitalWrite(RST_OLED, HIGH);
delay(1);
digitalWrite(RST_OLED, LOW);
delay(20);
digitalWrite(RST_OLED, HIGH);
}
else
{
#ifdef HELTEC_WIRELESS_STICK
heltec_ve(false);
#else
display.displayOff();
#endif
}
#endif
}
void heltec_setup()
{
Serial.begin(115200);
Serial.println("LILYGO BOARD");
void heltec_display_power(bool on);
#if defined(ARDUINO_ARCH_ESP32)
SPI.begin(RADIO_SCLK_PIN, RADIO_MISO_PIN, RADIO_MOSI_PIN);
#elif defined(ARDUINO_ARCH_STM32)
SPI.setMISO(RADIO_MISO_PIN);
SPI.setMOSI(RADIO_MOSI_PIN);
SPI.setSCLK(RADIO_SCLK_PIN);
SPI.begin();
void heltec_setup();
#endif
#ifndef ARDUINO_heltec_wifi_32_lora_V3
hspi->begin(SCK, MISO, MOSI, SS);
#endif
#ifndef HELTEC_NO_DISPLAY_INSTANCE
heltec_display_power(true);
display.init();
// display.setContrast(200);
display.flipScreenVertically();
#endif
}

View File

@@ -12,6 +12,86 @@
#include "LoRaBoards.h"
#include "LiLyGo.h"
// Implement stubs for functions that exist on Heltec, but not on LilyGo
void heltec_led(int led) {}
void heltec_deep_sleep(int sleep_seconds) {}
void heltec_delay(int millisec) { delay(millisec); }
DISPLAY_TYPE display = DISPLAY_INIT();
BOTH_TYPE both = BOTH_INIT();
HotButton button(BUTTON);
void heltec_loop()
{
#ifndef DT3_V1_6_SX1276
button.update();
#endif
}
void heltec_display_power(bool on)
{
#ifndef HELTEC_NO_DISPLAY_INSTANCE
if (on)
{
#ifdef HELTEC_WIRELESS_STICK
// They hooked the display to "external" power, and didn't tell anyone
heltec_ve(true);
delay(5);
#endif
pinMode(RST_OLED, OUTPUT);
digitalWrite(RST_OLED, HIGH);
delay(1);
digitalWrite(RST_OLED, LOW);
delay(20);
digitalWrite(RST_OLED, HIGH);
}
else
{
#ifdef HELTEC_WIRELESS_STICK
heltec_ve(false);
#else
display.displayOff();
#endif
}
#endif
}
void heltec_setup()
{
Serial.begin(115200);
Serial.println("LILYGO BOARD");
#if defined(ARDUINO_ARCH_ESP32)
SPI.begin(RADIO_SCLK_PIN, RADIO_MISO_PIN, RADIO_MOSI_PIN);
#elif defined(ARDUINO_ARCH_STM32)
SPI.setMISO(RADIO_MISO_PIN);
SPI.setMOSI(RADIO_MOSI_PIN);
SPI.setSCLK(RADIO_SCLK_PIN);
SPI.begin();
#endif
#ifndef ARDUINO_heltec_wifi_32_lora_V3
hspi->begin(SCK, MISO, MOSI, SS);
#endif
#ifndef HELTEC_NO_DISPLAY_INSTANCE
heltec_display_power(true);
display.init();
// display.setContrast(200);
display.flipScreenVertically();
#endif
}
#ifndef ARDUINO_heltec_wifi_32_lora_V3
SPIClass hspi = new SPIClass(2);
#endif
RADIO_TYPE radio = RADIO_MODULE_INIT();
#if defined(HAS_SDCARD)
SPIClass SDCardSPI(HSPI);
#endif

View File

@@ -7,6 +7,7 @@
* @last-update 2024-08-07
*/
#ifdef LILYGO
#pragma once
#include "utilities.h"
@@ -95,3 +96,4 @@ extern SPIClass SDCardSPI;
#elif defined(ARDUINO_ARCH_STM32)
extern HardwareSerial SerialGPS;
#endif
#endif

View File

@@ -79,7 +79,7 @@
// #include "utilities.h"
// Our Code
#include "LiLyGo.h"
#include <LiLyGo.h>
#endif // end LILYGO
#define BT_SCAN_DELAY 60 * 1 * 1000