diff --git a/src/configuration.h b/src/configuration.h index 16262d97f..49c7fd4de 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -144,7 +144,7 @@ along with this program. If not, see . //#define DISABLE_NTP // Disable the welcome screen and allow -// #define DISABLE_WELCOME_UNSET + #define DISABLE_WELCOME_UNSET // ----------------------------------------------------------------------------- // OLED & Input diff --git a/src/mesh/RadioInterface.cpp b/src/mesh/RadioInterface.cpp index 111831518..d949c4626 100644 --- a/src/mesh/RadioInterface.cpp +++ b/src/mesh/RadioInterface.cpp @@ -257,7 +257,7 @@ void printPacket(const char *prefix, const MeshPacket *p) DEBUG_MSG(" rxSNR=%g", p->rx_snr); } if (p->rx_rssi != 0) { - DEBUG_MSG(" rxSNR=%g", p->rx_rssi); + DEBUG_MSG(" rxRSSI=%g", p->rx_rssi); } if (p->priority != 0) DEBUG_MSG(" priority=%d", p->priority); diff --git a/src/mesh/RadioLibInterface.cpp b/src/mesh/RadioLibInterface.cpp index c0007ade0..8603d06b4 100644 --- a/src/mesh/RadioLibInterface.cpp +++ b/src/mesh/RadioLibInterface.cpp @@ -93,8 +93,15 @@ bool RadioLibInterface::canSendImmediately() /// bluetooth comms code. If the txmit queue is empty it might return an error ErrorCode RadioLibInterface::send(MeshPacket *p) { + +#ifndef DISABLE_WELCOME_UNSET + if (config.lora.region != Config_LoRaConfig_RegionCode_Unset) { if (disabled || config.lora.tx_disabled) { + + + if (radioConfig.preferences.region != RegionCode_Unset) { + if (disabled || radioConfig.preferences.is_lora_tx_disabled) { DEBUG_MSG("send - lora_tx_disabled\n"); packetPool.release(p); return ERRNO_DISABLED; @@ -106,6 +113,16 @@ ErrorCode RadioLibInterface::send(MeshPacket *p) return ERRNO_DISABLED; } +#else + + if (disabled || radioConfig.preferences.is_lora_tx_disabled) { + DEBUG_MSG("send - lora_tx_disabled\n"); + packetPool.release(p); + return ERRNO_DISABLED; + } + +#endif + // Sometimes when testing it is useful to be able to never turn on the xmitter #ifndef LORA_DISABLE_SENDING printPacket("enqueuing for send", p); diff --git a/src/mesh/Router.cpp b/src/mesh/Router.cpp index 87e319d83..2546dbe81 100644 --- a/src/mesh/Router.cpp +++ b/src/mesh/Router.cpp @@ -274,6 +274,9 @@ void Router::sniffReceived(const MeshPacket *p, const Routing *c) bool perhapsDecode(MeshPacket *p) { + + //DEBUG_MSG("\n\n** perhapsDecode payloadVariant - %d\n\n", p->which_payloadVariant); + if (p->which_payloadVariant == MeshPacket_decoded_tag) return true; // If packet was already decoded just return @@ -304,9 +307,27 @@ bool perhapsDecode(MeshPacket *p) p->which_payloadVariant = MeshPacket_decoded_tag; // change type to decoded p->channel = chIndex; // change to store the index instead of the hash + if (p->decoded.portnum == PortNum_TEXT_MESSAGE_APP) { + DEBUG_MSG("\n\n** TEXT_MESSAGE_APP payloadVariant - %d\n\n", p->decoded.which_payloadVariant); + } // Decompress if needed. jm - if (p->decoded.which_payloadVariant == Data_payload_compressed_tag) { - // Decompress the file + if (p->decoded.portnum == PortNum_TEXT_MESSAGE_APP) { + if (p->decoded.which_payloadVariant == Data_payload_compressed_tag) { + // Decompress the payload + char compressed_in[Constants_DATA_PAYLOAD_LEN] = {}; + char decompressed_out[Constants_DATA_PAYLOAD_LEN] = {}; + int decompressed_len; + + memcpy(compressed_in, p->decoded.payload.bytes, p->decoded.payload.size); + + decompressed_len = unishox2_decompress_simple(compressed_in, p->decoded.payload.size, decompressed_out); + + DEBUG_MSG("\n\n**\n\nDecompressed length - %d \n", decompressed_len); + // Serial.println(p->decoded.payload.bytes); + Serial.println(decompressed_out); + + p->decoded.which_payloadVariant = Data_payload_tag; + } } printPacket("decoded message", p); @@ -339,37 +360,38 @@ Routing_Error perhapsEncode(MeshPacket *p) char compressed_out[Constants_DATA_PAYLOAD_LEN] = {0}; int compressed_len; - // compressed_len = unishox2_compress_simple(original_payload, p->decoded.payload.size, compressed_out); + compressed_len = unishox2_compress_simple(original_payload, p->decoded.payload.size, compressed_out); - Serial.print("Original length - "); - Serial.println(p->decoded.payload.size); + DEBUG_MSG("Original length - %d \n", p->decoded.payload.size); + DEBUG_MSG("Compressed length - %d \n", compressed_len); - Serial.print("Compressed length - "); - Serial.println(compressed_len); // Serial.println(compressed_out); // If the compressed length is greater than or equal to the original size, don't use the compressed form if (compressed_len >= p->decoded.payload.size) { - DEBUG_MSG("Not compressing message. Not enough benefit from doing so.\n"); + DEBUG_MSG("Not using compressing message.\n"); // Set the uncompressed payload varient anyway. Shouldn't hurt? p->decoded.which_payloadVariant = Data_payload_tag; // Otherwise we use the compressor } else { - DEBUG_MSG("Compressing message.\n"); + DEBUG_MSG("Using compressed message.\n"); // Copy the compressed data into the meshpacket - // p->decoded.payload_compressed.size = compressed_len; - // memcpy(p->decoded.payload_compressed.bytes, compressed_out, compressed_len); + + p->decoded.payload_compressed.size = compressed_len; + memcpy(p->decoded.payload_compressed.bytes, compressed_out, compressed_len); - // p->decoded.which_payloadVariant = Data_payload_compressed_tag; + DEBUG_MSG("\n\n** TEXT_MESSAGE_APP payloadVariant - %d\n\n", p->decoded.which_payloadVariant); + p->decoded.which_payloadVariant = Data_payload_compressed_tag; + DEBUG_MSG("\n\n** TEXT_MESSAGE_APP payloadVariant - %d\n\n", p->decoded.which_payloadVariant); } if (0) { char decompressed_out[Constants_DATA_PAYLOAD_LEN] = {}; int decompressed_len; - // decompressed_len = unishox2_decompress_simple(compressed_out, compressed_len, decompressed_out); + decompressed_len = unishox2_decompress_simple(compressed_out, compressed_len, decompressed_out); Serial.print("Decompressed length - "); Serial.println(decompressed_len);