mirror of
https://github.com/meshtastic/firmware.git
synced 2025-04-29 19:03:52 +00:00
Distinguish between ACK/NAK by checking for error reason
This commit is contained in:
parent
796592b586
commit
5d94bb601a
@ -487,7 +487,12 @@ void CannedMessageModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *st
|
|||||||
if (cannedMessageModule->runState == CANNED_MESSAGE_RUN_STATE_ACK_RECEIVED) {
|
if (cannedMessageModule->runState == CANNED_MESSAGE_RUN_STATE_ACK_RECEIVED) {
|
||||||
display->setTextAlignment(TEXT_ALIGN_CENTER);
|
display->setTextAlignment(TEXT_ALIGN_CENTER);
|
||||||
display->setFont(FONT_MEDIUM);
|
display->setFont(FONT_MEDIUM);
|
||||||
display->drawStringf(display->getWidth() / 2 + x, 0 + y + 12, buffer, "Delivered to %s",
|
String displayString;
|
||||||
|
if (this->ack)
|
||||||
|
displayString = "Delivered to\n%s";
|
||||||
|
else
|
||||||
|
displayString = "Delivery failed\nto %s";
|
||||||
|
display->drawStringf(display->getWidth() / 2 + x, 0 + y + 12, buffer, displayString,
|
||||||
cannedMessageModule->getNodeName(this->incoming));
|
cannedMessageModule->getNodeName(this->incoming));
|
||||||
} else if (cannedMessageModule->runState == CANNED_MESSAGE_RUN_STATE_SENDING_ACTIVE) {
|
} else if (cannedMessageModule->runState == CANNED_MESSAGE_RUN_STATE_SENDING_ACTIVE) {
|
||||||
display->setTextAlignment(TEXT_ALIGN_CENTER);
|
display->setTextAlignment(TEXT_ALIGN_CENTER);
|
||||||
@ -561,6 +566,9 @@ ProcessMessage CannedMessageModule::handleReceived(const meshtastic_MeshPacket &
|
|||||||
e.frameChanged = true;
|
e.frameChanged = true;
|
||||||
this->runState = CANNED_MESSAGE_RUN_STATE_ACK_RECEIVED;
|
this->runState = CANNED_MESSAGE_RUN_STATE_ACK_RECEIVED;
|
||||||
this->incoming = mp.decoded.request_id;
|
this->incoming = mp.decoded.request_id;
|
||||||
|
meshtastic_Routing decoded = meshtastic_Routing_init_default;
|
||||||
|
pb_decode_from_bytes(mp.decoded.payload.bytes, mp.decoded.payload.size, meshtastic_Routing_fields, &decoded);
|
||||||
|
this->ack = decoded.error_reason == meshtastic_Routing_Error_NONE;
|
||||||
this->notifyObservers(&e);
|
this->notifyObservers(&e);
|
||||||
// run the next time 2 seconds later
|
// run the next time 2 seconds later
|
||||||
setIntervalFromNow(2000);
|
setIntervalFromNow(2000);
|
||||||
|
@ -97,6 +97,7 @@ class CannedMessageModule : public SinglePortModule, public Observable<const UIF
|
|||||||
bool destSelect = false; // Freetext Editor Mode
|
bool destSelect = false; // Freetext Editor Mode
|
||||||
NodeNum dest = NODENUM_BROADCAST;
|
NodeNum dest = NODENUM_BROADCAST;
|
||||||
NodeNum incoming = NODENUM_BROADCAST;
|
NodeNum incoming = NODENUM_BROADCAST;
|
||||||
|
bool ack = false; // True means ACK, false means NAK (error_reason != NONE)
|
||||||
|
|
||||||
char messageStore[CANNED_MESSAGE_MODULE_MESSAGES_SIZE + 1];
|
char messageStore[CANNED_MESSAGE_MODULE_MESSAGES_SIZE + 1];
|
||||||
char *messages[CANNED_MESSAGE_MODULE_MESSAGE_MAX_COUNT];
|
char *messages[CANNED_MESSAGE_MODULE_MESSAGE_MAX_COUNT];
|
||||||
|
Loading…
Reference in New Issue
Block a user