Ack on messages sent

This commit is contained in:
HarukiToreda
2025-09-26 16:51:09 -04:00
parent 07d3726cde
commit 28502c93c9
4 changed files with 93 additions and 1 deletions

View File

@@ -1008,6 +1008,7 @@ void CannedMessageModule::sendText(NodeNum dest, ChannelIndex channel, const cha
sm.dest = dest;
sm.type = MessageType::DM_TO_US;
}
sm.ackStatus = AckStatus::UNKNOWN;
messageStore.addLiveMessage(sm);
@@ -2185,6 +2186,20 @@ ProcessMessage CannedMessageModule::handleReceived(const meshtastic_MeshPacket &
waitingForAck = false;
// Update last sent StoredMessage with ACK/NACK result
if (!messageStore.getMessages().empty()) {
StoredMessage &last = const_cast<StoredMessage &>(messageStore.getMessages().back());
if (last.sender == nodeDB->getNodeNum()) { // only update our own messages
if (this->ack) {
last.ackStatus = AckStatus::ACKED;
} else {
// If error_reason was explicit, you can map to NACKED; otherwise TIMEOUT
last.ackStatus =
(decoded.error_reason == meshtastic_Routing_Error_NONE) ? AckStatus::ACKED : AckStatus::NACKED;
}
}
}
// Capture radio metrics from this ACK/NACK packet
this->lastRxRssi = mp.rx_rssi;
this->lastRxSnr = mp.rx_snr;