2121 **************************************************************************************/
2222
2323#include < FlashStorage.h>
24- #include " MKRGSM.h"
24+ #include < MKRGSM.h>
25+
2526
2627/* *************************************************************************************
2728 DEFINE
3637 GLOBAL CONSTANTS
3738 **************************************************************************************/
3839
39- static char const UPDATE_FILE_NAME[] = " UPDATE.BIN" ;
40+ static constexpr char UPDATE_FILE_NAME[] = " UPDATE.BIN" ;
41+ static constexpr char CHECK_FILE_NAME[] = " UPDATE.OK" ;
42+
4043
4144/* *************************************************************************************
4245 GLOBAL VARIABLES
4346 **************************************************************************************/
4447
4548FlashClass mcu_flash;
46- GSMFileUtils fileUtils (false );
49+
50+ GSMFileUtils fileUtils;
51+
4752/* *************************************************************************************
4853 FUNCTION DECLARATION
4954 **************************************************************************************/
@@ -62,16 +67,18 @@ int main()
6267
6368 delay (1 );
6469
65- String filename = UPDATE_FILE_NAME ;
70+ constexpr size_t blockSize = 512 ;
6671
67- const size_t blockSize = 512 ;
68-
69- MODEM.begin ();
7072 fileUtils.begin ();
73+
7174 bool update_success = false ;
72- if (fileUtils.listFile (" UPDATE.OK" ) == 1 ) {
73- auto size = fileUtils.listFile (filename);
74- auto cycles = (size / blockSize) + 1 ;
75+
76+ // Try to update only if update file
77+ // has been download successfully.
78+ if (fileUtils.listFile (CHECK_FILE_NAME) == 1 ) {
79+ uint32_t size = fileUtils.listFile (UPDATE_FILE_NAME);
80+ size_t cycles = (size / blockSize) + 1 ;
81+
7582 if (size > SSU_SIZE) {
7683 size -= SSU_SIZE;
7784
@@ -81,17 +88,17 @@ int main()
8188
8289 for (auto i = 0 ; i < cycles; i++) {
8390 uint8_t block[blockSize] { 0 };
84- digitalWrite (LED_BUILTIN,LOW);
85- auto read = fileUtils.readBlock (filename , (i * blockSize) + SSU_SIZE, blockSize, block);
86- digitalWrite (LED_BUILTIN,HIGH);
91+ digitalWrite (LED_BUILTIN, LOW);
92+ uint32_t read = fileUtils.readBlock (UPDATE_FILE_NAME , (i * blockSize) + SSU_SIZE, blockSize, block);
93+ digitalWrite (LED_BUILTIN, HIGH);
8794 mcu_flash.write ((void *)flash_address, block, read);
8895 flash_address += read;
8996 }
9097 update_success = true ;
9198 }
9299 if (update_success) {
93- fileUtils.deleteFile (filename );
94- fileUtils.deleteFile (" UPDATE.OK " );
100+ fileUtils.deleteFile (UPDATE_FILE_NAME );
101+ fileUtils.deleteFile (CHECK_FILE_NAME );
95102 }
96103 }
97104 /* Jump to the sketch */
0 commit comments