mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-04-20 22:13:47 +00:00
* BaseChatMesh::sendMessage(), new est_timeout (OUT) param
This commit is contained in:
parent
f94d5f7423
commit
9af5adb861
4 changed files with 11 additions and 7 deletions
|
|
@ -396,8 +396,9 @@ public:
|
|||
if (recipient && attempt < 4 && txt_type == TXT_TYPE_PLAIN) {
|
||||
char *text = (char *) &cmd_frame[i];
|
||||
int tlen = len - i;
|
||||
uint32_t est_timeout;
|
||||
text[tlen] = 0; // ensure null
|
||||
int result = sendMessage(*recipient, msg_timestamp, attempt, text, expected_ack_crc);
|
||||
int result = sendMessage(*recipient, msg_timestamp, attempt, text, expected_ack_crc, est_timeout);
|
||||
// TODO: add expected ACK to table
|
||||
if (result == MSG_SEND_FAILED) {
|
||||
writeErrFrame();
|
||||
|
|
@ -407,7 +408,8 @@ public:
|
|||
out_frame[0] = RESP_CODE_SENT;
|
||||
out_frame[1] = (result == MSG_SEND_SENT_FLOOD) ? 1 : 0;
|
||||
memcpy(&out_frame[2], &expected_ack_crc, 4);
|
||||
_serial->writeFrame(out_frame, 6);
|
||||
memcpy(&out_frame[6], &est_timeout, 4);
|
||||
_serial->writeFrame(out_frame, 10);
|
||||
}
|
||||
} else {
|
||||
writeErrFrame(); // unknown recipient, or unsuported TXT_TYPE_*
|
||||
|
|
|
|||
|
|
@ -277,7 +277,9 @@ public:
|
|||
if (memcmp(command, "send ", 5) == 0) {
|
||||
if (curr_recipient) {
|
||||
const char *text = &command[5];
|
||||
int result = sendMessage(*curr_recipient, getRTCClock()->getCurrentTime(), 0, text, expected_ack_crc);
|
||||
uint32_t est_timeout;
|
||||
|
||||
int result = sendMessage(*curr_recipient, getRTCClock()->getCurrentTime(), 0, text, expected_ack_crc, est_timeout);
|
||||
if (result == MSG_SEND_FAILED) {
|
||||
Serial.println(" ERROR: unable to send.");
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -201,7 +201,7 @@ mesh::Packet* BaseChatMesh::composeMsgPacket(const ContactInfo& recipient, uint3
|
|||
return createDatagram(PAYLOAD_TYPE_TXT_MSG, recipient.id, recipient.shared_secret, temp, 5 + text_len);
|
||||
}
|
||||
|
||||
int BaseChatMesh::sendMessage(const ContactInfo& recipient, uint32_t timestamp, uint8_t attempt, const char* text, uint32_t& expected_ack) {
|
||||
int BaseChatMesh::sendMessage(const ContactInfo& recipient, uint32_t timestamp, uint8_t attempt, const char* text, uint32_t& expected_ack, uint32_t& est_timeout) {
|
||||
mesh::Packet* pkt = composeMsgPacket(recipient, timestamp, attempt, text, expected_ack);
|
||||
if (pkt == NULL) return MSG_SEND_FAILED;
|
||||
|
||||
|
|
@ -210,11 +210,11 @@ int BaseChatMesh::sendMessage(const ContactInfo& recipient, uint32_t timestamp,
|
|||
int rc;
|
||||
if (recipient.out_path_len < 0) {
|
||||
sendFlood(pkt);
|
||||
txt_send_timeout = futureMillis(calcFloodTimeoutMillisFor(t));
|
||||
txt_send_timeout = futureMillis(est_timeout = calcFloodTimeoutMillisFor(t));
|
||||
rc = MSG_SEND_SENT_FLOOD;
|
||||
} else {
|
||||
sendDirect(pkt, recipient.out_path, recipient.out_path_len);
|
||||
txt_send_timeout = futureMillis(calcDirectTimeoutMillisFor(t, recipient.out_path_len));
|
||||
txt_send_timeout = futureMillis(est_timeout = calcDirectTimeoutMillisFor(t, recipient.out_path_len));
|
||||
rc = MSG_SEND_SENT_DIRECT;
|
||||
}
|
||||
return rc;
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ protected:
|
|||
|
||||
public:
|
||||
mesh::Packet* createSelfAdvert(const char* name);
|
||||
int sendMessage(const ContactInfo& recipient, uint32_t timestamp, uint8_t attempt, const char* text, uint32_t& expected_ack);
|
||||
int sendMessage(const ContactInfo& recipient, uint32_t timestamp, uint8_t attempt, const char* text, uint32_t& expected_ack, uint32_t& est_timeout);
|
||||
void resetPathTo(ContactInfo& recipient);
|
||||
void scanRecentContacts(int last_n, ContactVisitor* visitor);
|
||||
ContactInfo* searchContactsByPrefix(const char* name_prefix);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue