LoRa_APRS_iGate/src/station_utils.cpp

65 lines
2 KiB
C++
Raw Normal View History

2023-06-06 19:46:49 +02:00
#include "station_utils.h"
2023-06-06 20:26:17 +02:00
#include "configuration.h"
2023-06-08 06:58:10 +02:00
#include <vector>
2023-06-06 20:26:17 +02:00
extern Configuration Config;
extern std::vector<String> lastHeardStation;
extern std::vector<String> lastHeardStation_temp;
2023-06-17 17:10:44 +02:00
extern String fifthLine;
2023-06-06 19:46:49 +02:00
2023-06-06 20:26:17 +02:00
namespace STATION_Utils {
2023-06-06 19:46:49 +02:00
2023-06-06 20:26:17 +02:00
void deleteNotHeard() {
2023-06-06 19:46:49 +02:00
for (int i=0; i<lastHeardStation.size(); i++) {
String deltaTimeString = lastHeardStation[i].substring(lastHeardStation[i].indexOf(",")+1);
uint32_t deltaTime = deltaTimeString.toInt();
2023-06-06 21:00:54 +02:00
if ((millis() - deltaTime) < Config.rememberStationTime*60*1000) {
2023-06-06 19:46:49 +02:00
lastHeardStation_temp.push_back(lastHeardStation[i]);
}
}
lastHeardStation.clear();
for (int j=0; j<lastHeardStation_temp.size(); j++) {
lastHeardStation.push_back(lastHeardStation_temp[j]);
}
lastHeardStation_temp.clear();
}
2023-06-06 20:26:17 +02:00
void updateLastHeard(String station) {
deleteNotHeard();
bool stationHeard = false;
for (int i=0; i<lastHeardStation.size(); i++) {
if (lastHeardStation[i].substring(0,lastHeardStation[i].indexOf(",")) == station) {
lastHeardStation[i] = station + "," + String(millis());
stationHeard = true;
}
}
if (!stationHeard) {
lastHeardStation.push_back(station + "," + String(millis()));
}
//////
Serial.print("Stations Near (last 30 minutes): ");
for (int k=0; k<lastHeardStation.size(); k++) {
Serial.print(lastHeardStation[k].substring(0,lastHeardStation[k].indexOf(","))); Serial.print(" ");
}
Serial.println("");
2023-06-17 17:10:44 +02:00
if (lastHeardStation.size() < 10) {
fifthLine = "Stations (30min) = " + String(lastHeardStation.size());
} else {
fifthLine = "Stations (30min) = " + String(lastHeardStation.size());
}
2023-06-06 20:26:17 +02:00
}
bool wasHeard(String station) {
deleteNotHeard();
for (int i=0; i<lastHeardStation.size(); i++) {
if (lastHeardStation[i].substring(0,lastHeardStation[i].indexOf(",")) == station) {
Serial.println(" ---> Listened Station");
2023-06-06 21:00:54 +02:00
return true;
2023-06-06 20:26:17 +02:00
}
}
2023-06-06 21:00:54 +02:00
Serial.println(" ---> Station not Heard for last 30 min (Not Tx)\n");
return false;
2023-06-06 20:26:17 +02:00
}
2023-06-06 19:46:49 +02:00
}