From 8e4f6e002154d69f354ffd95b664dff994cf2832 Mon Sep 17 00:00:00 2001 From: phobos- Date: Mon, 1 Aug 2022 16:59:49 +0200 Subject: [PATCH] Fix slow TLMBoost causing TX->RX MSP timeouts --- src/main/rx/expresslrs_telemetry.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/main/rx/expresslrs_telemetry.c b/src/main/rx/expresslrs_telemetry.c index 728e995abc..175f29d47f 100644 --- a/src/main/rx/expresslrs_telemetry.c +++ b/src/main/rx/expresslrs_telemetry.c @@ -122,10 +122,6 @@ uint8_t getCurrentTelemetryPayload(uint8_t *outData) break; case ELRS_SENDING: bytesLastPayload = MIN((uint8_t)(length - currentOffset), ELRS_TELEMETRY_BYTES_PER_CALL); - for (unsigned n = 0; n < bytesLastPayload; ++n) - { - outData[n] = data[currentOffset + n]; - } // If this is the last data chunk, and there has been at least one other packet // skip the blank packet needed for WAIT_UNTIL_NEXT_CONFIRM if (currentPackage > 1 && (currentOffset + bytesLastPayload) >= length) { @@ -133,6 +129,8 @@ uint8_t getCurrentTelemetryPayload(uint8_t *outData) } else { packageIndex = currentPackage; } + memcpy(outData, &data[currentOffset], bytesLastPayload); + break; default: packageIndex = 0; @@ -255,9 +253,8 @@ void receiveMspData(const uint8_t packageIndex, const volatile uint8_t* const re if (acceptData) { uint8_t len = MIN((uint8_t)(mspLength - mspCurrentOffset), ELRS_MSP_BYTES_PER_CALL); - for (unsigned i = 0; i < len; i++) { - mspData[mspCurrentOffset++] = receiveData[i]; - } + memcpy(&mspData[mspCurrentOffset], (const uint8_t*) receiveData, len); + mspCurrentOffset += len; mspConfirm = !mspConfirm; } }