diff --git a/lib/APRSPacketLib/APRSPacketLib.cpp b/lib/APRSPacketLib/APRSPacketLib.cpp new file mode 100644 index 0000000..592db76 --- /dev/null +++ b/lib/APRSPacketLib/APRSPacketLib.cpp @@ -0,0 +1,23 @@ +#include "APRSPacketLib.h" + +namespace APRSPacketLib { + + String generateStatusPacket(String callsign, String tocall, String path, String status) { + String packet = callsign + ">" + tocall; + if (path != "") { + packet += "," + path; + } + packet += ":>" + status; + return packet; + } + + String generateGPSBeaconPacket(String callsign, String tocall, String path, String overlay, String gps) { + String packet = callsign + ">" + tocall; + if (path != "") { + packet += "," + path; + } + packet += ":!" + overlay + gps; + return packet; + } + +} \ No newline at end of file diff --git a/lib/APRSPacketLib/APRSPacketLib.h b/lib/APRSPacketLib/APRSPacketLib.h new file mode 100644 index 0000000..92b2f54 --- /dev/null +++ b/lib/APRSPacketLib/APRSPacketLib.h @@ -0,0 +1,13 @@ +#ifndef APRSPACKETLIB_H +#define APRSPACKETLIB_H + +#include + +namespace APRSPacketLib { + +String generateStatusPacket(String callsign, String tocall, String path, String status); +String generateGPSBeaconPacket(String callsign, String tocall, String path, String overlay, String gpsData); + +} + +#endif \ No newline at end of file diff --git a/src/LoRa_APRS_Tracker.cpp b/src/LoRa_APRS_Tracker.cpp index 9ed31cb..b577c7f 100644 --- a/src/LoRa_APRS_Tracker.cpp +++ b/src/LoRa_APRS_Tracker.cpp @@ -23,6 +23,8 @@ #include "SPIFFS.h" #include "utils.h" +#include "APRSPacketLib.h" + Configuration Config; PowerManagement powerManagement; @@ -31,7 +33,7 @@ TinyGPSPlus gps; BluetoothSerial SerialBT; OneButton userButton = OneButton(BUTTON_PIN, true, true); -String versionDate = "2023.10.24"; +String versionDate = "2023.11.04"; int myBeaconsIndex = 0; int myBeaconsSize = Config.beacons.size(); diff --git a/src/station_utils.cpp b/src/station_utils.cpp index 65c6bd9..655e544 100644 --- a/src/station_utils.cpp +++ b/src/station_utils.cpp @@ -12,6 +12,8 @@ #include "logger.h" #include "utils.h" +#include "APRSPacketLib.h" + extern Configuration Config; extern Beacon *currentBeacon; extern logging::Logger logger; @@ -387,18 +389,12 @@ namespace STATION_Utils { } void sendBeacon(String type) { - String packet = currentBeacon->callsign + ">APLRT1"; - if (Config.path != "") { - packet += "," + Config.path; - } - packet += ":!"; + String packet; if (Config.bme.sendTelemetry && type == "Wx") { - packet += "/"; - packet += GPS_Utils::encondeGPS("Wx"); + packet = APRSPacketLib::generateGPSBeaconPacket(currentBeacon->callsign, "APLRT1", Config.path, "/", GPS_Utils::encondeGPS("Wx")); packet += BME_Utils::readDataSensor("APRS"); } else { - packet += currentBeacon->overlay; - packet += GPS_Utils::encondeGPS("GPS"); + packet = APRSPacketLib::generateGPSBeaconPacket(currentBeacon->callsign, "APLRT1", Config.path, currentBeacon->overlay, GPS_Utils::encondeGPS("GPS")); } if (currentBeacon->comment != "") { diff --git a/src/utils.cpp b/src/utils.cpp index 426f9c1..b3fc872 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -2,6 +2,7 @@ #include "lora_utils.h" #include "display.h" #include "utils.h" +#include "APRSPacketLib.h" extern Beacon *currentBeacon; extern Configuration Config; @@ -89,12 +90,7 @@ namespace utils { lastTx = millis() - lastTxTime; uint32_t statusTx = millis() - statusTime; if (statusTx > 15*60*1000 && lastTx > 10*1000) { - String packet = currentBeacon->callsign + ">APLRT1"; - if (Config.path != "") { - packet += "," + Config.path; - } - packet += ":>https://github.com/richonguzman/LoRa_APRS_Tracker " + versionDate; - LoRa_Utils::sendNewPacket(packet); + LoRa_Utils::sendNewPacket(APRSPacketLib::generateStatusPacket(currentBeacon->callsign, "APLRT1", Config.path, "https://github.com/richonguzman/LoRa_APRS_Tracker " + versionDate)); statusState = false; lastTx = millis(); }