|
21 | 21 |
|
22 | 22 | #include "OTAStorage_MKRGSM.h"
|
23 | 23 |
|
24 |
| -#include <Arduino_DebugUtils.h> |
25 |
| - |
26 | 24 | /******************************************************************************
|
27 |
| - CTOR/DTOR |
| 25 | + CONSTANTS |
28 | 26 | ******************************************************************************/
|
29 | 27 |
|
30 |
| -OTAStorage_MKRGSM::OTAStorage_MKRGSM() |
31 |
| -{ |
32 |
| -} |
| 28 | +static char const SSU_UPDATE_FILENAME[] = "UPDATE.BIN"; |
| 29 | +static char const SSU_CHECK_FILE_NAME[] = "UPDATE.OK"; |
33 | 30 |
|
34 |
| -// GSMFileUtils _fileUtils; |
35 |
| -// String filename = "UPDATE.BIN"; |
36 |
| -constexpr char * filename { "UPDATE.BIN" }; |
37 | 31 | /******************************************************************************
|
38 | 32 | PUBLIC MEMBER FUNCTIONS
|
39 | 33 | ******************************************************************************/
|
40 | 34 |
|
41 | 35 | bool OTAStorage_MKRGSM::init()
|
42 | 36 | {
|
43 |
| - return _fileUtils.begin(); |
| 37 | + if (!_fileUtils.begin()) |
| 38 | + return false; |
| 39 | + |
| 40 | + if (_fileUtils.listFile(SSU_UPDATE_FILENAME) > 0) |
| 41 | + if (!_fileUtils.deleteFile(SSU_UPDATE_FILENAME)) |
| 42 | + return false; |
| 43 | + |
| 44 | + if (_fileUtils.listFile(SSU_CHECK_FILE_NAME) > 0) |
| 45 | + if (!_fileUtils.deleteFile(SSU_CHECK_FILE_NAME)) |
| 46 | + return false; |
44 | 47 | }
|
45 | 48 |
|
46 |
| -bool OTAStorage_MKRGSM::open() |
| 49 | +bool OTAStorage_MKRGSM::open(char const * /* file_name */) |
47 | 50 | {
|
48 |
| - auto size = _fileUtils.listFile(filename); |
49 |
| - _fileUtils.deleteFile(filename); |
50 |
| - return true; |
| 51 | + return true; |
51 | 52 | }
|
52 | 53 |
|
53 | 54 | size_t OTAStorage_MKRGSM::write(uint8_t const* const buf, size_t const num_bytes)
|
54 | 55 | {
|
55 |
| - // Serial.print("size: "); |
56 |
| - // Serial.println(num_bytes); |
57 |
| - _fileUtils.appendFile(filename, (const char*)buf, num_bytes); |
58 |
| - |
59 |
| - return num_bytes; |
| 56 | + _fileUtils.appendFile(SSU_UPDATE_FILENAME, (const char*)buf, num_bytes); |
| 57 | + return num_bytes; |
60 | 58 | }
|
61 | 59 |
|
62 | 60 | void OTAStorage_MKRGSM::close()
|
63 | 61 | {
|
| 62 | + /* Nothing to do */ |
| 63 | +} |
| 64 | + |
| 65 | +void OTAStorage_MKRGSM::remove(char const * /* file_name */) |
| 66 | +{ |
| 67 | + _fileUtils.deleteFile(SSU_UPDATE_FILENAME); |
64 | 68 | }
|
65 | 69 |
|
66 |
| -void OTAStorage_MKRGSM::remove() |
| 70 | +bool OTAStorage_MKRGSM::rename(char const * /* old_file_name */, char const * /* new_file_name */) |
67 | 71 | {
|
68 |
| - _fileUtils.deleteFile(filename); |
| 72 | + /* Create a file 'UPDATE.OK' which is used by the SSU |
| 73 | + * 2nd stage bootloader to recognise that the update |
| 74 | + * went okay. Normally this is done by renaming 'UPDATE.BIN.TMP' |
| 75 | + * to 'UPDATE.BIN' but the SARE module does not support |
| 76 | + * a rename function. |
| 77 | + */ |
| 78 | + char c = 'X'; |
| 79 | + return (_fileUtils.appendFile(SSU_CHECK_FILE_NAME, &c, sizeof(c)) == sizeof(c)); |
69 | 80 | }
|
70 | 81 |
|
71 | 82 | void OTAStorage_MKRGSM::deinit()
|
72 | 83 | {
|
| 84 | + /* Nothing to do */ |
73 | 85 | }
|
0 commit comments