diff --git a/src/display.cpp b/src/display.cpp index c6e9dfc..b4104dc 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -335,4 +335,34 @@ void startupScreen(uint8_t index, const String& version) { #endif logger.log(logging::LoggerLevel::LOGGER_LEVEL_INFO, "Main", "RichonGuzman (CA2RXU) --> LoRa APRS Tracker/Station"); logger.log(logging::LoggerLevel::LOGGER_LEVEL_INFO, "Main", "Version: %s", version); +} + +String fillMessageLine(const String& line, const int& length) { + String completeLine = line; + for (int i = 0; completeLine.length() <= length; i++) { + completeLine = completeLine + " "; + } + return completeLine; +} + +void displayMessage(const String& sender, const String& message, const int& lineLength, bool next, int wait) { + String messageLine1, messageLine2, messageLine3; + int messageLength = message.length(); + + if (message.length() > 0) { + messageLine1 = message.substring(0, min(lineLength, messageLength)); + if (messageLength > lineLength) { + messageLine2 = message.substring(lineLength, min(2 * lineLength, messageLength)); + if (messageLength > 2 * lineLength) { + messageLine3 = message.substring(2 * lineLength); + } + } + } + if (next) { + String nextLine = fillMessageLine("Next=Down", lineLength); + displayShow("MSG_APRS>", "From --> " + sender, fillMessageLine(messageLine1, lineLength), fillMessageLine(messageLine2, lineLength), fillMessageLine(messageLine3, lineLength), nextLine); + } else { + displayShow("< MSG Rx >", "From --> " + sender, "", fillMessageLine(messageLine1, lineLength) , fillMessageLine(messageLine2, lineLength), fillMessageLine(messageLine3, lineLength), wait); + } + } \ No newline at end of file diff --git a/src/display.h b/src/display.h index cbf8061..f36bf1f 100644 --- a/src/display.h +++ b/src/display.h @@ -10,4 +10,6 @@ void displayShow(const String& header, const String& line1, const String& line2, void startupScreen(uint8_t index, const String& version); +void displayMessage(const String& sender, const String& message, const int& lineLength, bool next, int wait = 0); + #endif \ No newline at end of file diff --git a/src/menu_utils.cpp b/src/menu_utils.cpp index c1dd55f..efe0ab6 100644 --- a/src/menu_utils.cpp +++ b/src/menu_utils.cpp @@ -122,7 +122,12 @@ namespace MENU_Utils { { String msgSender = loadedAPRSMessages[messagesIterator].substring(0, loadedAPRSMessages[messagesIterator].indexOf(",")); String msgText = loadedAPRSMessages[messagesIterator].substring(loadedAPRSMessages[messagesIterator].indexOf(",") + 1); - displayShow("MSG_APRS>", "From --> " + msgSender, msgText, "", "", " Next=Down"); + + #ifdef HAS_TFT + displayMessage(msgSender, msgText, 26, true); + #else + displayShow("MSG_APRS>", "From --> " + msgSender, msgText, "", "", " Next=Down"); + #endif } break; case 11: // 1.Messages ---> Messages Write diff --git a/src/msg_utils.cpp b/src/msg_utils.cpp index a5f767f..109e496 100644 --- a/src/msg_utils.cpp +++ b/src/msg_utils.cpp @@ -532,7 +532,13 @@ namespace MSG_Utils { } else { if (!Config.simplifiedTrackerMode) { lastMsgRxTime = millis(); - displayShow("< MSG Rx >", "From --> " + lastReceivedPacket.sender, "", lastReceivedPacket.message , "", "", 3000); + + #ifdef HAS_TFT + displayMessage(lastReceivedPacket.sender,lastReceivedPacket.message, 26, false, 3000); + #else + displayShow("< MSG Rx >", "From --> " + lastReceivedPacket.sender, "", lastReceivedPacket.message , "", "", 3000); + #endif + if (lastReceivedPacket.message.indexOf("ack") != 0) { saveNewMessage(0, lastReceivedPacket.sender, lastReceivedPacket.message); }