temp sync broken
This commit is contained in:
@@ -381,20 +381,39 @@ void sendFrame (const FrameStruct *frame) {
|
||||
*/
|
||||
|
||||
void retransmitFrame (FrameStruct *frame) {
|
||||
MESH_LOGD (TAG, "Going to check ReTx");
|
||||
if (frame->header & ROUTE_TYPE_FLOOD || frame->header & ROUTE_TYPE_TRANSPORT_FLOOD) {
|
||||
MESH_LOGD (TAG, "Header is flood");
|
||||
if (frame->header != DONT_RETRANSMIT_HEADER && frame->path.pathLen + 1 < MAX_FLOOD_TTL) {
|
||||
MESH_LOGD (TAG, "Writing pubkey");
|
||||
|
||||
/* -------- FLOOD -------- */
|
||||
if (frame->header & ROUTE_TYPE_FLOOD ||
|
||||
frame->header & ROUTE_TYPE_TRANSPORT_FLOOD) {
|
||||
|
||||
if (frame->header != DONT_RETRANSMIT_HEADER &&
|
||||
frame->path.pathLen + 1 < MAX_FLOOD_TTL) {
|
||||
|
||||
// append self to END of path
|
||||
frame->path.path[frame->path.pathLen++] = persistent.pubkey[0];
|
||||
MESH_LOGD (TAG, "Flooding");
|
||||
vTaskDelay (10);
|
||||
LoRaTransmit (frame); // TODO check if correct
|
||||
MESH_LOGD (TAG, "Flooded");
|
||||
LoRaTransmit (frame);
|
||||
}
|
||||
}
|
||||
|
||||
if (frame->header & ROUTE_TYPE_DIRECT || frame->header & ROUTE_TYPE_TRANSPORT_DIRECT) {
|
||||
/* -------- DIRECT -------- */
|
||||
if (frame->header & ROUTE_TYPE_DIRECT ||
|
||||
frame->header & ROUTE_TYPE_TRANSPORT_DIRECT) {
|
||||
|
||||
// are we the next hop?
|
||||
if (frame->path.pathLen > 0 &&
|
||||
frame->path.path[0] == persistent.pubkey[0]) {
|
||||
|
||||
// remove self from START of path
|
||||
frame->path.pathLen--;
|
||||
memmove (frame->path.path,
|
||||
frame->path.path + 1,
|
||||
frame->path.pathLen);
|
||||
|
||||
// forward only if there's another hop
|
||||
if (frame->path.pathLen > 0) {
|
||||
LoRaTransmit (frame);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user