Bugfix in firmware partial sending

This commit is contained in:
Martin Bauer
2019-09-08 20:28:27 +02:00
parent fb5c8361a7
commit 5577490693
7 changed files with 38 additions and 13 deletions

View File

@@ -52,6 +52,9 @@ public:
assert(startIdx == lastIdx, "Not all data was sent");
}
uint32_t getStartTime() const {
return currentChunk->getStartTime();
}
private:
void rotate() {
if( otherChunkFilled() )

View File

@@ -200,12 +200,19 @@ public:
sentBytes_ += sizeof(T) * length;
return;
} else {
const uint32_t elementsToSend = length - elementsToSkip;
sentBytes_ += sizeof(T) * elementsToSkip;
const uint32_t elementsRemaining = length - elementsToSkip;
const uint32_t maxElementsToSend = (maxBytes_ - sentBytes_) / sizeof(T);
const uint32_t elementsToSend = min(elementsRemaining, maxElementsToSend);
if( elementsToSend == 0 ) {
sendingFinished_ = true;
return;
} else {
encoder_.sendArrayPartialContents(data + elementsToSkip, elementsToSend);
sentBytes_ += sizeof(T) * elementsToSend;
if( elementsRemaining > elementsToSend ) {
sendingFinished_ = true;
}
}
}
}