2023-06-06 21:53:06 +02:00
|
|
|
#include "configuration.h"
|
2023-06-08 06:58:10 +02:00
|
|
|
#include "query_utils.h"
|
2024-05-30 21:38:30 +02:00
|
|
|
#include "lora_utils.h"
|
2023-06-06 21:53:06 +02:00
|
|
|
|
|
|
|
|
extern Configuration Config;
|
|
|
|
|
extern std::vector<String> lastHeardStation;
|
2023-06-09 14:34:34 +02:00
|
|
|
extern String versionDate;
|
2024-05-30 21:38:30 +02:00
|
|
|
extern int rssi;
|
|
|
|
|
extern float snr;
|
|
|
|
|
extern int freqError;
|
2023-06-06 21:53:06 +02:00
|
|
|
|
2024-02-25 16:00:44 +01:00
|
|
|
|
2023-06-06 21:53:06 +02:00
|
|
|
namespace QUERY_Utils {
|
|
|
|
|
|
2024-06-06 05:49:16 +02:00
|
|
|
String process(const String& query, const String& station, const uint8_t queryOrigin) {
|
2024-02-24 14:09:05 +01:00
|
|
|
String answer;
|
|
|
|
|
if (query=="?APRS?" || query=="?aprs?" || query=="?Aprs?" || query=="H" || query=="h" || query=="HELP" || query=="Help" || query=="help" || query=="?") {
|
2024-06-21 03:12:54 +02:00
|
|
|
answer.concat("?APRSV ?APRSP ?APRSL ?APRSH ?WHERE callsign");
|
2024-02-24 14:09:05 +01:00
|
|
|
} else if (query=="?APRSV" || query=="?aprsv" || query=="?Aprsv") {
|
2024-05-30 21:38:30 +02:00
|
|
|
answer = "CA2RXU_LoRa_iGate 1.3 v";
|
|
|
|
|
answer.concat(versionDate);
|
2024-02-24 14:09:05 +01:00
|
|
|
} else if (query=="?APRSP" || query=="?aprsp" || query=="?Aprsp") {
|
2024-05-30 21:38:30 +02:00
|
|
|
answer = "iGate QTH: ";
|
|
|
|
|
answer.concat(String(Config.beacon.latitude,2));
|
|
|
|
|
answer.concat(" ");
|
|
|
|
|
answer.concat(String(Config.beacon.longitude,2));
|
2024-02-24 14:09:05 +01:00
|
|
|
} else if (query=="?APRSL" || query=="?aprsl" || query=="?Aprsl") {
|
|
|
|
|
if (lastHeardStation.size() == 0) {
|
2024-05-30 21:38:30 +02:00
|
|
|
char answerArray[50];
|
|
|
|
|
snprintf(answerArray, sizeof(answerArray), "No Station Listened in the last %d min.", Config.rememberStationTime);
|
|
|
|
|
answer.concat(answerArray);
|
2024-02-24 14:09:05 +01:00
|
|
|
} else {
|
|
|
|
|
for (int i=0; i<lastHeardStation.size(); i++) {
|
|
|
|
|
answer += lastHeardStation[i].substring(0,lastHeardStation[i].indexOf(",")) + " ";
|
|
|
|
|
}
|
|
|
|
|
answer.trim();
|
|
|
|
|
}
|
2024-05-30 21:38:30 +02:00
|
|
|
} else if (query=="?APRSSR" || query=="?aprssr" || query=="?Aprssr") {
|
|
|
|
|
char signalData[35];
|
|
|
|
|
snprintf(signalData, sizeof(signalData), " %ddBm / %.2fdB / %dHz", rssi, snr, freqError);
|
|
|
|
|
answer.concat(signalData);
|
2024-02-24 14:09:05 +01:00
|
|
|
} else if (query.indexOf("?APRSH") == 0 || query.indexOf("?aprsh") == 0 || query.indexOf("?Aprsh") == 0) {
|
|
|
|
|
// sacar callsign despues de ?APRSH
|
|
|
|
|
Serial.println("escuchaste a X estacion? en las ultimas 24 o 8 horas?");
|
2024-06-21 03:12:54 +02:00
|
|
|
answer.concat("?APRSH on development 73!");
|
2024-02-24 14:09:05 +01:00
|
|
|
} else if (query.indexOf("?WHERE") == 0) {
|
|
|
|
|
// agregar callsign para completar donde esta X callsign --> posicion
|
|
|
|
|
Serial.println("estaciones escuchadas directo (ultimos 30 min)");
|
2024-06-21 03:12:54 +02:00
|
|
|
answer.concat("?WHERE on development 73!");
|
2024-02-24 14:09:05 +01:00
|
|
|
}
|
2024-05-15 23:47:29 +02:00
|
|
|
String processedStation = station;
|
2024-05-30 21:38:30 +02:00
|
|
|
for (int i = station.length(); i < 9; i++) {
|
2024-05-15 23:47:29 +02:00
|
|
|
processedStation += ' ';
|
2024-02-24 14:09:05 +01:00
|
|
|
}
|
2024-06-21 03:12:54 +02:00
|
|
|
String queryAnswer = Config.callsign;
|
|
|
|
|
queryAnswer += ">APLRG1,";
|
2024-05-15 23:47:29 +02:00
|
|
|
if (queryOrigin == 1) { // from APRS-IS
|
2024-06-21 03:12:54 +02:00
|
|
|
queryAnswer += "TCPIP,qAC::";
|
|
|
|
|
} else { // else == 0 , from LoRa
|
2024-04-04 20:54:49 +02:00
|
|
|
if (Config.beacon.path == "") {
|
2024-06-21 03:12:54 +02:00
|
|
|
queryAnswer += "RFONLY::";
|
2024-04-04 20:54:49 +02:00
|
|
|
} else {
|
2024-06-21 03:12:54 +02:00
|
|
|
queryAnswer += "RFONLY,";
|
|
|
|
|
queryAnswer += Config.beacon.path;
|
|
|
|
|
queryAnswer += "::";
|
2024-04-04 20:54:49 +02:00
|
|
|
}
|
2024-01-03 02:12:10 +01:00
|
|
|
}
|
2024-06-21 03:12:54 +02:00
|
|
|
queryAnswer += processedStation;
|
|
|
|
|
queryAnswer += ":";
|
|
|
|
|
queryAnswer += answer;
|
|
|
|
|
return queryAnswer;
|
2023-06-06 21:53:06 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|