mirror of
https://github.com/richonguzman/LoRa_APRS_iGate.git
synced 2026-07-13 21:31:14 +02:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ee25ec6873 |
@@ -57,8 +57,6 @@ jobs:
|
|||||||
chip: esp32s3
|
chip: esp32s3
|
||||||
- name: ttgo_t_deck_GPS
|
- name: ttgo_t_deck_GPS
|
||||||
chip: esp32s3
|
chip: esp32s3
|
||||||
- name: ttgo_t_beam_s3_SUPREME_v3
|
|
||||||
chip: esp32s3
|
|
||||||
- name: ESP32_DIY_LoRa_A7670
|
- name: ESP32_DIY_LoRa_A7670
|
||||||
chip: esp32
|
chip: esp32
|
||||||
- name: ESP32_DIY_LoRa_A7670_915
|
- name: ESP32_DIY_LoRa_A7670_915
|
||||||
|
|||||||
@@ -54,9 +54,7 @@ ____________________________________________________
|
|||||||
|
|
||||||
## Timeline (Versions):
|
## Timeline (Versions):
|
||||||
|
|
||||||
- 2025.03.03 T-Beam Supreme board added and more BlackList rules added.
|
- 2025.02.25 Objects Rules updated and GPS Boards: Satellites in Screen, Wx Height Correction from GPS Data.
|
||||||
- 2025.02.28 Heltec Wireless Paper with Epaper working. Thanks SzymonPriv for pointing to the right library.
|
|
||||||
- 2025.02.25 Objects Rules update, GPS Boards: Satellites on Screen, Wx Height Correction from GPS Data.
|
|
||||||
- 2025.01.22 Added LILYGO T-DECK PLUS (and DIY+GPS version) board support.
|
- 2025.01.22 Added LILYGO T-DECK PLUS (and DIY+GPS version) board support.
|
||||||
- 2025.01.11 Added HELTEC V3.2 board support.
|
- 2025.01.11 Added HELTEC V3.2 board support.
|
||||||
- 2025.01.07 TROY_LoRa_APRS board added. GMT in quarter hour fix and Beacon fix for TNC.
|
- 2025.01.07 TROY_LoRa_APRS board added. GMT in quarter hour fix and Beacon fix for TNC.
|
||||||
@@ -68,7 +66,7 @@ ____________________________________________________
|
|||||||
- 2024.10.25 Added QRP Labs LightGateway 1.0 support.
|
- 2024.10.25 Added QRP Labs LightGateway 1.0 support.
|
||||||
- 2024.10.21 Boards with GPS can now send Real-GPS Beacon (also posible: GPS ambiguity of ~ 1 km).
|
- 2024.10.21 Boards with GPS can now send Real-GPS Beacon (also posible: GPS ambiguity of ~ 1 km).
|
||||||
- 2024.10.14 Received Packets in WebUI show real Local Time (NTP with GMT offset).
|
- 2024.10.14 Received Packets in WebUI show real Local Time (NTP with GMT offset).
|
||||||
- 2024.10.08 New EcoMode for Remote Digipeaters without WiFi/WiFiAP, Screen, Leds (Example: LILYGO LoRa32 uses only 24mA, with WifiAP 150mA). APRS Message/Queries can start/stop this mode too.
|
- 2024.10.08 New EcoMode for Remote Digipeaters without WiFi/WiFiAP, Screen, Leds (Example: LILYGO LoRa32 uses only 24mA, with WifiAP and all was 150mA). APRS Message/Queries can start/stop this mode too.
|
||||||
- 2024.10.06 Cross Frequency Digipeater Rules added.
|
- 2024.10.06 Cross Frequency Digipeater Rules added.
|
||||||
- 2024.09.23 Libraries Update for SDK3
|
- 2024.09.23 Libraries Update for SDK3
|
||||||
- 2024.09.23 Added Enconded Telemetry for Battery (+ External Voltage) in Station GPS Beacon Packet.
|
- 2024.09.23 Added Enconded Telemetry for Battery (+ External Voltage) in Station GPS Beacon Packet.
|
||||||
|
|||||||
+2
-2
@@ -32,9 +32,9 @@ lib_deps =
|
|||||||
arduino-libraries/NTPClient @ 3.2.1
|
arduino-libraries/NTPClient @ 3.2.1
|
||||||
ayushsharma82/ElegantOTA @ 3.1.5
|
ayushsharma82/ElegantOTA @ 3.1.5
|
||||||
bblanchon/ArduinoJson @ 6.21.3
|
bblanchon/ArduinoJson @ 6.21.3
|
||||||
|
ESP32Async/AsyncTCP @ 3.3.5
|
||||||
|
ESP32Async/ESPAsyncWebServer @ 3.7.0
|
||||||
jgromes/RadioLib @ 7.1.0
|
jgromes/RadioLib @ 7.1.0
|
||||||
mathieucarbou/AsyncTCP @ 3.2.5
|
|
||||||
mathieucarbou/ESPAsyncWebServer @ 3.2.3
|
|
||||||
mikalhart/TinyGPSPlus @ 1.0.3
|
mikalhart/TinyGPSPlus @ 1.0.3
|
||||||
display_libs =
|
display_libs =
|
||||||
adafruit/Adafruit GFX Library @ 1.11.9
|
adafruit/Adafruit GFX Library @ 1.11.9
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
#ifndef ETHERNET_UTILS_H_
|
|
||||||
#define ETHERNET_UTILS_H_
|
|
||||||
|
|
||||||
#include <Arduino.h>
|
|
||||||
|
|
||||||
|
|
||||||
namespace ETHERNET_Utils {
|
|
||||||
|
|
||||||
void setup();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
+2
-2
@@ -13,10 +13,10 @@ default_envs = ttgo-lora32-v21
|
|||||||
|
|
||||||
extra_configs =
|
extra_configs =
|
||||||
common_settings.ini
|
common_settings.ini
|
||||||
variants/*/platformio.ini
|
variants/*/platformio.ini
|
||||||
|
|
||||||
[env]
|
[env]
|
||||||
platform = espressif32 @ 6.7.0
|
platform = espressif32 @ 6.10.0
|
||||||
board_build.partitions = min_spiffs.csv
|
board_build.partitions = min_spiffs.csv
|
||||||
framework = arduino
|
framework = arduino
|
||||||
monitor_speed = 115200
|
monitor_speed = 115200
|
||||||
|
|||||||
+15
-54
@@ -23,6 +23,7 @@ ___________________________________________________________________*/
|
|||||||
#include <ElegantOTA.h>
|
#include <ElegantOTA.h>
|
||||||
#include <TinyGPS++.h>
|
#include <TinyGPS++.h>
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
#include <WiFi.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#include "battery_utils.h"
|
#include "battery_utils.h"
|
||||||
@@ -34,13 +35,7 @@ ___________________________________________________________________*/
|
|||||||
#include "query_utils.h"
|
#include "query_utils.h"
|
||||||
#include "power_utils.h"
|
#include "power_utils.h"
|
||||||
#include "lora_utils.h"
|
#include "lora_utils.h"
|
||||||
#ifdef HAS_ETHERNET
|
#include "wifi_utils.h"
|
||||||
#include <Ethernet.h>
|
|
||||||
#include "ethernet_utils.h"
|
|
||||||
#else
|
|
||||||
#include <WiFi.h>
|
|
||||||
#include "wifi_utils.h"
|
|
||||||
#endif
|
|
||||||
#include "digi_utils.h"
|
#include "digi_utils.h"
|
||||||
#include "gps_utils.h"
|
#include "gps_utils.h"
|
||||||
#include "web_utils.h"
|
#include "web_utils.h"
|
||||||
@@ -53,15 +48,9 @@ ___________________________________________________________________*/
|
|||||||
#include "A7670_utils.h"
|
#include "A7670_utils.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
String versionDate = "2025.03.06";
|
String versionDate = "2025.02.28";
|
||||||
Configuration Config;
|
Configuration Config;
|
||||||
|
WiFiClient espClient;
|
||||||
#ifdef HAS_ETHERNET
|
|
||||||
EthernetClient espClient;
|
|
||||||
#else
|
|
||||||
WiFiClient espClient;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAS_GPS
|
#ifdef HAS_GPS
|
||||||
HardwareSerial gpsSerial(1);
|
HardwareSerial gpsSerial(1);
|
||||||
TinyGPSPlus gps;
|
TinyGPSPlus gps;
|
||||||
@@ -79,22 +68,17 @@ uint32_t lastBatteryCheck = 0;
|
|||||||
bool backUpDigiMode = false;
|
bool backUpDigiMode = false;
|
||||||
bool modemLoggedToAPRSIS = false;
|
bool modemLoggedToAPRSIS = false;
|
||||||
|
|
||||||
#ifdef HAS_EPAPER
|
|
||||||
uint32_t lastEpaperTime = 0;
|
|
||||||
extern String lastEpaperText;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
std::vector<ReceivedPacket> receivedPackets;
|
std::vector<ReceivedPacket> receivedPackets;
|
||||||
|
|
||||||
String firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine;
|
String firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine;
|
||||||
|
|
||||||
//#define STARTUP_DELAY 5 //min
|
//#define STARTUP_DELAY 5 //min
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
delay(5000);
|
|
||||||
POWER_Utils::setup();
|
POWER_Utils::setup();
|
||||||
Utils::setupDisplay();
|
Utils::setupDisplay();
|
||||||
//LoRa_Utils::setup();
|
LoRa_Utils::setup();
|
||||||
Utils::validateFreqs();
|
Utils::validateFreqs();
|
||||||
GPS_Utils::setup();
|
GPS_Utils::setup();
|
||||||
STATION_Utils::loadBlackList();
|
STATION_Utils::loadBlackList();
|
||||||
@@ -145,12 +129,7 @@ void setup() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
DIGI_Utils::checkEcoMode();
|
DIGI_Utils::checkEcoMode();
|
||||||
#ifdef HAS_ETHERNET
|
WIFI_Utils::setup();
|
||||||
ETHERNET_Utils::setup();
|
|
||||||
#else
|
|
||||||
WIFI_Utils::setup();
|
|
||||||
#endif
|
|
||||||
LoRa_Utils::setup();
|
|
||||||
NTP_Utils::setup();
|
NTP_Utils::setup();
|
||||||
SYSLOG_Utils::setup();
|
SYSLOG_Utils::setup();
|
||||||
WX_Utils::setup();
|
WX_Utils::setup();
|
||||||
@@ -164,16 +143,14 @@ void setup() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
#ifndef HAS_ETHERNET
|
WIFI_Utils::checkAutoAPTimeout();
|
||||||
WIFI_Utils::checkAutoAPTimeout();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*if (isUpdatingOTA) {
|
if (isUpdatingOTA) {
|
||||||
ElegantOTA.loop();
|
ElegantOTA.loop();
|
||||||
return; // Don't process IGate and Digi during OTA update
|
return; // Don't process IGate and Digi during OTA update
|
||||||
}*/
|
}
|
||||||
|
|
||||||
/*if (Config.lowVoltageCutOff > 0) {
|
if (Config.lowVoltageCutOff > 0) {
|
||||||
BATTERY_Utils::checkIfShouldSleep();
|
BATTERY_Utils::checkIfShouldSleep();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,12 +178,8 @@ void loop() {
|
|||||||
#ifdef HAS_A7670
|
#ifdef HAS_A7670
|
||||||
if (Config.aprs_is.active && !modemLoggedToAPRSIS) A7670_Utils::APRS_IS_connect();
|
if (Config.aprs_is.active && !modemLoggedToAPRSIS) A7670_Utils::APRS_IS_connect();
|
||||||
#else
|
#else
|
||||||
#ifdef HAS_ETHERNET
|
WIFI_Utils::checkWiFi();
|
||||||
if (Config.aprs_is.active && !espClient.connected()) APRS_IS_Utils::connect();
|
if (Config.aprs_is.active && (WiFi.status() == WL_CONNECTED) && !espClient.connected()) APRS_IS_Utils::connect();
|
||||||
#else
|
|
||||||
WIFI_Utils::checkWiFi();
|
|
||||||
if (Config.aprs_is.active && (WiFi.status() == WL_CONNECTED) && !espClient.connected()) APRS_IS_Utils::connect();
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
NTP_Utils::update();
|
NTP_Utils::update();
|
||||||
@@ -246,19 +219,7 @@ void loop() {
|
|||||||
|
|
||||||
STATION_Utils::processOutputPacketBuffer();
|
STATION_Utils::processOutputPacketBuffer();
|
||||||
|
|
||||||
#ifdef HAS_EPAPER // Only consider updating every 10 seconds (when data to show is different from before)
|
displayShow(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine, 0);
|
||||||
if(lastEpaperTime == 0 || millis() - lastEpaperTime > 10000) {
|
|
||||||
String posibleEpaperText = firstLine + secondLine + thirdLine + fourthLine + fifthLine + sixthLine + seventhLine;
|
|
||||||
if (lastEpaperText != posibleEpaperText) {
|
|
||||||
displayShow(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine, 0);
|
|
||||||
lastEpaperText = posibleEpaperText;
|
|
||||||
lastEpaperTime = millis();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
displayShow(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine, 0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
Utils::checkRebootTime();
|
Utils::checkRebootTime();
|
||||||
Utils::checkSleepByLowBatteryVoltage(1);*/
|
Utils::checkSleepByLowBatteryVoltage(1);
|
||||||
}
|
}
|
||||||
+37
-55
@@ -1,7 +1,7 @@
|
|||||||
|
#include <WiFi.h>
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#include "aprs_is_utils.h"
|
#include "aprs_is_utils.h"
|
||||||
#include "station_utils.h"
|
#include "station_utils.h"
|
||||||
#include "board_pinout.h"
|
|
||||||
#include "syslog_utils.h"
|
#include "syslog_utils.h"
|
||||||
#include "query_utils.h"
|
#include "query_utils.h"
|
||||||
#include "A7670_utils.h"
|
#include "A7670_utils.h"
|
||||||
@@ -10,15 +10,7 @@
|
|||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
extern Configuration Config;
|
extern Configuration Config;
|
||||||
|
extern WiFiClient espClient;
|
||||||
#ifdef HAS_ETHERNET
|
|
||||||
#include <Ethernet.h>
|
|
||||||
extern EthernetClient espClient;
|
|
||||||
#else
|
|
||||||
#include <WiFi.h>
|
|
||||||
extern WiFiClient espClient;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern uint32_t lastScreenOn;
|
extern uint32_t lastScreenOn;
|
||||||
extern String firstLine;
|
extern String firstLine;
|
||||||
extern String secondLine;
|
extern String secondLine;
|
||||||
@@ -66,7 +58,7 @@ namespace APRS_IS_Utils {
|
|||||||
aprsAuth += Config.callsign;
|
aprsAuth += Config.callsign;
|
||||||
aprsAuth += " pass ";
|
aprsAuth += " pass ";
|
||||||
aprsAuth += Config.aprs_is.passcode;
|
aprsAuth += Config.aprs_is.passcode;
|
||||||
aprsAuth += " vers CA2RXU_LoRa_iGate 2.1 filter ";
|
aprsAuth += " vers CA2RXU_LoRa_iGate 2.0 filter ";
|
||||||
aprsAuth += Config.aprs_is.filter;
|
aprsAuth += Config.aprs_is.filter;
|
||||||
upload(aprsAuth);
|
upload(aprsAuth);
|
||||||
}
|
}
|
||||||
@@ -74,14 +66,8 @@ namespace APRS_IS_Utils {
|
|||||||
|
|
||||||
void checkStatus() {
|
void checkStatus() {
|
||||||
String wifiState, aprsisState;
|
String wifiState, aprsisState;
|
||||||
if (true) {
|
if (WiFi.status() == WL_CONNECTED) {
|
||||||
/*#ifdef HAS_ETHERNET
|
wifiState = "OK";
|
||||||
if (Ethernet.linkStatus() == LinkON) {
|
|
||||||
wifiState = "ET";
|
|
||||||
#else
|
|
||||||
if (WiFi.status() == WL_CONNECTED) {
|
|
||||||
wifiState = "OK";
|
|
||||||
#endif*/
|
|
||||||
} else {
|
} else {
|
||||||
if (backUpDigiMode || Config.digi.ecoMode) {
|
if (backUpDigiMode || Config.digi.ecoMode) {
|
||||||
wifiState = "--";
|
wifiState = "--";
|
||||||
@@ -187,35 +173,37 @@ namespace APRS_IS_Utils {
|
|||||||
|
|
||||||
void processLoRaPacket(const String& packet) {
|
void processLoRaPacket(const String& packet) {
|
||||||
if (passcodeValid && (espClient.connected() || modemLoggedToAPRSIS)) {
|
if (passcodeValid && (espClient.connected() || modemLoggedToAPRSIS)) {
|
||||||
if (packet.indexOf("NOGATE") == -1 && packet.indexOf("RFONLY") == -1) {
|
if (packet != "") {
|
||||||
int firstColonIndex = packet.indexOf(":");
|
if ((packet.substring(0, 3) == "\x3c\xff\x01") && (packet.indexOf("NOGATE") == -1) && (packet.indexOf("RFONLY") == -1)) {
|
||||||
if (firstColonIndex > 5 && firstColonIndex < (packet.length() - 1) && packet[firstColonIndex + 1] != '}' && packet.indexOf("TCPIP") == -1) {
|
int firstColonIndex = packet.indexOf(":");
|
||||||
const String& Sender = packet.substring(3, packet.indexOf(">"));
|
if (firstColonIndex > 5 && firstColonIndex < (packet.length() - 1) && packet[firstColonIndex + 1] != '}' && packet.indexOf("TCPIP") == -1) {
|
||||||
if (Sender != Config.callsign && Utils::checkValidCallsign(Sender)) {
|
const String& Sender = packet.substring(3, packet.indexOf(">"));
|
||||||
STATION_Utils::updateLastHeard(Sender);
|
if (Sender != Config.callsign && Utils::checkValidCallsign(Sender) && !STATION_Utils::checkBlackList(Sender)) {
|
||||||
Utils::typeOfPacket(packet.substring(3), 0); // LoRa-APRS
|
STATION_Utils::updateLastHeard(Sender);
|
||||||
const String& AddresseeAndMessage = packet.substring(packet.indexOf("::") + 2);
|
Utils::typeOfPacket(packet.substring(3), 0); // LoRa-APRS
|
||||||
String Addressee = AddresseeAndMessage.substring(0, AddresseeAndMessage.indexOf(":"));
|
const String& AddresseeAndMessage = packet.substring(packet.indexOf("::") + 2);
|
||||||
Addressee.trim();
|
String Addressee = AddresseeAndMessage.substring(0, AddresseeAndMessage.indexOf(":"));
|
||||||
bool queryMessage = false;
|
Addressee.trim();
|
||||||
if (packet.indexOf("::") > 10 && Addressee == Config.callsign) { // its a message for me!
|
bool queryMessage = false;
|
||||||
queryMessage = processReceivedLoRaMessage(Sender, checkForStartingBytes(AddresseeAndMessage), false);
|
if (packet.indexOf("::") > 10 && Addressee == Config.callsign) { // its a message for me!
|
||||||
}
|
queryMessage = processReceivedLoRaMessage(Sender, checkForStartingBytes(AddresseeAndMessage), false);
|
||||||
if (!queryMessage) {
|
}
|
||||||
const String& aprsPacket = buildPacketToUpload(packet);
|
if (!queryMessage) {
|
||||||
if (!Config.display.alwaysOn && Config.display.timeout != 0) {
|
const String& aprsPacket = buildPacketToUpload(packet);
|
||||||
displayToggle(true);
|
if (!Config.display.alwaysOn && Config.display.timeout != 0) {
|
||||||
|
displayToggle(true);
|
||||||
|
}
|
||||||
|
lastScreenOn = millis();
|
||||||
|
#ifdef HAS_A7670
|
||||||
|
stationBeacon = true;
|
||||||
|
A7670_Utils::uploadToAPRSIS(aprsPacket);
|
||||||
|
stationBeacon = false;
|
||||||
|
#else
|
||||||
|
upload(aprsPacket);
|
||||||
|
#endif
|
||||||
|
Utils::println("---> Uploaded to APRS-IS");
|
||||||
|
displayShow(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine, 0);
|
||||||
}
|
}
|
||||||
lastScreenOn = millis();
|
|
||||||
#ifdef HAS_A7670
|
|
||||||
stationBeacon = true;
|
|
||||||
A7670_Utils::uploadToAPRSIS(aprsPacket);
|
|
||||||
stationBeacon = false;
|
|
||||||
#else
|
|
||||||
upload(aprsPacket);
|
|
||||||
#endif
|
|
||||||
Utils::println("---> Uploaded to APRS-IS");
|
|
||||||
displayShow(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine, 0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -334,7 +322,6 @@ namespace APRS_IS_Utils {
|
|||||||
seventhLine = "QUERY = ";
|
seventhLine = "QUERY = ";
|
||||||
seventhLine += receivedMessage;
|
seventhLine += receivedMessage;
|
||||||
}
|
}
|
||||||
displayShow(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine, 0);
|
|
||||||
} else {
|
} else {
|
||||||
Utils::print("Rx Message (APRS-IS): " + packet);
|
Utils::print("Rx Message (APRS-IS): " + packet);
|
||||||
if (STATION_Utils::wasHeard(Addressee) && packet.indexOf("EQNS.") == -1 && packet.indexOf("UNIT.") == -1 && packet.indexOf("PARM.") == -1) {
|
if (STATION_Utils::wasHeard(Addressee) && packet.indexOf("EQNS.") == -1 && packet.indexOf("UNIT.") == -1 && packet.indexOf("PARM.") == -1) {
|
||||||
@@ -342,9 +329,9 @@ namespace APRS_IS_Utils {
|
|||||||
displayToggle(true);
|
displayToggle(true);
|
||||||
lastScreenOn = millis();
|
lastScreenOn = millis();
|
||||||
Utils::typeOfPacket(packet, 1); // APRS-LoRa
|
Utils::typeOfPacket(packet, 1); // APRS-LoRa
|
||||||
displayShow(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine, 0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
displayShow(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine, 0);
|
||||||
} else if (Config.aprs_is.objectsToRF && packet.indexOf(":;") > 0) {
|
} else if (Config.aprs_is.objectsToRF && packet.indexOf(":;") > 0) {
|
||||||
Utils::print("Rx Object (APRS-IS) : " + packet);
|
Utils::print("Rx Object (APRS-IS) : " + packet);
|
||||||
if (STATION_Utils::checkObjectTime(packet)) {
|
if (STATION_Utils::checkObjectTime(packet)) {
|
||||||
@@ -376,12 +363,7 @@ namespace APRS_IS_Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void firstConnection() {
|
void firstConnection() {
|
||||||
|
if (Config.aprs_is.active && (WiFi.status() == WL_CONNECTED) && !espClient.connected()) {
|
||||||
//#ifdef HAS_ETHERNET
|
|
||||||
if (Config.aprs_is.active && !espClient.connected()) {
|
|
||||||
//#else
|
|
||||||
// if (Config.aprs_is.active && (WiFi.status() == WL_CONNECTED) && !espClient.connected()) {
|
|
||||||
//#endif
|
|
||||||
connect();
|
connect();
|
||||||
while (!passcodeValid) {
|
while (!passcodeValid) {
|
||||||
listenAPRSIS();
|
listenAPRSIS();
|
||||||
|
|||||||
+37
-35
@@ -117,44 +117,46 @@ namespace DIGI_Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void processLoRaPacket(const String& packet) {
|
void processLoRaPacket(const String& packet) {
|
||||||
if (packet.indexOf("NOGATE") == -1) {
|
if (packet != "") {
|
||||||
bool thirdPartyPacket = false;
|
if ((packet.substring(0, 3) == "\x3c\xff\x01") && (packet.indexOf("NOGATE") == -1)) {
|
||||||
String temp, Sender;
|
bool thirdPartyPacket = false;
|
||||||
int firstColonIndex = packet.indexOf(":");
|
String temp, Sender;
|
||||||
if (firstColonIndex > 5 && firstColonIndex < (packet.length() - 1) && packet[firstColonIndex + 1] == '}' && packet.indexOf("TCPIP") > 0) { // 3rd Party
|
int firstColonIndex = packet.indexOf(":");
|
||||||
thirdPartyPacket = true;
|
if (firstColonIndex > 5 && firstColonIndex < (packet.length() - 1) && packet[firstColonIndex + 1] == '}' && packet.indexOf("TCPIP") > 0) { // 3rd Party
|
||||||
temp = packet.substring(packet.indexOf(":}") + 2);
|
thirdPartyPacket = true;
|
||||||
Sender = temp.substring(0, temp.indexOf(">"));
|
temp = packet.substring(packet.indexOf(":}") + 2);
|
||||||
} else {
|
Sender = temp.substring(0, temp.indexOf(">"));
|
||||||
temp = packet.substring(3);
|
} else {
|
||||||
Sender = packet.substring(3, packet.indexOf(">"));
|
temp = packet.substring(3);
|
||||||
}
|
Sender = packet.substring(3, packet.indexOf(">"));
|
||||||
if (Sender != Config.callsign) { // Avoid listening to own packets
|
|
||||||
if (!thirdPartyPacket && !Utils::checkValidCallsign(Sender)) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (STATION_Utils::check25SegBuffer(Sender, temp.substring(temp.indexOf(":") + 2)) || Config.lowPowerMode) {
|
if (Sender != Config.callsign && !STATION_Utils::checkBlackList(Sender)) { // Avoid listening to own packets
|
||||||
STATION_Utils::updateLastHeard(Sender);
|
if (!thirdPartyPacket && !Utils::checkValidCallsign(Sender)) {
|
||||||
Utils::typeOfPacket(temp, 2); // Digi
|
return;
|
||||||
bool queryMessage = false;
|
|
||||||
if (temp.indexOf("::") > 10) { // it's a message
|
|
||||||
String AddresseeAndMessage = temp.substring(temp.indexOf("::") + 2);
|
|
||||||
String Addressee = AddresseeAndMessage.substring(0, AddresseeAndMessage.indexOf(":"));
|
|
||||||
Addressee.trim();
|
|
||||||
if (Addressee == Config.callsign) { // it's a message for me!
|
|
||||||
queryMessage = APRS_IS_Utils::processReceivedLoRaMessage(Sender, AddresseeAndMessage, thirdPartyPacket);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (!queryMessage) {
|
if (STATION_Utils::check25SegBuffer(Sender, temp.substring(temp.indexOf(":") + 2)) || Config.lowPowerMode) {
|
||||||
String loraPacket = generateDigipeatedPacket(packet.substring(3), thirdPartyPacket);
|
STATION_Utils::updateLastHeard(Sender);
|
||||||
if (loraPacket != "") {
|
Utils::typeOfPacket(temp, 2); // Digi
|
||||||
if (Config.lowPowerMode) {
|
bool queryMessage = false;
|
||||||
LoRa_Utils::sendNewPacket(loraPacket);
|
if (temp.indexOf("::") > 10) { // it's a message
|
||||||
} else {
|
String AddresseeAndMessage = temp.substring(temp.indexOf("::") + 2);
|
||||||
STATION_Utils::addToOutputPacketBuffer(loraPacket);
|
String Addressee = AddresseeAndMessage.substring(0, AddresseeAndMessage.indexOf(":"));
|
||||||
|
Addressee.trim();
|
||||||
|
if (Addressee == Config.callsign) { // it's a message for me!
|
||||||
|
queryMessage = APRS_IS_Utils::processReceivedLoRaMessage(Sender, AddresseeAndMessage, thirdPartyPacket);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!queryMessage) {
|
||||||
|
String loraPacket = generateDigipeatedPacket(packet.substring(3), thirdPartyPacket);
|
||||||
|
if (loraPacket != "") {
|
||||||
|
if (Config.lowPowerMode) {
|
||||||
|
LoRa_Utils::sendNewPacket(loraPacket);
|
||||||
|
} else {
|
||||||
|
STATION_Utils::addToOutputPacketBuffer(loraPacket);
|
||||||
|
}
|
||||||
|
displayToggle(true);
|
||||||
|
lastScreenOn = millis();
|
||||||
}
|
}
|
||||||
displayToggle(true);
|
|
||||||
lastScreenOn = millis();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+29
-98
@@ -24,22 +24,14 @@
|
|||||||
uint16_t redColor = 0xc8a2;
|
uint16_t redColor = 0xc8a2;
|
||||||
#else
|
#else
|
||||||
#ifdef HAS_EPAPER
|
#ifdef HAS_EPAPER
|
||||||
#include <heltec-eink-modules.h>
|
//
|
||||||
#include "Fonts/FreeSansBold9pt7b.h"
|
|
||||||
EInkDisplay_WirelessPaperV1_1 display;
|
|
||||||
String lastEpaperText;
|
|
||||||
#else
|
#else
|
||||||
#include <Adafruit_GFX.h>
|
#include <Adafruit_GFX.h>
|
||||||
#if defined(TTGO_T_Beam_S3_SUPREME_V3)
|
#include <Adafruit_SSD1306.h>
|
||||||
#include <Adafruit_SH110X.h>
|
#ifdef HELTEC_WSL_V3_DISPLAY
|
||||||
Adafruit_SH1106G display(128, 64, &Wire, OLED_RST);
|
Adafruit_SSD1306 display(128, 64, &Wire1, OLED_RST);
|
||||||
#else
|
#else
|
||||||
#include <Adafruit_SSD1306.h>
|
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RST);
|
||||||
#ifdef HELTEC_WSL_V3_DISPLAY
|
|
||||||
Adafruit_SSD1306 display(128, 64, &Wire1, OLED_RST);
|
|
||||||
#else
|
|
||||||
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RST);
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@@ -71,9 +63,7 @@ void displaySetup() {
|
|||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
#ifdef HAS_EPAPER
|
#ifdef HAS_EPAPER
|
||||||
display.landscape();
|
//
|
||||||
display.printCenter("LoRa APRS iGate Initialising...");
|
|
||||||
display.update();
|
|
||||||
#else
|
#else
|
||||||
#ifdef OLED_DISPLAY_HAS_RST_PIN
|
#ifdef OLED_DISPLAY_HAS_RST_PIN
|
||||||
pinMode(OLED_RST, OUTPUT);
|
pinMode(OLED_RST, OUTPUT);
|
||||||
@@ -82,30 +72,17 @@ void displaySetup() {
|
|||||||
digitalWrite(OLED_RST, HIGH);
|
digitalWrite(OLED_RST, HIGH);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(TTGO_T_Beam_S3_SUPREME_V3)
|
if(display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
|
||||||
if (!display.begin(0x3c, false)) {
|
displayFound = true;
|
||||||
displayFound = true;
|
if (Config.display.turn180) display.setRotation(2);
|
||||||
if (Config.display.turn180) display.setRotation(2);
|
display.clearDisplay();
|
||||||
display.clearDisplay();
|
display.setTextColor(WHITE);
|
||||||
display.setTextColor(SH110X_WHITE);
|
display.setTextSize(1);
|
||||||
display.setTextSize(1);
|
display.setCursor(0, 0);
|
||||||
display.setCursor(0, 0);
|
display.ssd1306_command(SSD1306_SETCONTRAST);
|
||||||
display.setContrast(1);
|
display.ssd1306_command(1);
|
||||||
display.display();
|
display.display();
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
if(display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
|
|
||||||
displayFound = true;
|
|
||||||
if (Config.display.turn180) display.setRotation(2);
|
|
||||||
display.clearDisplay();
|
|
||||||
display.setTextColor(WHITE);
|
|
||||||
display.setTextSize(1);
|
|
||||||
display.setCursor(0, 0);
|
|
||||||
display.ssd1306_command(SSD1306_SETCONTRAST);
|
|
||||||
display.ssd1306_command(1);
|
|
||||||
display.display();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
delay(1000);
|
delay(1000);
|
||||||
@@ -119,14 +96,9 @@ void displayToggle(bool toggle) {
|
|||||||
digitalWrite(TFT_BL, HIGH);
|
digitalWrite(TFT_BL, HIGH);
|
||||||
#else
|
#else
|
||||||
#ifdef HAS_EPAPER
|
#ifdef HAS_EPAPER
|
||||||
display.printCenter("EPAPER Display Disabled by toggle...");
|
// ... to be continued
|
||||||
display.update();
|
|
||||||
#else
|
#else
|
||||||
#if defined(TTGO_T_Beam_S3_SUPREME_V3)
|
if (displayFound) display.ssd1306_command(SSD1306_DISPLAYON);
|
||||||
if (displayFound) display.oled_command(SH110X_DISPLAYON);
|
|
||||||
#else
|
|
||||||
if (displayFound) display.ssd1306_command(SSD1306_DISPLAYON);
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
@@ -134,15 +106,9 @@ void displayToggle(bool toggle) {
|
|||||||
digitalWrite(TFT_BL, LOW);
|
digitalWrite(TFT_BL, LOW);
|
||||||
#else
|
#else
|
||||||
#ifdef HAS_EPAPER
|
#ifdef HAS_EPAPER
|
||||||
display.printCenter("Enabled EPAPER Display...");
|
// ... to be continued
|
||||||
display.update();
|
|
||||||
#else
|
#else
|
||||||
#if defined(TTGO_T_Beam_S3_SUPREME_V3)
|
if (displayFound) display.ssd1306_command(SSD1306_DISPLAYOFF);
|
||||||
if (displayFound) display.oled_command(SH110X_DISPLAYOFF);
|
|
||||||
#else
|
|
||||||
if (displayFound) display.ssd1306_command(SSD1306_DISPLAYOFF);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -175,24 +141,11 @@ void displayShow(const String& header, const String& line1, const String& line2,
|
|||||||
sprite.pushSprite(0,0);
|
sprite.pushSprite(0,0);
|
||||||
#else
|
#else
|
||||||
#ifdef HAS_EPAPER
|
#ifdef HAS_EPAPER
|
||||||
display.clearMemory();
|
// ... to be continued
|
||||||
display.setCursor(5,10);
|
|
||||||
display.setFont(&FreeSansBold9pt7b);
|
|
||||||
display.println(header);
|
|
||||||
display.setFont(NULL);
|
|
||||||
for (int i = 0; i < 3; i++) {
|
|
||||||
display.setCursor(0, 25 + (14 * i));
|
|
||||||
display.println(*lines[i]);
|
|
||||||
}
|
|
||||||
display.update();
|
|
||||||
#else
|
#else
|
||||||
if (displayFound) {
|
if (displayFound) {
|
||||||
display.clearDisplay();
|
display.clearDisplay();
|
||||||
#if defined(TTGO_T_Beam_S3_SUPREME_V3)
|
display.setTextColor(WHITE);
|
||||||
display.setTextColor(SH110X_WHITE);
|
|
||||||
#else
|
|
||||||
display.setTextColor(WHITE);
|
|
||||||
#endif
|
|
||||||
display.setTextSize(1);
|
display.setTextSize(1);
|
||||||
display.setCursor(0, 0);
|
display.setCursor(0, 0);
|
||||||
display.println(header);
|
display.println(header);
|
||||||
@@ -200,12 +153,8 @@ void displayShow(const String& header, const String& line1, const String& line2,
|
|||||||
display.setCursor(0, 8 + (8 * i));
|
display.setCursor(0, 8 + (8 * i));
|
||||||
display.println(*lines[i]);
|
display.println(*lines[i]);
|
||||||
}
|
}
|
||||||
#if defined(TTGO_T_Beam_S3_SUPREME_V3)
|
display.ssd1306_command(SSD1306_SETCONTRAST);
|
||||||
display.setContrast(1);
|
display.ssd1306_command(1);
|
||||||
#else
|
|
||||||
display.ssd1306_command(SSD1306_SETCONTRAST);
|
|
||||||
display.ssd1306_command(1);
|
|
||||||
#endif
|
|
||||||
display.display();
|
display.display();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -240,25 +189,11 @@ void displayShow(const String& header, const String& line1, const String& line2,
|
|||||||
sprite.pushSprite(0,0);
|
sprite.pushSprite(0,0);
|
||||||
#else
|
#else
|
||||||
#ifdef HAS_EPAPER
|
#ifdef HAS_EPAPER
|
||||||
lastEpaperText = header + line1 + line2 + line3 + line4 + line5 + line6;
|
// ... to be continued
|
||||||
display.clearMemory();
|
|
||||||
display.setCursor(5,10);
|
|
||||||
display.setFont(&FreeSansBold9pt7b);
|
|
||||||
display.println(header);
|
|
||||||
display.setFont(NULL);
|
|
||||||
for (int i = 0; i < 6; i++) {
|
|
||||||
display.setCursor(0, 25 + (14 * i));
|
|
||||||
display.println(*lines[i]);
|
|
||||||
}
|
|
||||||
display.update();
|
|
||||||
#else
|
#else
|
||||||
if (displayFound) {
|
if (displayFound) {
|
||||||
display.clearDisplay();
|
display.clearDisplay();
|
||||||
#if defined(TTGO_T_Beam_S3_SUPREME_V3)
|
display.setTextColor(WHITE);
|
||||||
display.setTextColor(SH110X_WHITE);
|
|
||||||
#else
|
|
||||||
display.setTextColor(WHITE);
|
|
||||||
#endif
|
|
||||||
display.setTextSize(2);
|
display.setTextSize(2);
|
||||||
display.setCursor(0, 0);
|
display.setCursor(0, 0);
|
||||||
display.println(header);
|
display.println(header);
|
||||||
@@ -267,12 +202,8 @@ void displayShow(const String& header, const String& line1, const String& line2,
|
|||||||
display.setCursor(0, 16 + (8 * i));
|
display.setCursor(0, 16 + (8 * i));
|
||||||
display.println(*lines[i]);
|
display.println(*lines[i]);
|
||||||
}
|
}
|
||||||
#if defined(TTGO_T_Beam_S3_SUPREME_V3)
|
display.ssd1306_command(SSD1306_SETCONTRAST);
|
||||||
display.setContrast(1);
|
display.ssd1306_command(1);
|
||||||
#else
|
|
||||||
display.ssd1306_command(SSD1306_SETCONTRAST);
|
|
||||||
display.ssd1306_command(1);
|
|
||||||
#endif
|
|
||||||
display.display();
|
display.display();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,62 +0,0 @@
|
|||||||
/*#include <WiFi.h>
|
|
||||||
#include "configuration.h"
|
|
||||||
#include "station_utils.h"
|
|
||||||
#include "aprs_is_utils.h"
|
|
||||||
#include "query_utils.h"
|
|
||||||
#include "digi_utils.h"
|
|
||||||
#include "wifi_utils.h"
|
|
||||||
#include "lora_utils.h"
|
|
||||||
#include "gps_utils.h"
|
|
||||||
#include "display.h"
|
|
||||||
#include "utils.h"*/
|
|
||||||
#include <Ethernet.h>
|
|
||||||
#include <SPI.h>
|
|
||||||
#include "ethernet_utils.h"
|
|
||||||
#include "board_pinout.h"
|
|
||||||
|
|
||||||
/*extern Configuration Config;
|
|
||||||
extern uint32_t lastScreenOn;
|
|
||||||
extern String iGateBeaconPacket;
|
|
||||||
extern String firstLine;
|
|
||||||
extern String secondLine;
|
|
||||||
extern String thirdLine;
|
|
||||||
extern String fourthLine;
|
|
||||||
extern String fifthLine;
|
|
||||||
extern String sixthLine;
|
|
||||||
extern String seventhLine;
|
|
||||||
extern bool backUpDigiMode;*/
|
|
||||||
|
|
||||||
|
|
||||||
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
|
|
||||||
|
|
||||||
namespace ETHERNET_Utils {
|
|
||||||
|
|
||||||
void setup() {
|
|
||||||
SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));
|
|
||||||
pinMode(Ethernet_CS, OUTPUT);
|
|
||||||
pinMode(Ethernet_MOSI, OUTPUT);
|
|
||||||
pinMode(Ethernet_MISO, INPUT);
|
|
||||||
pinMode(Ethernet_SCK, OUTPUT);
|
|
||||||
SPI.endTransaction();
|
|
||||||
Ethernet.init(Ethernet_CS);
|
|
||||||
Ethernet.begin(mac);
|
|
||||||
delay(1000);
|
|
||||||
Serial.println(Ethernet.localIP());
|
|
||||||
|
|
||||||
delay(1000);
|
|
||||||
Serial.println(Ethernet.linkStatus());
|
|
||||||
delay(1000);
|
|
||||||
Serial.println(Ethernet.linkStatus());
|
|
||||||
delay(1000);
|
|
||||||
Serial.println(Ethernet.linkStatus());
|
|
||||||
delay(1000);
|
|
||||||
Serial.println(Ethernet.linkStatus());
|
|
||||||
delay(1000);
|
|
||||||
if (Ethernet.linkStatus() == LinkON) {
|
|
||||||
Serial.println("Ethernet connected...");
|
|
||||||
} else {
|
|
||||||
Serial.println("Ethernet not connected...");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
+18
-25
@@ -2,7 +2,6 @@
|
|||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#include "aprs_is_utils.h"
|
#include "aprs_is_utils.h"
|
||||||
#include "station_utils.h"
|
|
||||||
#include "board_pinout.h"
|
#include "board_pinout.h"
|
||||||
#include "syslog_utils.h"
|
#include "syslog_utils.h"
|
||||||
#include "ntp_utils.h"
|
#include "ntp_utils.h"
|
||||||
@@ -183,33 +182,27 @@ namespace LoRa_Utils {
|
|||||||
int state = radio.readData(packet);
|
int state = radio.readData(packet);
|
||||||
if (state == RADIOLIB_ERR_NONE) {
|
if (state == RADIOLIB_ERR_NONE) {
|
||||||
if (packet != "") {
|
if (packet != "") {
|
||||||
|
rssi = radio.getRSSI();
|
||||||
|
snr = radio.getSNR();
|
||||||
|
freqError = radio.getFrequencyError();
|
||||||
|
Utils::println("<--- LoRa Packet Rx : " + packet.substring(3));
|
||||||
|
Utils::println("(RSSI:" + String(rssi) + " / SNR:" + String(snr) + " / FreqErr:" + String(freqError) + ")");
|
||||||
|
|
||||||
String sender = packet.substring(3, packet.indexOf(">"));
|
if (!Config.lowPowerMode && !Config.digi.ecoMode) {
|
||||||
if (packet.substring(0,3) == "\x3c\xff\x01" && !STATION_Utils::checkBlackList(sender)){ // avoid processing BlackListed stations
|
if (receivedPackets.size() >= 10) {
|
||||||
rssi = radio.getRSSI();
|
receivedPackets.erase(receivedPackets.begin());
|
||||||
snr = radio.getSNR();
|
|
||||||
freqError = radio.getFrequencyError();
|
|
||||||
Utils::println("<--- LoRa Packet Rx : " + packet.substring(3));
|
|
||||||
Utils::println("(RSSI:" + String(rssi) + " / SNR:" + String(snr) + " / FreqErr:" + String(freqError) + ")");
|
|
||||||
|
|
||||||
if (!Config.lowPowerMode && !Config.digi.ecoMode) {
|
|
||||||
if (receivedPackets.size() >= 10) {
|
|
||||||
receivedPackets.erase(receivedPackets.begin());
|
|
||||||
}
|
|
||||||
ReceivedPacket receivedPacket;
|
|
||||||
receivedPacket.rxTime = NTP_Utils::getFormatedTime();
|
|
||||||
receivedPacket.packet = packet.substring(3);
|
|
||||||
receivedPacket.RSSI = rssi;
|
|
||||||
receivedPacket.SNR = snr;
|
|
||||||
receivedPackets.push_back(receivedPacket);
|
|
||||||
}
|
}
|
||||||
|
ReceivedPacket receivedPacket;
|
||||||
|
receivedPacket.rxTime = NTP_Utils::getFormatedTime();
|
||||||
|
receivedPacket.packet = packet.substring(3);
|
||||||
|
receivedPacket.RSSI = rssi;
|
||||||
|
receivedPacket.SNR = snr;
|
||||||
|
receivedPackets.push_back(receivedPacket);
|
||||||
|
}
|
||||||
|
|
||||||
if (Config.syslog.active && WiFi.status() == WL_CONNECTED) {
|
if (Config.syslog.active && WiFi.status() == WL_CONNECTED) {
|
||||||
SYSLOG_Utils::log(1, packet, rssi, snr, freqError); // RX
|
SYSLOG_Utils::log(1, packet, rssi, snr, freqError); // RX
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
packet = "";
|
|
||||||
}
|
|
||||||
lastRxTime = millis();
|
lastRxTime = millis();
|
||||||
return packet;
|
return packet;
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-55
@@ -4,17 +4,9 @@
|
|||||||
#include "power_utils.h"
|
#include "power_utils.h"
|
||||||
|
|
||||||
#if defined(HAS_AXP192) || defined(HAS_AXP2101)
|
#if defined(HAS_AXP192) || defined(HAS_AXP2101)
|
||||||
#ifdef TTGO_T_Beam_S3_SUPREME_V3
|
#define I2C_SDA 21
|
||||||
#define I2C0_SDA 17
|
#define I2C_SCL 22
|
||||||
#define I2C0_SCL 18
|
#define IRQ_PIN 35
|
||||||
#define I2C1_SDA 42
|
|
||||||
#define I2C1_SCL 41
|
|
||||||
#define IRQ_PIN 40
|
|
||||||
#else
|
|
||||||
#define I2C_SDA 21
|
|
||||||
#define I2C_SCL 22
|
|
||||||
#define IRQ_PIN 35
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAS_AXP192
|
#ifdef HAS_AXP192
|
||||||
@@ -62,13 +54,8 @@ namespace POWER_Utils {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAS_AXP2101
|
#ifdef HAS_AXP2101
|
||||||
#ifdef TTGO_T_Beam_S3_SUPREME_V3
|
|
||||||
PMU.setALDO4Voltage(3300);
|
|
||||||
PMU.enableALDO4();
|
|
||||||
#else
|
|
||||||
PMU.setALDO3Voltage(3300);
|
PMU.setALDO3Voltage(3300);
|
||||||
PMU.enableALDO3();
|
PMU.enableALDO3();
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef HELTEC_WIRELESS_TRACKER
|
#ifdef HELTEC_WIRELESS_TRACKER
|
||||||
digitalWrite(VEXT_CTRL, HIGH);
|
digitalWrite(VEXT_CTRL, HIGH);
|
||||||
@@ -82,11 +69,7 @@ namespace POWER_Utils {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAS_AXP2101
|
#ifdef HAS_AXP2101
|
||||||
#ifdef TTGO_T_Beam_S3_SUPREME_V3
|
PMU.disableALDO3();
|
||||||
PMU.disableALDO4();
|
|
||||||
#else
|
|
||||||
PMU.disableALDO3();
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef HELTEC_WIRELESS_TRACKER
|
#ifdef HELTEC_WIRELESS_TRACKER
|
||||||
digitalWrite(VEXT_CTRL, LOW);
|
digitalWrite(VEXT_CTRL, LOW);
|
||||||
@@ -100,13 +83,8 @@ namespace POWER_Utils {
|
|||||||
PMU.enableLDO2();
|
PMU.enableLDO2();
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_AXP2101
|
#ifdef HAS_AXP2101
|
||||||
#ifdef TTGO_T_Beam_S3_SUPREME_V3
|
PMU.setALDO2Voltage(3300);
|
||||||
PMU.setALDO3Voltage(3300);
|
PMU.enableALDO2();
|
||||||
PMU.enableALDO3();
|
|
||||||
#else
|
|
||||||
PMU.setALDO2Voltage(3300);
|
|
||||||
PMU.enableALDO2();
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,11 +93,7 @@ namespace POWER_Utils {
|
|||||||
PMU.disableLDO2();
|
PMU.disableLDO2();
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_AXP2101
|
#ifdef HAS_AXP2101
|
||||||
#ifdef TTGO_T_Beam_S3_SUPREME_V3
|
PMU.disableALDO2();
|
||||||
PMU.disableALDO3();
|
|
||||||
#else
|
|
||||||
PMU.disableALDO2();
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,29 +111,20 @@ namespace POWER_Utils {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
#elif defined(HAS_AXP2101)
|
#elif defined(HAS_AXP2101)
|
||||||
#ifdef TTGO_T_Beam_S3_SUPREME_V3
|
bool result = PMU.begin(Wire, AXP2101_SLAVE_ADDRESS, I2C_SDA, I2C_SCL);
|
||||||
bool result = PMU.begin(Wire1, AXP2101_SLAVE_ADDRESS, I2C1_SDA, I2C1_SCL);
|
|
||||||
#else
|
|
||||||
bool result = PMU.begin(Wire, AXP2101_SLAVE_ADDRESS, I2C_SDA, I2C_SCL);
|
|
||||||
#endif
|
|
||||||
if (result) {
|
if (result) {
|
||||||
PMU.disableDC2();
|
PMU.disableDC2();
|
||||||
PMU.disableDC3();
|
PMU.disableDC3();
|
||||||
PMU.disableDC4();
|
PMU.disableDC4();
|
||||||
PMU.disableDC5();
|
PMU.disableDC5();
|
||||||
#ifndef TTGO_T_Beam_S3_SUPREME_V3
|
PMU.disableALDO1();
|
||||||
PMU.disableALDO1();
|
PMU.disableALDO4();
|
||||||
PMU.disableALDO4();
|
|
||||||
#endif
|
|
||||||
PMU.disableBLDO1();
|
PMU.disableBLDO1();
|
||||||
PMU.disableBLDO2();
|
PMU.disableBLDO2();
|
||||||
PMU.disableDLDO1();
|
PMU.disableDLDO1();
|
||||||
PMU.disableDLDO2();
|
PMU.disableDLDO2();
|
||||||
PMU.setDC1Voltage(3300);
|
PMU.setDC1Voltage(3300);
|
||||||
PMU.enableDC1();
|
PMU.enableDC1();
|
||||||
#ifdef TTGO_T_Beam_S3_SUPREME_V3
|
|
||||||
PMU.setALDO1Voltage(3300);
|
|
||||||
#endif
|
|
||||||
PMU.setButtonBatteryChargeVoltage(3300);
|
PMU.setButtonBatteryChargeVoltage(3300);
|
||||||
PMU.enableButtonBatteryCharge();
|
PMU.enableButtonBatteryCharge();
|
||||||
PMU.disableIRQ(XPOWERS_AXP2101_ALL_IRQ);
|
PMU.disableIRQ(XPOWERS_AXP2101_ALL_IRQ);
|
||||||
@@ -187,16 +152,8 @@ namespace POWER_Utils {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAS_AXP2101
|
#ifdef HAS_AXP2101
|
||||||
bool beginStatus = false;
|
Wire.begin(SDA, SCL);
|
||||||
#ifdef TTGO_T_Beam_S3_SUPREME_V3
|
if (begin(Wire)) {
|
||||||
Wire1.begin(I2C1_SDA, I2C1_SCL);
|
|
||||||
Wire.begin(I2C0_SDA, I2C0_SCL);
|
|
||||||
if (begin(Wire1)) beginStatus = true;
|
|
||||||
#else
|
|
||||||
Wire.begin(SDA, SCL);
|
|
||||||
if (begin(Wire)) beginStatus = true;
|
|
||||||
#endif
|
|
||||||
if (beginStatus) {
|
|
||||||
Serial.println("AXP2101 init done!");
|
Serial.println("AXP2101 init done!");
|
||||||
} else {
|
} else {
|
||||||
Serial.println("AXP2101 init failed!");
|
Serial.println("AXP2101 init failed!");
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
#ifndef BOARD_PINOUT_H_
|
|
||||||
#define BOARD_PINOUT_H_
|
|
||||||
|
|
||||||
// LoRa Radio
|
|
||||||
#define HAS_SX1278
|
|
||||||
#define RADIO_SCLK_PIN 4
|
|
||||||
#define RADIO_MISO_PIN 5
|
|
||||||
#define RADIO_MOSI_PIN 6
|
|
||||||
#define RADIO_CS_PIN 20
|
|
||||||
#define RADIO_RST_PIN 3
|
|
||||||
#define RADIO_BUSY_PIN 2
|
|
||||||
|
|
||||||
// Ethernet W5500
|
|
||||||
#define HAS_ETHERNET
|
|
||||||
#define Ethernet_SCK 4 // W5550 SCK
|
|
||||||
#define Ethernet_MISO 5 // W5550 MI
|
|
||||||
#define Ethernet_MOSI 6 // W5550 MO
|
|
||||||
#define Ethernet_CS 7 // W5550 CS (CS = NSS = SS)
|
|
||||||
//#define Ethernet_VCC 3.3v
|
|
||||||
//#define Ethernet_GND GND
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
[env:ESP32C3_DIY_Ethernet_LoRa]
|
|
||||||
board = esp32-c3-devkitm-1
|
|
||||||
board_build.mcu = esp32c3
|
|
||||||
build_flags =
|
|
||||||
${common.build_flags}
|
|
||||||
${common.usb_flags}
|
|
||||||
-D ESP32C3_DIY_Ethernet_LoRa
|
|
||||||
lib_deps =
|
|
||||||
${common.lib_deps}
|
|
||||||
arduino-libraries/Ethernet @ 2.0.2
|
|
||||||
@@ -4,7 +4,5 @@ board_build.mcu = esp32s3
|
|||||||
build_flags =
|
build_flags =
|
||||||
${common.build_flags}
|
${common.build_flags}
|
||||||
-D HELTEC_WP
|
-D HELTEC_WP
|
||||||
-D WIRELESS_PAPER
|
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${common.lib_deps}
|
${common.lib_deps}
|
||||||
todd-herbert/heltec-eink-modules@^4.4.0
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
#ifndef BOARD_PINOUT_H_
|
|
||||||
#define BOARD_PINOUT_H_
|
|
||||||
|
|
||||||
// LoRa Radio
|
|
||||||
#define HAS_SX1262
|
|
||||||
#define RADIO_SCLK_PIN 12
|
|
||||||
#define RADIO_MISO_PIN 13
|
|
||||||
#define RADIO_MOSI_PIN 11
|
|
||||||
#define RADIO_CS_PIN 10
|
|
||||||
#define RADIO_DIO0_PIN -1
|
|
||||||
#define RADIO_RST_PIN 5
|
|
||||||
#define RADIO_DIO1_PIN 1
|
|
||||||
#define RADIO_BUSY_PIN 4
|
|
||||||
|
|
||||||
// Display
|
|
||||||
#define HAS_DISPLAY
|
|
||||||
|
|
||||||
#undef OLED_SDA
|
|
||||||
#undef OLED_SCL
|
|
||||||
#undef OLED_RST
|
|
||||||
|
|
||||||
#define OLED_SDA 17
|
|
||||||
#define OLED_SCL 18
|
|
||||||
#define OLED_RST 16
|
|
||||||
#define OLED_DISPLAY_HAS_RST_PIN
|
|
||||||
|
|
||||||
// Aditional Config
|
|
||||||
#define HAS_AXP2101
|
|
||||||
|
|
||||||
// GPS
|
|
||||||
#define HAS_GPS
|
|
||||||
#define GPS_RX 8
|
|
||||||
#define GPS_TX 9
|
|
||||||
|
|
||||||
#define BOARD_HAS_PSRAM
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
[env:ttgo_t_beam_s3_SUPREME_v3]
|
|
||||||
board = esp32-s3-devkitc-1
|
|
||||||
board_build.mcu = esp32s3
|
|
||||||
build_flags =
|
|
||||||
${common.build_flags}
|
|
||||||
${common.usb_flags}
|
|
||||||
-D TTGO_T_Beam_S3_SUPREME_V3
|
|
||||||
lib_deps =
|
|
||||||
${common.lib_deps}
|
|
||||||
${common.display_libs}
|
|
||||||
lewisxhe/XPowersLib @ 0.2.4
|
|
||||||
adafruit/Adafruit SH110X @ 2.1.10
|
|
||||||
Reference in New Issue
Block a user