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?
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:
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:
fileSize is the size of the file to be downloaded
The core is:
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?