@@ -55,6 +55,9 @@ static s32_t api_spiffs_erase(u32_t addr, u32_t size){
55
55
}
56
56
57
57
58
+ int g_debugLevel = 0 ;
59
+
60
+
58
61
// implementation
59
62
60
63
int spiffsTryMount (){
@@ -113,20 +116,40 @@ int addFile(char* name, const char* path) {
113
116
114
117
spiffs_file dst = SPIFFS_open (&s_fs, name, SPIFFS_CREAT | SPIFFS_TRUNC | SPIFFS_RDWR, 0 );
115
118
119
+ // read file size
116
120
fseek (src, 0 , SEEK_END);
117
121
size_t size = ftell (src);
118
122
fseek (src, 0 , SEEK_SET);
119
123
124
+ if (g_debugLevel > 0 ) {
125
+ std::cout << " file size: " << size << std::endl;
126
+ }
127
+
120
128
size_t left = size;
121
129
uint8_t data_byte;
122
130
while (left > 0 ){
123
131
if (1 != fread (&data_byte, 1 , 1 , src)) {
132
+ std::cerr << " fread error!" << std::endl;
133
+
124
134
fclose (src);
125
135
SPIFFS_close (&s_fs, dst);
126
136
return 1 ;
127
137
}
128
138
int res = SPIFFS_write (&s_fs, dst, &data_byte, 1 );
129
139
if (res < 0 ) {
140
+ std::cerr << " SPIFFS_write error(" << s_fs.err_code << " ): " ;
141
+
142
+ if (s_fs.err_code == SPIFFS_ERR_FULL) {
143
+ std::cerr << " File system is full." << std::endl;
144
+ } else {
145
+ std::cerr << " unknown" ;
146
+ }
147
+ std::cerr << std::endl;
148
+
149
+ if (g_debugLevel > 0 ) {
150
+ std::cout << " data left: " << left << std::endl;
151
+ }
152
+
130
153
fclose (src);
131
154
SPIFFS_close (&s_fs, dst);
132
155
return 1 ;
@@ -136,6 +159,7 @@ int addFile(char* name, const char* path) {
136
159
137
160
SPIFFS_close (&s_fs, dst);
138
161
fclose (src);
162
+
139
163
return 0 ;
140
164
}
141
165
@@ -163,6 +187,9 @@ int addFiles(const char* dirname){
163
187
if (addFile ((char *)filepath.c_str (), fullpath.c_str ()) != 0 ) {
164
188
std::cerr << " error adding file!" << std::endl;
165
189
error = true ;
190
+ if (g_debugLevel > 0 ) {
191
+ std::cout << std::endl;
192
+ }
166
193
break ;
167
194
}
168
195
}
@@ -419,15 +446,22 @@ void processArgs(int argc, const char** argv) {
419
446
TCLAP::ValueArg<int > imageSizeArg ( " s" , " size" , " fs image size, in bytes" , false , 0x10000 , " number" );
420
447
TCLAP::ValueArg<int > pageSizeArg ( " p" , " page" , " fs page size, in bytes" , false , 256 , " number" );
421
448
TCLAP::ValueArg<int > blockSizeArg ( " b" , " block" , " fs block size, in bytes" , false , 4096 , " number" );
449
+ TCLAP::ValueArg<int > debugArg ( " d" , " debug" , " Debug level. 0 means no debug output." , false , 0 , " 0-5" );
422
450
423
451
cmd.add ( imageSizeArg );
424
452
cmd.add ( pageSizeArg );
425
453
cmd.add ( blockSizeArg );
454
+ cmd.add (debugArg);
426
455
std::vector<TCLAP::Arg*> args = {&packArg, &unpackArg, &listArg, &visualizeArg};
427
456
cmd.xorAdd ( args );
428
457
cmd.add ( outNameArg );
429
458
cmd.parse ( argc, argv );
430
459
460
+ if (debugArg.getValue () > 0 ) {
461
+ std::cout << " Debug output enabled" << std::endl;
462
+ g_debugLevel = debugArg.getValue ();
463
+ }
464
+
431
465
if (packArg.isSet ()) {
432
466
s_dirName = packArg.getValue ();
433
467
s_action = ACTION_PACK;
0 commit comments