added ackNumberSend to msgTx

This commit is contained in:
richonguzman 2024-01-30 09:14:54 -03:00
parent 9e4d29a4d0
commit f1ee95a7b4
8 changed files with 81 additions and 27 deletions

View File

@ -236,6 +236,7 @@ namespace APRSPacketLib {
}
String generateMessagePacket(String callsign, String tocall, String path, String addressee, String message) {
message.trim();
for(int i = addressee.length(); i < 9; i++) {
addressee += ' ';
}

View File

@ -94,6 +94,7 @@ bool sosActive = false;
bool disableGPS;
bool miceActive = false;
int ackNumberSend;
APRSPacket lastReceivedPacket;
@ -138,6 +139,7 @@ void setup() {
LoRa_Utils::setup();
BME_Utils::setup();
STATION_Utils::loadCallsignIndex();
ackNumberSend = random(1,999);
WiFi.mode(WIFI_OFF);
logger.log(logging::LoggerLevel::LOGGER_LEVEL_INFO, "Main", "WiFi controller stopped");
@ -171,12 +173,18 @@ void loop() {
miceActive = Config.validateMicE(currentBeacon->micE);
}
if (ackNumberSend >= 999) {
ackNumberSend = 1;
}
POWER_Utils::batteryManager();
if (!Config.simplifiedTrackerMode) {
#ifdef HAS_BUTTON
userButton.tick();
#endif
}
Utils::checkDisplayEcoMode();
if (keyboardConnected) {

View File

@ -208,21 +208,21 @@ namespace KEYBOARD_Utils {
menuDisplay = 1300;
} else {
show_display(" APRS Thu.", "Sending:", "Happy #APRSThursday", "from LoRa Tracker 73!", 2000);
MSG_Utils::sendMessage("ANSRVR","CQ HOTG Happy #APRSThursday from LoRa Tracker 73!");
MSG_Utils::sendMessage(0, "ANSRVR", "CQ HOTG Happy #APRSThursday from LoRa Tracker 73!");
}
} else if (menuDisplay == 131) {
if (keyDetected) {
menuDisplay = 1310;
} else {
show_display(" APRS Thu.", "Sending:", "Happy #APRSThursday", "from LoRa Tracker 73!", 2000);
MSG_Utils::sendMessage("APRSPH","HOTG Happy #APRSThursday from LoRa Tracker 73!");
MSG_Utils::sendMessage(0, "APRSPH", "HOTG Happy #APRSThursday from LoRa Tracker 73!");
}
} else if (menuDisplay == 132) {
show_display(" APRS Thu.", "", " Unsubscribe", " from APRS Thursday", 2000);
MSG_Utils::sendMessage("ANSRVR","U HOTG");
MSG_Utils::sendMessage(0, "ANSRVR", "U HOTG");
} else if (menuDisplay == 133) {
show_display(" APRS Thu.", "", " Keep Subscribed" ," for 12hours more", 2000);
MSG_Utils::sendMessage("ANSRVR","K HOTG");
MSG_Utils::sendMessage(0, "ANSRVR", "K HOTG");
}
else if (menuDisplay == 210) {
@ -251,7 +251,7 @@ namespace KEYBOARD_Utils {
else if (menuDisplay == 4) {
logger.log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, "Loop", "%s", "wrl");
MSG_Utils::sendMessage("CA2RXU-15","wrl");
MSG_Utils::sendMessage(0, "CA2RXU-15", "wrl");
}
else if (menuDisplay == 5) {
show_display("_WINLINK_", "still on", "development..", 2000); /////////////////////////
@ -340,15 +340,15 @@ namespace KEYBOARD_Utils {
messageText = messageText.substring(0,67);
}
if (menuDisplay==111) {
MSG_Utils::sendMessage(messageCallsign, messageText);
MSG_Utils::sendMessage(0, messageCallsign, messageText);
menuDisplay = 11;
} else if (menuDisplay==1300) {
messageCallsign = "ANSRVR";
MSG_Utils::sendMessage(messageCallsign, "CQ HOTG " + messageText);
MSG_Utils::sendMessage(0, messageCallsign, "CQ HOTG " + messageText);
menuDisplay = 130;
} else if (menuDisplay==1310) {
messageCallsign = "APRSPH";
MSG_Utils::sendMessage(messageCallsign, "HOTG " + messageText);
MSG_Utils::sendMessage(0, messageCallsign, "HOTG " + messageText);
menuDisplay = 131;
}
messageCallsign = "";

View File

@ -304,6 +304,21 @@ namespace MENU_Utils {
// waiting for Weather Report
break;
case 50: // 5.Winlink
// check si no esta logeado o si
show_display("__WINLINK_", "" , "Login Initiation ...", "", "" , "<Back");
break;
/*case 51: //////////// WINLINK/MAIL MENU ////////////
show_display("__WINLINK_", "" , "Login Initiation ...", "Challenge -> waiting", "" , "<Back");
break;
case 52: //////////// WINLINK/MAIL MENU ////////////
show_display("__WINLINK_", "" , "Login Initiation ...", "Challenge -> sended", "" , "<Back");
break;
case 53: //////////// WINLINK/MAIL MENU ////////////
show_display("__WINLINK_", "" , "Login Initiation ...", "Challenge -> ack ...", "" , "<Back");
break;*/
case 60: // 6. Extras ---> Flashlight
show_display("__EXTRAS__", "> Flashlight (" + checkProcessActive(flashlight) + ")", " DigiRepeater (" + checkProcessActive(digirepeaterActive) + ")", " S.O.S. (" + checkProcessActive(sosActive) + ")","",lastLine);
break;

View File

@ -24,19 +24,14 @@ extern uint32_t messageLedTime;
extern bool digirepeaterActive;
extern APRSPacket lastReceivedPacket;
extern int ackNumberSend;
String firstNearTracker = "";
String secondNearTracker = "";
String thirdNearTracker = "";
String fourthNearTracker = "";
extern APRSPacket lastReceivedPacket;
String lastMessageAPRS = "";
int numAPRSMessages = 0;
bool noMessageWarning = false;
String lastHeardTracker = "NONE";
uint32_t lastDeleteListenedTracker = millis();
namespace MSG_Utils {
@ -146,14 +141,24 @@ namespace MSG_Utils {
}
}
void sendMessage(String station, String textMessage) {
void sendMessage(int typeOfMessage, String station, String textMessage) {
String newPacket = APRSPacketLib::generateMessagePacket(currentBeacon->callsign,"APLRT1",Config.path,station,textMessage);
if (textMessage.indexOf("ack")== 0) {
show_display("<<ACK Tx>>", 500);
if (station != "WLNK-1") { // don't show Winlink ACK
show_display("<<ACK Tx>>", 500);
}
} else if (station.indexOf("CA2RXU-15") == 0 && textMessage.indexOf("wrl")==0) {
show_display("<WEATHER>","", "--- Sending Query ---", 1000);
} else {
show_display("MSG Tx >>", "", newPacket, 1000);
if (station == "WLNK-1") {
show_display("WINLINK Tx", "", newPacket, 1000);
} else {
show_display("MSG Tx >>", "", newPacket, 1000);
}
}
if (typeOfMessage==1) { //forced to send MSG with ack confirmation
ackNumberSend++;
newPacket += "{" + String(ackNumberSend);
}
LoRa_Utils::sendNewPacket(newPacket);
}
@ -189,7 +194,7 @@ namespace MSG_Utils {
String ackMessage = "ack" + lastReceivedPacket.message.substring(lastReceivedPacket.message.indexOf("{")+1);
ackMessage.trim();
delay(4000);
sendMessage(lastReceivedPacket.sender, ackMessage);
sendMessage(0, lastReceivedPacket.sender, ackMessage);
lastReceivedPacket.message = lastReceivedPacket.message.substring(lastReceivedPacket.message.indexOf(":")+1, lastReceivedPacket.message.indexOf("{"));
} else {
lastReceivedPacket.message = lastReceivedPacket.message.substring(lastReceivedPacket.message.indexOf(":")+1);
@ -199,7 +204,7 @@ namespace MSG_Utils {
}
if (lastReceivedPacket.message.indexOf("ping")==0 || lastReceivedPacket.message.indexOf("Ping")==0 || lastReceivedPacket.message.indexOf("PING")==0) {
delay(4000);
sendMessage(lastReceivedPacket.sender, "pong, 73!");
sendMessage(0, lastReceivedPacket.sender, "pong, 73!");
}
if (lastReceivedPacket.sender == "CA2RXU-15" && lastReceivedPacket.message.indexOf("WX")==0) { // WX = WeatherReport
Serial.println("Weather Report Received");

View File

@ -14,7 +14,7 @@ namespace MSG_Utils {
void ledNotification();
void deleteFile();
void saveNewMessage(String typeMessage, String station, String newMessage);
void sendMessage(String station, String textMessage);
void sendMessage(int typeOfMessage, String station, String textMessage);
void checkReceivedMessage(ReceivedLoRaPacket packetReceived);
}

View File

@ -19,12 +19,6 @@ extern std::vector<String> lastHeardStation;
extern std::vector<String> lastHeardStation_temp;
extern int myBeaconsIndex;
extern String firstNearTracker;
extern String secondNearTracker;
extern String thirdNearTracker;
extern String fourthNearTracker;
extern uint32_t lastDeleteListenedTracker;
extern uint32_t lastTx;
extern uint32_t lastTxTime;
@ -47,6 +41,13 @@ extern double lastTxDistance;
extern bool miceActive;
String firstNearTracker;
String secondNearTracker;
String thirdNearTracker;
String fourthNearTracker;
uint32_t lastDeleteListenedTracker;
namespace STATION_Utils {

View File

@ -19,6 +19,30 @@ namespace WINLINK_Utils {
void login() {
Serial.println("Starting Winlink Login");
/*
---genero ack number en random
---reviso si llega a 999 y paso a 1
menu50 seria:
si no logged:
start login
read msg/mails
delete all msg/mails
si esta logeado pasa a otro menu de :
L
R
Y
B
y mas
*/
// enviar "L" con ack
// recibir ack - esperar challenge
// recibir challenge con ack