From a6d0d5c790a3af1f7929f3bc68edecbf13a57dca Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Mon, 6 Jul 2026 13:05:40 -0700 Subject: [PATCH 01/16] Align MUI message status labels --- cmake/protobuf.cmake | 2 +- include/graphics/common/MessageStatus.h | 34 ++++++ include/graphics/view/TFT/TFTView_320x240.h | 7 +- source/graphics/TFT/TFTView_320x240.cpp | 124 ++++++++++++++++---- source/graphics/common/MessageStatus.cpp | 52 ++++++++ source/graphics/common/ViewController.cpp | 3 + tests/test_MessageStatus.cpp | 42 +++++++ 7 files changed, 234 insertions(+), 30 deletions(-) create mode 100644 include/graphics/common/MessageStatus.h create mode 100644 source/graphics/common/MessageStatus.cpp create mode 100644 tests/test_MessageStatus.cpp diff --git a/cmake/protobuf.cmake b/cmake/protobuf.cmake index 86237314..933791cd 100644 --- a/cmake/protobuf.cmake +++ b/cmake/protobuf.cmake @@ -2,6 +2,6 @@ message(STATUS "Fetching protobufs ...") FetchContent_Declare( Protobuf GIT_REPOSITORY "https://github.com/meshtastic/protobufs" - GIT_TAG v2.7.8 + GIT_TAG v2.7.26 ) FetchContent_MakeAvailable(Protobuf) diff --git a/include/graphics/common/MessageStatus.h b/include/graphics/common/MessageStatus.h new file mode 100644 index 00000000..36ff9dcc --- /dev/null +++ b/include/graphics/common/MessageStatus.h @@ -0,0 +1,34 @@ +#pragma once + +namespace MessageStatus +{ +enum class State { + Sending, + ChannelImplicitAck, + DirectImplicitAck, + ExplicitAck, + NoAck, + NoChannel, + GenericEncryptedSendFailure, + RecipientKeyUnavailable, + RecipientNeedsSenderKey, + MessageTooLarge, +}; + +enum class Tone { + Pending, + Success, + Warning, + RetryableFailure, + PermanentFailure, +}; + +struct Presentation { + const char *text; + Tone tone; + bool retryable; +}; + +const Presentation &presentation(State state); +State deliveredState(bool channelMessage, bool explicitAck); +} // namespace MessageStatus diff --git a/include/graphics/view/TFT/TFTView_320x240.h b/include/graphics/view/TFT/TFTView_320x240.h index c2787374..839c0f21 100644 --- a/include/graphics/view/TFT/TFTView_320x240.h +++ b/include/graphics/view/TFT/TFTView_320x240.h @@ -1,6 +1,7 @@ #pragma once #include "graphics/common/MeshtasticView.h" +#include "graphics/common/MessageStatus.h" #include "meshtastic/clientonly.pb.h" #include @@ -168,8 +169,8 @@ class TFTView_320x240 : public MeshtasticView virtual bool applyNodesFilter(uint32_t nodeNum, bool reset = false); // display message alert popup virtual void messageAlert(const char *alert, bool show); - // mark sent message as received - virtual void handleTextMessageResponse(uint32_t channelOrNode, uint32_t id, bool ack, bool err); + // mark sent message with its delivery status + virtual void handleTextMessageResponse(uint32_t channelOrNode, uint32_t id, MessageStatus::State status); // set node image based on role virtual void setNodeImage(uint32_t nodeNum, eRole role, bool unmessagable, lv_obj_t *img); // apply filter and count number of filtered nodes @@ -444,4 +445,4 @@ class TFTView_320x240 : public MeshtasticView }; meshtastic_DeviceProfile_full db{}; // full copy of the node's configuration db (except nodeinfos) plus ui data -}; \ No newline at end of file +}; diff --git a/source/graphics/TFT/TFTView_320x240.cpp b/source/graphics/TFT/TFTView_320x240.cpp index 72f662e8..8bd62c1b 100644 --- a/source/graphics/TFT/TFTView_320x240.cpp +++ b/source/graphics/TFT/TFTView_320x240.cpp @@ -4,6 +4,7 @@ #include "Arduino.h" #include "graphics/common/BatteryLevel.h" #include "graphics/common/LoRaPresets.h" +#include "graphics/common/MessageStatus.h" #include "graphics/common/Ringtones.h" #include "graphics/common/ViewController.h" #include "graphics/driver/DisplayDriver.h" @@ -84,6 +85,22 @@ constexpr lv_color_t colorMidGray = LV_COLOR_HEX(0x808080); constexpr lv_color_t colorDarkGray = LV_COLOR_HEX(0x303030); constexpr lv_color_t colorMesh = LV_COLOR_HEX(0x67ea94); +static lv_color_t messageStatusColor(MessageStatus::Tone tone) +{ + switch (tone) { + case MessageStatus::Tone::Pending: + return colorOrange; + case MessageStatus::Tone::Success: + return colorBlueGreen; + case MessageStatus::Tone::Warning: + case MessageStatus::Tone::RetryableFailure: + return colorOrange; + case MessageStatus::Tone::PermanentFailure: + return colorRed; + } + return colorLightGray; +} + // children index of nodepanel lv objects (see addNode) enum NodePanelIdx { node_img_idx, @@ -4456,22 +4473,16 @@ void TFTView_320x240::handleAddMessage(char *msg) uint32_t to = UINT32_MAX; uint8_t ch = 0; uint8_t hopLimit = db.config.lora.hop_limit; - uint32_t requestId; + uint32_t requestId = 0; uint32_t channelOrNode = (unsigned long)activeMsgContainer->user_data; bool usePkc = false; - auto callback = [this](const ResponseHandler::Request &req, ResponseHandler::EventType evt, int32_t pass) { - this->onTextMessageCallback(req, evt, pass); - }; - if (channelOrNode < c_max_channels) { ch = (uint8_t)channelOrNode; - requestId = requests.addRequest(ch, ResponseHandler::TextMessageRequest, (void *)(long)ch, callback); } else { ch = (uint8_t)(unsigned long)nodes[channelOrNode]->user_data; to = channelOrNode; usePkc = (unsigned long)nodes[to]->LV_OBJ_IDX(node_bat_idx)->user_data; // hasKey - requestId = requests.addRequest(to, ResponseHandler::TextMessageRequest, (void *)to, callback); // trial: hoplimit optimization for direct text messages int8_t hopsAway = (signed long)nodes[to]->LV_OBJ_IDX(node_sig_idx)->user_data; if (hopsAway < 0) @@ -4484,6 +4495,19 @@ void TFTView_320x240::handleAddMessage(char *msg) if (msg[i] == CR_REPLACEMENT) msg[i] = '\n'; + if (strlen(msg) > meshtastic_Constants_DATA_PAYLOAD_LEN) { + addMessage(activeMsgContainer, actTime, 0, msg, LogMessage::eFailed); + handleTextMessageResponse(channelOrNode, 0, MessageStatus::State::MessageTooLarge); + messageAlert(_(MessageStatus::presentation(MessageStatus::State::MessageTooLarge).text), true); + return; + } + + auto callback = [this](const ResponseHandler::Request &req, ResponseHandler::EventType evt, int32_t pass) { + this->onTextMessageCallback(req, evt, pass); + }; + + requestId = requests.addRequest(channelOrNode < c_max_channels ? ch : to, ResponseHandler::TextMessageRequest, + (void *)(long)channelOrNode, callback); controller->sendTextMessage(to, ch, hopLimit, actTime, requestId, usePkc, msg); addMessage(activeMsgContainer, actTime, requestId, msg, LogMessage::eNone); } @@ -4499,6 +4523,9 @@ void TFTView_320x240::addMessage(lv_obj_t *container, uint32_t msgTime, uint32_t lv_obj_set_height(hiddenPanel, LV_SIZE_CONTENT); lv_obj_set_align(hiddenPanel, LV_ALIGN_CENTER); lv_obj_clear_flag(hiddenPanel, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_layout(hiddenPanel, LV_LAYOUT_FLEX); + lv_obj_set_flex_flow(hiddenPanel, LV_FLEX_FLOW_COLUMN); + lv_obj_set_flex_align(hiddenPanel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_END, LV_FLEX_ALIGN_END); lv_obj_set_style_radius(hiddenPanel, 0, LV_PART_MAIN | LV_STATE_DEFAULT); add_style_panel_style(hiddenPanel); @@ -4526,18 +4553,35 @@ void TFTView_320x240::addMessage(lv_obj_t *container, uint32_t msgTime, uint32_t add_style_chat_message_style(textLabel); + lv_obj_t *statusLabel = lv_label_create(hiddenPanel); + lv_obj_set_width(statusLabel, 200); + lv_label_set_long_mode(statusLabel, LV_LABEL_LONG_WRAP); + lv_obj_set_style_text_align(statusLabel, LV_TEXT_ALIGN_RIGHT, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_font(statusLabel, &ui_font_montserrat_12, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_pad_top(statusLabel, 2, LV_PART_MAIN | LV_STATE_DEFAULT); + const MessageStatus::State messageState = status == LogMessage::eHeard ? MessageStatus::State::DirectImplicitAck + : status == LogMessage::eAcked ? MessageStatus::State::ExplicitAck + : status == LogMessage::eFailed ? MessageStatus::State::NoAck + : MessageStatus::State::Sending; + const MessageStatus::Presentation &messageStatus = MessageStatus::presentation(messageState); + lv_label_set_text(statusLabel, _(messageStatus.text)); + lv_obj_set_style_text_color(statusLabel, messageStatusColor(messageStatus.tone), LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_scroll_to_view(hiddenPanel, LV_ANIM_ON); lv_obj_move_foreground(objects.message_input_area); switch (status) { case LogMessage::eHeard: - lv_obj_set_style_border_color(textLabel, colorYellow, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_border_color(textLabel, messageStatusColor(MessageStatus::Tone::Warning), + LV_PART_MAIN | LV_STATE_DEFAULT); break; case LogMessage::eAcked: - lv_obj_set_style_border_color(textLabel, colorBlueGreen, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_border_color(textLabel, messageStatusColor(MessageStatus::Tone::Success), + LV_PART_MAIN | LV_STATE_DEFAULT); break; case LogMessage::eFailed: - lv_obj_set_style_border_color(textLabel, colorRed, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_border_color(textLabel, messageStatusColor(MessageStatus::Tone::RetryableFailure), + LV_PART_MAIN | LV_STATE_DEFAULT); break; default: break; @@ -5238,12 +5282,16 @@ void TFTView_320x240::updateConnectionStatus(const meshtastic_DeviceConnectionSt void TFTView_320x240::onTextMessageCallback(const ResponseHandler::Request &req, ResponseHandler::EventType evt, int32_t result) { ILOG_DEBUG("onTextMessageCallback: %d %d", evt, result); + bool channelMessage = (unsigned long)req.cookie < c_max_channels; if (evt == ResponseHandler::found) { - handleTextMessageResponse((unsigned long)req.cookie, req.id, false, result); + handleTextMessageResponse((unsigned long)req.cookie, req.id, result ? MessageStatus::State::NoAck + : MessageStatus::deliveredState(channelMessage, false)); } else if (evt == ResponseHandler::removed) { - handleTextMessageResponse((unsigned long)req.cookie, req.id, true, result); + handleTextMessageResponse((unsigned long)req.cookie, req.id, result ? MessageStatus::State::NoAck + : MessageStatus::deliveredState(channelMessage, true)); } else { ILOG_DEBUG("onTextMessageCallback: timeout!"); + handleTextMessageResponse((unsigned long)req.cookie, req.id, MessageStatus::State::NoAck); } } @@ -5278,27 +5326,47 @@ void TFTView_320x240::handleResponse(uint32_t from, const uint32_t id, const mes if (req.type == ResponseHandler::TraceRouteRequest) { handleTraceRouteResponse(routing); } else if (req.type == ResponseHandler::TextMessageRequest) { - handleTextMessageResponse((unsigned long)req.cookie, id, ack, false); + bool channelMessage = (unsigned long)req.cookie < c_max_channels; + handleTextMessageResponse((unsigned long)req.cookie, id, MessageStatus::deliveredState(channelMessage, ack)); } else if (req.type == ResponseHandler::PositionRequest) { handlePositionResponse(from, id, p.rx_rssi, p.rx_snr, p.hop_limit == p.hop_start); } } else if (routing.error_reason == meshtastic_Routing_Error_MAX_RETRANSMIT) { - ResponseHandler::Request req = requests.removeRequest(id); + if (!ack) + req = requests.removeRequest(id); if (req.type == ResponseHandler::TraceRouteRequest) { handleTraceRouteResponse(routing); } else if (req.type == ResponseHandler::TextMessageRequest) { - handleTextMessageResponse((unsigned long)req.cookie, id, ack, true); + handleTextMessageResponse((unsigned long)req.cookie, id, MessageStatus::State::NoAck); } } else if (routing.error_reason == meshtastic_Routing_Error_NO_RESPONSE) { if (req.type == ResponseHandler::PositionRequest) { handlePositionResponse(from, id, p.rx_rssi, p.rx_snr, p.hop_limit == p.hop_start); } + } else if (routing.error_reason == meshtastic_Routing_Error_TOO_LARGE) { + if (!ack) + req = requests.removeRequest(id); + if (req.type == ResponseHandler::TextMessageRequest) { + handleTextMessageResponse((unsigned long)req.cookie, id, MessageStatus::State::MessageTooLarge); + } } else if (routing.error_reason == meshtastic_Routing_Error_NO_CHANNEL || + routing.error_reason == meshtastic_Routing_Error_NO_INTERFACE || + routing.error_reason == meshtastic_Routing_Error_PKI_FAILED || + routing.error_reason == meshtastic_Routing_Error_PKI_SEND_FAIL_PUBLIC_KEY || routing.error_reason == meshtastic_Routing_Error_PKI_UNKNOWN_PUBKEY) { + if (!ack) + req = requests.removeRequest(id); if (req.type == ResponseHandler::TextMessageRequest) { - handleTextMessageResponse((unsigned long)req.cookie, id, ack, true); + MessageStatus::State status = MessageStatus::State::NoChannel; + if (routing.error_reason == meshtastic_Routing_Error_PKI_FAILED) + status = MessageStatus::State::GenericEncryptedSendFailure; + if (routing.error_reason == meshtastic_Routing_Error_PKI_SEND_FAIL_PUBLIC_KEY) + status = MessageStatus::State::RecipientKeyUnavailable; + if (routing.error_reason == meshtastic_Routing_Error_PKI_UNKNOWN_PUBKEY) + status = MessageStatus::State::RecipientNeedsSenderKey; + handleTextMessageResponse((unsigned long)req.cookie, id, status); // we probably have a wrong key; mark it as bad and don't use in future - if ((unsigned long)nodes[from]->LV_OBJ_IDX(node_bat_idx)->user_data == 1) { + if (nodes.find(from) != nodes.end() && (unsigned long)nodes[from]->LV_OBJ_IDX(node_bat_idx)->user_data == 1) { ILOG_DEBUG("public key mismatch"); nodes[from]->LV_OBJ_IDX(node_bat_idx)->user_data = (void *)2; lv_obj_set_style_border_color(nodes[from]->LV_OBJ_IDX(node_img_idx), colorRed, @@ -5704,18 +5772,17 @@ void TFTView_320x240::messageAlert(const char *alert, bool show) } /** - * @brief mark the sent message as either heard or acknowledged or failed + * @brief mark the sent message with user-facing delivery status text * * @param channelOrNode * @param id - * @param ack + * @param status */ -void TFTView_320x240::handleTextMessageResponse(uint32_t channelOrNode, const uint32_t id, bool ack, bool err) +void TFTView_320x240::handleTextMessageResponse(uint32_t channelOrNode, const uint32_t id, MessageStatus::State status) { lv_obj_t *msgContainer; if (channelOrNode < c_max_channels) { msgContainer = channelGroup[(uint8_t)channelOrNode]; - ack = true; // treat messages sent to group channel same as ack } else { msgContainer = messages[channelOrNode]; } @@ -5729,13 +5796,18 @@ void TFTView_320x240::handleTextMessageResponse(uint32_t channelOrNode, const ui lv_obj_t *panel = msgContainer->spec_attr->children[i]; uint32_t requestId = (unsigned long)panel->user_data; if (requestId == id) { + const MessageStatus::Presentation &messageStatus = MessageStatus::presentation(status); + // now give the textlabel border another color lv_obj_t *textLabel = panel->spec_attr->children[0]; - lv_obj_set_style_border_color(textLabel, - err ? colorRed - : ack ? colorBlueGreen - : colorYellow, - LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_border_color(textLabel, messageStatusColor(messageStatus.tone), LV_PART_MAIN | LV_STATE_DEFAULT); + + if (panel->spec_attr->child_cnt > 1) { + lv_obj_t *statusLabel = panel->spec_attr->children[1]; + lv_label_set_text(statusLabel, _(messageStatus.text)); + lv_obj_set_style_text_color(statusLabel, messageStatusColor(messageStatus.tone), + LV_PART_MAIN | LV_STATE_DEFAULT); + } // store message break; diff --git a/source/graphics/common/MessageStatus.cpp b/source/graphics/common/MessageStatus.cpp new file mode 100644 index 00000000..2ec189e5 --- /dev/null +++ b/source/graphics/common/MessageStatus.cpp @@ -0,0 +1,52 @@ +#include "graphics/common/MessageStatus.h" + +namespace MessageStatus +{ +namespace +{ +constexpr Presentation sending{"Sending...", Tone::Pending, false}; +constexpr Presentation channelImplicitAck{"Delivered to mesh", Tone::Success, false}; +constexpr Presentation directImplicitAck{"Relayed, not confirmed by recipient", Tone::Warning, true}; +constexpr Presentation explicitAck{"Delivered to recipient", Tone::Success, false}; +constexpr Presentation noAck{"Failed to deliver to mesh", Tone::RetryableFailure, true}; +constexpr Presentation noChannel{"No channel selected", Tone::RetryableFailure, true}; +constexpr Presentation genericEncryptedSendFailure{"Could not send encrypted message", Tone::RetryableFailure, true}; +constexpr Presentation recipientKeyUnavailable{"Recipient key unavailable", Tone::RetryableFailure, true}; +constexpr Presentation recipientNeedsSenderKey{"Recipient needs your key", Tone::RetryableFailure, true}; +constexpr Presentation messageTooLarge{"Message is too large to send", Tone::PermanentFailure, false}; +} // namespace + +const Presentation &presentation(State state) +{ + switch (state) { + case State::Sending: + return sending; + case State::ChannelImplicitAck: + return channelImplicitAck; + case State::DirectImplicitAck: + return directImplicitAck; + case State::ExplicitAck: + return explicitAck; + case State::NoAck: + return noAck; + case State::NoChannel: + return noChannel; + case State::GenericEncryptedSendFailure: + return genericEncryptedSendFailure; + case State::RecipientKeyUnavailable: + return recipientKeyUnavailable; + case State::RecipientNeedsSenderKey: + return recipientNeedsSenderKey; + case State::MessageTooLarge: + return messageTooLarge; + } + return noAck; +} + +State deliveredState(bool channelMessage, bool explicitAck) +{ + if (channelMessage) + return State::ChannelImplicitAck; + return explicitAck ? State::ExplicitAck : State::DirectImplicitAck; +} +} // namespace MessageStatus diff --git a/source/graphics/common/ViewController.cpp b/source/graphics/common/ViewController.cpp index 451aa191..5e17eccc 100644 --- a/source/graphics/common/ViewController.cpp +++ b/source/graphics/common/ViewController.cpp @@ -1043,6 +1043,9 @@ bool ViewController::packetReceived(const meshtastic_MeshPacket &p) case meshtastic_Routing_Error_NO_INTERFACE: case meshtastic_Routing_Error_NO_CHANNEL: // invalid channel or interface + case meshtastic_Routing_Error_TOO_LARGE: + case meshtastic_Routing_Error_PKI_FAILED: + case meshtastic_Routing_Error_PKI_SEND_FAIL_PUBLIC_KEY: case meshtastic_Routing_Error_PKI_UNKNOWN_PUBKEY: // this response is sent by the other node when encryption keys differ (outdated) view->handleResponse(p.from, p.decoded.request_id, routing, p); diff --git a/tests/test_MessageStatus.cpp b/tests/test_MessageStatus.cpp new file mode 100644 index 00000000..bfd0a78a --- /dev/null +++ b/tests/test_MessageStatus.cpp @@ -0,0 +1,42 @@ +#include "graphics/common/MessageStatus.h" +#include +#include + +using MessageStatus::State; +using MessageStatus::Tone; + +TEST_CASE("MessageStatus canonical inline text") +{ + CHECK(MessageStatus::presentation(State::Sending).text == std::string("Sending...")); + CHECK(MessageStatus::presentation(State::ChannelImplicitAck).text == std::string("Delivered to mesh")); + CHECK(MessageStatus::presentation(State::DirectImplicitAck).text == + std::string("Relayed, not confirmed by recipient")); + CHECK(MessageStatus::presentation(State::ExplicitAck).text == std::string("Delivered to recipient")); + CHECK(MessageStatus::presentation(State::NoAck).text == std::string("Failed to deliver to mesh")); + CHECK(MessageStatus::presentation(State::NoChannel).text == std::string("No channel selected")); + CHECK(MessageStatus::presentation(State::GenericEncryptedSendFailure).text == + std::string("Could not send encrypted message")); + CHECK(MessageStatus::presentation(State::RecipientKeyUnavailable).text == std::string("Recipient key unavailable")); + CHECK(MessageStatus::presentation(State::RecipientNeedsSenderKey).text == std::string("Recipient needs your key")); + CHECK(MessageStatus::presentation(State::MessageTooLarge).text == std::string("Message is too large to send")); +} + +TEST_CASE("MessageStatus distinguishes retryable and permanent failures") +{ + CHECK(MessageStatus::presentation(State::NoAck).retryable); + CHECK(MessageStatus::presentation(State::NoChannel).retryable); + CHECK(MessageStatus::presentation(State::RecipientKeyUnavailable).retryable); + CHECK(MessageStatus::presentation(State::RecipientNeedsSenderKey).retryable); + CHECK_FALSE(MessageStatus::presentation(State::MessageTooLarge).retryable); + + CHECK(MessageStatus::presentation(State::NoAck).tone == Tone::RetryableFailure); + CHECK(MessageStatus::presentation(State::MessageTooLarge).tone == Tone::PermanentFailure); +} + +TEST_CASE("MessageStatus maps delivery context") +{ + CHECK(MessageStatus::deliveredState(true, false) == State::ChannelImplicitAck); + CHECK(MessageStatus::deliveredState(true, true) == State::ChannelImplicitAck); + CHECK(MessageStatus::deliveredState(false, false) == State::DirectImplicitAck); + CHECK(MessageStatus::deliveredState(false, true) == State::ExplicitAck); +} From a8b12c8621de8a9ef594a9b5e6c25e81da83dd44 Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Mon, 6 Jul 2026 13:46:30 -0700 Subject: [PATCH 02/16] Fix restored message pending status --- include/graphics/common/MessageStatus.h | 4 ++++ source/graphics/TFT/TFTView_320x240.cpp | 25 ++++++++++++------------ source/graphics/common/MessageStatus.cpp | 17 ++++++++++++++++ tests/test_MessageStatus.cpp | 14 +++++++++++++ 4 files changed, 47 insertions(+), 13 deletions(-) diff --git a/include/graphics/common/MessageStatus.h b/include/graphics/common/MessageStatus.h index 36ff9dcc..0250e59c 100644 --- a/include/graphics/common/MessageStatus.h +++ b/include/graphics/common/MessageStatus.h @@ -1,5 +1,8 @@ #pragma once +#include "util/LogMessage.h" +#include + namespace MessageStatus { enum class State { @@ -31,4 +34,5 @@ struct Presentation { const Presentation &presentation(State state); State deliveredState(bool channelMessage, bool explicitAck); +std::optional inlineStateForLogStatus(LogMessage::MsgStatus status, bool livePending); } // namespace MessageStatus diff --git a/source/graphics/TFT/TFTView_320x240.cpp b/source/graphics/TFT/TFTView_320x240.cpp index 8bd62c1b..a41c2929 100644 --- a/source/graphics/TFT/TFTView_320x240.cpp +++ b/source/graphics/TFT/TFTView_320x240.cpp @@ -4553,19 +4553,18 @@ void TFTView_320x240::addMessage(lv_obj_t *container, uint32_t msgTime, uint32_t add_style_chat_message_style(textLabel); - lv_obj_t *statusLabel = lv_label_create(hiddenPanel); - lv_obj_set_width(statusLabel, 200); - lv_label_set_long_mode(statusLabel, LV_LABEL_LONG_WRAP); - lv_obj_set_style_text_align(statusLabel, LV_TEXT_ALIGN_RIGHT, LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_text_font(statusLabel, &ui_font_montserrat_12, LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_pad_top(statusLabel, 2, LV_PART_MAIN | LV_STATE_DEFAULT); - const MessageStatus::State messageState = status == LogMessage::eHeard ? MessageStatus::State::DirectImplicitAck - : status == LogMessage::eAcked ? MessageStatus::State::ExplicitAck - : status == LogMessage::eFailed ? MessageStatus::State::NoAck - : MessageStatus::State::Sending; - const MessageStatus::Presentation &messageStatus = MessageStatus::presentation(messageState); - lv_label_set_text(statusLabel, _(messageStatus.text)); - lv_obj_set_style_text_color(statusLabel, messageStatusColor(messageStatus.tone), LV_PART_MAIN | LV_STATE_DEFAULT); + const auto messageState = MessageStatus::inlineStateForLogStatus(status, requestId != 0); + if (messageState.has_value()) { + lv_obj_t *statusLabel = lv_label_create(hiddenPanel); + lv_obj_set_width(statusLabel, 200); + lv_label_set_long_mode(statusLabel, LV_LABEL_LONG_WRAP); + lv_obj_set_style_text_align(statusLabel, LV_TEXT_ALIGN_RIGHT, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_font(statusLabel, &ui_font_montserrat_12, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_pad_top(statusLabel, 2, LV_PART_MAIN | LV_STATE_DEFAULT); + const MessageStatus::Presentation &messageStatus = MessageStatus::presentation(*messageState); + lv_label_set_text(statusLabel, _(messageStatus.text)); + lv_obj_set_style_text_color(statusLabel, messageStatusColor(messageStatus.tone), LV_PART_MAIN | LV_STATE_DEFAULT); + } lv_obj_scroll_to_view(hiddenPanel, LV_ANIM_ON); lv_obj_move_foreground(objects.message_input_area); diff --git a/source/graphics/common/MessageStatus.cpp b/source/graphics/common/MessageStatus.cpp index 2ec189e5..8cadc0be 100644 --- a/source/graphics/common/MessageStatus.cpp +++ b/source/graphics/common/MessageStatus.cpp @@ -49,4 +49,21 @@ State deliveredState(bool channelMessage, bool explicitAck) return State::ChannelImplicitAck; return explicitAck ? State::ExplicitAck : State::DirectImplicitAck; } + +std::optional inlineStateForLogStatus(LogMessage::MsgStatus status, bool livePending) +{ + switch (status) { + case LogMessage::eNone: + return livePending ? std::optional(State::Sending) : std::nullopt; + case LogMessage::eHeard: + return State::DirectImplicitAck; + case LogMessage::eAcked: + return State::ExplicitAck; + case LogMessage::eNoResponse: + case LogMessage::eFailed: + return State::NoAck; + default: + return std::nullopt; + } +} } // namespace MessageStatus diff --git a/tests/test_MessageStatus.cpp b/tests/test_MessageStatus.cpp index bfd0a78a..f4a36ca9 100644 --- a/tests/test_MessageStatus.cpp +++ b/tests/test_MessageStatus.cpp @@ -40,3 +40,17 @@ TEST_CASE("MessageStatus maps delivery context") CHECK(MessageStatus::deliveredState(false, false) == State::DirectImplicitAck); CHECK(MessageStatus::deliveredState(false, true) == State::ExplicitAck); } + +TEST_CASE("MessageStatus maps log status only when inline status is meaningful") +{ + CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eNone, true) == State::Sending); + CHECK_FALSE(MessageStatus::inlineStateForLogStatus(LogMessage::eNone, false).has_value()); + CHECK_FALSE(MessageStatus::inlineStateForLogStatus(LogMessage::eDefault, false).has_value()); + CHECK_FALSE(MessageStatus::inlineStateForLogStatus(LogMessage::eDeleted, false).has_value()); + CHECK_FALSE(MessageStatus::inlineStateForLogStatus(LogMessage::eUnread, false).has_value()); + + CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eHeard, false) == State::DirectImplicitAck); + CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eAcked, false) == State::ExplicitAck); + CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eNoResponse, false) == State::NoAck); + CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eFailed, false) == State::NoAck); +} From 7804b03eec1af4bbf6a21220f001f77b020c42cf Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Mon, 6 Jul 2026 13:53:34 -0700 Subject: [PATCH 03/16] Add MUI message status evidence --- .../all-message-status-states.png | Bin 0 -> 51361 bytes .../channel-implicit-ack.png | Bin 0 -> 7697 bytes .../message-status-evidence/dm-implicit-ack.png | Bin 0 -> 8269 bytes .../encrypted-send-failed.png | Bin 0 -> 8685 bytes .../message-status-evidence/explicit-ack.png | Bin 0 -> 7602 bytes .../message-too-large.png | Bin 0 -> 7888 bytes artifacts/message-status-evidence/no-ack.png | Bin 0 -> 7312 bytes .../message-status-evidence/no-channel.png | Bin 0 -> 7378 bytes .../recipient-key-unavailable.png | Bin 0 -> 8389 bytes .../recipient-needs-your-key.png | Bin 0 -> 8481 bytes artifacts/message-status-evidence/sending.png | Bin 0 -> 6838 bytes 11 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 artifacts/message-status-evidence/all-message-status-states.png create mode 100644 artifacts/message-status-evidence/channel-implicit-ack.png create mode 100644 artifacts/message-status-evidence/dm-implicit-ack.png create mode 100644 artifacts/message-status-evidence/encrypted-send-failed.png create mode 100644 artifacts/message-status-evidence/explicit-ack.png create mode 100644 artifacts/message-status-evidence/message-too-large.png create mode 100644 artifacts/message-status-evidence/no-ack.png create mode 100644 artifacts/message-status-evidence/no-channel.png create mode 100644 artifacts/message-status-evidence/recipient-key-unavailable.png create mode 100644 artifacts/message-status-evidence/recipient-needs-your-key.png create mode 100644 artifacts/message-status-evidence/sending.png diff --git a/artifacts/message-status-evidence/all-message-status-states.png b/artifacts/message-status-evidence/all-message-status-states.png new file mode 100644 index 0000000000000000000000000000000000000000..7d97186e2e57d2e241deb7a2e6e2071733199a5a GIT binary patch literal 51361 zcmeFZ2UL_nyXV=UB1jemBnl`y5D5OOm(Nuo z5KMmv~f zsIn@W6w{SSMJWm!Z;Pl3yXIH>B&?5z+jdm%6uA~nw%sRgsi$LS(Q-7DsV=?sTlVF{ z-P=mZ*^iz<<{^5>2*1GSi|OvCa2-LWcbxR}^w{9$M;vC*h}+-|wgLFzIfq9Mf%s$n z;{(M*e+&r3!XJVKfqccl{O^1*hY{MnC@3W83de^Wi6M3~{cTMfOiP-(<{b#OCsfs6 z8%~ppxI3VG5@Ehqg1pQhi4M@+Q2i#S<<-rxF#PwDQj6w&=&e>l96IimK3jxUKO>_G z>|;}-^a~k&9-f!)-}i(Fd!9MGdL6ajL8e)}bl{G#O;uznC~iJkjJQ=-m#SM-RJ1MU zhZ?@pZLl)s;u`3ETf4VXWxZX3NaEv!eD%Gc2G#m831JLGbeX(sY01W*x<{dd)^FU_pZpxbQ6 zZ+^zVQ=X3H;T)kbfh ztim!y!Qp+j_xp9GyPI1T*F@FP5jrKMnh$mB=JRlx?WL_Avx)*1*8WsMhJs?oKmj4a zHZk&o>g;SzDAav#&ZohRSaOnL@V9r2hmz>>+!Bum%7sv=AMyQBC__^9IWznA#Bw)$ zvRZ*IoedE@sN=%Aafh4TtoPx@NM426gi{?U|DC{}9Vj9t{o=^$HZple=dD1T zKqAsmUauC+x30%KMcRJ#-hxg?7K`3&;T9&2F}nmbh0&cVcS%&Ezkr^pRM762Fk02U z(!W8G;rkk%i@ds|D{M?j`4LI9;bvfA5w8^NeR;V{b}!QIt0E$hK5D$XyKUrnI*}Wn zBCN6bO2x`*d?163Z>n{8cyMq(WXU8bo^Ky)ttxa%YT&Eb7xRF7s4snWVge`V=SEi-a>kZ3Vb`d%a*+R_zo%49GC43E;R?YN z@vCKM_SB1$6UDwh*{q?3Ok4E#SMAs}FY}a@`HwuCRPw&t@$>UOeOp)^%*w%%A1NE( zyeFBZrj-y6<7bu2Q+_l361%Ld31-10p`}do# zuGq)2rpO1+cD%GR6Uqg?@fNOAp>PpUQ0b|N8*j8U+RZ9vre|hEL=Jkz0t>BeY>rzn z_>zmjn~~3LM)-F_qr++Ktz&Q;9b3PB%bk)r*)Dhj<+o=juVD&AjEzm<+&p%5^@43# zjQo&dt4_EKjHHF?mcv{=hee22nn$$p1+SPz)B2A2cbaHX6)#6mg%E&3FCTr0EG;#B z{aWT^x1^+q7ny5qqjPpNY!#c&DSquM@vfkuA^o`|ewP7fPlK)bbJ=J;dq)f78^U79 zg%5D;gWdQ}1FoViDira*G-cd?^WM^mtfb_$s0erf_OAB2wndp073-u-WMqfY>}55u zAhpR2Hoz7wO96E)n zNTcDXjVwf3dbZIm%tg9L-po3<2RQVNyKatGG>UwRLccqyN{hy!=XeD zHa33-eAr40WzT$TNQEF3R3G_uVBkbJ#P<#uELj&%vEl1SCGXiiJJV9cnLtvI6+{iR16g}Q*9G)5EMrKF{$q*cNmwBX^5jm>GkZa!<#-{2(2V}f6c zF>=^-;zG&suq@wBl(mNBMgRVlDPz32n6BNdlQVpOWmRAP)zhYSufxfzQp47Er6iY? zUpSjNgQE_ocF1a&LxQMZb82d;WX9S2*4vH3L2u(19(5r(tBbg#IwObf#yb!>O&UpBpC+ z%S2=|K2}KKTFx?TW$EfJ$RA2Tr8_??c2=wM=EV#5Q5qx+fPGG|0Z!f6F1 zPoG1+4lBbA@X_pR%|F|Ew<8KPJUqQXH)+C7OEaVn_h8Ks6b=IFg3;%H5joEwjTiR$ z9`;R^*o{A)fnN>@1SJN(CH76Y?$O=hleDz7lBSc%oOIuMi@|Tst9?cK@U+%>@?G6Zi>Q#0 zj@AS+;7n%hNHsg_riI&q&r#mx2xMZ^pFr}Q~tehNkGqZ3i!6BFUp`oGk z!&UIniYIBYBSKg}pti2=HO#}^T|Ql`sj;zf>JSrxfF4<5&+X(F73r24y^xia)yCi2 z-d=VRq%-M`V^3dLHg|MOs8(>z}#1}@QtBoJg9uOLh^I^!Ij?Rm8DYu9$7e0eBKZkvbo$&;6Ia+KU=^6u{L z($dm)c6JfH*pR{?RFIxOWQQ2^_HNVZ>}tB7@A<(p0VQtG&rhE|t*u$;>mw&B%vCAJ z3g434zki&5jXt=q2^p|fh7Sl6{UA(#`AGKV%kesAbM1A?2M^BMDeW5%`-D9_JV2vb zLkN-euAA}tzLqw7olNOeV%}$<;%o0FFrImV0<1v+NMI{FD=R1MHxO|QGT}DBnm|u8 zGc(^Nq-pfMMD5HpXclQLZ)|9(sa3jdPcAGh&?I0(TqrikJnA#&yZ-(r-1`c#{ z^jM$wcrT^V2^`FXlrRM9#ibz*nho8LxU4A_Pyc~R(3ih|zZ_=wI^78i3)@yq zpQ^E^hu4njjSr~X{x6dJZ zS~+t{uTLI+e134y4Fw}0Pp#hP;-o;cL}h9bEIaNCI8Z3GNW<%7Yl2<7nn#00Vy-?w3wfZqV``jH#)~$ut4S_Y{bQZ(7@OKG#p%Mn_L(V9279 zlIw*~=oPTw$Bc}9>EilXD%(>vyGxzXYLtg{RqzuHIqq=N{U0j7jP~Kzm-eBV+B#;! zx-ATte>`7Hfg8Tqcfmge0byYh$(xuGl9H01o+x0?pqX`My%c3{uSIFD)(2&6OIpeF~%G=g_GgKq8U7 zy|$ohE>3s-RuauWg@$H+18pexJhqCJJ>DoN$p(vbUESkHj~+2GLEn~}TmUy!vxI<< zkl&W=?ngc_=OiW7yYDaPHnN%Cm!5SxX_1iw)6-j^GRw=y)6V_2)3uJETcv_4(N%2(t7gq^!&wiK--?tLp`OyF z4p}8qyWP5h0~~8PvYUHSrDnZJ>x@=bR=M1h_4V~qAq18@N$I{QW_EVl4MbjG*dc=9@0{pFiW}sco#S3D`~7Zf$LWNi=U{qsi;E%Y^IjwcGA&ks3>hUXzxV77J-8 zlYD{$XkJXry(%pqFwGwv9Jra0laNFwCwrmK9Id!IJ3A33pQR&cbaizvK?CzgHoD`X z{i(v59AN8NZ94^aLlx!aVA90Gr!aARy>c-+I;t{bH(uH@J1a&Q^YGw24w)npTTi2mm@n5|@B_}6GL`1AJ*@Wps z$tfr(NJtjf*VnhV*-1km-~~rVtGc@Kx|XyU<%PYc{ZhWng|ICYpSb1*e%M< zwJ_%*ARti5L!4!*vDhAW+Ja#h8ldu29(!=zMV@hZ;hP#uY@3g^9`b1-m;^B}FeWA@ z0*TsgAarA6W8b}dH`>$dy=}`rjQ)`{YwhR~+PziEO1=ktYviAalbI`#jg{5#-vKnD6X_VBBtEs9Qv8qB)<&qIm z_w~w>5*9LtX2Od8OI_p!L?5%W_l}LhzziWmqeLIIHC|>6-Umj0{rWX2De2d*UxkH* zmc!YCLPAagDY#@DXXod=2~S)5`s@b3z1YrSUPhlEf}sPJYY`gzEA%<3ACpYZ@Wj+q z#l)6eJjeOPMSl`+Xvbn0l^~axm>4hbNTsQ?bZ}@W?#M$C5j1Exsc>cOlS7|NG&=Xh zv&r}R>ax1JT1o8u(eZoFwomuH#l%@ytQLNKL%WGW_ynircIw zveU%A>39^8r%FgAum`4H``Jc828PzkEXfQ`KKJdaF+TfQ9W5=Z}+g2J455+ zXJ8>?)2&CewgwQX=DB905sB_-c0KVf5I)2XpbmCnrYQh^xU zM?mN99{s4hiGKr&Lqhz0{8z&tKOS3v5M(pKF2?^vuO8-)(sS9swSst3G~ZdD|JF>F zih57sFLtc{5_?YZ8J3h%t8wA#!+<|dssonI_AAab+6>sx*qM7k$WM2n_jti+#@;S( z{ZMk)hJQM7JO(Rfvw!-V*B#D1Iv=l>qsz9UBfLLKgkqaPc~W>%gc3(5n7=rWqSmth z&zPz^;eRKBY5?{!|A@I7JbPODHn8QP4-F#+)lCq3B|&@?qXQmp9`J1-w`s+?FRW6%Rn&yHM_O+XdRW)o^uFkOI zc^>r6CMLgY89;@;^7DrT%Ybb}FTWYK)7>mRd$h>Sr zw^ur~2y2QghZTY*A!XuY^8}1V)l6mkwBs9{Hfj$aRb4~Bz3+U8ToqLD2^O@z;>|eQ z-wj}|PG`uwRDB-Q@-8HeY8WocBfoT07}u89V}EtY+M_4N=D%`o!Tt8+I(Jm?vy}bJ3-ms zWy~;f%o1WurUMswrMtu7ce#$T%$(q=Tdk*VYzRsf@OLNwnVFsa&ZnZw?xONNQ-G;2 zeNo{%>MHXOvK=nV>*5LS*A?cD#&v#MTn4y^--Qkf9FE9fg`-UZ3^Haivs#(N#sREo-1gLj%Nw$VGPTQ|`R&M2-5Dy}kdyCRvk$ zYm@h<$u#mTe@s~TQWIUV(%C7bdHe8V=c4r5G?moKW$)<-p(!qt>gq(8k*1=D>s|`{ z4#%a=c?Xk_>l)FIy(gaMg~&wuL7i9IQ60|V{oQFB+Dh1oTMYfVb2+4;F+!s3A@ zgmVIxdkVeza&02z1ItX|dJ6Hr32Bw7;I{Z9LT2X7U%?c;)&BT zdonS(uQ!U}G7Cesz<7+=wU}UQ16eFtv7wH@msaIg%{n(NXn97Ccj#E>k=1uQy5QPe z`g~Ifx7fs^$hs~x>#XW_>g*3A*Np)>|M@6x8I^{Ir6+a680^qU%D1<71$$!=vRjn- zyjvva1opZoT((pzXlsS5e63c3(lM19U3U~gNP(KO$gMEMwuBq|M*_~sCo(~f&O0@~ zUMVz586~X-r)HmSq`oMcoJ#M_O%{tAM6k(rT3AEFntr%XHA;*)b65Goy?bPLjgWoQ zvsgw%Qo9_QyFXeN*5Loe?-3Bk{$$j2w9;p_a02_gdn{K+-)(&#35m;%AzA~ zg!@QAz84Dp)qrRIWAAsKy-Cr_lMA_+qqaR3f?)@lb}!zM8rfkLTzj28t^1FUN%>Yr zCyIquGwrL1;$ApS!HV7OK5)#JC&N1(DWE%Z&g!T4`I3wAQJg2u#fgseNC}fexr?PB z82@*VH0XT_`vkkK#H<@4RIq3I-8Scs-NP%}H@Az1#Mu!Z^%E=c zp7657jG8^l6ZxWWKhdclMk*Mi^Li`zHn?5CuBUbDPujquwRpN3yBJ(a@l)))Bc%ix zEpi=hE0MS=ESyz9x``z?HS_z#<4|>T%tDNVA6_W2ka*cEjuT**j*f24s|b3V(+^hMh& zwXmn34&>|WQ(X8zFT;~DU)}kPIbdDrnflv=YcX5lknoPxfW;0PeK>ODBKaY{WcTb< zbRhj}N5lC#Zu3ffd~jcq97T1+nAZiWYx$spNoiC~laPkXq$dyu4{H&mBh~D|HLB+Q zvkk@}Z6_J?^Tv$w4+GKOm!4;P^ZK?^qpdO!gE?I6I}~Ijtz_6;va(;4QmvS+NUaxQ zm?Z*kTdUnpD$qde_V7ZI zZAvOq4fWTKS6dUE5uz(|OD?S3+}mgme%L9<&&meTKjbXUFXuX6dgbBcQ$W+B`RMM) z+=jF_jR{2M3t$7ZaM(Y>a=*&Bz%@2D=8XvBJ#)=5K_xMdlcmm!prEGX>l+bI3i|vX zx3qX?IGo0@%MemiP&`-%iD@!yv!295kdJDpu~RQlBVkg?)~c^-h>wlgnypsQ(h_21 zZ0~F{_14i@7|hi7JC4nXi16qyni3XP`VcB7U?K|niO=HcvNxt_abad;<7hzB`7N+PK( z($r+i%iAD!@wvsI$8+Ih#mA4xEu=Ub*B2;}GFghXwN>*O`cO8{rR!*2qxi!CNZtlU zveWvQ$m@r0S{2*|x8FKHgl1>c`(%{dELF^Lc5)-25UI_}TMz9Qj~_vt-NuR|B_mr} z;j^j&=)g-!$pki1y5~~^dxyuHVOq8)slq1&1Xp)oN!S&GL|vAenNFS2taHH$hJ-}j z=}v5XT)uifEmVK!-7%(!llKiwSr9+Ha|c*d-m6#O6-X4O<#U;nek7#ZH`5@Q5lKYP z&N@}$(;&$)w(cSb+u3s$`Dc4A=5aD+lq7jAc=$_nhk5zpVq>PEY%%JZV`}Q1%T6r* zBP=7pctI#|dEo`DEFtMt2&+|So9o-HmiG3Q{UF?m-RaIc=T$>0cmEJaoO({^Zg8|J zVr{T&fBzKsPG5=$GtnK8D2*-9q?}UbEqq;&M+@T6W!m#DE! zSrS50+ZOj@;BgsI)fw~gL)La?Xo|Sm=H{z+?+C)fi+6VNZ<|LJu^@~l?n?Hg6K$QL z-LesTn``DuBsaH13$8YraDQc)LGDUsY zZycYVw(+@!=o)XE-zvF28a__8?-R?qGpxds_fV2SPOY|Cmj^S%4Z#v5Hl>(|rWIe&Qm+PM9Vc;Gq7`;Z)S zFJY12W7Xv8tRVRrR#c>wwcu2z`{uPUs7-(h$Mw}_2^pKN5E}~%H$!XJ6^7@@U6-ZY z*W9bU70XT|Eb7kA6^c2mzk844UwWg_Ha0dtg9&^S|+SBiS7!e_Ek-#kZ9evw)T#6&1#uRbg>&Xe8T|e0C-5k@^(Y-dG;KHI4gze6DcUjrlDGE8#3-M_z%{?qA7CXK? zB`q08jEw%tBPNQaw$7W(G_Ei1BCnnuS5;ZA_V*_U*W~3fU!2%ZA>muM{5h0a?sYOL zwacfm-MiB*C#R~IzM@@E<$AHAV6TrP(a-A=9)1evd#@{cHb)~v9h*eD-Ja_9#$m0zq}0Sp~12;bH$Xk zgS(Kz7O=2C^danMXY>R?i{FHuoi6>iAf6G)4PJm=x^Ub6DG`EEvRR_y^**!08U6VI z03Ld=S})&YhQbv9Q^g568sr9>dH;9#epOWeL7eKp1Oxuv0M`G=U%3BRIB*YFRGhKD z0cj#UzIbAwJz+OdPy(WJQeG!&>T2ZtScEiG;?66n>3)g|vh;x>*9YC2B|7KlC|BbE zkoi7K5vzo6vu%vi$C&Ro;l+WKNB{i@P$tXM1YGoFhxDMzEnw$=q}RW?2zBp2y>8&s>5 z&mV`bitDX`L#ZX?c2Mx>D8j|oK;Q5B8yem78E>OwU~eyhS+&{+?Wn!&_foO1-ZAs> z^SbFDk&zu{{fc6)ET^+g#bH-Z3@RoFv+(io0HbpYl)Lup(B4;3QQ5*`G6)wDQLR(_ z>`9F4@lq$#!-wnRWgJ_%fXJ$M41f}SPUm5U3Qrkuf;sA`YWCULIbdhNkQ;{TftX$( z5x}_|yY2xRfU!x8U-&}BD&JDvP%1?6L#XgcFaPr6$L(P{G`pY+0Chsk??~U@SNxEP zi9yt72$2USG4=cRUv)$j#B@~$-0gg@Hja^h!oGGU$%ohVADpN*SP#6S4 z^Sip7&HH}m7vRu=M^{GJo?n#5+|!LqBjS!M)(woTmgeE2HJw#e5)=?rNE4fB9p>g` z?p*kgZR;y52k41|l4@Jk-^+oK07?LhE&yMwt#Jl+zy1SV@ird3!q0BgY-I|Ao>md2^0zOfrbeBrxw3BJLFCAH7 zOPSnD^VCdUyH&8EURo)|9W`E-n#_-E^mN@QdUYVe?olaBz=3)P--~O%W zPAXwTOuE1}qh7tzXBxUqUYn!o9Qxr@qLTu&p$rsnsg@f8Zf}~D$Nc&Qa0k#cw!@>2 z)#D!V*JJ+D08W8!)cE;fvqG7eI3ESpQpNvG32(;BM<)kPj;^Ax z75M;ZhLRF^OcKCVo`m+E>>atdxS;6--)3rzjg9zt&H3+7&rJ10ecL~SQDECUZ{=Ap zn^#zzpPyIU*WVcx7YkA!?;AyAm~yIv0kVR)7zQ-c1Z>ABU;52p&GrZ%`|Iq$HX{~Ycwe6l!D@ux zdFZ-ZR8v!QMTJUU<(UPgxaF6pKiO4S?ji7-^uQ9FHwDl!dD4QS`A?yrSiTQsK^v8s zV@X$*XL`H9RiylPCBZU;DJ2D_eCpH`04e3NV)PXkgVCz0N-|<@`XZ& zd@(!vBpX0<_|`%pSATMBAlSYLiHnOZo3P=B!T1RyyekOlHYq5zeH;K+`R5I!`3zq-SP3U8>WPh?hJ6hwRrc4LfOs4>6SX= z;8WhDOb(IYmSH)@Ee%Zp8G>t6m1 z3Q97u%Sx>*mY#mNzVh70&JI(QasU?yN!U$2h#LAnrcE_D{v*7&Jg|s-i6nv%Mt}#PJ)^Cuy}7n!Q{UFv)`m8b+uGKpi>*eHN9Bd)<&pVa zzhia=4ms=6K~g>oM+8%O4H13}$mpFQNo|fX^dkYl`4xeli6HeWlr>bjy?*-%@r z#cd=kMM=W@@X7Cm5A4?&@L3CA&L<(Q8NT=K1W^~`qNxALo58P%Wb_mjU%p9r`G`yW zX>Yv;w*U{1%Woor5aaG;tf1gvd}=F{bxStfAF=$v*`pDlZmpT$IKF=eP|?uEDS*xx z#ZMBRJz2uNNwTnzrrVs-W(53xgqmiDd>Vke0_g{j1f8?{l1#Ur7pa(j&kCavpGCo> zm~HXN?vkE}cgG3V)pEXNBUDlXQ=qG9R$G`>(P;bV=*UcJ?>rujkjq{q-PY|g&4l=| z@o{o$O6%@r&-1fDLP|3W*z?60w(udROP!oW+?!OC$$tiXrpF$ZGjQx}2s*mQ_@D4p zUiM|AO9C!+-52ktz0jrgSJSpOHq!0|=p3->R6!3eqov;oozZ!!HGpwFj031)s_5>c zz+deh9qkyKt!QUc3+=dxZ096}bIU39a&Ob?xyocp@>8FDOfRKKfn{yNTzX5B1 zG8qYIY@ar;;{kTNC=)&)N(@=!K|tT!@WZVyad33LSj<;Xo1F#SG%_PMvco6S=>MXo(8)0+ zmJ~UwKW!(whJW~UI@I=E+<-{Rzv+a|?d-Y1_F>MAosokiTCMCGM@$*RS3N5E$#r}H zCy*U${{5xkd~BzBI1N_Axz@?=Wp0OsCAEoUP*T_~`Bq`Q^;3lS$FnZ=l<)Kx4}6aU zBcIZAjWB#S@-^0~n@eR)J7|v!J#P9ZlbR68b`4Q{YON+3T_>R4MwC4p;D*S0z;F8_=#*HerLuz&c zN6#x!u^bO%Pvf-?<&jC`7Qo0t>T|DQYIQ9?9BPIyx8I*$hvwFnlqN3g`!xh7??t;` z)~e`7ohVliXIlrb(UhH#b(@iohO?(`Fu=9DFFQ=3d7lmyT|S;0{#v~2N&EjEd4@0f zd)qlZSma8mAzP1_yK!OpmJq+p)v-;)DSSa~aOG zBLn9+`f8b3F-V?8M4nnGals`+xh{pk1}Pcw<`!7g6JpL^#` z_X1)V)IM%mv*yuY?!(oHLPo1nK8iouI5oh zcUpfs!JE4(i)K08`t~8A$9MVSp4gcAQhF=3>xvhfYOI8mO}&C>iYzClB9k!$zh_-+^YOyh2m-AB3(6cxjq>JWeFHo5 z80j*(^+_^OK5Fc=Q+Uco{ij%5d6*hu>^Ny$NRMwSET`0E8@GMimV*fq;U_9=afRHn zTT#Dq^eynv^2jCr5mAg_+STz}8Lcw6qfSUn*6p53S?8OONqgO*#7@fWS{PB>pmdzK z%IVj@=mk*16IjbKOSo3Qi2B@|!Bos^I-+r&^N*EylHWvQ^4jP_Mdc4vzLSR9sZFR` zj!)61tX5?;N4d_WRj70by`Gz6x3CdpIQpXhgjkP*C;7q(D;h;S;Cr0%OJ+t->6x@n_Hoo&#iCOc` zp6U14+7KFpDphjxzmN~y8^V|HB$dl^yI!(ZaQB~Wn}ZsU;9aA{@$x25oaG+XPOTd?-OEOv@q8%Zo-r*9arzQJt%M-oD9qESNXB1Md)LZ? zL{&OT_%_+5jye(ciTGqCNnO4vMlA=ws3OEHSynga4nVPG2Q!X2 zKAQ=0l>ER@leaKN_kN*wlBpnEI61-PW_>JB3RscPo^@8+Gx z^a(=L;)?{TnYPx@>aF;0krjLjQQZmkDuk_KU14h7`ZPHGrcc3HCFGW>vbyo3_-dQQ z#Vgaj&XL9UK^v8f*09P5VR0+>{SC$reazb4Wdw6B?E_SHTz`-o4(3_ZsEt9&Z`j^l z9$&7ywM5k~R`?gsn_IQxo8+fz(Vp!OHnYwy5{6Q1bW}fW>w46a{Vc$ylR2civX{h( zm`U-5FE{oY5spw)?{llR&laj>8p`?3#CO}dEp1q{FRQA{RRj~jY&N53SMV6q+pSgu z-mYx=SiV%h2<5d~a!z`|*NfN;)(9c?m+k`66)6|&`^u`jkqIkxhB@m^o~xsTuL1Vz zI^4mPl=Oo65C2+5MsAcHo9 zVZ8Uz!&q+3>!HZF@#@)$i<9Waxq?3+liqaBhg!7p;A_XdtOy>%+bnKpz8r!?3u;6Ei);@YA5#^P1BL+phc(smJ$O$;K~JHqZNt-B4xjL_MpPy@uu>m+)qo z;Kxs?6icvnY$s{#0l#24^?GZkAnHEz>5CdG_lUEy?G?kD{&quwsMumJW`}*Pp#}#W zih8^64IAUrTj}4?-#OaaA2#pU*>>Bb#1`s3$T7aA|NLhZ-2v-gpYQg;ZZ;#H8+-@B zTC3+YR}e-Tj9)c1?eT^}2IA+X-aveAg&O{L7qafT+H24D-J4kipw3y5pFc9emv}y9 zH-LT`QPgZzIucLgd57ZqpQj00Q+WNT-*TusGJ19I{&u(5Jz#k~87OF->(vV{A6Ot` z&_XA@fRN{cO3%SQ>py=|ZfSR{9+cYIM{GNdeYy*Uh5lqk+n%Hv?yCALM^n zdh(XjH>E)B(aXZ!lhf!y%o*l~%8C~f zzQa54hfIav-r&Fr*hf_Kmyd68d>&d}$G~&XmGGw-S!4u@=!?r{v>{V4p2wU0=0H(2AMDl5trPTkMhA0-T9ux@-KG}X+DRg>gukF zoG(p8GwqU*ihaI;I}qZ2jtWobdG+M(eKOKCVQ1;70Ztw+Cs1#|d)}v8`q&nFSYDBp zl?9qB2E*D~THq4n-~h?j5;&@BxTB+XW_U_lL$zYFqMsbEy^twQAUWZz_v*5hp5Ywx zU7PQu{qFqwTW!_Dw$*e^*(}v;C4Qu?iM==gC_si@-)<&fg{7nIm+}-`)WM&qd^s~h zei#<{=FdTLAj$!=nbpzL5@HdmPo;T&a#FF{4^K$?bQJUsKr%fE+^YaWaI>Gu*T`d3 zOq0j1i%pyWvE0Sg)$Pr0vkJdvUus_L0kRw8`t;1ddt(7064UjWRrB){B~McFSn)aq zWw)&C4jE}zegR0UFFAQ=V@&&cRmr;Yis}}O=+(Io>atZ=RoPZG*gt#r>hVf>LBzwz8x5#rJggg5L|>tL@2eLN)$iPL)n<;TtN~(N z%KUg(QkfdojlBk(Y$wBtUI8s%BfIm=F`5*|az`c;ZgEC*s9p)-Tf2ipfw!@Q1cZPt zRRK*3mG;&LZy)fowY8NArxrf^$dtR?+uMs30Ges;xw5^nqo=Lvd^*Y=EBW*h{rfhfsu8K- zfQngQVhkN&)|(50&#u)YlQ*GJ04$pr9|tmDsI7x#a5}hsl+Wy7>Cn7iPYA{##5Wq( z{Q@8JsEvEBesU5JP0YhN&H^cg$^1U(OD`jq1C%FWnLE$|16mURLIS*S5yg}Hp8)L* z)MrTV1TAM}G3O{9`iWZhf#aTuWcng!Bbrsbyofk}6?tBunoFHbQ{~;ZJ7~2T?f(rF z`Edke;00YgQ>p+lH6^Q)L!`Q9I_m0TWo5C>U|^7qp^k}s7l)@lRfX<+gou0t(^(UqUkfov!V`=ASq0p`|Ht*_{&ObZe-XR;3rPM2 zB>w`Ee*wwAfaG65@-HCy7m)nl1d#myfuNqhLdVz3aUfvw5A{0wQ@jkXJ2z-I$WUsR zTtL&<(}3#+kt~@fhEZ(@5NRVEg<{q^k5C@YjB}t%ATDb^8(9(fCVNsLsG#PzaCgF5 z<6OP9TkT_R0-9d6KpD(@lMG{eeGzv+YL9$VP@sC?Hmx!C9Dy>_T)F9wP8|i1k01qN zZOf<^|83PlajJmZgtPUo1^XR|!2caDTU;B=1o~ph0*>E2E^tT~ZD#6^fkqCkAKLNd z%Ma_ie0+QjZrh*2!hBw;-tZ^*>idoqdoJW5J-yLPy{r5R^fosS50LHD_rAV7C1ZP2 z3iP?g^!;?{qY|o5kB+>7Ud$h{mlvU=slqV3OVlyg8M*I%dl4!kB0|&N2!R~q`jBDP zHkkFL)B#1Co*wzdxCYoRP@>wKZSoRIq!?`W=e5 z$nSy!ZlPpQ4i=U#vRR0@SXRxQi3*uKH8(Fk$iP#e$A^s!M(A2vS_Tr)($a>WhLb=2 z+0n7u6&oi`Qg76DXSe}Wp3im?94ZA`IMWEkbL@}d;b1S5qm-V;YpqeUdJ94=b%_~9 z^h5Ob)YL_Z-z89LrUb`|dUx5OP(M%y^yQ^Edat#stBaD~j!nNA4Wz+%$?-%5nIWZj zfQlOhW^K-gwuRGKFMFW;7SEw;mGf3YLPASxGU2K5&(>CME-oi$XD=IRhygozOh8#pNa)Y;U7&4v33PzM@WsxTqJezf^lr1o)iE<#AwmjDoFjk_E1pB&t^#UDT-Ox{; zMvHZ|b#$h0kYM;LN?l5p{6n&4*5Z<=xew2C0*L#hCq_(j-;`;-02Uv=Nd~|DuS2W< zR0H>yx$&=qbbmGK{%X|yuhgik{;N^h znWZDwf4^MYzvB>5?G3~!i>kf@#=!8N`b$DG;I2Ad()$a;OfWnNXp9A__g;77j2}PT`JO>q?cdzhbX%ZfGql*{x<$6x+s-%b))CvX;Wy@M@Ku|(W*LEg@lTgDM4!5 zXa0HsByzb-)Q-4~cu>QJ7k9~Y;*0b)kkL9_8t$bo^5e5uoycR~QmhJ=X(`-&-yOrZ zT~nvq>V>|T+xh(SVKBsteI3Kc!w%wucCG zGvL|+-@T_uYk+3@$;49P;lYGwKqk3Tp+~Woz2|KOi>#-hdW9J@PV-QpvCC%k`<8o~>wUZ~Ch%vHC*!wg;OTEUHek^-Hm; z9r(_p3HCfCjE9L8iCBjytJS)n3r$6&2d{K8)+;1((w2n+80SbRYL{qhoM>slpuX%TcdsN(v}{>mFXLG7?pX-#cG8taziI$bNK5t2lGMS z2=t8Z4x~Wu2Mbzm*(RU;AMCvcP*vN$uZgID1i=6(QBXjMk~0WM&XO~dbIwteun_?j z$w@%6Z;iPtoPc_ybbs0vk`YJfk77Ho)woV1Y1`%Y{|L|KrYtE5 zy=6H4w574IB>tBFBaWh;7y@c*Lx0clOp#tW`f|$eBQsDoYy{hW!EFYT(K-fLtSN69 z=3j?pHXln2A2Xz^QYNJ&2p2O6MGbP7-kfk&U(uw)Cab?5t{SpH+MOTTZK1bEB3P#8 zTXCWL($D^DY*3KECv)B~czFNS3*X~^z|?d+M*kbd#x=)e!=e9$UgK=tN^RBmsJ7IA z)FLsi0?&qpyVVeiI!A(Bjlla!B>X=!AH5zzp*PP-vyTh0?R^E+#cj?C6S-ksdDps$v zJAbZc6Y_rv$ZF&X8yl%7hp&#G#(&u#K_BF1zt`x89QDcYX~ux2Hby>~^z7u!9G!~J_NJ=usF$w@_NAVlDd=Ph74@`~ zir#9$VK&P&%9Ch`IYoZ_8zrk~Y*17wcv-d5=EE2!_K0w-ce}`%tz0+4&YA^Nry*_f zr?tP`;IgO=W5l6&Oee7xGvqI>{)q0mnbY~T)Y{$yEy2gD#r96f>i`ucB|Vx!q`Y_ziIk^7=n4>d%}Md1At1QsLoA@x7eVih)9A0sKg zI4!Igko4E~Lll|WRma(tcwDD_#MvYJBOd(BR|C7+pE#-_ti7;Pd>UPa7mQ1~nMLl1 zLX8Zr&UrX7xF{PmyfKtpQ_<`59Vk04dHUO99BS4)$7aFWk?4U!GJQXh?juL>O+$l` zDB|YU+cTQ@^Y`#Ge`Q&Y{mP4+eOr4fXXMLS(#1?HNUT1Yhd>s2?Ra0pCqzcaHowNq zYi`cq-s9VsFPziFH|>aW$62v;GpzxInb5^_rOkVSO{p19llP<}w{6!4jm=vGcsW((>k-~@NVSD80yIC2Y z5jd}{a>pT_4t4jnYWL9z%?7tbG=AxTUQww|?1JT%%ddpXixt{wNB-?(gExeSGj2E* z5#OgUlz5<(S8iGHUcDD1**C_T@-j4Dg&%eYKRcMgzT74J|AOVV|F2s$1dOh%Ev%pK z%ChwFTtO@T2uX1L#QIBpE%P(WHHSxwTf*p(HP6e?nb8zWV$bo|yXteE$07(b3=&W7+>9 z5lygI;+3TK$jV5)c0A)SD8OE0;1B1hLi~}sx@z1=b!!Qu-R|}tIV5!`J)&o36mVa7 zSD6-oczEqsRqrcs9sxDtWf8PaTfd(qaxC~37d^(Lp z`D!NiMejQsCrUGOJ{!u(z4HvO;*2?xfB+oho+MBtAsbxtwKEfVJlW1yXKtC;qFIxY z_#ylnl=Hh0&TUgo0R*#@_cY^D{TqvwfMOAHw|gIgY4G4_Wo%3|Y7C)A6$`oXfTwr} zr2HqWC6vI(*m&o#IS67?{!G*i7+YWS7<8@lV^YtTC_tPKD0(F`FRtsQDOu>x*@l}U z`h=ermseLm;I2~6m#=dWxqTZnKo)#lXuc=6In=xd!xyq>f4m{}33x^ot3tZx)gX~E zgL5rQqom%~_w4Fbax!wg$w@VOLcmz)?-ta~kBzlkSpi+L8%7MV@RS`N(LN{cS(j*s zYlOnz@5^QVTVVt!Ezy1Ws@s4ZtxMNe1vsDGMee5V!pNEVh()=sy3M%uT zC>7;gRRw0|0zT!A`Dy>Nz1NwtA>!huW+pD4Y-pPVt0P7gl}7q=$@la!Yu!)wwW9D} z6Ns)I`kc}=Kg?WBeGMryH?VMb_jk%lD#9UMEVqyg@tHQTy0&g)cyOY@RW?%zH}o&V z5>4@=BYgw{ejpqDVOvD<(f2!n@3Sz?8;Dg@BqK=8y{_Y;d8wXUo|z77k>jc)%YRNB zTX>^l^-5A^r1uphr+}jml8zwM27-=4B_k82y#I?}t_p2iV8mFX=s@iO`k_w)*+-3t z-vy6Z;OOvm1)XP~S7}^Bn=CNM6zx;5s8pFFBPC_PZxCfx{HN?N4@_(d5tt5PUGBI- z+x*#NN(q1d?|BLh|L^`66vbfU%7{`q7)N`yA$BH&J*r-*v%iuL;XV*k2mw$(!kgY; zw)G}?E-t2mSq_V;xAAm)h(QBxp2^V%k2yH}7P@+cPTv!-8Lv-342X>pwQKBXr?sk! zi!+w&5n3Iq*U5?gEMNR@O^Z+8#kQ-T#z5d?Y=HxuEz zBkw64>i96W&D(Ll144t^kNZu&;Bg+L71BjS6yD|HfZ`vSFA+;f=jpdrUU}xuy?j!!(*K) zYhtP|AkFKNj6WDuxv8KKm92QNxhp3x12#I##MJ(N2){W6m*HKI_dGKCBL!kY$Sp!@ zqwn(nojgU^h^hM|n(aO=c*s^HrInOK^z}z12(g05Zf5gq2sy7$Kx4#g2fN~yofno! zNI|lQf;g*5uv<_POJcozdasO_(Zb3KS>}5JM^4hym5`Jqb&tJ<2~j&q9&2%y$0T^+ z?@rAw&h7V6QP(hgeYe{omFU1`9OQVC@9qx_J3vxX-yOOXAvc@Fg>LR5{baDHF~wRt zW;}cBW7CsFs!_Cle7bXH;L~Kn)}|2m4C`fyCVVQOUmH`kd)b|_4<#eHdfI0Hk|2^i zTL0a|7taVb7yu9pZpn|AyCyNYP0e3$eufnlh)6o%M-1X$oS1&^VC z`@#NBSSsrrB>L$%S0|)^=rTV)&nho}$JyzNsi{>(?E{wHzV_ULnLz4Wd*?1HDk_km zsl#R4&&8oRk)!&!(gyh{HELjD@KI4wZ)XpnjXDw1&(K0zYFyTnD$~+(KL6hDP8>9W z6dfL&u#7n7?1EbbeJ>Y(MgEEtBFnq$7pUiA@9cmZ6MCr==|_W~AyBD)+)d&O z$MPOg2p3oJ+zwO3VI9qdUpy}DKu1p+rO1Cf6+8?vh(dkz==)>~T!16>gW;iJK0f|L zJ4Yu+R^hSR-rgEgnFT@;CMz(eX`S{r?9l!7y9v9dJ}d8S=UnI->bmI5d<{3(iVD%R zUooAW!Z)A;?X#+oHSlq?F!|GMJtAcef>@%E45`izs8YiEwYy!iES@LFFGPl{9!BQ^ z7?#1-doaTIX=o6ak`=H{Wx6Kj!ouNqqdmWVJjcVrF6A-m^j|9CPN2jE|7{Lskm$>h z)z=Vd_>bhX4dL$}Vx#WdCZfF^+NCI0W;ca<6AzD^EwE)~)TsuVUI-9OIM*&-W_jT1 z`9qh&9+Jv7b8>K=Jb_H8-Se}AygUfxr6s^VLT?JJt~QTlF)z_HrJ>;*8iHQd*;4>m zRo|W@81UWaSI$?xZ)us)7Fl&ZsU)M*5)>G8)>~={!wos2&X$2FXae=LEFCk{^D9a! zTwUGGoq67b+$0w;!8#FHBV3s0TO`vEpveIcQlmf-tH@;)A#u#9qD;gRJ-^eb&Y zz#l3tKPbrF^rQsBl4Iq2?XqQw_D+Tp{J% zJzh4mZIhKjCWt7k&xE8n^IrZNR1g#kKaf}}p`xPYxpJ}*MtPcf^G%b(_Q{6v>}*W^ z=IbWI_c77r{62Afp>hIV99%-@HS?FK^Gm<;)=zf_tm`2w4TqG=2IQj<=vnMXVvFa# zv2W{*88QaKsIjppci&R>q-6GxbaShJiuLyJ5<(aTG#Nf-VUm}Zd7H@9{bRUNIbZN- z(mg6m!PlFDE6R-YY*mo= z3{fxxFE9p(i2Ly&`Yyqx05O7Tx2f$OIy?#Jysyf#dvoPOaMbS*cmUyB<9F-Z|Mb$~ zx54xMD!WOmQ^$p_crYCDcg>|aVqK_IMKQe@s1r4g>bP(ElA#g3=*P>!)AE=%O zQyw^->fJX|6tZO%6??n7$atN;EHlIIj2(#d?dlq|;Ao4aba!xYaCXjE--gUqP}G5` z?~>twk{uxUHmRngQwM%DkS$e`jE;|Y&O3?zjA7DA@mhH@P*<(HKHC}wV8fRePby63 zJEFl1r%WGxNus#m?%{AWS5diYXls*DeQ#@Pn{9X~@osZ#tHvpFzBjN?v!r>K8NR%H zB3J11bWk;cDfyOYdPYW&=*;p!wt08L5X$q)vo@v1XAiGA;BW8mpRXER)Plth3B8qf zXJ=Zen7BBJmcQCe9vC1KO2|hXR6v)7~2my}}?iobM#(0ObakDV)$J*(U5OIx%dVSKmphhH+K~` z#pg=6P$oc<0JI}5EzJws@4eL#NN#Sh8lu9_d+wMiDk`!Oj7<5*VnkvM+Vf*#?#YUv;hTVk&EyryH`%NAHu1Nw)R!wXrKYcm z+z$N%Dz6x+M=x?+z&@u@q@P&{wMTgC`yG9KeeDA9mz6=WPzAmtP+v|@PwDCD;S-%_nuFBK$k|MOLY2tHfZM&= z|3Zk$r0Ml_xRXG{1}^h!oH?!H70B4*bK|!lysz6p=olD)z}(;z>aC2NT#~RqLM9Ul zrP&@um&>)_Z0(OKh%qDUoDIkX+6gjlr->x1s=M53UxO7Atl0w&7^egv8hn)C;O0gf zh;{9CU|`_x?k?0~Fd8~{CvX~-#1YKS&sTtQG*al;0>0#>HWgkI6B82@5CE}ycM;;) zs{JDkcF=1p%MK9sH8s5i?HX`by44P8jg5_oiQ`Z-2OHBDUF^MgiHRk};T%lCUI&`r zAq@k0X=z7iXIUvJDFp@nQj_+5)HqxbataDNq~@dBw$RdWa=L>26ev0EGP7{0N9j|~ z^eSz}#_by$zyS+eY0Wgdn)d&WY1nL}*+YuFgKFHOeG0N)wHc@M}B4h|}rm%F;U!kDPv zfbo1(~&z#V_A9H28w5 z67qK|=0R&&q{|GAubjMmGKb|yPG@$5x>inYusb5-A{8tv9SW=tXA~jG%0CmSx%*~4()mgMzy=R zxk1h`+mw#7a$k=L85!A^7r9#i`5{-L#^JUj!pt;^BS;@uzMK+>=c>|&omAE%jM<>0 zxr&ZnT2^+0>MdqY9XLy2xu76E@d!Dtopltz*)TG@L=-#rQse3GG?>0zHkT?UY+CB- z!z)AiI<}F}nL$NJgP84PJ~dt4(^I7 zu{_{QN{j|epbC-XhW5XI7jQ$$Xlo}F6>UHZ;VF>voO-OpxD9^4K?U$2CnslUXsDK! z7HIjLU0nV+@DMZWZtmnQv$*tJ9v>YkqxQVc&d*L@ z3tFnrw)D#NJs>g11g<-5pTOm8}N7A)MUma6uxs z{ZznJOrR@)&lq`m!4|&;a^A(AUg1Xf4gC^LT}{oLkyV`vX$1wp6I7LXR~%JT`;^ye zL9R+R1&_mTXm+RSJ)ObdXekR5Bb!a6b&>5) zLqagAz90~OpmQ#&-|hf`an5T0e|I>Js(Z&r+9~Vk`GS>EHimK8!R{&OnV;lLQ?$aU zXKC!#an1R55NMe<&Vi|9XJ?l-Fg@)~mvq=oIT5wDpj|{A?Dty7BE_e;tAb z+Sk|D7IsWRHwngC>z>3bpIM%rp$i2LMVgwKfpM0aib~}1T_Pf)LY*pwjJ{uje*>is zH@tr9Hp5L7`>0UFZwj>UZQ6icw}aH;fso?Y`Q3^XhK?nCb_$d!5JuzLzk5PNxC z4ERsXOX8XLvGEesUsL+8{xSOfTg3fa&=7{D|LfINzdyzC7#R0oVXV}m9peld!i2=T zML-$_enO3y2_aUNlT0eLf6X74I#HZprH z-q<9#VVh7W?A&>{F{@G~{FcF~*tXQ^;BU#HUfoCn$(jv*`BR1dS#~DVe*|O^r38*! z*$cXHAB5awBGu;YZ1ig(bX3RdRUAB=Iy9oFJ8FzyFDK)}V7)eK-TsPQY2^B^v}&<8 ztL2QMe_2j5J z0$uKz|1Cl}j3c4mlA&iWdlDKWnHf|Ze|Y6|d`hZf_EdgYNn$kj{Uq@HE{)cfq^LDV z3IaeNFXW=z#F&#fpb*+9JxsZR% zr5AftjiRhoQ|>>(PSiTztFo@XAsjjq$*@OgiEqkpTg&xxmcA=8uGRR^$74@GxUcivK72mxa=koQ^U6W7Zgk`;Z1e2)?1qlI3kPY>FHnN+Z+Yu8+BLAtB<9v7 zHeLroe#BJB zE+oV*u#Ubef`8uOag>NqD8q4^Y44&UCgY7<$Fcz}-Jqje?9*)jIgd+5^snzCCnF#F z8}&A|ykyw=WczxQ(U{qi*BW7w^CEm%P|V;Wm0vuPtiTxcqalt z3XwN|jD6a-adV+s&zj^XrKxK>vQ;WRf275!!)V52bZqMb!)dS+qvEvREGWBD0GJ&X(0HH?5bz<3|z3{Jl z8UiB*TQ-(irh1PFJ4i+$<0U{oDpjiU!6T$tyf!0s;Go4Qzg^7}60KB|T6}jkey2p_ zefQF;`ZF=Q|0$JIRgJy#&C_ zA_u>*sqW)enxzyPYeW7-ldG+v`LUeElb2LZk@3G{IsAIOJG;><2FTb%T{PA_+rxQ( zmFX@+fy2+SM+AieIAW(t)Vo#go~-pN-F>F9oq_iHyG~UDtzJ*$8u`o!49ta|pQx0U z-ubt%DZh7CewW-%Ha1z-(QtM&&i1M;w6Z0yKIPjaPzv;r?#hWj9OzS@?x_ZPY#(1Q zc|W!!0rz?C$^3PdvHkDdTChAJ^$puDXN!7=vUgyshTm9K5_qyLzQlPT^41SZJ zOX`p{sMT2Rc6FLI^RRdtvp;M|DjKdzvQ3En!W(A$h5lxAKAu-r{fFi4)%F+MmwjUy zxIb$)T|{o;{mB0X%{NK~XBNMzUY`1Bj~z$Xt?Z$OLB1(u;jI}I$?(JlVpDz5ZsGF# z(R4UHEhH$g_s#-$*BdmD0*quHjwd^!*> z_E2}I^6LVSfCoQf*J|dz4zu@8Ri*x6qFhY7>yV%y_Hkj@5eU#s8B#@&xg`;L^TP9> zO{;;zj~ih|4SxppSnx_Vf3ZT13r(MQExe=A%i-B~tgE?~1+7kEmKC1lbeGadNzQ#+x?_E{6|3qBj`w7m;eekW1 z^r_BAhUOcvek~pQR($^WO1XU-lZG$*oZ>B}jZo*KVkc73uJ z56dl&WxwnK!?w_L%({m=Zj49OF*Aa-WGuWK}69pyT zkaB!j>)jk^q{lu76_O6!I{fTzyX|z%YzdBZ3H?-XZ|Jbo zOUSMp8#;W49UxJ}s_#YrAM=Cun>rN-Tq{Vp8xaE`g=cDUl&rLG%8|3*ha&fsvIIP< zK2Mox#H_+N0CLcLgSsJwQ|Mhok+mJK>8-KHUxj7RPy>*cwjsH-pL-qdExVyjZNWlq z=Jr!Whg=axJh3W&#>#h6%6+JjZc13~ z_xr(%F!pcyC+ml|Lw&`f0vvPYHrF?VL$NopNO)gi*O&cU>Xi=`&c8?`_6)Wyo?h&) z^9#M@yP!NY=N{Mb;u_nv5fy##@qsux)iv}$YMGMXM|+HPNj^oMUI!|Q8;pyw8=fl~ z4J{ei=;&{Ab_ryZWF7~gp$F_vtq$8%o>8=S)UL^Kkv@ng(C@|ce^kbv+Up(cxnXVY z7KJuJ>Ht^?+BdX+%xSI?T&{KFUVaM@rCl!8|4UwYaQO^m9j_W4CR~PSm!6MTSN<`J z!T853_x_RV@&D`>-mtzJTWiuJM4KRS;Xo@8A$DaXS}n;=+5YX|rN{o5=ddq3rFQQ6 zubcdi9iKA&4_nH$%5qjQf6h00tn-csN5a}vK{)=?oYCGDA;CX>k_WEu0~QqwI^Vob z@mRQ@9b_kjk47Ns)mwArhtVbH)c)X3>if;^;R1O)yulEXmDNVgs)*2ZwBxX_vf3iL z)8A`L`e{Wk39dUxc^tyCtuJg^rdnftZ!q!5$*(va{aGFuLZLuH3JZ9f2w#vzDYLTP zdGX@=ZE1P6p|rCT!G`)5Sqc@}1-Em{YfDQDDmc06LI`f(Cl_=Y%o%8lRFsn)$Qc4* zTsR(H$UaJ?qN*1r+@e4GfedKrhz9yYA?mhha3mS8U;iVbFjv&JX*TtkjT`da{SU0H zR`cjP*ovW@N5IODI6iJ^X>)lB#`^CvH+q@)b? zIIUSEtFNji7BybfOH%OG+Z%{$#Sd6S_4gykkz}c?ZX2U7r=LFN;c-3QwI$^mMJU8` zp_T%!4#E&$0Z&IoEt=I{-_>+J($lkYF$ycw>7pljeYawO&#WxI)l4y7Nbf%B_~0)G z9@uaDqQ;NnTkcI?#C4_^DYNcG_l57F;rSY?<;ZrGY-9{vYECsZ(vh#Z`GpjzAE|eC zlenyhx7OBrHHwCf_3CJ&L#RYFH+d7L~~HOj+&Q=$$6x(h|3oHCXRES3a?F^CjDf!)lea7{LaUZ zK0dyaUnlm8Q;W1sIY_v_>S}4L-px^ZcaPKRV8ozErzE|y*2~7Jls}|%?-1>*dn(u` z;1%*#d9t+_N{M)px1x-UKOq6Zrr2A9LqrA&yvGa~5pHK4ge&Y4EOpZH$(1j|3JoIP zhL+gg=Csj-JS%=*`MQYgSPgIQlPpf_1QL?0?xeBRtt(5;Xp$0=8XD>`M1-y+xV&u< zPmGPnC@2C6#3b9GjFW*4@I$~q^iWk*gC|UuxoH^>`574a8Nvwq(?()rKP|b|u5`#y zq;8<*#ISCJ{q^_>J$2wxInp^>krX#rr7g0P5Iaq2$*W%~v$Q-Xr!Y$*zwb{9-@Gd9 z8QR_23%@TkVZ&vwSyP%>GuGXqhrbGMG21~_SVebOa1bpl@)ND4Z|B6_<8H%T!r$lm zg2F=fR4iME@VUl>ee@8RdJ{%O_-B!LVR0ZrT}MUC_lH9`AHQu&Ozfw_&Uy5-_ic06 zpWHQ_Y#6gP7%0q8&fn=tTIRT?kjj&Wg*U%-R2Zpfa6VwT+6C8-jygt1J4#Dq78Y(c=+j2!s?p~U$zZYG z4^PH;^Xw5g&X{QlLtBxgDm;@Ys=!Z##0I-t_XX{At-QR%Eti{oPbMy}y@F^<%fpO} zhWduHc_*fMaY5Vp6n*{mNPLI3F+~q##AlQ)sZ|J)GW{ma?XYCN&g*GXgZ&d^X{sqg zeiKF|N|I4hj}&_Et#4$_tqlfql7vT_ntqVU9J7Itucsv8>${vNzWq5fHWFxFs7pp$ zx8OyTt!=~l^$Gq7Y{O)A@3WPmmXia1X59Ck$?5}E6_+gpPMz05@Tx}Pm)?}_c_);6 z)Y>9LY$udc1b40l-H>I)KE4Z2%Bq{EdGA89;Og8Wx9dXJ=%EKU!-lJ79abhAr{LLX zJbP4_Nz~vySj_%P1^5v&318rFb$dlK|FC3BQXd4P)`v;`|$gn zgK!F8D(=|Irz`9~dc935kp8vO&)l0rYC6`Zis})nN-()u;OK)*;u4QiPI(mV& zZKGG#|7>UA$tO(ye2b^T!b^FKmLeFKHF>o&NX{Tn~^A^Z^>-FFvRr_OKcSvw?UncR=#?qoZRl`y6or4 z^0u$q+Ig%|(uz zrleG+kU(8AAg!$b@|@!C-MeJE`Y&e9pzc20*_D%$ncX>p$563^#N*6adSq4y=dr)_ zXNC!jwKF@Ab=-TLOQ3f4c zpT*#Gb>bH*d;AxVY2{LMHS~OW*as?$myi{7slNN2uq+%^Sy5?bZYtmT^S4ut2D2V^ z*gF@p(--et>Sp*Zgl4YUs*n$$jUAxbB7eGIQvDs>h0TDSAi8EZO4o7#PNEDw)_Om#vYmBr7Yg#l$G3 zq;qrg`1;4U(tNiAyzeuxvN{@?8F_nbde$F>5vPJE&TX9T8M9)lpm*o--c=PewA~wJ zR~-sp3q9@E zc-!Ls$dy+CA?FRm4imZ?N7H8!o%43n^))4kDTKr5=FD=L`QpW)v70&()t_ZzeIECf zL1@|c35{lF`^|gLdqXI1i<$}UDrGl8uQ{;)p8AoAjgyn4WC$B=FyCZhQDY%JOO^l0 zTB#{~+)yl%kjR z#fex*p>F*sVLG~qi_IFSQt?sK1}Jruza4noO~~(&z>$gJ$e;0h8)<@q;E>RD zjUnc7uEFSNUY#YSIX%79Z37Vm92mI4$w)1EpTNWF~Tl?NE z!e|b=q{t$ckQPfD3m&gcLs^wORNu$j=qkJmhZhz~XJ=owgxG5}rV#WGymK4WqVQW| zWuZ*Xy?Acf;RYzQ0|Lm+zq8fFyQ_aM9&5l-FDoc#iDLOh9)%~4?`~3Xe1zJ0k zu?85|Fcjou9|jg{eyzbFPUv0$Zf||Gv~{G{Ue~GA*LlA9vOk|_N~>&@^0`t(0NOv&2WJ5Wp!IQq6enOdOfxI9q<;O*vhbY#%& zT$hDo$OlkLvR zn3#w0@lXhY-AmO9if!?3n>yzPS25E3`x=*~>rTWpp~nH`bY)S-+^pS^(PII&()99A z6By$`397Uzfq{odCzOI7#bQMo6;-J}dm2VAsw#ZzY!lCr zf*jP;zQbQz;^PH}9M*R&3nT^xM@J_HRbOaoYN%ukEX#z2HTe2?B`DBGjZLL;C3eGz zAYbVC=dV7II;9NtqT{8EkIkZCV_&W8S(qOagtqFnJ)(cxIiJGgHTbJfSzp_0ub)PT zRj}KlD8`MbZF1RC!hM&IXF~i}8CSJ{%0Y=Jj}74UdM;WRvaYAGTYftPxi60GnMmg4dUcz z!zGMQkVag<{(2=8me$uJ3fDu;Q!I1x85o!mZu4&?3bOR1ux7SA`Wzko&d;ZWgtk9F z7*9q6dGBxxQQ4RcX;~UV2+DI6;eyYOoc7(YB$6y=uWdhf@RvyV;&Fp%8r;wgwxcrJ0Dz znA(W0fhdChsVU}gc_;S*=fA5G&#MA;YfI%1Y+ULTcR#@e zP>6(H5F$PKn76ieGW2bph>ESQt|SRb{8{pF+uuqQekxAL?o+LuX=P^v4FsE_VyNoM zZbxB31@yVw*U?wR9i(5TH5q!$j+w*IpE+4r@i-ltN;kg5+Jpr7VW(3NIGS*VnP25+ zCvA()L2{kSQ8t!S38G34?#S8;KYV=raq;5R#zubj+BjrN4$KS7+1<`UrVg9?1)s!r zR`>$)>^;d+z4~wGa6;^Omze0skG4(|ww0jeXxZ3ccpe>2)($(Y&_(2Qb$vu%&qZG6 zKS%3l(qJUO-XIn98eHmYiy(vX?GPbhcX+spdCw=QOruZ}X#QX<<>BEmsH(=v&6z2e zOizHF$)@$A-g98Fs{}uNz{=U#>4$vM(s^APm!Lc`DdmMhukgm)V%z>E7WPe|x6ffd zT#kc>aW%3R+DTsB_07P*nTL{2wZ=tXtEYL3np^JMK@}`;aTpNY| zJBE;$a-xdGu`BLVu8M7}9kdyPoGlL@o_I}4V@b;^D#|O;1upF!F9Zjl@w=;;RUISpX87LTQ7lVHU{KAJ2q`kRP9I;do`;pGTamdJ*-)2#AGJz0 zS^@Jd>+N#O-br@@Ut3hoKz4LXaLqlk^%u}$una6dIDHo#7q_&@giB-`6*Vs+;_bF( zSWAGm#Ju@iO1tTQb3xEe0(BHVxdMIds=6++BWddFI3O;qldZRGa z6KU!X78OX!o$a;8>^o=}!n-WHgnzI8RA0yY7p*P*tA;=S+7++=3%=FOJ5f`u+bQ*3 zE;pWX(AZM6yW9{n(3is={K;F@y%qTIx>;t z=5NKxmg@%B9$qf@{nv|n8}DXXLW=Yokmo31av!U09g+{+RhCtQmwu z3~=o}5G?BS(Gjbdn3xw^k^Yx}45cp!mn9<+d&4@q%p>PZ8IeLHE_3F!S3WnU`3F3~ z`aRAG&}!AR-$`>2&OQymEIQ>DeL!1=OUwa=%A#BS6xhc$d7zje;LTyC`FewXqj@g{ z3ro?fS7_s6fEEE{R&f|F{_0A=`E?AcSN0m#)~o%QvamqbKY$H0RQl+*1f_s6wNZF? zZBYe0+dQ0$jE#*Q85$akVFZ+MXQ7)Ue4%m`{nZqFC6PmGsVWA#%OyD?B8iiwvx8|$ zA|kgH)sdnjJ-}|}EVq7uPKi;_mJvGH@o857ytb@Sik-5l8_u{ z3!g2+G3;$^GljHubWTQ%BgG{o{2;vr4-b!+MPC=FzUhl|_xvGbs`!;xI=>o!O%r@O z6HimBKUuHKS1;gmoDB>cl982lc5?a=Nhxgf{Vzaf0YUZ4$3mM3IuE+?3T>Sj;^;OI zC+i*23@~6DTkQaOJpv)b%gZYu-~+T`We|XfE0DH#v2k%;*{lZ}%! zJ~W5xXE;|euJ|kp9{zrF<;s;JmolbH15QpiFjsBjV zN2K=k%34}u_(5pTQsFCnD~4MK)2_0P;GB#Kx7Zlp-PcUWaz~2nXgow%66@-k=0TCN z3_YWZx#=m{B`);8UMQa~gpy!>@}%9d9g+b*BqVt88$<1MJ3ZXO4x(mf-*NkK3+ozC z$-|Wm-D4--&Ij&HkSKVtK3OGj3)gnZKznIAAOMY`-pa~~jg8IDJdlt<{Te1_R9f|h z`$l1tAo|(r?C;P1wglhA;$vfp@23ZE7GA+Uit@qQ&`$lWp}hYv^Tkm!4$I@{4nP%w z6b44IrxLhk-}BQWDk>_BH#2}A!=#b$KR<7stWo-G252&# z|A|tZf_w6zWW>9Btg}apslWy16ctU^d+xy1Ny;PVb^7y>M%ISmt4>v6diraE(#zWl zhiLQY6dC{|ZRX^YY+GCZi_zfT#f!5Ie|vlT>Ef3y!slC&U0q%9M(A0XbSl@zt9mPM zR&b4+te0Ew*I3|x4Hr#2Tok^L=I2M*)!xHizXiRTy?+bgCV4T`FgZ*BxC047pO?a4 z2C@||iDFow7|Sn0(+uPc;F3Tqyjg1z4>41B`di4s3Z)4!_panBAHJyjbp3LRBoEclLjoR=# zsDtvjcJ10_+~Kb@F-Tz42UJp)rGdlfJ62mXtaAfV3IR!H@cBgsjpxAL0;F2Wt(5A2 ze$;q|vImm?U1(_9Tmp~}$*f(Up$c^DGA!YJED1cc|?qwN=izG93;-p&Z{dc^$iVla&ho~9CnwKlNAmCaV{?} zS27=~cFd5-;B{Zub#;X;TyY$h{X_X0&mR;x+Q+$@vLR9GqsZ0R$P|6aTIw`Z>X!Q3%EDzfUvO05lw@=*g`@=^78VPk}%d16T9mA%sVe$ zj+QGCwYoY!I%?q$t=g10E0E}}uCDv`P#Q@>HK_S{asFJU;2TsD86UdM2G&2R=Vwk< zuI`a1k^_57NT{Zy^bAYcy-aZM*DnHca+HGYAWVO_b1{dvl#yeW?qwrshCjt%284-* zUfl?VsaxYTpBby~q@5BMcld+U9(IHHUYwsrM@Pdwc7^IoZf?7uM&o~NMg2>_iirD^nlZ6^LF+t)TvGLp@ z+-=L*sYtsS2?+@|R`>0iHg znXvH|I4}Kz5F3;|oV}H$r6+9Pfei=<2m~e8_qc@aYiepDtn-GfPO$w?=O{J4YAWmL zp%xUBtC$!V%Iy2c#*QvKxKO$jtd(>2coYh?I#P6jviCpflcXG5mp#xXWjZMwi~U8R znO%@mHn3uubGai3;QNMQ3^BCh5sb6(B25?{o$kbY>QUZ3UcbUtZ97rD)q*cv z?=XXY|LdBtmJ5E*6kQv|`Y~1Emu_KyDN;KveK|Rei`vt_W({ARlk=U8`(}Pn)m-Z7 zs76QV(9qKQ?G0%_9T1?{0HXVD=<{`5?yKM6t=E09R+-&k+X1xO%mxTudT^#hH$a(r zHKZ)3qkUsqGJyZmoN-8kaVK6QFzrQJ-UsMh?uUCrK6NRY_*XsoT@ONSq>rCJ!+Yl6 zk}6tTX5&vhxsPduhB1^X3ase-PwF>msWW7&ZN^~`U*sM!gFQMKW+))s{OwE8na>;k zWx&d# z_{e?#Hp;qVN9`Ko>9upLEyVF8KH=^jm9`Dhk(0u$krtU_kr%JlJ9))T(DqypX7p(n z9kz{(gz)iPbq~2~1XyT)jI_LYO0WN5l>F9=7daP|L2!_x{gbtifz3rNEz-i($$7{0 z(vMHs7{4keIvf|=gY|n`$|y|-@6vs{DufrDA9;@>UfS zU!8ijZlNme+b}KlYa11)*1K|}>z(N}hsFr|2bxtIW%Fmg7*WSDw2Y2_}lW5qXc>IbQ4qtmLNUaa~;; zr`~XlJtKF&NdA*2!)d=4c_r}ule9d^kP1eAvJWKb=e{rWUj6ha6ggeD6fgdM80$C` zw(oLgH}eH;lEK)TVw^PjclOE7sCIrd4e|X&)H~KV``W6zbCV@j+GDG9VhY1jIpX~a zZ+Et*TvRipW2LyNDsG8>6i?srI(r=OZU2|Yhb0JIAz)LaJqa%=ihd8<3nD!{yP26X zBZ^8j*VI~Zu3cc^CK>1}kWbtBN=a$#NJwVKetLHo%Wq?m_}fgK*6GF{CSK1T<*||&6cw>> z+@pwTKOY~7?KVQG=1Nh{5OJKo6PNm{e22<(b%=brr(v7u9|KQo4j&z9u<(1hBbr@*$_b5)^a?jK{RClVF`;bXaKc(Scs4uXZ z_>!1Jyiq!jE>OVvLEdWpG+%QHf=j`=KSHAJDKdXNlB!rr%jf?ez%j{u>CM7?f7DZs}uXJGezo>6?|8&-sIxFm!aS>gv^Ldz&ORZEbrt zCVbpSfq_mngFy-w`KT4f07H4%&e^wb37D&jqU#DfS_}6$Z0esmC={itX?vw*%yAnCJ;&G5U#ri&#nCe#AAG82*T7Tv zB8%0_Cy6eVVz|dtN9FZUwiQiVekLlJ!af<>Z&kJU42x@(ca<44hhOmARRpftBGci~ zbz0ZQH^-4v%O$AVq902oRf7zw{mZld&6e`WW(#748_MPy9n4&BN%oQ|CS&8g?(lb% z8LOMDaXRYi)@;j+ zF=tj48VBC(Dl{J%EBF+P?70#zoag9c_=NU+RaOqm>z;~J^JWdD3@#56bz+8x-#`x# z4iT$+Kk=>-S=hst7-?C-WVXYkF{Pr$>{gKda=d#1ZcCCd(;^wdj{l>(`-*BhTNeP% zv5W!=f&vaj5EPM6R0K4%8QLI7k*Yu}2uKoohtNhqN~8}WB8ikC5DY!i1O%i>mn2AN zhNdL+5{e|8t#j60_s+{bFX!c~mDl87viHAy-*124tVxPNh4Krum{@}J5H-t#v*uv+ zs~jULlZH28zV2k+OK`Pc&ueP`le4a9A|dqyQ6_}^{On2Rm1J~+^0)}U_AzIF!RPvekvxCU3orxx(KP5FKJtVG5=cR-kA5ShLw|IL>;oK)n7ws zT&A5A+C4Db+8PF_f3{Rmhdg?JJFe{m)ow~aa(-`^w02<&Le%$9!&FwkXKbdyJaRuN z)2|!$WACP`tu}adL1u2}s~e?ZPD--om9O{}22Pf2<+>ktd!Qj-6^`#V-L?o4DcN?b znG#wgug*o$Yj3&Pm9Ttq-Oe`U!}~Y!{N8dgvUMf8S@p~<9N!^PboD#Z#C&tD*O$&! z#3#e8kwvI{Kv#2TzfwFl7C8|}PI_ZN&-Ya9rnq2MSK(JP8{r=NJ2zD_nRs&PFl#T- zbU1U2S_i87yy!q#C}1IJZg8ZJt-0G(_IZiVl@yAUEukraW-4`sA-Ra*p=9=^6HyjZsSM^c_@ zW-pUBXlIkvN(UiW)jI(rla3Eq(&Y@Xkp;s$h(hR{96lfU^*lQzA^R_7gpT5T-b3*A zBk+9n^>xk!aa{UnwUq%>9PO6k*$ZykS}=(J+lqXi+2-6XNM*WHxj#&~0(SSr5Ezat zX3=uWy2=V>49F!7)ryo8Yu(!gNd9 z!f9oE^rJz|oK|891aZ>d_0(Y_sM|wLrQEJfPR9!0#V=Yu0!IA8d(qNV$)dED2D#sG zXxb`&bW7#9`16V`ii>&Mlw*oPk8}UlM$glyA?>5zq@uOkoxyQSYx@dzD_%5u!hPs` zc6PlbJ~(aumZIX_t%QO|gkPN{)KFq&b>%jlft(MUH4ww<)I#*cCRcA&k`Z9#daIOO zakiwO>4~^=u1s+j3k_96K5cImKJIt6_GdR@qI-__uvP6RCW_;BQ+~B~wm+073;i}6ZK#H(ZY!QSu5{H{)g@TB-B|oTxrr8pak@L7?OFyG(a%1T= zWALV+;9`rnz<#zxv&RJ+&TG#+xI(36Np_{*+IM{yvcels3jG@AVIIBEE<(mvv_jVF(*Xv)MWJ?kUYH4#vh_j~*SvHYtKU-%ab{twOS^ zwu8srscG73gn{olS$tKcPpDD1+V8(RsMNQ(>=hQx>qNJ>5SOfq9LKTFxrrXRV;@JT zl)0;oLtIBlbQm9Bl8xmav60=+X8&rx6x6_;rIwfqTc1t<_eC(5aMp~P7J}7MuB=eK zbA>HRLn119t*V&cYMg8kb-J`=>ed#}OL>{gaS#ol3So!0~VUWZ`5N*$!&;JEh zOFJa^Oo{>p7pPJk)o*c{AoNc7HnQiwV|$j0LZB z1~y@KZsvrxWM1BHiNZuwM9j7d+aQe}l%(zrb|t>z3L>Q{ZDMdgxW?vC=j=&yi%~nfn6?g8%J9DD_6jLesUajp z;a*KL$a+_4Xai_@=7zAEf1vi`o6<-RkA3#%W>6`qhEEFA+tNL{b6L^jec`Pv%Io=} zBW|MgY7&P)#uNE#vF&(sF28jp?Qj0$fcOYfD;J%xPp2f z7B(=AM$}7>YB#B<*Sp&fQM+u*kG(%$HU>KSJsfOp=SpB;gQr9V^^e}-5s`jos9Iu6 zM1EsN<)6c5Db|$UtK|o(caiaz>IF$$TmAO9g$1C5kt8}mD;vRMFF)GM&0h~_emp%g zBH-jyrDuM@Z#|qVLiXC#sy}OkSmEqehw`}|Z1^>$^(=zjvXLRb(YY#|I8mz5=zu^x zU!MLVdzaw{u_jsDBpI79S2wdkPauGZKvlHXyj=UL+U$nSjl8R*oPlzg#-upD#niA?H{vKu0LvyXI zbFZ(Xpgg1-<9pZxuQYfSv$Z@H7G4+O@iGu3908bwWs#*rToiL7&;O9$4VZE791%&D zO&@fT>*)t!IlvqAhD(R7zdLQE3#N50K8R=%rh=>wGZ=qn8~2bgZeqp3`Y_(F`AJGw zGF@LLz58x(7dsimp1Gohi7)(hh=xu?Th6o6dF4a*PsHjnV+wWR-aCBL1(tXA?u|Ff zaPB;q3_qHviYFIZMkNDzh1S%}>qsy%HZ7Hr*QoKpPP1f+$+pSZ(x(XoIk4C6O9PBH z{?hXkFv|M_#2{_y% zQ=P+|v(;t13S10$4$A_@TwCkI^s1pKU@FjiGC?7*j6Q6@*vxJ^1du?VTKiGL{cMv* zO~$=6?`Z9uUrVd^uSQRk%UCtnKNec5HSHp3Cr!sxgExTC`~K{9V5|=03#)>m;8)x!vbv7Hn8LG^mj8E|OyjwVL`ATx}un z?(^;`U%&?Q&3_i;Yo1=6I?0c*t%&M%297)`Dkdf>W_@SxGOzk26gvb|hs$(zbdXHy z50^OqCqB1j^+PK36ng1PsQkZxuAE?TY4o6ioPtcOrEFwt3uuwe8gF=U)qi0jMtqL@ z5R^c1CE@omW*`Bdn|U&3Gg_yb{6e}ld&D>AY&W;`N-g=R zF|tCTlC>{CSevP%(*a2f?vvXX>dBdGYDge)02Ys%)I|tyz>sou47&$RL&OXiLVo;hH zw+gQxEyB5oB=`#fA3S5p8PiSFqJr&nTY=?D)(#F1`w3?xGI0Hv1}9dqx9Y?HC3bVa z?rxq{zxYn9d3H4wsKBU@@UH`(ujfZr%GP9Tc9&)dI{^8sbS9)sLMvS2`@`Ko++(Us zJ$7H;(QIrKEGFhwZG3HxjHCtf^x-*nSwE_TyU=`&fUxiXvu5hwS^*_-aC!gW!9^Oz U_hSC{(zzTr^h|V1wC_LuC%s<7vH$=8 literal 0 HcmV?d00001 diff --git a/artifacts/message-status-evidence/channel-implicit-ack.png b/artifacts/message-status-evidence/channel-implicit-ack.png new file mode 100644 index 0000000000000000000000000000000000000000..e181ddf832bb98e7a35ce747f2585765859afa81 GIT binary patch literal 7697 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 literal 0 HcmV?d00001 diff --git a/artifacts/message-status-evidence/dm-implicit-ack.png b/artifacts/message-status-evidence/dm-implicit-ack.png new file mode 100644 index 0000000000000000000000000000000000000000..383c2e798e3716c32a443563693b1291bbbe4456 GIT binary patch literal 8269 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�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 literal 0 HcmV?d00001 diff --git a/artifacts/message-status-evidence/no-ack.png b/artifacts/message-status-evidence/no-ack.png new file mode 100644 index 0000000000000000000000000000000000000000..bb0568ea8d6b544a5ffabd283449fd24027109d0 GIT binary patch literal 7312 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 Is62o3FBY6fumAu6 literal 0 HcmV?d00001 diff --git a/artifacts/message-status-evidence/no-channel.png b/artifacts/message-status-evidence/no-channel.png new file mode 100644 index 0000000000000000000000000000000000000000..031ac7035427edb476d3208e25ea9c7646361d41 GIT binary patch literal 7378 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 literal 0 HcmV?d00001 diff --git a/artifacts/message-status-evidence/recipient-key-unavailable.png b/artifacts/message-status-evidence/recipient-key-unavailable.png new file mode 100644 index 0000000000000000000000000000000000000000..65d1e9be5785ac4551406dda8c94543308a5d671 GIT binary patch literal 8389 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 Fe*jPAKNbK0 literal 0 HcmV?d00001 From 1de6d9dda1c44690cc0a65087d08e116cba06b44 Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Mon, 6 Jul 2026 14:15:55 -0700 Subject: [PATCH 04/16] Persist resolved MUI message statuses --- include/graphics/common/MessageStatus.h | 4 ++ include/graphics/common/ViewController.h | 12 ++++ include/graphics/view/TFT/TFTView_320x240.h | 6 +- include/util/LogRotate.h | 11 +++- source/graphics/TFT/TFTView_320x240.cpp | 68 ++++++++++++--------- source/graphics/common/MessageStatus.cpp | 58 ++++++++++++++++++ source/graphics/common/ViewController.cpp | 37 ++++++++++- source/util/LogRotate.cpp | 40 ++++++++++++ tests/test_MessageStatus.cpp | 26 ++++++++ 9 files changed, 230 insertions(+), 32 deletions(-) diff --git a/include/graphics/common/MessageStatus.h b/include/graphics/common/MessageStatus.h index 0250e59c..8e805f7e 100644 --- a/include/graphics/common/MessageStatus.h +++ b/include/graphics/common/MessageStatus.h @@ -34,5 +34,9 @@ struct Presentation { const Presentation &presentation(State state); State deliveredState(bool channelMessage, bool explicitAck); +LogMessage::MsgStatus logStatusForState(State state); +uint32_t persistedLogState(State state); +std::optional stateFromPersistedLogState(uint32_t state); std::optional inlineStateForLogStatus(LogMessage::MsgStatus status, bool livePending); +std::optional inlineStateForLogStatus(LogMessage::MsgStatus status, uint32_t persistedState, bool livePending); } // namespace MessageStatus diff --git a/include/graphics/common/ViewController.h b/include/graphics/common/ViewController.h index aa8209ae..28da105f 100644 --- a/include/graphics/common/ViewController.h +++ b/include/graphics/common/ViewController.h @@ -3,8 +3,13 @@ #include "comms/IClientBase.h" #include "util/LogRotate.h" #include +#include class MeshtasticView; +namespace MessageStatus +{ +enum class State; +} class ViewController { @@ -66,6 +71,7 @@ class ViewController virtual bool sendConfig(const char ringtone[231], uint32_t nodeId = 0); virtual void sendTextMessage(uint32_t to, uint8_t ch, uint8_t hopLimit, uint32_t msgTime, uint32_t requestId, bool usePkc, const char *textmsg); + virtual bool updateTextMessageStatus(uint32_t requestId, MessageStatus::State status, bool finalStatus); virtual void removeTextMessages(uint32_t from, uint32_t to, uint8_t ch); virtual bool requestPosition(uint32_t to, uint8_t ch, uint32_t requestId); virtual void traceRoute(uint32_t to, uint8_t ch, uint8_t hopLimit, uint32_t requestId); @@ -105,6 +111,12 @@ class ViewController MeshtasticView *view; LogRotate log; IClientBase *client; + + struct PendingTextMessage { + LogRotate::EntryPosition logPosition; + }; + std::unordered_map pendingTextMessages; + uint32_t sendId; uint32_t myNodeNum; time_t lastrun1; diff --git a/include/graphics/view/TFT/TFTView_320x240.h b/include/graphics/view/TFT/TFTView_320x240.h index 839c0f21..0097992d 100644 --- a/include/graphics/view/TFT/TFTView_320x240.h +++ b/include/graphics/view/TFT/TFTView_320x240.h @@ -160,7 +160,8 @@ class TFTView_320x240 : public MeshtasticView // own chat message virtual void handleAddMessage(char *msg); // add own message to current chat - virtual void addMessage(lv_obj_t *container, uint32_t msgTime, uint32_t requestId, char *msg, LogMessage::MsgStatus status); + virtual void addMessage(lv_obj_t *container, uint32_t msgTime, uint32_t requestId, char *msg, LogMessage::MsgStatus status, + uint32_t persistedStatus = 0); // add new message to container virtual void newMessage(uint32_t nodeNum, lv_obj_t *container, uint8_t channel, const char *msg); // create empty message container for node or group channel @@ -170,7 +171,8 @@ class TFTView_320x240 : public MeshtasticView // display message alert popup virtual void messageAlert(const char *alert, bool show); // mark sent message with its delivery status - virtual void handleTextMessageResponse(uint32_t channelOrNode, uint32_t id, MessageStatus::State status); + virtual void handleTextMessageResponse(uint32_t channelOrNode, uint32_t id, MessageStatus::State status, + bool finalStatus = true); // set node image based on role virtual void setNodeImage(uint32_t nodeNum, eRole role, bool unmessagable, lv_obj_t *img); // apply filter and count number of filtered nodes diff --git a/include/util/LogRotate.h b/include/util/LogRotate.h index e01ffe6c..cc8ccdc1 100644 --- a/include/util/LogRotate.h +++ b/include/util/LogRotate.h @@ -2,6 +2,7 @@ #include "FS.h" #include "ILogEntry.h" +#include #include /** @@ -21,6 +22,11 @@ class LogRotate { public: + struct EntryPosition { + uint32_t logNum = 0; + uint32_t offset = 0; + }; + LogRotate(fs::FS &fs, const char *logDir, uint32_t maxLen, uint32_t maxSize = 102400, uint32_t maxFiles = 25, uint32_t maxFileSize = 4000); // uint32_t maxSize = 4096, uint32_t maxFiles = 10, uint32_t maxFileSize = 400); @@ -29,6 +35,9 @@ class LogRotate void init(void); // write a log entry to fs bool write(const ILogEntry &entry); + bool write(const ILogEntry &entry, EntryPosition *position); + // update a previously written log entry in place + bool update(const EntryPosition &position, ILogEntry &entry, std::function update); // read the next log entry from fs bool readNext(ILogEntry &entry); // remove all logs from fs @@ -69,4 +78,4 @@ class LogRotate uint32_t currentLogWrite; // current log number (when writing) uint32_t currentSize; // size of current written log file uint32_t totalSize; // size of all logs -}; \ No newline at end of file +}; diff --git a/source/graphics/TFT/TFTView_320x240.cpp b/source/graphics/TFT/TFTView_320x240.cpp index a41c2929..a309a457 100644 --- a/source/graphics/TFT/TFTView_320x240.cpp +++ b/source/graphics/TFT/TFTView_320x240.cpp @@ -4516,7 +4516,7 @@ void TFTView_320x240::handleAddMessage(char *msg) * display message that has just been written and sent out */ void TFTView_320x240::addMessage(lv_obj_t *container, uint32_t msgTime, uint32_t requestId, char *msg, - LogMessage::MsgStatus status) + LogMessage::MsgStatus status, uint32_t persistedStatus) { lv_obj_t *hiddenPanel = lv_obj_create(container); lv_obj_set_width(hiddenPanel, lv_pct(100)); @@ -4553,7 +4553,7 @@ void TFTView_320x240::addMessage(lv_obj_t *container, uint32_t msgTime, uint32_t add_style_chat_message_style(textLabel); - const auto messageState = MessageStatus::inlineStateForLogStatus(status, requestId != 0); + const auto messageState = MessageStatus::inlineStateForLogStatus(status, persistedStatus, requestId != 0); if (messageState.has_value()) { lv_obj_t *statusLabel = lv_label_create(hiddenPanel); lv_obj_set_width(statusLabel, 200); @@ -4569,21 +4569,26 @@ void TFTView_320x240::addMessage(lv_obj_t *container, uint32_t msgTime, uint32_t lv_obj_scroll_to_view(hiddenPanel, LV_ANIM_ON); lv_obj_move_foreground(objects.message_input_area); - switch (status) { - case LogMessage::eHeard: - lv_obj_set_style_border_color(textLabel, messageStatusColor(MessageStatus::Tone::Warning), + if (const auto restoredState = MessageStatus::stateFromPersistedLogState(persistedStatus)) { + lv_obj_set_style_border_color(textLabel, messageStatusColor(MessageStatus::presentation(*restoredState).tone), LV_PART_MAIN | LV_STATE_DEFAULT); - break; - case LogMessage::eAcked: - lv_obj_set_style_border_color(textLabel, messageStatusColor(MessageStatus::Tone::Success), - LV_PART_MAIN | LV_STATE_DEFAULT); - break; - case LogMessage::eFailed: - lv_obj_set_style_border_color(textLabel, messageStatusColor(MessageStatus::Tone::RetryableFailure), - LV_PART_MAIN | LV_STATE_DEFAULT); - break; - default: - break; + } else { + switch (status) { + case LogMessage::eHeard: + lv_obj_set_style_border_color(textLabel, messageStatusColor(MessageStatus::Tone::Warning), + LV_PART_MAIN | LV_STATE_DEFAULT); + break; + case LogMessage::eAcked: + lv_obj_set_style_border_color(textLabel, messageStatusColor(MessageStatus::Tone::Success), + LV_PART_MAIN | LV_STATE_DEFAULT); + break; + case LogMessage::eFailed: + lv_obj_set_style_border_color(textLabel, messageStatusColor(MessageStatus::Tone::RetryableFailure), + LV_PART_MAIN | LV_STATE_DEFAULT); + break; + default: + break; + } } } @@ -5283,14 +5288,18 @@ void TFTView_320x240::onTextMessageCallback(const ResponseHandler::Request &req, ILOG_DEBUG("onTextMessageCallback: %d %d", evt, result); bool channelMessage = (unsigned long)req.cookie < c_max_channels; if (evt == ResponseHandler::found) { - handleTextMessageResponse((unsigned long)req.cookie, req.id, result ? MessageStatus::State::NoAck - : MessageStatus::deliveredState(channelMessage, false)); + handleTextMessageResponse((unsigned long)req.cookie, req.id, + result ? MessageStatus::State::NoAck + : MessageStatus::deliveredState(channelMessage, false), + false); } else if (evt == ResponseHandler::removed) { - handleTextMessageResponse((unsigned long)req.cookie, req.id, result ? MessageStatus::State::NoAck - : MessageStatus::deliveredState(channelMessage, true)); + handleTextMessageResponse((unsigned long)req.cookie, req.id, + result ? MessageStatus::State::NoAck + : MessageStatus::deliveredState(channelMessage, true), + true); } else { ILOG_DEBUG("onTextMessageCallback: timeout!"); - handleTextMessageResponse((unsigned long)req.cookie, req.id, MessageStatus::State::NoAck); + handleTextMessageResponse((unsigned long)req.cookie, req.id, MessageStatus::State::NoAck, true); } } @@ -5326,7 +5335,7 @@ void TFTView_320x240::handleResponse(uint32_t from, const uint32_t id, const mes handleTraceRouteResponse(routing); } else if (req.type == ResponseHandler::TextMessageRequest) { bool channelMessage = (unsigned long)req.cookie < c_max_channels; - handleTextMessageResponse((unsigned long)req.cookie, id, MessageStatus::deliveredState(channelMessage, ack)); + handleTextMessageResponse((unsigned long)req.cookie, id, MessageStatus::deliveredState(channelMessage, ack), ack); } else if (req.type == ResponseHandler::PositionRequest) { handlePositionResponse(from, id, p.rx_rssi, p.rx_snr, p.hop_limit == p.hop_start); } @@ -5336,7 +5345,7 @@ void TFTView_320x240::handleResponse(uint32_t from, const uint32_t id, const mes if (req.type == ResponseHandler::TraceRouteRequest) { handleTraceRouteResponse(routing); } else if (req.type == ResponseHandler::TextMessageRequest) { - handleTextMessageResponse((unsigned long)req.cookie, id, MessageStatus::State::NoAck); + handleTextMessageResponse((unsigned long)req.cookie, id, MessageStatus::State::NoAck, true); } } else if (routing.error_reason == meshtastic_Routing_Error_NO_RESPONSE) { if (req.type == ResponseHandler::PositionRequest) { @@ -5346,7 +5355,7 @@ void TFTView_320x240::handleResponse(uint32_t from, const uint32_t id, const mes if (!ack) req = requests.removeRequest(id); if (req.type == ResponseHandler::TextMessageRequest) { - handleTextMessageResponse((unsigned long)req.cookie, id, MessageStatus::State::MessageTooLarge); + handleTextMessageResponse((unsigned long)req.cookie, id, MessageStatus::State::MessageTooLarge, true); } } else if (routing.error_reason == meshtastic_Routing_Error_NO_CHANNEL || routing.error_reason == meshtastic_Routing_Error_NO_INTERFACE || @@ -5363,7 +5372,7 @@ void TFTView_320x240::handleResponse(uint32_t from, const uint32_t id, const mes status = MessageStatus::State::RecipientKeyUnavailable; if (routing.error_reason == meshtastic_Routing_Error_PKI_UNKNOWN_PUBKEY) status = MessageStatus::State::RecipientNeedsSenderKey; - handleTextMessageResponse((unsigned long)req.cookie, id, status); + handleTextMessageResponse((unsigned long)req.cookie, id, status, true); // we probably have a wrong key; mark it as bad and don't use in future if (nodes.find(from) != nodes.end() && (unsigned long)nodes[from]->LV_OBJ_IDX(node_bat_idx)->user_data == 1) { ILOG_DEBUG("public key mismatch"); @@ -5777,8 +5786,12 @@ void TFTView_320x240::messageAlert(const char *alert, bool show) * @param id * @param status */ -void TFTView_320x240::handleTextMessageResponse(uint32_t channelOrNode, const uint32_t id, MessageStatus::State status) +void TFTView_320x240::handleTextMessageResponse(uint32_t channelOrNode, const uint32_t id, MessageStatus::State status, + bool finalStatus) { + if (id != 0) + controller->updateTextMessageStatus(id, status, finalStatus); + lv_obj_t *msgContainer; if (channelOrNode < c_max_channels) { msgContainer = channelGroup[(uint8_t)channelOrNode]; @@ -5808,7 +5821,6 @@ void TFTView_320x240::handleTextMessageResponse(uint32_t channelOrNode, const ui LV_PART_MAIN | LV_STATE_DEFAULT); } - // store message break; } } @@ -6610,7 +6622,7 @@ void TFTView_320x240::restoreMessage(const LogMessage &msg) if (container) { if (container != activeMsgContainer) lv_obj_add_flag(container, LV_OBJ_FLAG_HIDDEN); - addMessage(container, msg.time, 0, (char *)msg.bytes, msg.status); + addMessage(container, msg.time, 0, (char *)msg.bytes, msg.status, msg.reserved); } } else if (nodes.find(msg.from) != nodes.end()) { if (msg.trashFlag && chats.find(msg.from) != chats.end()) { diff --git a/source/graphics/common/MessageStatus.cpp b/source/graphics/common/MessageStatus.cpp index 8cadc0be..70f9c2ff 100644 --- a/source/graphics/common/MessageStatus.cpp +++ b/source/graphics/common/MessageStatus.cpp @@ -14,6 +14,8 @@ constexpr Presentation genericEncryptedSendFailure{"Could not send encrypted mes constexpr Presentation recipientKeyUnavailable{"Recipient key unavailable", Tone::RetryableFailure, true}; constexpr Presentation recipientNeedsSenderKey{"Recipient needs your key", Tone::RetryableFailure, true}; constexpr Presentation messageTooLarge{"Message is too large to send", Tone::PermanentFailure, false}; +constexpr uint32_t persistedLogStateMagic = 0x4d535400; // "MST" + state byte +constexpr uint32_t persistedLogStateMask = 0xffffff00; } // namespace const Presentation &presentation(State state) @@ -50,11 +52,67 @@ State deliveredState(bool channelMessage, bool explicitAck) return explicitAck ? State::ExplicitAck : State::DirectImplicitAck; } +LogMessage::MsgStatus logStatusForState(State state) +{ + switch (state) { + case State::Sending: + return LogMessage::eNone; + case State::ChannelImplicitAck: + case State::DirectImplicitAck: + return LogMessage::eHeard; + case State::ExplicitAck: + return LogMessage::eAcked; + case State::NoAck: + return LogMessage::eNoResponse; + case State::NoChannel: + case State::GenericEncryptedSendFailure: + case State::RecipientKeyUnavailable: + case State::RecipientNeedsSenderKey: + case State::MessageTooLarge: + return LogMessage::eFailed; + } + return LogMessage::eFailed; +} + +uint32_t persistedLogState(State state) +{ + return persistedLogStateMagic | (static_cast(state) + 1); +} + +std::optional stateFromPersistedLogState(uint32_t state) +{ + if ((state & persistedLogStateMask) != persistedLogStateMagic) + return std::nullopt; + + const uint32_t value = state & ~persistedLogStateMask; + if (value == 0 || value > static_cast(State::MessageTooLarge) + 1) + return std::nullopt; + + return static_cast(value - 1); +} + std::optional inlineStateForLogStatus(LogMessage::MsgStatus status, bool livePending) +{ + return inlineStateForLogStatus(status, 0, livePending); +} + +std::optional inlineStateForLogStatus(LogMessage::MsgStatus status, uint32_t persistedState, bool livePending) { switch (status) { case LogMessage::eNone: return livePending ? std::optional(State::Sending) : std::nullopt; + case LogMessage::eHeard: + case LogMessage::eAcked: + case LogMessage::eNoResponse: + case LogMessage::eFailed: + if (const auto state = stateFromPersistedLogState(persistedState)) + return state; + break; + default: + break; + } + + switch (status) { case LogMessage::eHeard: return State::DirectImplicitAck; case LogMessage::eAcked: diff --git a/source/graphics/common/ViewController.cpp b/source/graphics/common/ViewController.cpp index 5e17eccc..f9fcb628 100644 --- a/source/graphics/common/ViewController.cpp +++ b/source/graphics/common/ViewController.cpp @@ -1,5 +1,6 @@ #include "graphics/common/ViewController.h" #include "assert.h" +#include "graphics/common/MessageStatus.h" #include "graphics/common/MeshtasticView.h" #include "util/ILog.h" #include "util/LogMessage.h" @@ -478,8 +479,42 @@ void ViewController::sendTextMessage(uint32_t to, uint8_t ch, uint8_t hopLimit, if (send(to, ch, hopLimit, requestId, meshtastic_PortNum_TEXT_MESSAGE_APP, false, usePkc, (const uint8_t *)textmsg, msgLen)) { // ILOG_DEBUG("storing msg to:0x%08x, ch:%d, time:%d, size:%d, '%s'", to, ch, msgTime, msgLen, textmsg); - log.write(LogMessageEnv(myNodeNum, to, ch, msgTime, LogMessage::eDefault, false, msgLen, (const uint8_t *)textmsg)); + LogRotate::EntryPosition position; + if (log.write(LogMessageEnv(myNodeNum, to, ch, msgTime, LogMessage::eDefault, false, msgLen, + (const uint8_t *)textmsg), + &position) && + requestId != 0) { + PendingTextMessage pending{}; + pending.logPosition = position; + pendingTextMessages[requestId] = pending; + } + } +} + +bool ViewController::updateTextMessageStatus(uint32_t requestId, MessageStatus::State status, bool finalStatus) +{ + const auto pendingIt = pendingTextMessages.find(requestId); + if (pendingIt == pendingTextMessages.end()) + return false; + + const PendingTextMessage pending = pendingIt->second; + LogMessageEnv msg; + const bool updated = log.update( + pending.logPosition, msg, + [status](ILogEntry &entry) { + LogMessage &candidate = static_cast(entry); + candidate.status = MessageStatus::logStatusForState(status); + candidate.reserved = MessageStatus::persistedLogState(status); + }); + + if (!updated) { + ILOG_WARN("failed to persist text message status for request id 0x%08x", requestId); } + + if (finalStatus) + pendingTextMessages.erase(pendingIt); + + return updated; } bool ViewController::requestPosition(uint32_t to, uint8_t ch, uint32_t requestId) diff --git a/source/util/LogRotate.cpp b/source/util/LogRotate.cpp index 42765745..d0d80903 100644 --- a/source/util/LogRotate.cpp +++ b/source/util/LogRotate.cpp @@ -82,6 +82,11 @@ bool LogRotate::readNext(ILogEntry &entry) } bool LogRotate::write(const ILogEntry &entry) +{ + return write(entry, nullptr); +} + +bool LogRotate::write(const ILogEntry &entry, EntryPosition *position) { time_t start = millis(); if (currentSize + entry.size() >= c_maxFileSize || totalSize + entry.size() >= c_maxSize) { @@ -96,6 +101,11 @@ bool LogRotate::write(const ILogEntry &entry) ; } + if (position) { + position->logNum = currentLogWrite; + position->offset = currentSize; + } + // elegant way to let the logentry do its work it knows best and pass just a temporary function for writing File file = _fs.open(currentLogName, FILE_APPEND); entry.serialize([&file](const uint8_t *buf, size_t size) { return file.write(buf, size); }); @@ -109,6 +119,36 @@ bool LogRotate::write(const ILogEntry &entry) return true; } +bool LogRotate::update(const EntryPosition &position, ILogEntry &entry, std::function update) +{ + if (position.logNum == 0) + return false; + + const String logName = logFileName(position.logNum); + File file = _fs.open(logName, "r+"); + if (!file) { + ILOG_WARN("failed to open %s for update", logName.c_str()); + return false; + } + + if (!file.seek(position.offset) || + !entry.deserialize([&file](uint8_t *buf, size_t size) { return file.read(buf, size); })) { + file.close(); + return false; + } + + const size_t originalSize = entry.size(); + update(entry); + if (entry.size() != originalSize || !file.seek(position.offset)) { + file.close(); + return false; + } + + const size_t written = entry.serialize([&file](const uint8_t *buf, size_t size) { return file.write(buf, size); }); + file.close(); + return written == originalSize; +} + /** * remove all log files */ diff --git a/tests/test_MessageStatus.cpp b/tests/test_MessageStatus.cpp index f4a36ca9..aa9e5650 100644 --- a/tests/test_MessageStatus.cpp +++ b/tests/test_MessageStatus.cpp @@ -54,3 +54,29 @@ TEST_CASE("MessageStatus maps log status only when inline status is meaningful") CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eNoResponse, false) == State::NoAck); CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eFailed, false) == State::NoAck); } + +TEST_CASE("MessageStatus persists final inline status") +{ + CHECK(MessageStatus::logStatusForState(State::ChannelImplicitAck) == LogMessage::eHeard); + CHECK(MessageStatus::logStatusForState(State::DirectImplicitAck) == LogMessage::eHeard); + CHECK(MessageStatus::logStatusForState(State::ExplicitAck) == LogMessage::eAcked); + CHECK(MessageStatus::logStatusForState(State::NoAck) == LogMessage::eNoResponse); + CHECK(MessageStatus::logStatusForState(State::RecipientKeyUnavailable) == LogMessage::eFailed); + CHECK(MessageStatus::logStatusForState(State::MessageTooLarge) == LogMessage::eFailed); + + const uint32_t channelImplicitAck = MessageStatus::persistedLogState(State::ChannelImplicitAck); + const uint32_t recipientKeyUnavailable = MessageStatus::persistedLogState(State::RecipientKeyUnavailable); + const uint32_t messageTooLarge = MessageStatus::persistedLogState(State::MessageTooLarge); + + CHECK(MessageStatus::stateFromPersistedLogState(channelImplicitAck) == State::ChannelImplicitAck); + CHECK(MessageStatus::stateFromPersistedLogState(recipientKeyUnavailable) == State::RecipientKeyUnavailable); + CHECK(MessageStatus::stateFromPersistedLogState(messageTooLarge) == State::MessageTooLarge); + CHECK_FALSE(MessageStatus::stateFromPersistedLogState(0).has_value()); + + CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eHeard, channelImplicitAck, false) == + State::ChannelImplicitAck); + CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eFailed, recipientKeyUnavailable, false) == + State::RecipientKeyUnavailable); + CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eFailed, messageTooLarge, false) == + State::MessageTooLarge); +} From c297f31dbbe2cfae7b3576c5ab468d1a3bfc1d5e Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Mon, 6 Jul 2026 14:30:17 -0700 Subject: [PATCH 05/16] Fix MUI message timeout status handling --- include/graphics/common/MessageStatus.h | 1 + include/graphics/common/ResponseHandler.h | 3 +- include/graphics/common/ViewController.h | 3 ++ source/graphics/TFT/TFTView_320x240.cpp | 11 ++++-- source/graphics/common/MessageStatus.cpp | 5 +++ source/graphics/common/ResponseHandler.cpp | 3 +- source/graphics/common/ViewController.cpp | 14 ++++++- tests/test_MessageStatus.cpp | 5 +++ tests/test_ResponseHandler.cpp | 43 ++++++++++++++++++++++ 9 files changed, 82 insertions(+), 6 deletions(-) create mode 100644 tests/test_ResponseHandler.cpp diff --git a/include/graphics/common/MessageStatus.h b/include/graphics/common/MessageStatus.h index 8e805f7e..f7889d95 100644 --- a/include/graphics/common/MessageStatus.h +++ b/include/graphics/common/MessageStatus.h @@ -34,6 +34,7 @@ struct Presentation { const Presentation &presentation(State state); State deliveredState(bool channelMessage, bool explicitAck); +bool isImplicitDelivery(State state); LogMessage::MsgStatus logStatusForState(State state); uint32_t persistedLogState(State state); std::optional stateFromPersistedLogState(uint32_t state); diff --git a/include/graphics/common/ResponseHandler.h b/include/graphics/common/ResponseHandler.h index b4a2c9bf..ebf2e851 100644 --- a/include/graphics/common/ResponseHandler.h +++ b/include/graphics/common/ResponseHandler.h @@ -20,6 +20,7 @@ class ResponseHandler using Callback = std::function; struct Request { + uint32_t requestId; uint32_t id; unsigned long timestamp; enum RequestType type; @@ -52,4 +53,4 @@ class ResponseHandler private: ResponseHandler(const ResponseHandler &) = delete; ResponseHandler &operator=(const ResponseHandler &) = delete; -}; \ No newline at end of file +}; diff --git a/include/graphics/common/ViewController.h b/include/graphics/common/ViewController.h index 28da105f..2634dd45 100644 --- a/include/graphics/common/ViewController.h +++ b/include/graphics/common/ViewController.h @@ -2,6 +2,7 @@ #include "comms/IClientBase.h" #include "util/LogRotate.h" +#include #include #include @@ -72,6 +73,7 @@ class ViewController virtual void sendTextMessage(uint32_t to, uint8_t ch, uint8_t hopLimit, uint32_t msgTime, uint32_t requestId, bool usePkc, const char *textmsg); virtual bool updateTextMessageStatus(uint32_t requestId, MessageStatus::State status, bool finalStatus); + virtual std::optional pendingTextMessageStatus(uint32_t requestId) const; virtual void removeTextMessages(uint32_t from, uint32_t to, uint8_t ch); virtual bool requestPosition(uint32_t to, uint8_t ch, uint32_t requestId); virtual void traceRoute(uint32_t to, uint8_t ch, uint8_t hopLimit, uint32_t requestId); @@ -114,6 +116,7 @@ class ViewController struct PendingTextMessage { LogRotate::EntryPosition logPosition; + std::optional status; }; std::unordered_map pendingTextMessages; diff --git a/source/graphics/TFT/TFTView_320x240.cpp b/source/graphics/TFT/TFTView_320x240.cpp index a309a457..4c4201ff 100644 --- a/source/graphics/TFT/TFTView_320x240.cpp +++ b/source/graphics/TFT/TFTView_320x240.cpp @@ -5286,20 +5286,25 @@ void TFTView_320x240::updateConnectionStatus(const meshtastic_DeviceConnectionSt void TFTView_320x240::onTextMessageCallback(const ResponseHandler::Request &req, ResponseHandler::EventType evt, int32_t result) { ILOG_DEBUG("onTextMessageCallback: %d %d", evt, result); + const uint32_t requestId = req.requestId; bool channelMessage = (unsigned long)req.cookie < c_max_channels; if (evt == ResponseHandler::found) { - handleTextMessageResponse((unsigned long)req.cookie, req.id, + handleTextMessageResponse((unsigned long)req.cookie, requestId, result ? MessageStatus::State::NoAck : MessageStatus::deliveredState(channelMessage, false), false); } else if (evt == ResponseHandler::removed) { - handleTextMessageResponse((unsigned long)req.cookie, req.id, + handleTextMessageResponse((unsigned long)req.cookie, requestId, result ? MessageStatus::State::NoAck : MessageStatus::deliveredState(channelMessage, true), true); } else { ILOG_DEBUG("onTextMessageCallback: timeout!"); - handleTextMessageResponse((unsigned long)req.cookie, req.id, MessageStatus::State::NoAck, true); + MessageStatus::State status = MessageStatus::State::NoAck; + const auto pendingStatus = controller->pendingTextMessageStatus(requestId); + if (pendingStatus && MessageStatus::isImplicitDelivery(*pendingStatus)) + status = *pendingStatus; + handleTextMessageResponse((unsigned long)req.cookie, requestId, status, true); } } diff --git a/source/graphics/common/MessageStatus.cpp b/source/graphics/common/MessageStatus.cpp index 70f9c2ff..a52d3da7 100644 --- a/source/graphics/common/MessageStatus.cpp +++ b/source/graphics/common/MessageStatus.cpp @@ -52,6 +52,11 @@ State deliveredState(bool channelMessage, bool explicitAck) return explicitAck ? State::ExplicitAck : State::DirectImplicitAck; } +bool isImplicitDelivery(State state) +{ + return state == State::ChannelImplicitAck || state == State::DirectImplicitAck; +} + LogMessage::MsgStatus logStatusForState(State state) { switch (state) { diff --git a/source/graphics/common/ResponseHandler.cpp b/source/graphics/common/ResponseHandler.cpp index 9cdc716c..3016ff7e 100644 --- a/source/graphics/common/ResponseHandler.cpp +++ b/source/graphics/common/ResponseHandler.cpp @@ -18,7 +18,8 @@ uint32_t ResponseHandler::addRequest(uint32_t id, RequestType type, void *cookie { requestIdCounter++; uint32_t requestId = generatePacketId(); - pendingRequest[requestId] = Request{.id = id, .timestamp = millis(), .type = type, .cookie = cookie, .cb = cb}; + pendingRequest[requestId] = + Request{.requestId = requestId, .id = id, .timestamp = millis(), .type = type, .cookie = cookie, .cb = cb}; return requestId; } diff --git a/source/graphics/common/ViewController.cpp b/source/graphics/common/ViewController.cpp index f9fcb628..e166a1b8 100644 --- a/source/graphics/common/ViewController.cpp +++ b/source/graphics/common/ViewController.cpp @@ -497,7 +497,7 @@ bool ViewController::updateTextMessageStatus(uint32_t requestId, MessageStatus:: if (pendingIt == pendingTextMessages.end()) return false; - const PendingTextMessage pending = pendingIt->second; + PendingTextMessage &pending = pendingIt->second; LogMessageEnv msg; const bool updated = log.update( pending.logPosition, msg, @@ -511,12 +511,24 @@ bool ViewController::updateTextMessageStatus(uint32_t requestId, MessageStatus:: ILOG_WARN("failed to persist text message status for request id 0x%08x", requestId); } + if (updated && !finalStatus) + pending.status = status; + if (finalStatus) pendingTextMessages.erase(pendingIt); return updated; } +std::optional ViewController::pendingTextMessageStatus(uint32_t requestId) const +{ + const auto pendingIt = pendingTextMessages.find(requestId); + if (pendingIt == pendingTextMessages.end()) + return std::nullopt; + + return pendingIt->second.status; +} + bool ViewController::requestPosition(uint32_t to, uint8_t ch, uint32_t requestId) { ILOG_DEBUG("sending position request"); diff --git a/tests/test_MessageStatus.cpp b/tests/test_MessageStatus.cpp index aa9e5650..9529b691 100644 --- a/tests/test_MessageStatus.cpp +++ b/tests/test_MessageStatus.cpp @@ -39,6 +39,11 @@ TEST_CASE("MessageStatus maps delivery context") CHECK(MessageStatus::deliveredState(true, true) == State::ChannelImplicitAck); CHECK(MessageStatus::deliveredState(false, false) == State::DirectImplicitAck); CHECK(MessageStatus::deliveredState(false, true) == State::ExplicitAck); + + CHECK(MessageStatus::isImplicitDelivery(State::ChannelImplicitAck)); + CHECK(MessageStatus::isImplicitDelivery(State::DirectImplicitAck)); + CHECK_FALSE(MessageStatus::isImplicitDelivery(State::ExplicitAck)); + CHECK_FALSE(MessageStatus::isImplicitDelivery(State::NoAck)); } TEST_CASE("MessageStatus maps log status only when inline status is meaningful") diff --git a/tests/test_ResponseHandler.cpp b/tests/test_ResponseHandler.cpp new file mode 100644 index 00000000..62c2eb4d --- /dev/null +++ b/tests/test_ResponseHandler.cpp @@ -0,0 +1,43 @@ +#include "graphics/common/ResponseHandler.h" +#include + +namespace +{ +class FixedRequestIdResponseHandler : public ResponseHandler +{ + public: + FixedRequestIdResponseHandler() : ResponseHandler(1000) {} + + protected: + uint32_t generatePacketId(void) override { return generatedRequestId; } + + private: + static constexpr uint32_t generatedRequestId = 0x0badcafe; +}; +} // namespace + +TEST_CASE("ResponseHandler keeps generated request id separate from destination id") +{ + FixedRequestIdResponseHandler requests; + + uint32_t callbackRequestId = 0; + const uint32_t generatedRequestId = + requests.addRequest(3, ResponseHandler::TextMessageRequest, reinterpret_cast(7), + [&callbackRequestId](const ResponseHandler::Request &req, ResponseHandler::EventType evt, + int32_t pass) { + callbackRequestId = req.requestId; + CHECK(req.id == 3); + CHECK(req.cookie == reinterpret_cast(7)); + CHECK(evt == ResponseHandler::removed); + CHECK(pass == 42); + }); + + CHECK(generatedRequestId == 0x0badcafe); + + const ResponseHandler::Request found = requests.findRequest(generatedRequestId); + CHECK(found.requestId == generatedRequestId); + CHECK(found.id == 3); + + requests.removeRequest(generatedRequestId, ResponseHandler::TextMessageRequest, 42); + CHECK(callbackRequestId == generatedRequestId); +} From 30f7f0150141b809fb8486b2bab95630c26660a0 Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Mon, 6 Jul 2026 20:46:29 -0700 Subject: [PATCH 06/16] Fix MUI message status edge cases --- include/graphics/common/MessageStatus.h | 1 + include/util/LogMessage.h | 12 ++++++-- source/graphics/TFT/TFTView_320x240.cpp | 15 +++++----- source/graphics/common/MessageStatus.cpp | 7 +++++ source/graphics/common/ViewController.cpp | 2 +- tests/test_LogMessage.cpp | 35 +++++++++++++++++++++++ tests/test_MessageStatus.cpp | 6 ++++ 7 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 tests/test_LogMessage.cpp diff --git a/include/graphics/common/MessageStatus.h b/include/graphics/common/MessageStatus.h index f7889d95..74cb75bd 100644 --- a/include/graphics/common/MessageStatus.h +++ b/include/graphics/common/MessageStatus.h @@ -35,6 +35,7 @@ struct Presentation { const Presentation &presentation(State state); State deliveredState(bool channelMessage, bool explicitAck); bool isImplicitDelivery(State state); +State preserveImplicitDelivery(std::optional pendingStatus, State fallbackStatus); LogMessage::MsgStatus logStatusForState(State state); uint32_t persistedLogState(State state); std::optional stateFromPersistedLogState(uint32_t state); diff --git a/include/util/LogMessage.h b/include/util/LogMessage.h index 84e3b382..5f69e52f 100644 --- a/include/util/LogMessage.h +++ b/include/util/LogMessage.h @@ -6,6 +6,12 @@ #include constexpr uint32_t messagePayloadSize = 233; +constexpr uint32_t maxLogMessagePayloadLength = messagePayloadSize - 1; + +constexpr bool fitsLogMessagePayload(size_t len) +{ + return len <= maxLogMessagePayloadLength; +} /** * @brief Header for storing message logs containing the actual size of the payload @@ -42,7 +48,7 @@ class LogMessageEnv : public LogMessage LogMessageEnv(uint32_t _from, uint32_t _to, uint16_t _ch, time_t _time, MsgStatus _status, bool _trashFlag, uint32_t _len, const uint8_t *msg) { - assert(_len < messagePayloadSize); + assert(fitsLogMessagePayload(_len)); _size = (uint16_t)_len; time = _time; from = _from; @@ -64,7 +70,7 @@ class LogMessageEnv : public LogMessage virtual size_t deserialize(std::function read) override { size_t len = read((uint8_t *)&_size, sizeof(LogMessageHeader) - 8); - if (len && _size < messagePayloadSize) { + if (len && fitsLogMessagePayload(_size)) { len += read(bytes, _size); bytes[_size] = 0; } else { @@ -73,4 +79,4 @@ class LogMessageEnv : public LogMessage } return len; } -}; \ No newline at end of file +}; diff --git a/source/graphics/TFT/TFTView_320x240.cpp b/source/graphics/TFT/TFTView_320x240.cpp index 4c4201ff..d8b0cef5 100644 --- a/source/graphics/TFT/TFTView_320x240.cpp +++ b/source/graphics/TFT/TFTView_320x240.cpp @@ -4491,11 +4491,12 @@ void TFTView_320x240::handleAddMessage(char *msg) } // tweak to allow multiple lines in single line text area - for (int i = 0; i < strlen(msg); i++) + const size_t msgLen = strlen(msg); + for (size_t i = 0; i < msgLen; i++) if (msg[i] == CR_REPLACEMENT) msg[i] = '\n'; - if (strlen(msg) > meshtastic_Constants_DATA_PAYLOAD_LEN) { + if (!fitsLogMessagePayload(msgLen)) { addMessage(activeMsgContainer, actTime, 0, msg, LogMessage::eFailed); handleTextMessageResponse(channelOrNode, 0, MessageStatus::State::MessageTooLarge); messageAlert(_(MessageStatus::presentation(MessageStatus::State::MessageTooLarge).text), true); @@ -5300,10 +5301,8 @@ void TFTView_320x240::onTextMessageCallback(const ResponseHandler::Request &req, true); } else { ILOG_DEBUG("onTextMessageCallback: timeout!"); - MessageStatus::State status = MessageStatus::State::NoAck; - const auto pendingStatus = controller->pendingTextMessageStatus(requestId); - if (pendingStatus && MessageStatus::isImplicitDelivery(*pendingStatus)) - status = *pendingStatus; + const MessageStatus::State status = MessageStatus::preserveImplicitDelivery( + controller->pendingTextMessageStatus(requestId), MessageStatus::State::NoAck); handleTextMessageResponse((unsigned long)req.cookie, requestId, status, true); } } @@ -5350,7 +5349,9 @@ void TFTView_320x240::handleResponse(uint32_t from, const uint32_t id, const mes if (req.type == ResponseHandler::TraceRouteRequest) { handleTraceRouteResponse(routing); } else if (req.type == ResponseHandler::TextMessageRequest) { - handleTextMessageResponse((unsigned long)req.cookie, id, MessageStatus::State::NoAck, true); + const MessageStatus::State status = MessageStatus::preserveImplicitDelivery( + controller->pendingTextMessageStatus(id), MessageStatus::State::NoAck); + handleTextMessageResponse((unsigned long)req.cookie, id, status, true); } } else if (routing.error_reason == meshtastic_Routing_Error_NO_RESPONSE) { if (req.type == ResponseHandler::PositionRequest) { diff --git a/source/graphics/common/MessageStatus.cpp b/source/graphics/common/MessageStatus.cpp index a52d3da7..6b95e913 100644 --- a/source/graphics/common/MessageStatus.cpp +++ b/source/graphics/common/MessageStatus.cpp @@ -57,6 +57,13 @@ bool isImplicitDelivery(State state) return state == State::ChannelImplicitAck || state == State::DirectImplicitAck; } +State preserveImplicitDelivery(std::optional pendingStatus, State fallbackStatus) +{ + if (pendingStatus && isImplicitDelivery(*pendingStatus)) + return *pendingStatus; + return fallbackStatus; +} + LogMessage::MsgStatus logStatusForState(State state) { switch (state) { diff --git a/source/graphics/common/ViewController.cpp b/source/graphics/common/ViewController.cpp index e166a1b8..5562c8a4 100644 --- a/source/graphics/common/ViewController.cpp +++ b/source/graphics/common/ViewController.cpp @@ -475,7 +475,7 @@ void ViewController::sendTextMessage(uint32_t to, uint8_t ch, uint8_t hopLimit, const char *textmsg) { size_t msgLen = strlen(textmsg); - assert(msgLen <= (size_t)DATA_PAYLOAD_LEN); + assert(fitsLogMessagePayload(msgLen)); if (send(to, ch, hopLimit, requestId, meshtastic_PortNum_TEXT_MESSAGE_APP, false, usePkc, (const uint8_t *)textmsg, msgLen)) { // ILOG_DEBUG("storing msg to:0x%08x, ch:%d, time:%d, size:%d, '%s'", to, ch, msgTime, msgLen, textmsg); diff --git a/tests/test_LogMessage.cpp b/tests/test_LogMessage.cpp new file mode 100644 index 00000000..d0f5715d --- /dev/null +++ b/tests/test_LogMessage.cpp @@ -0,0 +1,35 @@ +#include "util/LogMessage.h" +#include +#include +#include +#include + +TEST_CASE("LogMessage text payload leaves room for deserialize terminator") +{ + CHECK(maxLogMessagePayloadLength == messagePayloadSize - 1); + CHECK(fitsLogMessagePayload(maxLogMessagePayloadLength)); + CHECK_FALSE(fitsLogMessagePayload(messagePayloadSize)); + + std::array payload{}; + payload.fill('x'); + + LogMessageEnv stored(1, 2, 0, 0, LogMessage::eDefault, false, maxLogMessagePayloadLength, payload.data()); + + std::vector serialized; + stored.serialize([&serialized](const uint8_t *data, size_t len) { + serialized.insert(serialized.end(), data, data + len); + return len; + }); + + size_t offset = 0; + LogMessageEnv restored; + restored.deserialize([&serialized, &offset](uint8_t *data, size_t len) { + std::copy(serialized.begin() + offset, serialized.begin() + offset + len, data); + offset += len; + return len; + }); + + CHECK(restored.length() == maxLogMessagePayloadLength); + CHECK(restored.bytes[maxLogMessagePayloadLength - 1] == 'x'); + CHECK(restored.bytes[maxLogMessagePayloadLength] == 0); +} diff --git a/tests/test_MessageStatus.cpp b/tests/test_MessageStatus.cpp index 9529b691..85bb8bee 100644 --- a/tests/test_MessageStatus.cpp +++ b/tests/test_MessageStatus.cpp @@ -1,5 +1,6 @@ #include "graphics/common/MessageStatus.h" #include +#include #include using MessageStatus::State; @@ -44,6 +45,11 @@ TEST_CASE("MessageStatus maps delivery context") CHECK(MessageStatus::isImplicitDelivery(State::DirectImplicitAck)); CHECK_FALSE(MessageStatus::isImplicitDelivery(State::ExplicitAck)); CHECK_FALSE(MessageStatus::isImplicitDelivery(State::NoAck)); + + CHECK(MessageStatus::preserveImplicitDelivery(State::ChannelImplicitAck, State::NoAck) == State::ChannelImplicitAck); + CHECK(MessageStatus::preserveImplicitDelivery(State::DirectImplicitAck, State::NoAck) == State::DirectImplicitAck); + CHECK(MessageStatus::preserveImplicitDelivery(State::ExplicitAck, State::NoAck) == State::NoAck); + CHECK(MessageStatus::preserveImplicitDelivery(std::nullopt, State::NoAck) == State::NoAck); } TEST_CASE("MessageStatus maps log status only when inline status is meaningful") From 3b8ac103ec392bc6ff01ae644322d6773d629ca6 Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Mon, 6 Jul 2026 21:02:21 -0700 Subject: [PATCH 07/16] Update NO_CHANNEL message status wording --- .../all-message-status-states.png | Bin 51361 -> 52229 bytes .../message-status-evidence/no-channel.png | Bin 7378 -> 7618 bytes source/graphics/common/MessageStatus.cpp | 2 +- tests/test_MessageStatus.cpp | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/artifacts/message-status-evidence/all-message-status-states.png b/artifacts/message-status-evidence/all-message-status-states.png index 7d97186e2e57d2e241deb7a2e6e2071733199a5a..49973078a7a743810557060382d582a47c8555d6 100644 GIT binary patch literal 52229 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 PlIp&??wxYghfn_v;Sd&T literal 51361 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 U_hSC{(zzTr^h|V1wC_LuC%s<7vH$=8 diff --git a/artifacts/message-status-evidence/no-channel.png b/artifacts/message-status-evidence/no-channel.png index 031ac7035427edb476d3208e25ea9c7646361d41..1b747905b837ae9fdb307c692aa315523267c7b3 100644 GIT binary patch literal 7618 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 diff --git a/source/graphics/common/MessageStatus.cpp b/source/graphics/common/MessageStatus.cpp index 6b95e913..9a8e6473 100644 --- a/source/graphics/common/MessageStatus.cpp +++ b/source/graphics/common/MessageStatus.cpp @@ -9,7 +9,7 @@ constexpr Presentation channelImplicitAck{"Delivered to mesh", Tone::Success, fa constexpr Presentation directImplicitAck{"Relayed, not confirmed by recipient", Tone::Warning, true}; constexpr Presentation explicitAck{"Delivered to recipient", Tone::Success, false}; constexpr Presentation noAck{"Failed to deliver to mesh", Tone::RetryableFailure, true}; -constexpr Presentation noChannel{"No channel selected", Tone::RetryableFailure, true}; +constexpr Presentation noChannel{"Channel/key mismatch", Tone::RetryableFailure, true}; constexpr Presentation genericEncryptedSendFailure{"Could not send encrypted message", Tone::RetryableFailure, true}; constexpr Presentation recipientKeyUnavailable{"Recipient key unavailable", Tone::RetryableFailure, true}; constexpr Presentation recipientNeedsSenderKey{"Recipient needs your key", Tone::RetryableFailure, true}; diff --git a/tests/test_MessageStatus.cpp b/tests/test_MessageStatus.cpp index 85bb8bee..ba46af60 100644 --- a/tests/test_MessageStatus.cpp +++ b/tests/test_MessageStatus.cpp @@ -14,7 +14,7 @@ TEST_CASE("MessageStatus canonical inline text") std::string("Relayed, not confirmed by recipient")); CHECK(MessageStatus::presentation(State::ExplicitAck).text == std::string("Delivered to recipient")); CHECK(MessageStatus::presentation(State::NoAck).text == std::string("Failed to deliver to mesh")); - CHECK(MessageStatus::presentation(State::NoChannel).text == std::string("No channel selected")); + CHECK(MessageStatus::presentation(State::NoChannel).text == std::string("Channel/key mismatch")); CHECK(MessageStatus::presentation(State::GenericEncryptedSendFailure).text == std::string("Could not send encrypted message")); CHECK(MessageStatus::presentation(State::RecipientKeyUnavailable).text == std::string("Recipient key unavailable")); From 7ec815b651d8e6e39adf719dd61fa3f8a90794c9 Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Mon, 6 Jul 2026 22:19:11 -0700 Subject: [PATCH 08/16] Update MUI message status routing labels --- .../admin-key-not-authorized.png | Bin 0 -> 6115 bytes .../admin-session-expired.png | Bin 0 -> 5823 bytes .../all-message-status-states.png | Bin 52229 -> 54881 bytes .../channel-implicit-ack.png | Bin 7697 -> 5516 bytes .../dm-implicit-ack.png | Bin 8269 -> 6456 bytes .../duty-cycle-limit.png | Bin 0 -> 5320 bytes .../encrypted-send-failed.png | Bin 8685 -> 0 bytes .../message-status-evidence/explicit-ack.png | Bin 7602 -> 5602 bytes .../generic-encrypted-send-failure.png | Bin 0 -> 6590 bytes .../invalid-request.png | Bin 0 -> 5458 bytes .../message-too-large.png | Bin 7888 -> 5851 bytes artifacts/message-status-evidence/no-ack.png | Bin 7312 -> 5773 bytes .../no-app-response.png | Bin 0 -> 5456 bytes .../message-status-evidence/no-channel.png | Bin 7618 -> 6024 bytes .../no-radio-interface.png | Bin 0 -> 5533 bytes .../not-authorized.png | Bin 0 -> 5472 bytes .../message-status-evidence/rate-limited.png | Bin 0 -> 5128 bytes .../recipient-key-unavailable.png | Bin 8389 -> 6009 bytes .../recipient-needs-your-key.png | Bin 8481 -> 6085 bytes artifacts/message-status-evidence/sending.png | Bin 6838 -> 5107 bytes include/graphics/common/MessageStatus.h | 8 +++ source/graphics/TFT/TFTView_320x240.cpp | 51 +++++++++++++----- source/graphics/common/MessageStatus.cpp | 34 +++++++++++- source/graphics/common/ViewController.cpp | 32 +++++------ tests/test_MessageStatus.cpp | 34 +++++++++--- 25 files changed, 119 insertions(+), 40 deletions(-) create mode 100644 artifacts/message-status-evidence/admin-key-not-authorized.png create mode 100644 artifacts/message-status-evidence/admin-session-expired.png create mode 100644 artifacts/message-status-evidence/duty-cycle-limit.png delete mode 100644 artifacts/message-status-evidence/encrypted-send-failed.png create mode 100644 artifacts/message-status-evidence/generic-encrypted-send-failure.png create mode 100644 artifacts/message-status-evidence/invalid-request.png create mode 100644 artifacts/message-status-evidence/no-app-response.png create mode 100644 artifacts/message-status-evidence/no-radio-interface.png create mode 100644 artifacts/message-status-evidence/not-authorized.png create mode 100644 artifacts/message-status-evidence/rate-limited.png diff --git a/artifacts/message-status-evidence/admin-key-not-authorized.png b/artifacts/message-status-evidence/admin-key-not-authorized.png new file mode 100644 index 0000000000000000000000000000000000000000..f73fa96f97d70947a999ffd2a26ae53ab02fe62c GIT binary patch literal 6115 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≻JgoOc6b4;BG_v*Q#FPF zcZZdj+n<^XRK=x*?mFxb+oVjZG(g!WMQ&|nrIW|eWWSQh&OPp6H3n=FjA)y>2G%d2 zmjsyTj=7kdn{NTNJXpOV`hWy)RaKQc6zB~{I6;_R>?Rep40!RfBcOrIxKcgE>toSo z;o(eha4=JkGbnivogJnhz5`E!WR8b}v>>Pf0m}%9tOJ1GzIV8RdE2YmH1^26{kBb1V z`Vcrnw2xZnxh~w{lbNX_hPf#$-iiLR z1wr^lek~=l+VId)d^Q6eEd7o;@R|9~#@ia(zf&N}~Np_pYSD@DbBsT%DdHzdzxzGTp zkI&AMp-arn&C$zo^n=6^(mQ5YlC6r7nTG7+nNrP9c#Vlibv?yXK~OlJB$3CEi# z<|8#*G)8ki*FxM3SmmB$LxoLVi%?1Mmn1(gjTw6(Z@hfil+Vw?{`Ktjmf! zUS1HN(S2p;qktd+l0I<5Wj-?+oXU704KYb)EVEQ8`auIYceTgH5A^rw zXg_@=DO5jwoNb*Y&crs4Y`s$-mfQ^*NOK8WS>{cpiRr;GlaQZ_p}yCRQW{nTAQOVharmv$V8ST=G)t)*J8AHoG!dR+{LK?0YJsirf44wJps~`c7LNI!Uy| zy2IwXGZpJNL(JqLTv+vD3=E8ba*NgSFNP_WljFHaS1jM@?rtR&0WXPdl#QgeZE|#T zB~41|NAO(hKWArGayrOKGU)_or=~KxcR%iKrs7$jf)6&ZJy}h(dph%qGd~fm_D29w z**IKcsoebGr%#M5g(VjAy8CW1u7I4J+~NfPA#u$B%7~mp==?6aBSq`Ix6o zVV>8n%S0CR*NHO4=pC+mW-vp3iTXn>POnp7n0)@u2~q(|ZQ!eMOP9MT_m#Mu KSgDAf_x}Kj?XCj= literal 52229 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 PlIp&??wxYghfn_v;Sd&T diff --git a/artifacts/message-status-evidence/channel-implicit-ack.png b/artifacts/message-status-evidence/channel-implicit-ack.png index e181ddf832bb98e7a35ce747f2585765859afa81..4988962b76404c3ff2a5cce932c92d342e0aff73 100644 GIT binary patch literal 5516 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 literal 7697 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 diff --git a/artifacts/message-status-evidence/dm-implicit-ack.png b/artifacts/message-status-evidence/dm-implicit-ack.png index 383c2e798e3716c32a443563693b1291bbbe4456..1da1f6827eaf3917a04cc255cb83a8fce6d4b44c 100644 GIT binary patch literal 6456 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 literal 8269 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 literal 0 HcmV?d00001 diff --git a/artifacts/message-status-evidence/encrypted-send-failed.png b/artifacts/message-status-evidence/encrypted-send-failed.png deleted file mode 100644 index 9540c67bf21f3c50d5476568b7890e432a625212..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8685 zcmd^lXIN8Tvu{xThzb%qQUxi}5d@@5D1ua}(h{Wi-m8EhNQp|7Dk6deh?LL+(t9WL zCPfGsI)oND`+eX0?VJzixgYP%hyAQ)@0Go0&HUy!vu0MDuJ&{CJB)WgAP~8_nz9}U zMDz?8?~&dBu2(vIvLFz9wYsvRK|nTcA<$gkcu`?5Ih2B3AmS&rgb7WthRO_$ppff= z6ACx(JMm+KnXAA}dv-UNq2l>DA`K~DdLZh4J~Sicd}aiJ90a$P zo!P39QWkn`;tBNg*}=^l<_EoU^(GHGySg|)pxhpK5D4@pA_{c#&0|s#5X1j&Kw+jy z*KhbJWKY8KQGxV~+h~^im_s!|#$Q5G+(aTKk>R66=y@3|thawil@xt>zTHVLbm_JJ zzEIIYS$XyddwsQX_w7h^QQpqPwvMeWrDR-aXg4RPkB^TUM9Ht7X$kkpixFz{T*{<|nIfKl|o4*z&C| z0zyeeXUDQU5*uq&A7UAOGcwYNj~_`#OWC5Ttiq+8+k{0R&z-KlwY7Uu&I{}|qDpP; zc^Oh-8>jmRGX5k+1pJ#9h4LxD>KfrKFk2H7KcXIzKFUk2bj*U4x^mGs8 zH{tJ-V&2&G+l%MhH-nV4%t1Secgar!E5j|nG#3kfZD(ss50Clj3W%g6U+Szta*lkU-so5) z*o*c~a7KZ+d)`kcxum8f|U&b`}?=Xh31Z5w?1~pOp{5aj`J2{Cq=N+M9^J^?ipYvr(n< zeQpcD>UMH-N%N12az%aocBZSb-Jut<=qB!O-#Ol@agGhtdp9;T__-~Hc;MY6{qYsI zZ>KGAy?z~+%x%je?~((J�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 r58j`t{ljvmKuy8E@LYRm$(Zd+R7`+Rk_cBIr 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 literal 0 HcmV?d00001 diff --git a/artifacts/message-status-evidence/invalid-request.png b/artifacts/message-status-evidence/invalid-request.png new file mode 100644 index 0000000000000000000000000000000000000000..06a1dd1f04aa969288d20d6facaa59df1bf59cc9 GIT binary patch literal 5458 zcmds*cQBmazsK!btP)YzDv2J#ViBVEo&-Vk@(59)CRn|!8p4+ptRRSp&RQ)>SUq}+ z5?!KqqDH&>`~7w2&b>4D&pUVK%rocA=RMDPpL3q)b3XHm)z{U$LBT>nL_~B$TT9J= zhzO)a=fE*DKBeS-evXS4^R+{4j!~>e>!J8~z)EKY!l7a$^;wv*+k+@Ir z$D&VL*~-lxht36KZFi8P!VQ57N`V_^*eVJ6C-Qd9PiEzt5y~|2%c;E3@QPPqBrSj% zJ{&-D0m?`?EtUfw4>hHs(tseKq}*T_B!U)18Q${0l%4V}TwGiX4i2`oDEGGY^iZU# zsH(2#vdpnkQczf?ZftJeym?d6Cy2>v|M(ac5Fmp@($Lb{lC)m8(MPhY5rLzzSY*CD zFE5E54ftx65|LdN9TPK3>gL^`>h0~Vt=&C7KHky-g7qqf)P!woo>OL7L6z`&dU}r@ zJ<>g&oP>9BKpvjCIXPw1&RlROW@Ka>9vzuo?N{VDKW8w%S-vYcVkgQf66N>|D2v;NG1Fo9HQl3hK4GNiG8Y9S66?etE(U<*Vx#I zKp@(?x@0q}s;Xw@<{X|qt5YF3TZrKe(A6DSTjSUB4Gy-lv~+E`kDi*I9vm1jo%C>b zzjNo#(_xk~D|7RJkdTnz;MvJZ{T$}8jSYd6Z{Os_a^>aRIEG|IgoKtgNCuY^qK1FA z9Eoi!&f3AKIEg@A?d`~73QEf4iqg^qA4Dpc(bLTA=h#^Cb21^|j&Nl{=dWK}qxU#D zIpyUuaWm7?#qqMTvW10(uk2B%6m4f&<-Gg%?|UCdD+wKDVK7Q(uBXoLNQST^^-4<| z-mTvn(+Jw?YKeO11gfxUS`AlMgvRIa7s0`q%1`_H`r4l=<{rl?ZOZZRw9iEhjd#98 z4N+i9lLGs~IZru(n8?nquGN*5_xo#W1$A}OP>>hone5pkkhrFzf xGP$CnVxQnp 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 UOO;&$DkUP)R@YT4Qvt&N1JoMsasU7T literal 0 HcmV?d00001 diff --git a/artifacts/message-status-evidence/message-too-large.png b/artifacts/message-status-evidence/message-too-large.png index bdd3897b9228d506e8932ead25d0c4cc68523ec9..42c8135bcca7e597b043b09d75fbb5bfd105c99e 100644 GIT binary patch literal 5851 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 RBP^|nwAJ<1KB?Hp{1=OT+a&-1 literal 7888 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 diff --git a/artifacts/message-status-evidence/no-ack.png b/artifacts/message-status-evidence/no-ack.png index bb0568ea8d6b544a5ffabd283449fd24027109d0..1c348914225f31d7048865900940174cb9d05dfa 100644 GIT binary patch literal 5773 zcmd^@XH*l>yY5q{AvEblIw(DYfOG@_L8S&rqy-dIx`6bO&;laTo1%b-bfkAM6e)sq zLdOUOq<5rq@;~>}{czX1AJ1B6)~uOXd-lxx&fa_W{yk5Ok%2BPgcAY)0BH5@-!lOK zfEuLh9V!s%cxfo60syeW_3qt;`^{`*K6@bXfFWv#p3{pi!>g;burNbC8p$aA`V+hH zE&C4cuSnz2h2RRiE!db;b09$@aP6d`Mo!gC^~pE0dDU+ccNyLg(}k(RDx=Zl?WlXW zFceGxbr;6YSi#5sh6=#|)ghChq7VeJl7%w@X~Nq7KdT)J6VA`ihlYmQ+wb;w{`dh& z*VNKl&Es6)qJcoH(%074>FMd!Uj?yQ?;aib1OzC-U<{0mcH|vbolFtD_W+=%iV9eP zs<1Hm69&-b3XMcgc@!2qM&at+tmW4h`uc8fZ_nzmR>sH2 zTU%RWAa`VB_AV||MMYzLhWEc#SMMJmXHdxbJ32~~WMH7CqSDgR zA|WBs)zhQ=p{Ay0ZehXE!J$!;lo>FR=&Kxk-EE6d8_UP+{bSUix(>4}L{CrU|_h*Wi4_u`_!*lm7( zepS^ERdchmC2y3Km5YjsqM!Qsr0Km-zMHS0px}KJr6GBcospq&;&S{VnS8i{yh-B^ zpLa)VOD3sqZLM6>i#RBHmQlyWMMCFu*vsJH4|nYc1_rw9)$@*GG}cvwgt`{Ohw zKEsfVvV_2aF#cnH6gHx}r)On(Ic4|n-@?X5MJk{dnS=7lBcQCVx|&*5b#-cGW#uj@ zLn$db!Ml}(Vdkc$d07Vs2XpiD{4TCkU!+}Sm|eF%S;OIk?l7dK(rVjQ9Ch9>4~b&PK#z@%Cd55%%q6>=J`!H$ zrk(r^^9q}&avnAEzZq_`Qb%mZ#0%e^&?9%)yEr3vMF9t-OP+5F!q{2UqW?5go|l)= z-n%O8Md52Aw8OM|t77}-&!4qp5kGX>z{ni0EzSysGDQiqb2(%!4<$Sr;>@l9G<`bA*eALVP5a`K9bnawwgXCNDb z3Hif{zO++Z{lciK_p&c{9N|@7%`8xU6wt!l+=RWTbEC&9-G~{h1qUosiY;1^=}k^d zD4rSlPubTP2*ib@vA@~V`@R&&E|a(TAv^nwD#AE7 zuGc&>5Xn7)@3xP3^)>SM@$<`2(6d@ddR+bAol}7x;aL$FzqKjssh%C3A&`P}yy4_~ zXt%nqBDiadgIuE=N#s?6TZmrYD9mm{*w}m_D+-o2&5pb&XjgdfQpZlrtEj1I#^hKS z70maMZF9Gxxw$zgr~8wfXYW7-2eb$q4kj|K?uo%XS$jW*{ph0^r>q)LT#-s*4mp-7 zi2EM)eLAWH7LBF{Q#71*))5-(0J{jzC=f zY4Yp(-J-J96HM@EQ&m@=%z1squ(Q7I+-mc+GJsc#$?u}_bai$0__%?>>^KuxMa>@e zKW=ZRBL0(3tBo@&xsO|`t>R+!AO`$HDHqF2pbq!y)t+^N%%xd^ilfLSP+|-oVn9=> zJE>?SI=Z{N>+0%q#amff)y!`4iW5m|N6=DKNlD2`(517XPZV0gMU^l+JKOhk z)Tvgj8^8VU{ZB{gv%S5l*-d%QxWkj4o}Pf#wr}6mIpg%FY%P9Nhqt4i%$mF^7-QTi zXWWS@qqI_L`S$HwTboT!9nVLHBOV@}t+JF7hqUr|Y^U9e<3E4?5Q)Tph_>ctO9|FM zUKJIUH$6-5-*W-CIe}MR!i4ONtbTDV|6-my}Egers*5jH)iGJBo>kDJzrYgm`f316lP&aHaWyfq~-U;+dJ5)ahFY3Hv+Zpx~x!6r#Br+3}_0a?!nM47LU7MMi862cz$Hs4NZBaZPbL<@-XQm~;qnZz( z5vC=O(zvu-6fdux;;nr5{=I^{d}(D#NvwMEL#`XR^Y!>+n%4ziKIH1ti{doW|UdVX8?^TuK1=N zkktfjW}F0)_zWodBt(w54>Z@-gH$AdN?#{2qxi`YEW)IuY-uW5<~!V>ll85!f({~! zI(r|q%+Qen^d5G0zjt?cS1#_cp>T1kERBkT+641ge+?z^_47Nrfp!XiX5fc*= zsE;uwjcPC$>;@|s2>M1h8{O;b^(vqND>y8WE%;co5 zF(U+=cpYhCvY44N8BQC+zPRh>?k=4+IB2k^x}z~;?&Bl>^|V8lhm(sdd@P;Gn^~oE z@gW6x=aKwhec;<9HEP(lYC6ax3F}RQDmAsYiRL~wl>mlHRMqqLZ_st zxEdAbg~O>gF<9}gZo90D;4V4gy~}Vah+8vNtIP3?c+^DFVMIYG>VV(* zS2O4g*gf&B90%LB#Q3wk-Z-5e8EFq&QY_4ZH&6~cI728(t-E8IN4rC-y)LB;$c(w! z&M}iSh<;312mgKC6awMrksuN$e}sP_k#xn!ce4m&AtWHrT9hOcky4q!UUFMh>O1EC zut4hZ_e77Dm#y;=xVE{KPWjA0Tv#Ido@2Y9ACA)PveI~XC1TzDn~^P$p? zwzNt<#WD$bk!17rhDEKZcv>Mb^XzLn^A1VI zam9%yMa*h+6yZBmafMvtF7l6PRWcvKfl&~1ZO2iqCG8K&T9t?_gMt8icH^01PEF1- zb8*pDFLHSrXqWpG759w3e``}9t&&&Qq{ZQ9FajVqa76`7Yr zqE2$GYptXvBJn7FjMlc&T)s}?+gPLAvQxx0J$e%_IU&L60~V{|(b-L(Tq7#G5?NDu zDOQ^ACD>BJXKZ(@zHGS5Nc`Gilg@bT$Dx%UpT|}sL_ACauGpp|JR0nGhanIupG&ErI-x+po zY?+Hphj6gbhO2nMR{_MdGf}x{pmxYWTny|g7#sx|h2j6J*aJ!zPA@YZi@O6Y>Mdxc zYI)mfWo6k|HA^ZPAWqqkQS8uyz;`GxK<;oH;O$)$pob5Je!{?xyF~>hu#-`EK>x4X zy|`pu-;m%IZ_l7tudZ{?$=(|JxE1R6N-I%)!PY==<)3e;Ag@}(*(vc6Q^JYtU&~h?D}CTuyXy>gjKTg>)LkSHq>}kJ2JmaBMUPez}&iMv4Sy_uR_r zO!~szLxHq>hmLNFgc+U^A8$(n9UA6SzhlAlt;=yBWTE^~A1OUCu9xXFNVGP< zToU)F5htSXE_7F!;*+>Cf~Qw1KIx=7>ehrUu($keD#fx+>B3b*%JiUBr;%--bsQ?= zy-ZicA{8iJF;g znIi|3vtV1ofw}%5M_*P@GCC7C5HAOQ4^Ay}03ug zKm!K0%pr0Z=IeS*dA#VUA(sS$Ib!uAxfb&=kp{@m5(%-oH1DVkdUDn^w}+l6LFqKD z%>qV+-G&H&G;+j4zW);_5(+I1opTw-u=F0N+!}yF$#AEQBIcaE&mX4D7>QFo&01ah zm`U&S7Bq{aRQCI=$2v7}-j<|i$QH;HU>8GW#DFCYDVQt_R+7EB5+ajMTS(LUy^I_* zJRiQwZZ8A-B8eN^@3V2!eL$Pjy9db~g!hd=RUpslJ^o=Z6Pz%MxsUC1+=d7X-Y^D`cY?7i|o*Lr;({?!CKAuQjt@)LM9YM z7jmwSy$n{xYaRdUQ?I$l1lxHpfWpB*6i~tcji>&bgdabCkX)Z{ZM{E#9$p_K5pR6Y zt3P97rcotmUMuituwqo%o2Q*JK&^?4tuK@Yzf8P+pHC z8TFW$62fF!FpflcBq9Ac&a@~cP1$!~QqbAi+0ej%gfyf$Bq1~J@8j!BvVTTb52mIv zEOL$-SlUWUABIXwOB;$LbNc!E*4NaeWM}gxNB?ds@niDfvb41P4?7<3?d^?^!^aa+ zQ&TrLHwi(XM3!_UrKCt4L?SiPLoO~Z&!g)Olc_I`FD@?F*w~b8@;p5~=Qx&^muqy- zUIjsqE74dic71)lc4T5AzgeEW!p)W~zG`}UdZhdJ@8266rCakPGHq>bEo3<+5H#v* zKaRf2fMjK7$Ln=@{4xsy`ug}3`(KznYi@0w7#!v&1wOsbyyu^HV@cnGsnoLrG-U-t19nW8ZAX>Gybf+KbAihO|o9{qA0&E(jd5K zXlMcu_l2$n2M4>^8*2pxk{X|v#V?!QU|?)`7^bM`@8k2uG%^c#+=osrXH6gpE)?$5 zA#x~rhMj{0X=ypuJu;H`5i`G3_))CY(wshR;W6{!IOnao&{Pyo-x^%&=>&iH2^;OM zW}JK?Pav2b?3J3D!Ql<{Bx&*z)O~eMS1MMM@%QZWFuGQ)z(iD4XKmAfK5c8)WT;XJ zkw+4P-xjL+o|?p3>gmOtU3*Z}upPI!+iY-WI-w!yt}O;p%_0k)Ny A!vFvP literal 7312 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 Is62o3FBY6fumAu6 diff --git a/artifacts/message-status-evidence/no-app-response.png b/artifacts/message-status-evidence/no-app-response.png new file mode 100644 index 0000000000000000000000000000000000000000..1e4a44bf81fe78fcd32ab9a6921ebcf9ea759e94 GIT binary patch literal 5456 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 W$233X0bpoXEG;!X)oNvU)V~2B#qJ>h literal 0 HcmV?d00001 diff --git a/artifacts/message-status-evidence/not-authorized.png b/artifacts/message-status-evidence/not-authorized.png new file mode 100644 index 0000000000000000000000000000000000000000..785eab50c1f74818c7684535daf24fdd11be6f43 GIT binary patch literal 5472 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 JsZ@f8{Rhx$G9Ul| literal 0 HcmV?d00001 diff --git a/artifacts/message-status-evidence/rate-limited.png b/artifacts/message-status-evidence/rate-limited.png new file mode 100644 index 0000000000000000000000000000000000000000..a246fd760b2e54e7c4c39736288f5598950fc0d9 GIT binary patch literal 5128 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 literal 0 HcmV?d00001 diff --git a/artifacts/message-status-evidence/recipient-key-unavailable.png b/artifacts/message-status-evidence/recipient-key-unavailable.png index 65d1e9be5785ac4551406dda8c94543308a5d671..31e08e7a991185339fa86b8ea09bee3cfc04740b 100644 GIT binary patch literal 6009 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 dwfq_AwuBN1qfr0rNSRdg$0`~X1 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 literal 8481 zcmeHtWl$Vlv@Ik-g8L9O5F7%*gA)?mHMk8nc!1!R;7)=JPLP4XAi-sV1p*;haF{`Z z4(=|mzwcGu_p0vw@!sECw`Z#BRQH+gz0Y2Ity6nXjFyHXAs!7L1_lP9veFwJ3=B+J zV0?i4065=ia!F!fJl#}&^GeS*XLsJuP}ja4=RlN+$;LiOd8V5!_QCry4rW}us`q6k zZMzeRFHbcjz`JuM5@%CL|IEflFsi1g(0abIp^`Z|+EV`w7YA?iw`V4XKR%}=C(q$% z4kfI9E7LQ-31Ya%-T1y?rg1cMy>9b~jDjK@1H-padYcFXgMsl8HAeiaP|Qy1|EGcP zuUadC-JRY1?*!C?4naIkN4rgEudC79Yuc?XHQJyk;-oD8mEoc6Ob7(GK<4|U-NM>{ zXtkLj<-y_kKerYwf@4Txb0wP0;8NLHDm!E?&GCeUE>2D<7Z-*iK7XSa%elDJLaGeg zkdgf?uG?O%CB41yjyq!m)49b_0qS_syPJ*IF)>5x>JDGC>)e+U;BNyMAQrzv3rH-( zwLEoGnyRb)LW6E@vu$hpoMz_7>k8|IWJIAC;~_oK-^z5!+wWQtM;*nbAk&V8Cvvp3 zZZaL{Iy+dtxPIXN!b-!PPgqDyX$Ld z>8U5wIF2YJUX_Kt=S%WZHBL?*A({jp5eerlJyBv}7ZVd@E34t3asF)#Og-!FY?`@S zfASoJ6pS~X>tPZ=srd#c)1#_OU582{B3Ejq?px_4O^VPfnI8MiXf{v zQu(RFSGcN#pAJmVdwMQa5(#FxahBK*t`nBEj<**!P>GdfxmvM~(C zAr^lro`_Ej8evlMJbnAQYrDxh_Z-CD}U#3Hb>4QR1+l$~p zpCPfAVi6j7f#RHy^QlVFqoYFmVVjwmWY<;qmhp|jmOLo5*#%V~74TJWD=vkNDZHYh z;-7a;%ryJ-C2~V~v65)*w}>HeY{iu~fvZZYy1ELEj&{bzKF_nD=sn34gS(k?8sA<} zjY@3n_uHFj)WY3e(yh(T9@?*?fx^U^pml*_7WH0r!AFhW89ZgMD3=W2N%5u}F zb5NmXXKz2}RcXUbOpJrY183^J-A@mqV-o;;Bh46(JUsMNY{9R?Dr#!#zbYB)78$?? zR8)3$b`egA11qG}BNF1`c>8m+?Y41^l?h%&It4TBwyF^APX$G<7m&s}hQF-qBt~MO zpj?d+aUTuTl!3N^_jNB}p&$^=t>+N#^=@?4&-Tp*j|1n^eO4`q_UOdS%+B#fCJz;K zz@?%(#HMM~!7uuga}fdxI{bL{SevBQ)BVdRI^=5GVyNl(A}|042d1NZ<&gc-HWtkp znyORq)OGXJAGkIr;^n1PS<&iLRa;o7!DV)KwSB4s@l)=f|M&nV_o|hY$;QQHcXxk( zbJfP)jgJH`CM`NFMb}eTS5Xm1+djxF7g1`z(b}3#rT&(&)#)c4Bra$a`WsUOGkt2} zkAsl?hfX67o`z=J3MaRH5AAS;A~X_(ps1^@rC}q3c!VCez@o19!rOaUTU+sbpZz&lh#QTH2W;+P)3rntR`N-S@R zDDZyPA{mTXyf#mZ)wA)w%{Y%yF+Mpe>MqtQ3#y=7qOdF)H8e2gIXouEjhNjS@tH-9 z%{gx@S+@UN7#%(8H(%W{W>52OApq}L+pYgp8>57Uqx9`hadm55| z5Y8+DemhIAm<9KU>n2!I5`vepxVgEl$-KQhwp8P!gj`gLp-BMXbA2|uX(MqG#?W4W zHF=?^?PiR0##IhZt|NThr90djv zULTCf6C2lyF^2sf8fFlEXT4}aNY?5!%=dIj#-OU+$E(=b=X$%%BEx1PhOklhf#-$%Bo>C)wm3ip{y>4X-D1QJ3ke#6DPQV@WkYN z%lmQ@4jpJ+V~xCoH06DF&5ZC#_qIKdt>*pi zb;&P4Q2ikQ2aVP7aD47hbpykr=EV(AXxA}y7{>WWU-9shkBc~mO54{g1en+uU=mA= z7uf%25G)=^%-9a@BO1>av>TjhaGH)GXD1^gW7EuYHVPgqR+jMIQBqO4y4tS3y}23m zF)}e>XJduSTAzjY(hCf_W(hI1trgU-!j z-dLNP^H6mh4@)ctU+)&m#{oCaM->@I(O%;V@^Ms;BYu>Q^1V2D6`DU0|3py4buJ@6 z-wo+;zBeC%4_ZL@XqJwzt*)+aY$QDq?7d0e+Sceg6AqnK-~Jp2QfV)nG$+yoL2PtRxb*FW(2np;}T+UG9$r}g0mnfqjT z5hjh!%ZI)uO|H9}o3gkOk&zxPbK|9&BROKn|2~3b33GL8>#C{a*5!D82sqLMoSd9M zeC9i7^yM1VVrqKYq9a&}mv=8kQ<|S9;o&Uji(=VOoLD6mWIbg3Y!?Lxjz5QifkAq1 zu2k^N1?e+|)%A5M5Qx|?sgvXpCIg9ejqiAgI;znH;f2e7PZWFZP1|(d$Q#F3>B7zK4g02%r5u-nOo;uKl+2g+9g*Qym>L8X9r` zlTCUF@4)kUpOOcQfyYC{GB*bUd>sU``<=-TFoUn`M)G!dc5W6P_N0UR5?NVToEO`r zo;_Rn_37Dkl^F_nYL>85PEHON7nk(KQrPd`zcDv)sjrqmV*Z#G?2krPOU14(5OfF9 zFE9XPJ`Cl@{m+Agl&i~){IIaFp(eVQ?n{q55<5IMh7VWz;@%WaOiZws_4W2f4%x{p z)M(CJ$ucgS7x?-5vaqsBdA|;$d*pjiURD+p6XW-prqOktiz;qZi%z2bbwKOW&exfh zmCtDkBM<&uVM(iqg|d+KXS=m?eo`vdK?86+K01ot)z;PqV&(bn-Kb-O{Yc(?dys^j z!;kRCAvY_G^z`()y1FqI8>BIB08bNRVt_%msGD@q)d>)Kg#>Upx%yJGpGd1tt zy(1zbg7TWxHZ^H#YKq>Qec)@q_&8)2a(gr~?ZN+*#{D+b5iF`cO8omI{eGH}#g)L3MP9%Rhf!7qd62N~Kqlw-VG%mtzy-9_W5^ zoo}TU6v&Lv&^9qPPGpcOA9biQZTXy=3&cEuq`bU5OC}`P%Bn!4bYN&GO$7$Lm7GnD zgNH}bXD`RNQrdkXI7GFQ-&G zu3e@#_Nq*eYYZ&0fy1TGLlxlXM@dD+98N(@g4o*LZfk419upm?@ex%Ei6eJvht|Iz zvpO@LT*Aa;;80gr$HKyLny%WdmEz#o3?r6)3D8iPZYdWxcgMwF{BSKWxCkPzSfCXx z?>j<6Lo*msIo01^7WL!w^mKiD%&I%Gp}sx?l-zHVn3$L(`ZYQ_dM`2P{`TC$Z!JyO zY3lpwlu6G39(Gv4q+^UUiKcAZS!L44Um6u+V^fUPAY@Ac=)ijy zDSv~E1hAyWrmC*~oP#4n#3c*BLas)K`|`)AC`D&yp17aJ^$yx25SAR7kcGuX8A-{U zej6bF@=v5Fb2a)ljv+$E0CAU=ZVYA$W~!}c@Pi8r3k3uPhg8?s*Tu!f$*>gSso$M! zYLDS5F zNlzA|98$c@98M$owDTbh2D81rIwd6~jUu8)HopTaC@6S%2*_=opvMUb2?70`Z(0mi z<#{C~C1oox3!ur|9}Vk{A`bBP2b8sX`YJms>+Ucq*>G5a0h#z`OxjqZCt?!-QzkkmN_~Pv6 z*Md$4ve2#l(r&iawx@cssj-objjbJs1i&y%Q4kGS?L+Thq zF(<1}pQk*P!)@#Mb@+1hsB5ToCzK*T~8Ffk5XFecKJOTg126yNQ{Ud70LIZhC_)?#L zJy}R1h-r~;xrXNfIBDMc_fsP4vdV@Z{gVYNgtE(n}Vu} zFTKghnO1uyLijK5I;ti5ZZ@aC7IcVKQ8BTs*N4yIGca27h$hW zSZH+FPb>>M|Bm`>vtQGlid(=T+7b%Ozbm@WACpSI>St+8QoB%wHID9i{Pk{*`>Tev zn1*WSuXps!dvV6zAx+vT*wjx}`xRI6Z{h)Yn9n|cmI)VpYsGU%`YY??B#_`^u-?p(T z=Zs-5hL=@Yf=apZU2Gh4-DjV+50hUCb^~Ahgq-N{1)EgZt0F#-y&vo-j<8zLa;1*~ z&o6h4>yY44asgK8ny!M%o1u;`W4+;gN0C_K_=epx;u6`3 z;=;Kn6_e!^gv7iu4d}91@ABN)v=;;AbS@`D#Ejei4pBf&-N6x**P&Sv*S`( ze%#BaZ>rh85=%khgv#IG4+qmJLy%iI+@pV~3jfN&SdJF!}BJ2KEklZ<(5 zWuqL{R|MDtgjyd3&;~)c18NNqs{=nQ$TIEPz<#u<7JVIg+Sz$B17m?ATiuZzF%^cv zDurX(w8HhPIw$~^gCp8uk!;INpYnvGqI7vv?3RpaX@rG9dv3?&w)&VvS$)!{#q>@) zc17s&jAzG9d%K+ObGl2LE~rK;xl^9%^e`X#L1Hm&>+6n`@(iKZSGU8NT2o>Ri;mw4 zp6ocE070vd;(mKPI|HblX?bB^?%@q@iA`pQ^S+DXmc@9iuipf$2#2#wzcdA2&x1upL6yzSe?$l57qTv ztiky>bEuY!8?S$*ty_toTEhOhV-mRlq)(tRkL6gS77jI{>zjYB`#)42gs^V~ z2E74~5I=1z@XX2Ii2eIuJ2%7se>?HwVOSM$^Zl)UyLg^O0Zm9TmO$yz+Xwwg`x@@-5Xl&~!yZc!wI_Bl+XNd#oPT+K z*FQE4Eiqf2dMD&hSmWAJ{p~JamG@q_(cssVS*3kjz(Rxe>+7qmr@=a~VcA*TrI#a! zmg&AfLkjCHDho)E<04|yaaMUi;hL!Z4{=^12F_4PjQ+8PS9{AxKJm$4HG4`q250-* z!==}r!WTxuc!0#+EmD8rg19bIa!Tx;tL&4D;0gYtFHinM$^K{1NzH&+qI0;(j?q!~ z0WY#n_TV?I+sQw|7*TsM`L@zQNC+d``mpe=g?vZR9T8)wJ;~BlYwJUV_vycrtT&bp zPFk@$|BRMG)SpsB$}7+$C=fvdET^litPguQb(;u72a@A;_q*C}f!Rus6q@1WeS%G|fj>|6s?^ZV* zlg-pm#oqx&1?nFjrF1LIdsR%nh6OmE|C7AVFg@2|9~VqDRJ}+KXHuBkJWxU zqSDs#EvTTqZ(y*m*U7R}K(vvR^VY=v`QEO_!ij&IUjvbbhNpS(rL)TK+ar$wjn5)i zdi(wdl0%)t-H~hN?KijWK?JnfGh&{>L%)#-aFj7Di|$Db$=}0ET`-u>&MvqK9Hmm0 zLqcUIuEjwmI$#sf=mLkTl=k*yO!u$5^T0i*a2?Cb&)8U$;P5_~uN$S^QKWLHj;r6P z3yZBM4$5OlB~he=xJG=mlGMAu*Fo1kuCBODG1Yw81M`TW>zE?Nhhbs6jJXHqshiX9X;DcC#gY~$%efX-&V`F1$1%Q?s(6g~K&O*yJ zsH8ztiY6WTEWUG)#AK+IKtK?EWMgCYbX9{>Lxj)Xfs0GPrVjLTal$sHwB0_$jf7f%s?$u*WnS8|%Fw^?fOrdAh(l+dpE|g6o~T zE=mV%rCyq+so3ssD)~Q+8)9?)gZ6U5eqE_^czLr|4&Z_TOd#b|fk-HUTbJyaAw1TQ zY20Uti9qfD8tc(qv;X8xasU>VwxAvGLu*dB0bG5+nI?DGMxcQv0o}$6$eq{1Am`fA z%3?@|%s0Lu7+ z)bad$?JvO#lDdApNumNAzp}b~`FSd~?t=c+IK0{GHteu22O$9?9=wRL#l%mpJe)iy zsY(Dmd8oD{4p&I!y1;$IzGzmUrC|&cpe7K{tx{bBdZyT6Ru{iM*~-h~7K{}#^SQab zB_?*lekLSoIyGZxqT9W493%d^H(~pd&YPM5w;(Pv6U?S&>G|?s%P~}MgFW?`prx$r zKxg9E*(IBXR+C=F^#ye*p1i+`ilGe)bf6Nb?Y|7lx^=fpX==oiFMOQBt_p{bl$4yA z>ib|mZx8UfjHOgO+jR;)nS@l+KbxN!o6E^e7ZGNQ)F=hbH7~ED{Z^2|K&$cIu;ued zt_Lo!y!JxidR+=iWPWp1Jp2ea?9jp6O{)QLs=D5D-vlJyA0tAOI-g z`}<^s`1(d)NREKuPK%bBvQg0QosTY0Ay2`vqckkO)S13L6{V$_it*;OqOS{>pFgzk zVyiZP9=Q;Xw%Zk(5NQovQVQL^K-Wvi8_PR%7|+XhK$O8rYZ-iG$eQ>l;!coIR8&>B zKC>*af+#4gGPbc;8X6i!|1c)&gVWQ1kPsO$F)%Hy9dXxf_nl}CH3Gs|G+L}go{x{% z0Ze$a0fPKf6&n{fK?3({RrT}p)6(jnnwskD1TYRNMl?p@G%rDU)?`W;eSLjhU0uD) znHlC@PN2>O{KboZXy>kYQnItNk55j_Zw~7CYsk*M?h^n40|WQ=_GUF0Yf@5DtgWpP z6jI{ihu7Egf`SPFV@K6>bw}stnIsay&d#xNK9P}%;^GA@>gwvcdU^_Sa&2vG5D28F zuTM6ozP^5LVZqtSsaXZ@*-{)|h@Rfa=B9vtV0gH-m6b;)6!Cj@c64OKY{tve^Zxz& z_TwxU))p2a5fKsL;qx;y&+_k1Zf^^vfBh;i{#jlQ&N(I{DlELFK|H#a95eo_^F$n{ zIPbtn$wdI@>**0gQGh^cHIQ*sqEU!^86KXaY(F$K)MKys`7}WZE62;*v+!zcs@ErAj3To# zHFOBcbq+T1Kn2Ji(s$zJFJ9%(8nDAd-~rPb8b9N;|^5uxT$ zt|>*D7#e=gK0ZF4o1f?MfRh!A!o}&~y9L%pMujSoOz}dM;w*VBFWQ*o};LWd7zI8UL>18or zp~F#U76sGh=%EYAfkgRV9_0@&i%P z5(|T(jg5^*;^H5m)o&@g4C{8$d&9%S4HMA=n(aj9|M>2*prPrCgzNfWEIYx3cf{b0 z@DI-d%vDuYN1l?Az>SQI%&1F)=-oDOL+U2(0Wss-kMMJ=LK+6v=-dy1q~(OOT+C+1 z#%Z5=o@59=Jen0Gj|5gwsWo=xms>zOL`6kiLz7o!=}09crKLZ%3Y7n**x^Yn8j}vB znqeK}gVkm|db#gxRO{QyK*?k6r2UOAR|A-?EmL-v;M=uyD>? zCfotKwY4?upWXrqpYKEHyOd>duZY&}Y#j=T`7nOZMGo|Xev;OXOK*t0qmMWjFG>D} z{Pruqv5}FcO>5;h2ko3Ev8oa#l75?f(M!0q_V48-Ewhh$|IyKHjn|h7c#Iue+!=yf z8zdoIU!2q)zd4|iUvFFBQ{GtB;`X6MjaOVKIup#mdM8bcmb*62F^R73o|)P0YD-Yh za+}<4U-*)DyS$>}^gpj}!TVUO`&XOlnh*|=J3-eqf48=_&d-}jjL$y;YRQ?A|L00m z?b?}WdPA}?>Ir7Mp_Y}=doAP)CR;8Eft?(FQE=%dG!bP8D~~0Hz=XiwLI6WDskA6T zV74}fo=}euMgb_H6N`y5B+pdAlmT_PmW&9C!QSPHBw+yoQ`nRA!L`oL&c8$WUAVlw z^pnXMcJ}h}($v&sO|i1Fs-MMiJXphXN7$cO6bf|_cH^!e5E}*ckYAdeo$Yu0;ntwg zJGFO~HSA1&d3abmi<4wYKDp@Y>kIkX-qE4RlB_*rYdTQ(suSigYv5lpLAzf?yB}Lg zY9-Uw(b3V~ZqwJup6hhV&d$DD`2ppWUX>EpZRdKvy1KfywsvOL-r8yjVGQMvlaov8 z`;(Q$3fN---1_n@k~Y!9E)p=RLZBXp*}87&Mf4f1ZKq*e3NhD6gd4x zCH!#dkdrnH{5oEA`_)Uqn0RghZDTNWPRRbdAzf|U;}1Hjs&qeik6)3BWGv>$>e1C^ z51n;`ceCe0clYM9^+&{g^&}BFFj|DLW(qt0t%2w}+g#Wg;)&aQNlf9=|?$ zw$~F__XiNAInbuoQA<;^FX0Y9k{LT)U9u-HBcsi#S0baM=(|4jo?l-o6%!l}lpHF= z)E9}`v^9mEc`7R__ZGL-*ZX0oDygWbj!Uh%>&*Q+Oe-z;5Jz{&Ju)96T#fb?J8pM= zJ$g)CTkEx`Q0U)h<#TftOwH>Z!HuALbbtQ@JAL7iz~#9VuVW9NZN!a#*0ft$_!@d4 z)_?Ckx%ll7wE}XbQkGgRf)kJD*^dD+Wyae#ex%ow%2z*YDlCj1$Mc-^riA;{{#^q& zyi#^Kj;u8R$E`0j$wtbpn2L$L3l5rZ@n>U|^q2vwnc;0m8>4Ztu|Kws(;k@WKrO8| z+tdjykBzmLY3XJ-5i$BtV6T9T3S0;(If5wOI3`JxJTbh`fLNCIu7-r-Ug;#v&%vZwuY~Y!H4I16c7Y zTsnQspC#SHubKDI|3y3f@H-MZ^I43+4L<5ghqB2A46P}dj1#4+qE!h@zeZet!ZkFx zT^z1ez*ow@crCKa_zAEKy}2hF1lm6uZ!HL zt0bV%_upN~hCV|4H+Oc11jL$aHW)Y14D7u=455oPUN-n}V|x;1X<<>&iGCY}I)kJy zWqu%~VQ&k&csE#fJ$JnGt4M>6%s;Wi=yn}-pP?i2tye;IbH{m=OJLZNg$B{0*2Z#>B2u z-?QEM$5Q0bhM0j|qU|3N>O{Xq#1ncvEMTk)J-|1Lc0As4QM`!$PDeh3yu&*OSZsr5 zQ_Rp%#$2;6scBgmDK*hbnCbJoibCGR}pX+#mx-#&$j>irb z`zLHYRa$zh_&{at9Z};x3jaC2>#};BW5C_~@=t6QP>({i6;m9=wNB28ctnzFG!tY} zzkikY4ih0Z*rDC8@FR|fqj=jvydh7UambT9*X)p&fIM5)*A}LbzB)mDHvWL4Tg(XL z45c$8+!&c-G8^LKMJp46@=`G*QltNkgt+R;Su9X^4+~ z!0!hL{uQ)Mi0=FY33gsI+ti>#C?6Ue!Gnm|XC{Y4_dS7e$!QRRmLJlYk)^!Fs01Ye z8M_>K(O~xf3VB;DaJw>UtN0hSu4*IE5q7GJ7L(x8e!6~pIoq~~Qqa-`(V4{??Vofl z3?42s{n(< zv$lahIVE9mp%}FcF1uu2$lYpOxPx z5?pS7&D|PxnO7D`ZIDBkSVu4Ki3}^MW0cSa@ADu73b>mfuG^o18M_mll`k9|Mx?WL ziPBnchN*(wZI`01M=wdk5K)LFSLYjFT+~r=ImqzOv8HOiMWn>tf^pMCQ`DOd{{uu6 zV6db+|55U?wlz808 z0gMY1XDiRiA)LZa#}R2ta7AAJwF_6-qeEY=6!l+aZFOHa&~}Kh|17#5dC-?_>yNRX zqa-BR6=1Nr-Z?c^w75l!IO>DRn43Q54$542VxG$?cl2u3PlqToPEW(`b~ z-T$u!%IfXuxx2r=pLW|&U*GfXTd=2=o7?u`p^v3y7HL%8EWNjf$Ii-%{qyHDhbi;H_CZ2N80c!dFrEV{?@WMzWet*Jv?}Md0z-iOG|rVpt)zV*%=v{_$L71=jV5EacNat-`E%( z8j|w$*U?F;+fsPe><)#k-IIdd9^C-2k!t^fx;xugTl=>^_qTJ)W@lsj8Dej*^0}HZ zEiDa)!vTmGZal$(89Tdx1U@{7K1Zsm=QCZdil^>}e5$JQSf3c!$`R~2-DK%g8{J3h&X zd>ljo^nsFOr==BTxXCA7gefGC*;G#x!ANfbo@H9Wa7X%XyqHIzrLLz|r2<3#2l9w% A=_( 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 Fe*jPAKNbK0 diff --git a/include/graphics/common/MessageStatus.h b/include/graphics/common/MessageStatus.h index 74cb75bd..311894ec 100644 --- a/include/graphics/common/MessageStatus.h +++ b/include/graphics/common/MessageStatus.h @@ -16,6 +16,14 @@ enum class State { RecipientKeyUnavailable, RecipientNeedsSenderKey, MessageTooLarge, + NoRadioInterface, + DutyCycleLimit, + RateLimited, + NoAppResponse, + InvalidRequest, + NotAuthorized, + AdminSessionExpired, + AdminKeyNotAuthorized, }; enum class Tone { diff --git a/source/graphics/TFT/TFTView_320x240.cpp b/source/graphics/TFT/TFTView_320x240.cpp index d8b0cef5..0b0cb94d 100644 --- a/source/graphics/TFT/TFTView_320x240.cpp +++ b/source/graphics/TFT/TFTView_320x240.cpp @@ -5291,18 +5291,16 @@ void TFTView_320x240::onTextMessageCallback(const ResponseHandler::Request &req, bool channelMessage = (unsigned long)req.cookie < c_max_channels; if (evt == ResponseHandler::found) { handleTextMessageResponse((unsigned long)req.cookie, requestId, - result ? MessageStatus::State::NoAck - : MessageStatus::deliveredState(channelMessage, false), + result ? MessageStatus::State::NoAck : MessageStatus::deliveredState(channelMessage, false), false); } else if (evt == ResponseHandler::removed) { handleTextMessageResponse((unsigned long)req.cookie, requestId, - result ? MessageStatus::State::NoAck - : MessageStatus::deliveredState(channelMessage, true), + result ? MessageStatus::State::NoAck : MessageStatus::deliveredState(channelMessage, true), true); } else { ILOG_DEBUG("onTextMessageCallback: timeout!"); - const MessageStatus::State status = MessageStatus::preserveImplicitDelivery( - controller->pendingTextMessageStatus(requestId), MessageStatus::State::NoAck); + const MessageStatus::State status = + MessageStatus::preserveImplicitDelivery(controller->pendingTextMessageStatus(requestId), MessageStatus::State::NoAck); handleTextMessageResponse((unsigned long)req.cookie, requestId, status, true); } } @@ -5353,10 +5351,8 @@ void TFTView_320x240::handleResponse(uint32_t from, const uint32_t id, const mes controller->pendingTextMessageStatus(id), MessageStatus::State::NoAck); handleTextMessageResponse((unsigned long)req.cookie, id, status, true); } - } else if (routing.error_reason == meshtastic_Routing_Error_NO_RESPONSE) { - if (req.type == ResponseHandler::PositionRequest) { - handlePositionResponse(from, id, p.rx_rssi, p.rx_snr, p.hop_limit == p.hop_start); - } + } else if (routing.error_reason == meshtastic_Routing_Error_NO_RESPONSE && req.type == ResponseHandler::PositionRequest) { + handlePositionResponse(from, id, p.rx_rssi, p.rx_snr, p.hop_limit == p.hop_start); } else if (routing.error_reason == meshtastic_Routing_Error_TOO_LARGE) { if (!ack) req = requests.removeRequest(id); @@ -5365,22 +5361,50 @@ void TFTView_320x240::handleResponse(uint32_t from, const uint32_t id, const mes } } else if (routing.error_reason == meshtastic_Routing_Error_NO_CHANNEL || routing.error_reason == meshtastic_Routing_Error_NO_INTERFACE || + routing.error_reason == meshtastic_Routing_Error_NO_RESPONSE || + routing.error_reason == meshtastic_Routing_Error_DUTY_CYCLE_LIMIT || + routing.error_reason == meshtastic_Routing_Error_RATE_LIMIT_EXCEEDED || + routing.error_reason == meshtastic_Routing_Error_BAD_REQUEST || + routing.error_reason == meshtastic_Routing_Error_NOT_AUTHORIZED || routing.error_reason == meshtastic_Routing_Error_PKI_FAILED || routing.error_reason == meshtastic_Routing_Error_PKI_SEND_FAIL_PUBLIC_KEY || - routing.error_reason == meshtastic_Routing_Error_PKI_UNKNOWN_PUBKEY) { + routing.error_reason == meshtastic_Routing_Error_PKI_UNKNOWN_PUBKEY || + routing.error_reason == meshtastic_Routing_Error_ADMIN_BAD_SESSION_KEY || + routing.error_reason == meshtastic_Routing_Error_ADMIN_PUBLIC_KEY_UNAUTHORIZED) { if (!ack) req = requests.removeRequest(id); if (req.type == ResponseHandler::TextMessageRequest) { MessageStatus::State status = MessageStatus::State::NoChannel; + if (routing.error_reason == meshtastic_Routing_Error_NO_INTERFACE) + status = MessageStatus::State::NoRadioInterface; + if (routing.error_reason == meshtastic_Routing_Error_NO_RESPONSE) + status = MessageStatus::State::NoAppResponse; + if (routing.error_reason == meshtastic_Routing_Error_DUTY_CYCLE_LIMIT) + status = MessageStatus::State::DutyCycleLimit; + if (routing.error_reason == meshtastic_Routing_Error_RATE_LIMIT_EXCEEDED) + status = MessageStatus::State::RateLimited; + if (routing.error_reason == meshtastic_Routing_Error_BAD_REQUEST) + status = MessageStatus::State::InvalidRequest; + if (routing.error_reason == meshtastic_Routing_Error_NOT_AUTHORIZED) + status = MessageStatus::State::NotAuthorized; if (routing.error_reason == meshtastic_Routing_Error_PKI_FAILED) status = MessageStatus::State::GenericEncryptedSendFailure; if (routing.error_reason == meshtastic_Routing_Error_PKI_SEND_FAIL_PUBLIC_KEY) status = MessageStatus::State::RecipientKeyUnavailable; if (routing.error_reason == meshtastic_Routing_Error_PKI_UNKNOWN_PUBKEY) status = MessageStatus::State::RecipientNeedsSenderKey; + if (routing.error_reason == meshtastic_Routing_Error_ADMIN_BAD_SESSION_KEY) + status = MessageStatus::State::AdminSessionExpired; + if (routing.error_reason == meshtastic_Routing_Error_ADMIN_PUBLIC_KEY_UNAUTHORIZED) + status = MessageStatus::State::AdminKeyNotAuthorized; handleTextMessageResponse((unsigned long)req.cookie, id, status, true); // we probably have a wrong key; mark it as bad and don't use in future - if (nodes.find(from) != nodes.end() && (unsigned long)nodes[from]->LV_OBJ_IDX(node_bat_idx)->user_data == 1) { + const bool keyMismatch = routing.error_reason == meshtastic_Routing_Error_NO_CHANNEL || + routing.error_reason == meshtastic_Routing_Error_PKI_FAILED || + routing.error_reason == meshtastic_Routing_Error_PKI_SEND_FAIL_PUBLIC_KEY || + routing.error_reason == meshtastic_Routing_Error_PKI_UNKNOWN_PUBKEY; + if (keyMismatch && nodes.find(from) != nodes.end() && + (unsigned long)nodes[from]->LV_OBJ_IDX(node_bat_idx)->user_data == 1) { ILOG_DEBUG("public key mismatch"); nodes[from]->LV_OBJ_IDX(node_bat_idx)->user_data = (void *)2; lv_obj_set_style_border_color(nodes[from]->LV_OBJ_IDX(node_img_idx), colorRed, @@ -5823,8 +5847,7 @@ void TFTView_320x240::handleTextMessageResponse(uint32_t channelOrNode, const ui if (panel->spec_attr->child_cnt > 1) { lv_obj_t *statusLabel = panel->spec_attr->children[1]; lv_label_set_text(statusLabel, _(messageStatus.text)); - lv_obj_set_style_text_color(statusLabel, messageStatusColor(messageStatus.tone), - LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_color(statusLabel, messageStatusColor(messageStatus.tone), LV_PART_MAIN | LV_STATE_DEFAULT); } break; diff --git a/source/graphics/common/MessageStatus.cpp b/source/graphics/common/MessageStatus.cpp index 9a8e6473..a3d35995 100644 --- a/source/graphics/common/MessageStatus.cpp +++ b/source/graphics/common/MessageStatus.cpp @@ -14,6 +14,14 @@ constexpr Presentation genericEncryptedSendFailure{"Could not send encrypted mes constexpr Presentation recipientKeyUnavailable{"Recipient key unavailable", Tone::RetryableFailure, true}; constexpr Presentation recipientNeedsSenderKey{"Recipient needs your key", Tone::RetryableFailure, true}; constexpr Presentation messageTooLarge{"Message is too large to send", Tone::PermanentFailure, false}; +constexpr Presentation noRadioInterface{"No radio interface", Tone::RetryableFailure, true}; +constexpr Presentation dutyCycleLimit{"Duty cycle limit", Tone::RetryableFailure, true}; +constexpr Presentation rateLimited{"Rate limited", Tone::RetryableFailure, true}; +constexpr Presentation noAppResponse{"No app response", Tone::RetryableFailure, true}; +constexpr Presentation invalidRequest{"Invalid request", Tone::RetryableFailure, true}; +constexpr Presentation notAuthorized{"Not authorized", Tone::RetryableFailure, true}; +constexpr Presentation adminSessionExpired{"Admin session expired", Tone::RetryableFailure, true}; +constexpr Presentation adminKeyNotAuthorized{"Admin key not authorized", Tone::RetryableFailure, true}; constexpr uint32_t persistedLogStateMagic = 0x4d535400; // "MST" + state byte constexpr uint32_t persistedLogStateMask = 0xffffff00; } // namespace @@ -41,6 +49,22 @@ const Presentation &presentation(State state) return recipientNeedsSenderKey; case State::MessageTooLarge: return messageTooLarge; + case State::NoRadioInterface: + return noRadioInterface; + case State::DutyCycleLimit: + return dutyCycleLimit; + case State::RateLimited: + return rateLimited; + case State::NoAppResponse: + return noAppResponse; + case State::InvalidRequest: + return invalidRequest; + case State::NotAuthorized: + return notAuthorized; + case State::AdminSessionExpired: + return adminSessionExpired; + case State::AdminKeyNotAuthorized: + return adminKeyNotAuthorized; } return noAck; } @@ -81,6 +105,14 @@ LogMessage::MsgStatus logStatusForState(State state) case State::RecipientKeyUnavailable: case State::RecipientNeedsSenderKey: case State::MessageTooLarge: + case State::NoRadioInterface: + case State::DutyCycleLimit: + case State::RateLimited: + case State::NoAppResponse: + case State::InvalidRequest: + case State::NotAuthorized: + case State::AdminSessionExpired: + case State::AdminKeyNotAuthorized: return LogMessage::eFailed; } return LogMessage::eFailed; @@ -97,7 +129,7 @@ std::optional stateFromPersistedLogState(uint32_t state) return std::nullopt; const uint32_t value = state & ~persistedLogStateMask; - if (value == 0 || value > static_cast(State::MessageTooLarge) + 1) + if (value == 0 || value > static_cast(State::AdminKeyNotAuthorized) + 1) return std::nullopt; return static_cast(value - 1); diff --git a/source/graphics/common/ViewController.cpp b/source/graphics/common/ViewController.cpp index 5562c8a4..4cc3f46f 100644 --- a/source/graphics/common/ViewController.cpp +++ b/source/graphics/common/ViewController.cpp @@ -1,7 +1,7 @@ #include "graphics/common/ViewController.h" #include "assert.h" -#include "graphics/common/MessageStatus.h" #include "graphics/common/MeshtasticView.h" +#include "graphics/common/MessageStatus.h" #include "util/ILog.h" #include "util/LogMessage.h" #include @@ -480,8 +480,7 @@ void ViewController::sendTextMessage(uint32_t to, uint8_t ch, uint8_t hopLimit, if (send(to, ch, hopLimit, requestId, meshtastic_PortNum_TEXT_MESSAGE_APP, false, usePkc, (const uint8_t *)textmsg, msgLen)) { // ILOG_DEBUG("storing msg to:0x%08x, ch:%d, time:%d, size:%d, '%s'", to, ch, msgTime, msgLen, textmsg); LogRotate::EntryPosition position; - if (log.write(LogMessageEnv(myNodeNum, to, ch, msgTime, LogMessage::eDefault, false, msgLen, - (const uint8_t *)textmsg), + if (log.write(LogMessageEnv(myNodeNum, to, ch, msgTime, LogMessage::eDefault, false, msgLen, (const uint8_t *)textmsg), &position) && requestId != 0) { PendingTextMessage pending{}; @@ -499,13 +498,11 @@ bool ViewController::updateTextMessageStatus(uint32_t requestId, MessageStatus:: PendingTextMessage &pending = pendingIt->second; LogMessageEnv msg; - const bool updated = log.update( - pending.logPosition, msg, - [status](ILogEntry &entry) { - LogMessage &candidate = static_cast(entry); - candidate.status = MessageStatus::logStatusForState(status); - candidate.reserved = MessageStatus::persistedLogState(status); - }); + const bool updated = log.update(pending.logPosition, msg, [status](ILogEntry &entry) { + LogMessage &candidate = static_cast(entry); + candidate.status = MessageStatus::logStatusForState(status); + candidate.reserved = MessageStatus::persistedLogState(status); + }); if (!updated) { ILOG_WARN("failed to persist text message status for request id 0x%08x", requestId); @@ -1081,20 +1078,19 @@ bool ViewController::packetReceived(const meshtastic_MeshPacket &p) case meshtastic_Routing_Error_MAX_RETRANSMIT: view->handleResponse(p.from, p.decoded.request_id, routing, p); break; - case meshtastic_Routing_Error_NO_RESPONSE: - ILOG_DEBUG("Routing error: no response"); - // this response is sent by the other node when position is not availble - // however, it contains valid rssi/snr, so use these - view->handlePositionResponse(p.from, p.decoded.request_id, p.rx_rssi, p.rx_snr, p.hop_limit == p.hop_start); - break; case meshtastic_Routing_Error_NO_INTERFACE: case meshtastic_Routing_Error_NO_CHANNEL: - // invalid channel or interface + case meshtastic_Routing_Error_NO_RESPONSE: + case meshtastic_Routing_Error_DUTY_CYCLE_LIMIT: + case meshtastic_Routing_Error_RATE_LIMIT_EXCEEDED: case meshtastic_Routing_Error_TOO_LARGE: + case meshtastic_Routing_Error_BAD_REQUEST: + case meshtastic_Routing_Error_NOT_AUTHORIZED: case meshtastic_Routing_Error_PKI_FAILED: case meshtastic_Routing_Error_PKI_SEND_FAIL_PUBLIC_KEY: case meshtastic_Routing_Error_PKI_UNKNOWN_PUBKEY: - // this response is sent by the other node when encryption keys differ (outdated) + case meshtastic_Routing_Error_ADMIN_BAD_SESSION_KEY: + case meshtastic_Routing_Error_ADMIN_PUBLIC_KEY_UNAUTHORIZED: view->handleResponse(p.from, p.decoded.request_id, routing, p); break; default: diff --git a/tests/test_MessageStatus.cpp b/tests/test_MessageStatus.cpp index ba46af60..e0246f0a 100644 --- a/tests/test_MessageStatus.cpp +++ b/tests/test_MessageStatus.cpp @@ -10,8 +10,7 @@ TEST_CASE("MessageStatus canonical inline text") { CHECK(MessageStatus::presentation(State::Sending).text == std::string("Sending...")); CHECK(MessageStatus::presentation(State::ChannelImplicitAck).text == std::string("Delivered to mesh")); - CHECK(MessageStatus::presentation(State::DirectImplicitAck).text == - std::string("Relayed, not confirmed by recipient")); + CHECK(MessageStatus::presentation(State::DirectImplicitAck).text == std::string("Relayed, not confirmed by recipient")); CHECK(MessageStatus::presentation(State::ExplicitAck).text == std::string("Delivered to recipient")); CHECK(MessageStatus::presentation(State::NoAck).text == std::string("Failed to deliver to mesh")); CHECK(MessageStatus::presentation(State::NoChannel).text == std::string("Channel/key mismatch")); @@ -20,17 +19,37 @@ TEST_CASE("MessageStatus canonical inline text") CHECK(MessageStatus::presentation(State::RecipientKeyUnavailable).text == std::string("Recipient key unavailable")); CHECK(MessageStatus::presentation(State::RecipientNeedsSenderKey).text == std::string("Recipient needs your key")); CHECK(MessageStatus::presentation(State::MessageTooLarge).text == std::string("Message is too large to send")); + CHECK(MessageStatus::presentation(State::NoRadioInterface).text == std::string("No radio interface")); + CHECK(MessageStatus::presentation(State::DutyCycleLimit).text == std::string("Duty cycle limit")); + CHECK(MessageStatus::presentation(State::RateLimited).text == std::string("Rate limited")); + CHECK(MessageStatus::presentation(State::NoAppResponse).text == std::string("No app response")); + CHECK(MessageStatus::presentation(State::InvalidRequest).text == std::string("Invalid request")); + CHECK(MessageStatus::presentation(State::NotAuthorized).text == std::string("Not authorized")); + CHECK(MessageStatus::presentation(State::AdminSessionExpired).text == std::string("Admin session expired")); + CHECK(MessageStatus::presentation(State::AdminKeyNotAuthorized).text == std::string("Admin key not authorized")); } TEST_CASE("MessageStatus distinguishes retryable and permanent failures") { CHECK(MessageStatus::presentation(State::NoAck).retryable); - CHECK(MessageStatus::presentation(State::NoChannel).retryable); CHECK(MessageStatus::presentation(State::RecipientKeyUnavailable).retryable); CHECK(MessageStatus::presentation(State::RecipientNeedsSenderKey).retryable); + CHECK(MessageStatus::presentation(State::NoRadioInterface).retryable); + CHECK(MessageStatus::presentation(State::DutyCycleLimit).retryable); + CHECK(MessageStatus::presentation(State::RateLimited).retryable); + CHECK(MessageStatus::presentation(State::NoAppResponse).retryable); + CHECK(MessageStatus::presentation(State::NoChannel).retryable); + CHECK(MessageStatus::presentation(State::InvalidRequest).retryable); + CHECK(MessageStatus::presentation(State::NotAuthorized).retryable); + CHECK(MessageStatus::presentation(State::AdminSessionExpired).retryable); + CHECK(MessageStatus::presentation(State::AdminKeyNotAuthorized).retryable); CHECK_FALSE(MessageStatus::presentation(State::MessageTooLarge).retryable); CHECK(MessageStatus::presentation(State::NoAck).tone == Tone::RetryableFailure); + CHECK(MessageStatus::presentation(State::NoChannel).tone == Tone::RetryableFailure); + CHECK(MessageStatus::presentation(State::InvalidRequest).tone == Tone::RetryableFailure); + CHECK(MessageStatus::presentation(State::NotAuthorized).tone == Tone::RetryableFailure); + CHECK(MessageStatus::presentation(State::AdminKeyNotAuthorized).tone == Tone::RetryableFailure); CHECK(MessageStatus::presentation(State::MessageTooLarge).tone == Tone::PermanentFailure); } @@ -74,20 +93,21 @@ TEST_CASE("MessageStatus persists final inline status") CHECK(MessageStatus::logStatusForState(State::NoAck) == LogMessage::eNoResponse); CHECK(MessageStatus::logStatusForState(State::RecipientKeyUnavailable) == LogMessage::eFailed); CHECK(MessageStatus::logStatusForState(State::MessageTooLarge) == LogMessage::eFailed); + CHECK(MessageStatus::logStatusForState(State::NoRadioInterface) == LogMessage::eFailed); const uint32_t channelImplicitAck = MessageStatus::persistedLogState(State::ChannelImplicitAck); const uint32_t recipientKeyUnavailable = MessageStatus::persistedLogState(State::RecipientKeyUnavailable); const uint32_t messageTooLarge = MessageStatus::persistedLogState(State::MessageTooLarge); + const uint32_t adminKeyNotAuthorized = MessageStatus::persistedLogState(State::AdminKeyNotAuthorized); CHECK(MessageStatus::stateFromPersistedLogState(channelImplicitAck) == State::ChannelImplicitAck); CHECK(MessageStatus::stateFromPersistedLogState(recipientKeyUnavailable) == State::RecipientKeyUnavailable); CHECK(MessageStatus::stateFromPersistedLogState(messageTooLarge) == State::MessageTooLarge); + CHECK(MessageStatus::stateFromPersistedLogState(adminKeyNotAuthorized) == State::AdminKeyNotAuthorized); CHECK_FALSE(MessageStatus::stateFromPersistedLogState(0).has_value()); - CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eHeard, channelImplicitAck, false) == - State::ChannelImplicitAck); + CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eHeard, channelImplicitAck, false) == State::ChannelImplicitAck); CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eFailed, recipientKeyUnavailable, false) == State::RecipientKeyUnavailable); - CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eFailed, messageTooLarge, false) == - State::MessageTooLarge); + CHECK(MessageStatus::inlineStateForLogStatus(LogMessage::eFailed, messageTooLarge, false) == State::MessageTooLarge); } From 9241197fbc5a9b97c417dbe4cc15d4a5c2416af3 Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Mon, 6 Jul 2026 22:23:23 -0700 Subject: [PATCH 09/16] style: format message status support files --- source/util/LogRotate.cpp | 3 +-- tests/test_ResponseHandler.cpp | 19 +++++++++---------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/source/util/LogRotate.cpp b/source/util/LogRotate.cpp index d0d80903..e7e09291 100644 --- a/source/util/LogRotate.cpp +++ b/source/util/LogRotate.cpp @@ -131,8 +131,7 @@ bool LogRotate::update(const EntryPosition &position, ILogEntry &entry, std::fun return false; } - if (!file.seek(position.offset) || - !entry.deserialize([&file](uint8_t *buf, size_t size) { return file.read(buf, size); })) { + if (!file.seek(position.offset) || !entry.deserialize([&file](uint8_t *buf, size_t size) { return file.read(buf, size); })) { file.close(); return false; } diff --git a/tests/test_ResponseHandler.cpp b/tests/test_ResponseHandler.cpp index 62c2eb4d..113368ce 100644 --- a/tests/test_ResponseHandler.cpp +++ b/tests/test_ResponseHandler.cpp @@ -21,16 +21,15 @@ TEST_CASE("ResponseHandler keeps generated request id separate from destination FixedRequestIdResponseHandler requests; uint32_t callbackRequestId = 0; - const uint32_t generatedRequestId = - requests.addRequest(3, ResponseHandler::TextMessageRequest, reinterpret_cast(7), - [&callbackRequestId](const ResponseHandler::Request &req, ResponseHandler::EventType evt, - int32_t pass) { - callbackRequestId = req.requestId; - CHECK(req.id == 3); - CHECK(req.cookie == reinterpret_cast(7)); - CHECK(evt == ResponseHandler::removed); - CHECK(pass == 42); - }); + const uint32_t generatedRequestId = requests.addRequest( + 3, ResponseHandler::TextMessageRequest, reinterpret_cast(7), + [&callbackRequestId](const ResponseHandler::Request &req, ResponseHandler::EventType evt, int32_t pass) { + callbackRequestId = req.requestId; + CHECK(req.id == 3); + CHECK(req.cookie == reinterpret_cast(7)); + CHECK(evt == ResponseHandler::removed); + CHECK(pass == 42); + }); CHECK(generatedRequestId == 0x0badcafe); From ae66cac50aa14d110e463b7709c8171e78690800 Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Mon, 6 Jul 2026 22:27:14 -0700 Subject: [PATCH 10/16] ci: link Portduino GPIO source --- cmake/Portduino.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/Portduino.cmake b/cmake/Portduino.cmake index befd1e50..4876aca6 100644 --- a/cmake/Portduino.cmake +++ b/cmake/Portduino.cmake @@ -6,6 +6,7 @@ FetchContent_Declare( GIT_TAG "ce0ed7e9c62f3082b30ee9a5c369f30c1e55194a" ) FetchContent_MakeAvailable(Portduino) +target_sources(Portduino PRIVATE ${portduino_SOURCE_DIR}/cores/portduino/PortduinoGPIO.cpp) include_directories(${portduino_SOURCE_DIR}/cores/portduino) include_directories(${portduino_SOURCE_DIR}/cores/portduino/FS) include_directories(${portduino_SOURCE_DIR}/cores/arduino) From 71efe002a0f03ad5273732e8ec7a956fba32ead1 Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Mon, 6 Jul 2026 23:04:49 -0700 Subject: [PATCH 11/16] ci: link Portduino logging source --- cmake/Portduino.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/Portduino.cmake b/cmake/Portduino.cmake index 4876aca6..c7b73264 100644 --- a/cmake/Portduino.cmake +++ b/cmake/Portduino.cmake @@ -6,7 +6,8 @@ FetchContent_Declare( GIT_TAG "ce0ed7e9c62f3082b30ee9a5c369f30c1e55194a" ) FetchContent_MakeAvailable(Portduino) -target_sources(Portduino PRIVATE ${portduino_SOURCE_DIR}/cores/portduino/PortduinoGPIO.cpp) +target_sources(Portduino PRIVATE ${portduino_SOURCE_DIR}/cores/portduino/PortduinoGPIO.cpp + ${portduino_SOURCE_DIR}/cores/portduino/logging.cpp) include_directories(${portduino_SOURCE_DIR}/cores/portduino) include_directories(${portduino_SOURCE_DIR}/cores/portduino/FS) include_directories(${portduino_SOURCE_DIR}/cores/arduino) From a9034a78f4e689d7b75b1541b23270a92706b9c9 Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Mon, 6 Jul 2026 23:10:12 -0700 Subject: [PATCH 12/16] fix: harden message status persistence --- source/graphics/TFT/TFTView_320x240.cpp | 7 ++++- source/graphics/common/ViewController.cpp | 6 +++-- source/util/LogRotate.cpp | 33 ++++++++++++++--------- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/source/graphics/TFT/TFTView_320x240.cpp b/source/graphics/TFT/TFTView_320x240.cpp index 0b0cb94d..c3293d5f 100644 --- a/source/graphics/TFT/TFTView_320x240.cpp +++ b/source/graphics/TFT/TFTView_320x240.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -4497,7 +4498,11 @@ void TFTView_320x240::handleAddMessage(char *msg) msg[i] = '\n'; if (!fitsLogMessagePayload(msgLen)) { - addMessage(activeMsgContainer, actTime, 0, msg, LogMessage::eFailed); + char displayMsg[maxLogMessagePayloadLength + 1]; + const size_t displayLen = std::min(msgLen, static_cast(maxLogMessagePayloadLength)); + memcpy(displayMsg, msg, displayLen); + displayMsg[displayLen] = '\0'; + addMessage(activeMsgContainer, actTime, 0, displayMsg, LogMessage::eFailed); handleTextMessageResponse(channelOrNode, 0, MessageStatus::State::MessageTooLarge); messageAlert(_(MessageStatus::presentation(MessageStatus::State::MessageTooLarge).text), true); return; diff --git a/source/graphics/common/ViewController.cpp b/source/graphics/common/ViewController.cpp index 4cc3f46f..9f4d7b1c 100644 --- a/source/graphics/common/ViewController.cpp +++ b/source/graphics/common/ViewController.cpp @@ -1,5 +1,4 @@ #include "graphics/common/ViewController.h" -#include "assert.h" #include "graphics/common/MeshtasticView.h" #include "graphics/common/MessageStatus.h" #include "util/ILog.h" @@ -475,7 +474,10 @@ void ViewController::sendTextMessage(uint32_t to, uint8_t ch, uint8_t hopLimit, const char *textmsg) { size_t msgLen = strlen(textmsg); - assert(fitsLogMessagePayload(msgLen)); + if (!fitsLogMessagePayload(msgLen)) { + ILOG_WARN("text message payload too large to persist: %u bytes", (unsigned)msgLen); + return; + } if (send(to, ch, hopLimit, requestId, meshtastic_PortNum_TEXT_MESSAGE_APP, false, usePkc, (const uint8_t *)textmsg, msgLen)) { // ILOG_DEBUG("storing msg to:0x%08x, ch:%d, time:%d, size:%d, '%s'", to, ch, msgTime, msgLen, textmsg); diff --git a/source/util/LogRotate.cpp b/source/util/LogRotate.cpp index e7e09291..92320a48 100644 --- a/source/util/LogRotate.cpp +++ b/source/util/LogRotate.cpp @@ -88,31 +88,38 @@ bool LogRotate::write(const ILogEntry &entry) bool LogRotate::write(const ILogEntry &entry, EntryPosition *position) { - time_t start = millis(); - if (currentSize + entry.size() >= c_maxFileSize || totalSize + entry.size() >= c_maxSize) { + const size_t entrySize = entry.size(); + if (currentSize + entrySize >= c_maxFileSize || totalSize + entrySize >= c_maxSize) { // log rotation - ILOG_DEBUG("LogRotation: %d >= %d || %d >= %d", currentSize + entry.size(), c_maxFileSize, totalSize + entry.size(), - c_maxSize); + ILOG_DEBUG("LogRotation: %d >= %d || %d >= %d", currentSize + entrySize, c_maxFileSize, totalSize + entrySize, c_maxSize); numFiles++; currentSize = 0; currentLogWrite++; currentLogName = logFileName(currentLogWrite); - while ((numFiles >= c_maxFiles || totalSize + entry.size() > c_maxSize) && removeLog()) + while ((numFiles >= c_maxFiles || totalSize + entrySize > c_maxSize) && removeLog()) ; } - if (position) { - position->logNum = currentLogWrite; - position->offset = currentSize; - } - // elegant way to let the logentry do its work it knows best and pass just a temporary function for writing File file = _fs.open(currentLogName, FILE_APPEND); - entry.serialize([&file](const uint8_t *buf, size_t size) { return file.write(buf, size); }); + if (!file) { + ILOG_WARN("failed to open %s for append", currentLogName.c_str()); + return false; + } + + const EntryPosition writtenPosition{currentLogWrite, currentSize}; + const size_t written = entry.serialize([&file](const uint8_t *buf, size_t size) { return file.write(buf, size); }); file.close(); + if (written != entrySize) { + ILOG_WARN("failed to append complete log entry to %s", currentLogName.c_str()); + return false; + } + + if (position) + *position = writtenPosition; - currentSize += entry.size(); - totalSize += entry.size(); + currentSize += entrySize; + totalSize += entrySize; // ILOG_DEBUG("LogRotate: %d bytes written in %d ms to %s (%d/%d bytes, total: %d)", entry.size(), millis() - start, // currentLogName.c_str(), currentSize, c_maxFileSize, totalSize); From 5b55de4d830622b27a7f0ee9e3556d23aa573da5 Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Tue, 7 Jul 2026 08:58:09 -0700 Subject: [PATCH 13/16] Remove committed status validation artifacts --- .../admin-key-not-authorized.png | Bin 6115 -> 0 bytes .../admin-session-expired.png | Bin 5823 -> 0 bytes .../all-message-status-states.png | Bin 54881 -> 0 bytes .../channel-implicit-ack.png | Bin 5516 -> 0 bytes .../message-status-evidence/dm-implicit-ack.png | Bin 6456 -> 0 bytes .../duty-cycle-limit.png | Bin 5320 -> 0 bytes .../message-status-evidence/explicit-ack.png | Bin 5602 -> 0 bytes .../generic-encrypted-send-failure.png | Bin 6590 -> 0 bytes .../message-status-evidence/invalid-request.png | Bin 5458 -> 0 bytes .../message-too-large.png | Bin 5851 -> 0 bytes artifacts/message-status-evidence/no-ack.png | Bin 5773 -> 0 bytes .../message-status-evidence/no-app-response.png | Bin 5456 -> 0 bytes .../message-status-evidence/no-channel.png | Bin 6024 -> 0 bytes .../no-radio-interface.png | Bin 5533 -> 0 bytes .../message-status-evidence/not-authorized.png | Bin 5472 -> 0 bytes .../message-status-evidence/rate-limited.png | Bin 5128 -> 0 bytes .../recipient-key-unavailable.png | Bin 6009 -> 0 bytes .../recipient-needs-your-key.png | Bin 6085 -> 0 bytes artifacts/message-status-evidence/sending.png | Bin 5107 -> 0 bytes 19 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 artifacts/message-status-evidence/admin-key-not-authorized.png delete mode 100644 artifacts/message-status-evidence/admin-session-expired.png delete mode 100644 artifacts/message-status-evidence/all-message-status-states.png delete mode 100644 artifacts/message-status-evidence/channel-implicit-ack.png delete mode 100644 artifacts/message-status-evidence/dm-implicit-ack.png delete mode 100644 artifacts/message-status-evidence/duty-cycle-limit.png delete mode 100644 artifacts/message-status-evidence/explicit-ack.png delete mode 100644 artifacts/message-status-evidence/generic-encrypted-send-failure.png delete mode 100644 artifacts/message-status-evidence/invalid-request.png delete mode 100644 artifacts/message-status-evidence/message-too-large.png delete mode 100644 artifacts/message-status-evidence/no-ack.png delete mode 100644 artifacts/message-status-evidence/no-app-response.png delete mode 100644 artifacts/message-status-evidence/no-channel.png delete mode 100644 artifacts/message-status-evidence/no-radio-interface.png delete mode 100644 artifacts/message-status-evidence/not-authorized.png delete mode 100644 artifacts/message-status-evidence/rate-limited.png delete mode 100644 artifacts/message-status-evidence/recipient-key-unavailable.png delete mode 100644 artifacts/message-status-evidence/recipient-needs-your-key.png delete mode 100644 artifacts/message-status-evidence/sending.png diff --git a/artifacts/message-status-evidence/admin-key-not-authorized.png b/artifacts/message-status-evidence/admin-key-not-authorized.png deleted file mode 100644 index f73fa96f97d70947a999ffd2a26ae53ab02fe62c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6115 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≻JgoOc6b4;BG_v*Q#FPF zcZZdj+n<^XRK=x*?mFxb+oVjZG(g!WMQ&|nrIW|eWWSQh&OPp6H3n=FjA)y>2G%d2 zmjsyTj=7kdn{NTNJXpOV`hWy)RaKQc6zB~{I6;_R>?Rep40!RfBcOrIxKcgE>toSo z;o(eha4=JkGbnivogJnhz5`E!WR8b}v>>Pf0m}%9tOJ1GzIV8RdE2YmH1^26{kBb1V z`Vcrnw2xZnxh~w{lbNX_hPf#$-iiLR z1wr^lek~=l+VId)d^Q6eEd7o;@R|9~#@ia(zf&N}~Np_pYSD@DbBsT%DdHzdzxzGTp zkI&AMp-arn&C$zo^n=6^(mQ5YlC6r7nTG7+nNrP9c#Vlibv?yXK~OlJB$3CEi# z<|8#*G)8ki*FxM3SmmB$LxoLVi%?1Mmn1(gjTw6(Z@hfil+Vw?{`Ktjmf! zUS1HN(S2p;qktd+l0I<5Wj-?+oXU704KYb)EVEQ8`auIYceTgH5A^rw zXg_@=DO5jwoNb*Y&crs4Y`s$-mfQ^*NOK8WS>{cpiRr;GlaQZ_p}yCRQW{nTAQOVharmv$V8ST=G)t)*J8AHoG!dR+{LK?0YJsirf44wJps~`c7LNI!Uy| zy2IwXGZpJNL(JqLTv+vD3=E8ba*NgSFNP_WljFHaS1jM@?rtR&0WXPdl#QgeZE|#T zB~41|NAO(hKWArGayrOKGU)_or=~KxcR%iKrs7$jf)6&ZJy}h(dph%qGd~fm_D29w z**IKcsoebGr%#M5g(VjAy8CW1u7I4J+~NfPA#u$B%7~mp==?6aBSq`Ix6o zVV>8n%S0CR*NHO4=pC+mW-vp3iTXn>POnp7n0)@u2~q(|ZQ!eMOP9MT_m#Mu KSgDAf_x}Kj?XCj= diff --git a/artifacts/message-status-evidence/channel-implicit-ack.png b/artifacts/message-status-evidence/channel-implicit-ack.png deleted file mode 100644 index 4988962b76404c3ff2a5cce932c92d342e0aff73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5516 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 diff --git a/artifacts/message-status-evidence/dm-implicit-ack.png b/artifacts/message-status-evidence/dm-implicit-ack.png deleted file mode 100644 index 1da1f6827eaf3917a04cc255cb83a8fce6d4b44c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6456 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 diff --git a/artifacts/message-status-evidence/duty-cycle-limit.png b/artifacts/message-status-evidence/duty-cycle-limit.png deleted file mode 100644 index 0179de3c9fc04b69d0c4a9ffc1b6b0549475a57d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5320 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 diff --git a/artifacts/message-status-evidence/explicit-ack.png b/artifacts/message-status-evidence/explicit-ack.png deleted file mode 100644 index 31bcb30fe134aec1d100974f15ed4a85c6c4df1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5602 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 r58j`t{ljvmKuy8E2#Q3)zRE_Oo|gs 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 diff --git a/artifacts/message-status-evidence/invalid-request.png b/artifacts/message-status-evidence/invalid-request.png deleted file mode 100644 index 06a1dd1f04aa969288d20d6facaa59df1bf59cc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5458 zcmds*cQBmazsK!btP)YzDv2J#ViBVEo&-Vk@(59)CRn|!8p4+ptRRSp&RQ)>SUq}+ z5?!KqqDH&>`~7w2&b>4D&pUVK%rocA=RMDPpL3q)b3XHm)z{U$LBT>nL_~B$TT9J= zhzO)a=fE*DKBeS-evXS4^R+{4j!~>e>!J8~z)EKY!l7a$^;wv*+k+@Ir z$D&VL*~-lxht36KZFi8P!VQ57N`V_^*eVJ6C-Qd9PiEzt5y~|2%c;E3@QPPqBrSj% zJ{&-D0m?`?EtUfw4>hHs(tseKq}*T_B!U)18Q${0l%4V}TwGiX4i2`oDEGGY^iZU# zsH(2#vdpnkQczf?ZftJeym?d6Cy2>v|M(ac5Fmp@($Lb{lC)m8(MPhY5rLzzSY*CD zFE5E54ftx65|LdN9TPK3>gL^`>h0~Vt=&C7KHky-g7qqf)P!woo>OL7L6z`&dU}r@ zJ<>g&oP>9BKpvjCIXPw1&RlROW@Ka>9vzuo?N{VDKW8w%S-vYcVkgQf66N>|D2v;NG1Fo9HQl3hK4GNiG8Y9S66?etE(U<*Vx#I zKp@(?x@0q}s;Xw@<{X|qt5YF3TZrKe(A6DSTjSUB4Gy-lv~+E`kDi*I9vm1jo%C>b zzjNo#(_xk~D|7RJkdTnz;MvJZ{T$}8jSYd6Z{Os_a^>aRIEG|IgoKtgNCuY^qK1FA z9Eoi!&f3AKIEg@A?d`~73QEf4iqg^qA4Dpc(bLTA=h#^Cb21^|j&Nl{=dWK}qxU#D zIpyUuaWm7?#qqMTvW10(uk2B%6m4f&<-Gg%?|UCdD+wKDVK7Q(uBXoLNQST^^-4<| z-mTvn(+Jw?YKeO11gfxUS`AlMgvRIa7s0`q%1`_H`r4l=<{rl?ZOZZRw9iEhjd#98 z4N+i9lLGs~IZru(n8?nquGN*5_xo#W1$A}OP>>hone5pkkhrFzf xGP$CnVxQnp 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 UOO;&$DkUP)R@YT4Qvt&N1JoMsasU7T diff --git a/artifacts/message-status-evidence/message-too-large.png b/artifacts/message-status-evidence/message-too-large.png deleted file mode 100644 index 42c8135bcca7e597b043b09d75fbb5bfd105c99e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5851 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 RBP^|nwAJ<1KB?Hp{1=OT+a&-1 diff --git a/artifacts/message-status-evidence/no-ack.png b/artifacts/message-status-evidence/no-ack.png deleted file mode 100644 index 1c348914225f31d7048865900940174cb9d05dfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5773 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 A!vFvP diff --git a/artifacts/message-status-evidence/no-app-response.png b/artifacts/message-status-evidence/no-app-response.png deleted file mode 100644 index 1e4a44bf81fe78fcd32ab9a6921ebcf9ea759e94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5456 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 W$233X0bpoXEG;!X)oNvU)V~2B#qJ>h diff --git a/artifacts/message-status-evidence/not-authorized.png b/artifacts/message-status-evidence/not-authorized.png deleted file mode 100644 index 785eab50c1f74818c7684535daf24fdd11be6f43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5472 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 JsZ@f8{Rhx$G9Ul| diff --git a/artifacts/message-status-evidence/rate-limited.png b/artifacts/message-status-evidence/rate-limited.png deleted file mode 100644 index a246fd760b2e54e7c4c39736288f5598950fc0d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5128 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 diff --git a/artifacts/message-status-evidence/recipient-key-unavailable.png b/artifacts/message-status-evidence/recipient-key-unavailable.png deleted file mode 100644 index 31e08e7a991185339fa86b8ea09bee3cfc04740b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6009 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 diff --git a/artifacts/message-status-evidence/sending.png b/artifacts/message-status-evidence/sending.png deleted file mode 100644 index 43410afaaea603826b9ba1791c3001c1bfed0a94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5107 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 A Date: Tue, 7 Jul 2026 16:43:34 -0700 Subject: [PATCH 14/16] fix: include cstring for message log copy --- include/util/LogMessage.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/util/LogMessage.h b/include/util/LogMessage.h index 5f69e52f..c019225c 100644 --- a/include/util/LogMessage.h +++ b/include/util/LogMessage.h @@ -2,6 +2,7 @@ #include "ILogEntry.h" #include +#include #include #include From cfe9a723ec7c6dd28233f18b9ca8767e143d771c Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Tue, 7 Jul 2026 17:28:21 -0700 Subject: [PATCH 15/16] fix: refine MUI message status details --- include/graphics/common/MessageStatus.h | 1 + include/graphics/view/TFT/TFTView_320x240.h | 5 + source/graphics/TFT/TFTView_320x240.cpp | 175 +++++++++++++++++++- source/graphics/common/MessageStatus.cpp | 60 +++++-- tests/test_MessageStatus.cpp | 16 ++ 5 files changed, 234 insertions(+), 23 deletions(-) diff --git a/include/graphics/common/MessageStatus.h b/include/graphics/common/MessageStatus.h index 311894ec..15bc750c 100644 --- a/include/graphics/common/MessageStatus.h +++ b/include/graphics/common/MessageStatus.h @@ -36,6 +36,7 @@ enum class Tone { struct Presentation { const char *text; + const char *detail; Tone tone; bool retryable; }; diff --git a/include/graphics/view/TFT/TFTView_320x240.h b/include/graphics/view/TFT/TFTView_320x240.h index 0097992d..4362a4bc 100644 --- a/include/graphics/view/TFT/TFTView_320x240.h +++ b/include/graphics/view/TFT/TFTView_320x240.h @@ -288,6 +288,11 @@ class TFTView_320x240 : public MeshtasticView static void ui_event_ChatButton(lv_event_t *e); static void ui_event_ChatDelButton(lv_event_t *e); static void ui_event_MsgPopupButton(lv_event_t *e); + static void ui_event_MessageStatus(lv_event_t *e); + static void ui_event_MessageStatusClose(lv_event_t *e); + static void ui_event_MessageStatusRetry(lv_event_t *e); + static void ui_event_MessageStatusDialogDelete(lv_event_t *e); + static void ui_event_SentMessageDelete(lv_event_t *e); static void ui_event_MsgRestoreButton(lv_event_t *e); static void ui_event_AlertButton(lv_event_t *e); diff --git a/source/graphics/TFT/TFTView_320x240.cpp b/source/graphics/TFT/TFTView_320x240.cpp index c3293d5f..19698f3b 100644 --- a/source/graphics/TFT/TFTView_320x240.cpp +++ b/source/graphics/TFT/TFTView_320x240.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #if defined(ARCH_PORTDUINO) @@ -102,6 +103,22 @@ static lv_color_t messageStatusColor(MessageStatus::Tone tone) return colorLightGray; } +struct SentMessageContext { + uint32_t requestId; + MessageStatus::State status; + std::string text; +}; + +struct MessageStatusDialogContext { + MessageStatus::State status; + std::string text; +}; + +static bool hasMessageStatusDetails(const MessageStatus::Presentation &status) +{ + return status.detail != nullptr && status.detail[0] != '\0'; +} + // children index of nodepanel lv objects (see addNode) enum NodePanelIdx { node_img_idx, @@ -1300,6 +1317,139 @@ void TFTView_320x240::ui_event_MsgPopupButton(lv_event_t *e) } } +void TFTView_320x240::ui_event_MessageStatus(lv_event_t *e) +{ + if (lv_event_get_code(e) != LV_EVENT_CLICKED) + return; + + auto *message = static_cast(lv_event_get_user_data(e)); + if (message == nullptr) + return; + + const MessageStatus::Presentation &status = MessageStatus::presentation(message->status); + if (!hasMessageStatusDetails(status)) + return; + + if (THIS->activeWidget != nullptr) { + lv_obj_delete(THIS->activeWidget); + THIS->activeWidget = nullptr; + } + + auto *dialog = new MessageStatusDialogContext{message->status, message->text}; + + lv_obj_t *panel = lv_obj_create(objects.main_screen); + THIS->activeWidget = panel; + lv_obj_set_pos(panel, 20, 32); + lv_obj_set_size(panel, 280, 170); + lv_obj_clear_flag(panel, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_layout(panel, LV_LAYOUT_FLEX); + lv_obj_set_flex_flow(panel, LV_FLEX_FLOW_COLUMN); + lv_obj_set_flex_align(panel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); + lv_obj_set_style_pad_left(panel, 10, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_pad_right(panel, 10, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_pad_top(panel, 10, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_pad_bottom(panel, 8, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_pad_row(panel, 8, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_bg_color(panel, colorDarkGray, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_border_color(panel, messageStatusColor(status.tone), LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_border_width(panel, 2, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_radius(panel, 7, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_add_event_cb(panel, ui_event_MessageStatusDialogDelete, LV_EVENT_DELETE, dialog); + + lv_obj_t *title = lv_label_create(panel); + lv_obj_set_width(title, LV_PCT(100)); + lv_label_set_long_mode(title, LV_LABEL_LONG_WRAP); + lv_label_set_text(title, _(status.text)); + lv_obj_set_style_text_color(title, messageStatusColor(status.tone), LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_font(title, &ui_font_montserrat_14, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_align(title, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT); + + lv_obj_t *detail = lv_label_create(panel); + lv_obj_set_width(detail, LV_PCT(100)); + lv_obj_set_height(detail, 64); + lv_label_set_long_mode(detail, LV_LABEL_LONG_WRAP); + lv_label_set_text(detail, _(status.detail)); + lv_obj_set_style_text_color(detail, colorLightGray, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_font(detail, &ui_font_montserrat_12, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_align(detail, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT); + + lv_obj_t *actions = lv_obj_create(panel); + lv_obj_remove_style_all(actions); + lv_obj_set_width(actions, LV_PCT(100)); + lv_obj_set_height(actions, 36); + lv_obj_set_layout(actions, LV_LAYOUT_FLEX); + lv_obj_set_flex_flow(actions, LV_FLEX_FLOW_ROW); + lv_obj_set_flex_align(actions, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); + lv_obj_set_style_pad_column(actions, 8, LV_PART_MAIN | LV_STATE_DEFAULT); + + if (status.retryable) { + lv_obj_t *retry = lv_btn_create(actions); + lv_obj_set_size(retry, 88, 32); + lv_obj_set_style_bg_color(retry, colorBlue, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_shadow_width(retry, 0, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_radius(retry, 7, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_add_event_cb(retry, ui_event_MessageStatusRetry, LV_EVENT_CLICKED, dialog); + + lv_obj_t *retryLabel = lv_label_create(retry); + lv_label_set_text(retryLabel, _("Retry")); + lv_obj_center(retryLabel); + } + + lv_obj_t *close = lv_btn_create(actions); + lv_obj_set_size(close, 88, 32); + lv_obj_set_style_bg_color(close, colorBlue, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_shadow_width(close, 0, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_radius(close, 7, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_add_event_cb(close, ui_event_MessageStatusClose, LV_EVENT_CLICKED, nullptr); + + lv_obj_t *closeLabel = lv_label_create(close); + lv_label_set_text(closeLabel, _("Close")); + lv_obj_center(closeLabel); +} + +void TFTView_320x240::ui_event_MessageStatusClose(lv_event_t *e) +{ + if (lv_event_get_code(e) != LV_EVENT_CLICKED) + return; + + if (THIS->activeWidget != nullptr) { + lv_obj_delete(THIS->activeWidget); + THIS->activeWidget = nullptr; + } +} + +void TFTView_320x240::ui_event_MessageStatusRetry(lv_event_t *e) +{ + if (lv_event_get_code(e) != LV_EVENT_CLICKED) + return; + + auto *dialog = static_cast(lv_event_get_user_data(e)); + if (dialog == nullptr) + return; + + std::string retryText = dialog->text; + if (THIS->activeWidget != nullptr) { + lv_obj_delete(THIS->activeWidget); + THIS->activeWidget = nullptr; + } + + char buf[maxLogMessagePayloadLength + 1]; + snprintf(buf, sizeof(buf), "%s", retryText.c_str()); + THIS->handleAddMessage(buf); +} + +void TFTView_320x240::ui_event_MessageStatusDialogDelete(lv_event_t *e) +{ + if (lv_event_get_target_obj(e) == THIS->activeWidget) + THIS->activeWidget = nullptr; + delete static_cast(lv_event_get_user_data(e)); +} + +void TFTView_320x240::ui_event_SentMessageDelete(lv_event_t *e) +{ + delete static_cast(lv_event_get_user_data(e)); +} + /** * @brief hide msgRestorePanel on touch * @@ -4502,8 +4652,8 @@ void TFTView_320x240::handleAddMessage(char *msg) const size_t displayLen = std::min(msgLen, static_cast(maxLogMessagePayloadLength)); memcpy(displayMsg, msg, displayLen); displayMsg[displayLen] = '\0'; - addMessage(activeMsgContainer, actTime, 0, displayMsg, LogMessage::eFailed); - handleTextMessageResponse(channelOrNode, 0, MessageStatus::State::MessageTooLarge); + addMessage(activeMsgContainer, actTime, 0, displayMsg, LogMessage::eFailed, + MessageStatus::persistedLogState(MessageStatus::State::MessageTooLarge)); messageAlert(_(MessageStatus::presentation(MessageStatus::State::MessageTooLarge).text), true); return; } @@ -4540,8 +4690,14 @@ void TFTView_320x240::addMessage(lv_obj_t *container, uint32_t msgTime, uint32_t lv_obj_set_style_pad_right(hiddenPanel, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_top(hiddenPanel, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_bottom(hiddenPanel, 0, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_pad_row(hiddenPanel, 0, LV_PART_MAIN | LV_STATE_DEFAULT); hiddenPanel->user_data = (void *)requestId; + const auto messageState = MessageStatus::inlineStateForLogStatus(status, persistedStatus, requestId != 0); + auto *messageContext = + new SentMessageContext{requestId, messageState.value_or(MessageStatus::State::Sending), std::string(msg)}; + lv_obj_add_event_cb(hiddenPanel, ui_event_SentMessageDelete, LV_EVENT_DELETE, messageContext); + // add timestamp char buf[284]; // 237 + 4 + 40 + 2 + 1 buf[0] = '\0'; @@ -4558,15 +4714,21 @@ void TFTView_320x240::addMessage(lv_obj_t *container, uint32_t msgTime, uint32_t lv_label_set_text(textLabel, buf); add_style_chat_message_style(textLabel); + textLabel->user_data = messageContext; + lv_obj_add_flag(textLabel, lv_obj_flag_t(LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_CLICK_FOCUSABLE)); + lv_obj_add_event_cb(textLabel, ui_event_MessageStatus, LV_EVENT_CLICKED, messageContext); - const auto messageState = MessageStatus::inlineStateForLogStatus(status, persistedStatus, requestId != 0); if (messageState.has_value()) { lv_obj_t *statusLabel = lv_label_create(hiddenPanel); lv_obj_set_width(statusLabel, 200); lv_label_set_long_mode(statusLabel, LV_LABEL_LONG_WRAP); lv_obj_set_style_text_align(statusLabel, LV_TEXT_ALIGN_RIGHT, LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_text_font(statusLabel, &ui_font_montserrat_12, LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_pad_top(statusLabel, 2, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_font(statusLabel, &lv_font_montserrat_10, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_pad_top(statusLabel, 0, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_pad_bottom(statusLabel, 0, LV_PART_MAIN | LV_STATE_DEFAULT); + statusLabel->user_data = messageContext; + lv_obj_add_flag(statusLabel, lv_obj_flag_t(LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_CLICK_FOCUSABLE)); + lv_obj_add_event_cb(statusLabel, ui_event_MessageStatus, LV_EVENT_CLICKED, messageContext); const MessageStatus::Presentation &messageStatus = MessageStatus::presentation(*messageState); lv_label_set_text(statusLabel, _(messageStatus.text)); lv_obj_set_style_text_color(statusLabel, messageStatusColor(messageStatus.tone), LV_PART_MAIN | LV_STATE_DEFAULT); @@ -5847,6 +6009,9 @@ void TFTView_320x240::handleTextMessageResponse(uint32_t channelOrNode, const ui // now give the textlabel border another color lv_obj_t *textLabel = panel->spec_attr->children[0]; + auto *messageContext = static_cast(textLabel->user_data); + if (messageContext != nullptr) + messageContext->status = status; lv_obj_set_style_border_color(textLabel, messageStatusColor(messageStatus.tone), LV_PART_MAIN | LV_STATE_DEFAULT); if (panel->spec_attr->child_cnt > 1) { diff --git a/source/graphics/common/MessageStatus.cpp b/source/graphics/common/MessageStatus.cpp index a3d35995..5f7a66be 100644 --- a/source/graphics/common/MessageStatus.cpp +++ b/source/graphics/common/MessageStatus.cpp @@ -4,24 +4,48 @@ namespace MessageStatus { namespace { -constexpr Presentation sending{"Sending...", Tone::Pending, false}; -constexpr Presentation channelImplicitAck{"Delivered to mesh", Tone::Success, false}; -constexpr Presentation directImplicitAck{"Relayed, not confirmed by recipient", Tone::Warning, true}; -constexpr Presentation explicitAck{"Delivered to recipient", Tone::Success, false}; -constexpr Presentation noAck{"Failed to deliver to mesh", Tone::RetryableFailure, true}; -constexpr Presentation noChannel{"Channel/key mismatch", Tone::RetryableFailure, true}; -constexpr Presentation genericEncryptedSendFailure{"Could not send encrypted message", Tone::RetryableFailure, true}; -constexpr Presentation recipientKeyUnavailable{"Recipient key unavailable", Tone::RetryableFailure, true}; -constexpr Presentation recipientNeedsSenderKey{"Recipient needs your key", Tone::RetryableFailure, true}; -constexpr Presentation messageTooLarge{"Message is too large to send", Tone::PermanentFailure, false}; -constexpr Presentation noRadioInterface{"No radio interface", Tone::RetryableFailure, true}; -constexpr Presentation dutyCycleLimit{"Duty cycle limit", Tone::RetryableFailure, true}; -constexpr Presentation rateLimited{"Rate limited", Tone::RetryableFailure, true}; -constexpr Presentation noAppResponse{"No app response", Tone::RetryableFailure, true}; -constexpr Presentation invalidRequest{"Invalid request", Tone::RetryableFailure, true}; -constexpr Presentation notAuthorized{"Not authorized", Tone::RetryableFailure, true}; -constexpr Presentation adminSessionExpired{"Admin session expired", Tone::RetryableFailure, true}; -constexpr Presentation adminKeyNotAuthorized{"Admin key not authorized", Tone::RetryableFailure, true}; +constexpr Presentation sending{"Sending...", nullptr, Tone::Pending, false}; +constexpr Presentation channelImplicitAck{"Delivered to mesh", nullptr, Tone::Success, false}; +constexpr Presentation directImplicitAck{"Relayed, not confirmed by recipient", + "A node relayed this message, but the recipient has not confirmed it.", Tone::Warning, + true}; +constexpr Presentation explicitAck{"Delivered to recipient", nullptr, Tone::Success, false}; +constexpr Presentation noAck{"Failed to deliver to mesh", + "No node confirmed this message. Try again when you have better signal or more mesh coverage.", + Tone::RetryableFailure, true}; +constexpr Presentation noChannel{"Channel/key mismatch", + "The sender or recipient could not use a matching channel/key for this message.", + Tone::RetryableFailure, true}; +constexpr Presentation genericEncryptedSendFailure{"Could not send encrypted message", + "The radio could not send this as an encrypted message. Wait for key info " + "to sync, then try again.", + Tone::RetryableFailure, true}; +constexpr Presentation recipientKeyUnavailable{ + "Recipient key unavailable", + "Your node does not have the recipient's public key yet. Wait for node info to sync, then try again.", Tone::RetryableFailure, + true}; +constexpr Presentation recipientNeedsSenderKey{ + "Recipient needs your key", + "The recipient does not know your public key yet. Your node may share its info automatically; try again after it syncs.", + Tone::RetryableFailure, true}; +constexpr Presentation messageTooLarge{"Message is too large to send", "Shorten the message and send it again.", + Tone::PermanentFailure, false}; +constexpr Presentation noRadioInterface{"No radio interface", "No usable radio interface was available to transmit this message.", + Tone::RetryableFailure, true}; +constexpr Presentation dutyCycleLimit{"Duty cycle limit", "The radio hit its airtime duty-cycle limit. Try again later.", + Tone::RetryableFailure, true}; +constexpr Presentation rateLimited{"Rate limited", + "The app sent too quickly and the radio rate limited this request. Try again shortly.", + Tone::RetryableFailure, true}; +constexpr Presentation noAppResponse{"No app response", "The destination received the request, but no app or module responded.", + Tone::RetryableFailure, true}; +constexpr Presentation invalidRequest{"Invalid request", "The destination rejected this message request as invalid.", + Tone::RetryableFailure, true}; +constexpr Presentation notAuthorized{"Not authorized", "The destination refused this request.", Tone::RetryableFailure, true}; +constexpr Presentation adminSessionExpired{"Admin session expired", "The admin session expired. Try the request again.", + Tone::RetryableFailure, true}; +constexpr Presentation adminKeyNotAuthorized{"Admin key not authorized", "The destination refused this admin key.", + Tone::RetryableFailure, true}; constexpr uint32_t persistedLogStateMagic = 0x4d535400; // "MST" + state byte constexpr uint32_t persistedLogStateMask = 0xffffff00; } // namespace diff --git a/tests/test_MessageStatus.cpp b/tests/test_MessageStatus.cpp index e0246f0a..95ae8fb5 100644 --- a/tests/test_MessageStatus.cpp +++ b/tests/test_MessageStatus.cpp @@ -53,6 +53,22 @@ TEST_CASE("MessageStatus distinguishes retryable and permanent failures") CHECK(MessageStatus::presentation(State::MessageTooLarge).tone == Tone::PermanentFailure); } +TEST_CASE("MessageStatus provides detail text for statuses that can open a popup") +{ + CHECK(MessageStatus::presentation(State::Sending).detail == nullptr); + CHECK(MessageStatus::presentation(State::ExplicitAck).detail == nullptr); + + CHECK(MessageStatus::presentation(State::DirectImplicitAck).detail == + std::string("A node relayed this message, but the recipient has not confirmed it.")); + CHECK(MessageStatus::presentation(State::NoAck).detail == + std::string("No node confirmed this message. Try again when you have better signal or more mesh coverage.")); + CHECK(MessageStatus::presentation(State::NoChannel).detail == + std::string("The sender or recipient could not use a matching channel/key for this message.")); + CHECK(MessageStatus::presentation(State::RecipientKeyUnavailable).detail == + std::string("Your node does not have the recipient's public key yet. Wait for node info to sync, then try again.")); + CHECK(MessageStatus::presentation(State::MessageTooLarge).detail == std::string("Shorten the message and send it again.")); +} + TEST_CASE("MessageStatus maps delivery context") { CHECK(MessageStatus::deliveredState(true, false) == State::ChannelImplicitAck); From 41a68c2048ced028bb7c0a4e09bdca7e7d3a36c5 Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Tue, 7 Jul 2026 17:38:44 -0700 Subject: [PATCH 16/16] fix: compile portduino serial thread on macos --- source/comms/serial/SerialClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/comms/serial/SerialClient.cpp b/source/comms/serial/SerialClient.cpp index b28f859b..9dcb79f8 100644 --- a/source/comms/serial/SerialClient.cpp +++ b/source/comms/serial/SerialClient.cpp @@ -42,7 +42,7 @@ void SerialClient::init(void) #elif defined(ARCH_PORTDUINO) new std::thread([] { #ifdef __APPLE__ - pthread_setname_np(threadName); + pthread_setname_np(instance->threadName); #else pthread_setname_np(pthread_self(), instance->threadName); #endif