diff --git a/src/LoRa_APRS_Tracker.cpp b/src/LoRa_APRS_Tracker.cpp index d071d52..37a56b7 100644 --- a/src/LoRa_APRS_Tracker.cpp +++ b/src/LoRa_APRS_Tracker.cpp @@ -34,7 +34,7 @@ BluetoothSerial SerialBT; OneButton userButton = OneButton(BUTTON_PIN, true, true); #endif -String versionDate = "2024.01.30"; +String versionDate = "2024.02.14"; int myBeaconsIndex = 0; int myBeaconsSize = Config.beacons.size(); @@ -94,9 +94,15 @@ bool sosActive = false; bool disableGPS; bool miceActive = false; -int ackNumberSend; -int winlinkStatus = 0; +int ackNumberSend; +int winlinkStatus = 5; // debe ser 0 +String winlinkMailNumber = "_?"; +/*String winlinkAlias = ""; +String winlinkAliasComplete = ""; +String winlinkAddressee = ""; +String winlinkSubject = ""; +String winlinkBody = "";*/ APRSPacket lastReceivedPacket; diff --git a/src/keyboard_utils.cpp b/src/keyboard_utils.cpp index f1a200b..db52059 100644 --- a/src/keyboard_utils.cpp +++ b/src/keyboard_utils.cpp @@ -34,6 +34,7 @@ extern String messageText; extern bool flashlight; extern bool digirepeaterActive; extern bool sosActive; +extern String winlinkMailNumber; namespace KEYBOARD_Utils { @@ -53,7 +54,9 @@ namespace KEYBOARD_Utils { if (menuDisplay < 130) { menuDisplay = 133; } - } else if (menuDisplay >= 20 && menuDisplay <= 26) { + } + + else if (menuDisplay >= 20 && menuDisplay <= 26) { menuDisplay--; if (menuDisplay < 20) { menuDisplay = 26; @@ -68,17 +71,28 @@ namespace KEYBOARD_Utils { if (menuDisplay < 220) { menuDisplay = 221; } - } else if (menuDisplay >= 30 && menuDisplay <= 31) { + } + + else if (menuDisplay >= 30 && menuDisplay <= 31) { menuDisplay--; if (menuDisplay < 30) { menuDisplay = 31; } - } else if (menuDisplay >= 50 && menuDisplay <= 52) { + } + + else if (menuDisplay >= 50 && menuDisplay <= 52) { menuDisplay--; if (menuDisplay < 50) { menuDisplay = 52; } - } else if (menuDisplay >= 60 && menuDisplay <= 62) { + } else if (menuDisplay >= 5000 && menuDisplay <= 5080) { + menuDisplay = menuDisplay - 10; + if (menuDisplay < 5000) { + menuDisplay = 5080; + } + } + + else if (menuDisplay >= 60 && menuDisplay <= 62) { menuDisplay--; if (menuDisplay < 60) { menuDisplay = 62; @@ -107,8 +121,7 @@ namespace KEYBOARD_Utils { if (menuDisplay > 13) { menuDisplay = 10; } - } - else if (menuDisplay >= 130 && menuDisplay <= 133) { + } else if (menuDisplay >= 130 && menuDisplay <= 133) { menuDisplay++; if (menuDisplay > 133) { menuDisplay = 130; @@ -161,7 +174,12 @@ namespace KEYBOARD_Utils { if (menuDisplay > 52) { menuDisplay = 50; } - } + } else if (menuDisplay >= 5000 && menuDisplay <= 5080) { + menuDisplay = menuDisplay + 10; + if (menuDisplay > 5080) { + menuDisplay = 5000; + } + } else if (menuDisplay >= 60 && menuDisplay <= 62) { menuDisplay++; @@ -185,7 +203,11 @@ namespace KEYBOARD_Utils { menuDisplay = menuDisplay/10; } else if ((menuDisplay>=10 && menuDisplay<=13) || (menuDisplay>=20 && menuDisplay<=29) || (menuDisplay==120) || (menuDisplay>=130 && menuDisplay<=133) || (menuDisplay>=50 && menuDisplay<=52) || (menuDisplay>=200 && menuDisplay<=290) || (menuDisplay>=60 && menuDisplay<=62) || (menuDisplay>=30 && menuDisplay<=31) || (menuDisplay>=300 && menuDisplay<=310) || (menuDisplay==40)) { menuDisplay = int(menuDisplay/10); + } else if (menuDisplay==5000 || menuDisplay== 5010 || menuDisplay == 5020 || menuDisplay==5030 || menuDisplay==5040 || menuDisplay==5050 || menuDisplay==5060 || menuDisplay==5070 || menuDisplay==5080) { + menuDisplay = 5; } + + /* winlinkMailNumber = "";*/ } @@ -266,17 +288,38 @@ namespace KEYBOARD_Utils { logger.log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, "Loop", "%s", "wrl"); MSG_Utils::sendMessage(0, "CA2RXU-15", "wrl"); } + else if (menuDisplay == 5) { menuDisplay = 50; } else if (menuDisplay == 50) { WINLINK_Utils::login(); menuDisplay = 500; } else if (menuDisplay == 51) { - show_display("__WINLINK_", "", "READ MSG/MAIL", "", 1000); + show_display("_WINLINK_>", "", "READ MSG/MAIL", "", 1000); } else if (menuDisplay == 52) { - show_display("__WINLINK_", "", "DELETE MSG/MAIL" ,"", 1000); + show_display("_WINLINK_>", "", "DELETE MSG/MAIL" ,"", 1000); } + else if (menuDisplay==5000) { + MSG_Utils::sendMessage(1, "WLNK-1", "L"); + } else if (menuDisplay==5010) { + show_display("_WINLINK_>", "", "DOWNLOADED MAILS" ,"", 1000); + } else if (menuDisplay==5020) { + menuDisplay = 5021; + } else if (menuDisplay==5030) { + show_display("_WINLINK_>", "", "REPLY MAIL" ,"", 1000); + } else if (menuDisplay==5040) { + show_display("_WINLINK_>", "", "FORWARD MAIL" ,"", 1000); + } else if (menuDisplay==5050) { + menuDisplay = 5051; + } else if (menuDisplay==5060) { + show_display("_WINLINK_>", "", "ALIAS MENU" ,"", 1000); + } else if (menuDisplay==5070) { + MSG_Utils::sendMessage(1, "WLNK-1", "B"); + menuDisplay = 5; + } else if (menuDisplay==5080) { + show_display("_WINLINK_>", "", "WRITE MAIL" ,"", 1000); + } else if (menuDisplay == 6) { menuDisplay = 60; @@ -376,7 +419,28 @@ namespace KEYBOARD_Utils { } else if (key == 8) { // Delete Last Key messageText = messageText.substring(0, messageText.length()-1); } - } else if (key==13) { + } else if ((menuDisplay== 5021 || menuDisplay==5051) && key >= 48 && key <= 57) { // numeros exactos??? + winlinkMailNumber = key; + } else if ((menuDisplay== 5021 || menuDisplay==5051) && key == 8) { // numeros exactos??? + winlinkMailNumber = "_?"; + } else if (menuDisplay == 5021 && key == 13 && winlinkMailNumber!="?") { + Serial.println("1, WLNK-1, R " + winlinkMailNumber); + //MSG_Utils::sendMessage(1, "WLNK-1", "R" + winlinkMailNumber); + winlinkMailNumber = "_?"; + menuDisplay = 5020; + } else if (menuDisplay == 5051 && key == 13 && winlinkMailNumber!="?") { + Serial.println("1, WLNK-1, K " + winlinkMailNumber); + //MSG_Utils::sendMessage(1, "WLNK-1", "K" + winlinkMailNumber); + winlinkMailNumber = "_?"; + menuDisplay = 5050; + } /*else if (menuDisplay == 5051 && key == 13) { + Serial.println("1, WLNK-1, Y " + winlinkMailNumber); + //MSG_Utils::sendMessage(1, "WLNK-1", "Y" + winlinkMailNumber); + winlinkMailNumber = ""; + menuDisplay = 5030; + + + }*/ else if (key==13) { if (menuDisplay==200) { if(myBeaconsIndex >= (myBeaconsSize - 1)) { myBeaconsIndex = 0; diff --git a/src/menu_utils.cpp b/src/menu_utils.cpp index 72927aa..36f4bed 100644 --- a/src/menu_utils.cpp +++ b/src/menu_utils.cpp @@ -33,6 +33,8 @@ extern bool screenBrightness; extern bool disableGPS; extern APRSPacket lastReceivedPacket; extern int winlinkStatus; +extern String winlinkMailNumber; +extern String winlinkAddressee; namespace MENU_Utils { @@ -63,7 +65,7 @@ namespace MENU_Utils { void showOnScreen() { String lastLine, firstLineDecoder, courseSpeedAltitude, speedPacketDec, coursePacketDec, pathDec; uint32_t lastMenuTime = millis() - menuTime; - if (!(menuDisplay==0) && !(menuDisplay==300) && !(menuDisplay==310) && !(menuDisplay==40) && !(menuDisplay>=500 && menuDisplay<=5000) && lastMenuTime > 30*1000) { + if (!(menuDisplay==0) && !(menuDisplay==300) && !(menuDisplay==310) && !(menuDisplay==40) && !(menuDisplay>=500 && menuDisplay<=5100) && lastMenuTime > 30*1000) { menuDisplay = 0; messageCallsign = ""; messageText = ""; @@ -306,49 +308,80 @@ namespace MENU_Utils { break; case 50: // 5.Winlink MENU - if (winlinkStatus == 0) { - show_display("__WINLINK_", "> Login" , " Read Saved Mails", " Delete Saved Mails", "" , lastLine); - } else { + if (winlinkStatus == 5) { menuDisplay = 5000; + } else { + show_display("_WINLINK_>", "> Login" , " Read Saved Mails", " Delete Saved Mails", "" , lastLine); } break; case 51: // 5.Winlink - show_display("__WINLINK_", " Login" , "> Read Saved Mails", " Delete Saved Mails", "" , lastLine); + show_display("_WINLINK_>", " Login" , "> Read Saved Mails", " Delete Saved Mails", "" , lastLine); break; case 52: // 5.Winlink - show_display("__WINLINK_", " Login" , " Read Saved Mails", "> Delete Saved Mails", "" , lastLine); + show_display("_WINLINK_>", " Login" , " Read Saved Mails", "> Delete Saved Mails", "" , lastLine); break; case 500: // 5.Winlink ---> Login - show_display("__WINLINK_", "" , "Login Initiation ...", "Challenge -> waiting", "" , "", "" , "Login Initiation ...", "Challenge -> waiting", "" , ""); break; case 501: // 5.Winlink ---> Login - show_display("__WINLINK_", "" , "Login Initiation ...", "Challenge -> sended", "" , "", "" , "Login Initiation ...", "Challenge -> sended", "" , ""); break; case 502: // 5.Winlink ---> Login - show_display("__WINLINK_", "" , "Login Initiation ...", "Challenge -> ack ...", "" , "", "" , "Login Initiation ...", "Challenge -> ack ...", "" , ""); break; - case 5000: // 5.Winlink ---> Logged!!! - show_display("__WINLINK_", "" , "Logged !!! ", "", "" , " List Pend. Mails", " Downloaded Mails", " Read Mail (R#)", lastLine); + break; + case 5010: // WINLINK: Downloaded Mails // + show_display("WLNK_MENU_", " List Pend. Mails", "> Downloaded Mails", " Read Mail (R#)", " Reply Mail (Y#)", lastLine); break; - /* si esta loggeado (5000) - 5010) write mail - 5020) list pending mails - 5030) download mails - 51) read saved mails - 5040) reply mail - 5050) forward mail - 52) delete mail (local o en winlink?) - 5060) alias menu -------> - 5070) log out - */ + case 5020: // WINLINK: Read Mail // + show_display("WLNK_MENU_", " Downloaded Mails", "> Read Mail (R#)", " Reply Mail (Y#)", " Forward Mail (F#)", lastLine); + break; + case 5021: + show_display("WLNK_READ_", "", " READ MAIL N." + winlinkMailNumber, "", "", ""); + break; + case 5030: // WINLINK: Reply Mail // + show_display("WLNK_MENU_", " Read Mail (R#)", "> Reply Mail (Y#)", " Forward Mail (F#)", " Delete Mail (K#)", lastLine); + break; + case 5031: + show_display("WLNK_REPLY", "", " REPLY MAIL N." + winlinkMailNumber , "", "", ""); + break; + + case 5040: // WINLINK: Foward Mail // + show_display("WLNK_MENU_", " Reply Mail (Y#)", "> Forward Mail (F#)", " Delete Mail (K#)", " Alias Menu", lastLine); + break; + case 5041: // WINLINK: Forward Mail // + show_display("WLNK_FORW_", "", " FORWARD MAIL N." + winlinkMailNumber , "", "", ""); + break; + case 5042: // WINLINK: Forward Mail // + show_display("WLNK_FORW_", "", " FORWARD MAIL N." + winlinkMailNumber , "", "", ""); + //show_display("WLNK_FORW_", " FORWARD MAIL N." + winlinkMailNumber , "To = " + winlinkAddressee, "", "", ""); + break; + + case 5050: // WINLINK: Delete Mail // + show_display("WLNK_MENU_", " Forward Mail (F#)", "> Delete Mail (K#)", " Alias Menu", " Log Out", lastLine); + break; + case 5051: // WINLINK: Delete Mail // + show_display("WLNK_DEL__", "", " DELETE MAIL N." + winlinkMailNumber, "", ""); + break; + + case 5060: // WINLINK: Alias Menu // + show_display("WLNK_MENU_", " Delete Mail (K#)", "> Alias Menu", " Log Out", " Write Mail", lastLine); + break; + case 5070: // WINLINK: Log Out MAIL // + show_display("WLNK_MENU_", " Alias Menu", "> Log Out", " Write Mail", " List Pend. Mails", lastLine); + break; + case 5080: // WINLINK: WRITE MAIL // + show_display("WLNK_MENU_", " Log Out", "> Write Mail", " List Pend. Mails", " Downloaded Mails", lastLine); + break; + // validar winlinkStatus = 0 // check si no esta logeado o si - //show_display("__WINLINK_", "" , "Login Initiation ...", "", "" , " Flashlight show_display("__EXTRAS__", "> Flashlight (" + checkProcessActive(flashlight) + ")", " DigiRepeater (" + checkProcessActive(digirepeaterActive) + ")", " S.O.S. (" + checkProcessActive(sosActive) + ")","",lastLine); diff --git a/src/msg_utils.cpp b/src/msg_utils.cpp index 4e1e2d6..b8daf9c 100644 --- a/src/msg_utils.cpp +++ b/src/msg_utils.cpp @@ -245,7 +245,7 @@ namespace MSG_Utils { menuDisplay = 501; } /*else if (winlinkStatus == 2 && lastReceivedPacket.message.indexOf("Login [") == -1) { Serial.println("Estamos conetados a WINLINK!!!!"); - show_display("__WINLINK_", "", " LOGGED !!!!", 2000); + show_display("_WINLINK_>", "", " LOGGED !!!!", 2000); winlinkStatus = 5; //menuDisplay = 800; } */else if (winlinkStatus == 3 && winlinkAckAnswer.toInt() == ackNumberSend) { @@ -255,8 +255,13 @@ namespace MSG_Utils { } else if (lastReceivedPacket.message.indexOf("Login valid") > 0) { winlinkStatus = 5; logger.log(logging::LoggerLevel::LOGGER_LEVEL_INFO, "Winlink","---> Login Succesfull"); + show_display("_WINLINK_>", "", " LOGGED !!!!", 2000); menuDisplay = 5000; - } + } else if (winlinkStatus == 5 && lastReceivedPacket.message.indexOf("Log off successful") == 0 ) { + show_display("_WINLINK_>", "", " LOG OUT !!!",2000); + winlinkStatus = 0; + } + // que se hace con los mensajes recibidos desde Winlink cuando ya estamos conectados } else { show_display("< MSG Rx >", "From --> " + lastReceivedPacket.sender, "", lastReceivedPacket.message , 3000); diff --git a/src/winlink_utils.cpp b/src/winlink_utils.cpp index 4c78ed3..3114476 100644 --- a/src/winlink_utils.cpp +++ b/src/winlink_utils.cpp @@ -20,7 +20,7 @@ namespace WINLINK_Utils { } challengeAnswer += "AZ6"; delay(8000); /// - Serial.println("el challenge creado es " + challengeAnswer); + //Serial.println("el challenge creado es " + challengeAnswer); MSG_Utils::sendMessage(1, "WLNK-1", challengeAnswer); } @@ -28,17 +28,12 @@ namespace WINLINK_Utils { logger.log(logging::LoggerLevel::LOGGER_LEVEL_INFO, "Winlink","---> Start Login"); show_display("__WINLINK_", "" , "Login Initiation ...", "", "" , "