-
Notifications
You must be signed in to change notification settings - Fork 96
Closed
Description
At the moment, the lib is not compatible because MKRGSM reads out the connection in 512 bytes portions, so at the end when there is just a rest of bytes, it misses the last portion.
The core is:
byte b;
while (length > 0) {
if (!client.readBytes(&b, 1)) // reading a byte with timeout
break;
file.write(b);
length--;
}
The Arduino download example under
https://github.com/arduino-libraries/MKRGSM/blob/master/examples/Tools/FileUtilsHttpDownload/FileUtilsHttpDownload.ino
to store the file in the memory of the modem calculates this way:
constexpr uint32_t len { 512 };
uint32_t cycles = fileSize / len;
uint32_t spares = fileSize % len;
fileSize is the size of the file to be downloaded
The core is:
auto downloadAndSaveTrunk = [filename_server](uint32_t len) {
char buf[len] { 0 };
uint32_t written { 0 };
if (net.available())
written = net.readBytes(buf, len);
fileUtils.appendFile(filename_server, buf, written);
return written;
};
// Define wrapper function
auto saveTrunk = [&totalRead, downloadAndSaveTrunk](size_t iter, uint32_t len) {
Serial.print("Download Block ");
Serial.print(iter);
totalRead += downloadAndSaveTrunk(len);
Serial.print(": Size:");
Serial.print(len);
Serial.print(" - Total: ");
Serial.print(totalRead);
Serial.println(" bytes");
};
// Download and save the rest of the block
for (auto c = 0; c <= cycles; c++)
saveTrunk(c, len);
}
I tried but failed on merge this concepts (but i'm surely not skilled as JAndrassy or many others) but maybe someone can contribute a ArduinoOTA SD version to this lib?
@JAndrassy what do you think?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels