File tree 2 files changed +38
-1
lines changed
2 files changed +38
-1
lines changed Original file line number Diff line number Diff line change @@ -80,7 +80,29 @@ class File : public Stream
80
80
bool isDirectory () const ;
81
81
82
82
// Arduino "class SD" methods for compatibility
83
- size_t write (const char *str) { return write ((const uint8_t *)str, strlen (str)); }
83
+ template <typename T> size_t write (T &src){
84
+ uint8_t obuf[512 ];
85
+ size_t doneLen = 0 ;
86
+ size_t sentLen;
87
+ int i;
88
+
89
+ while (src.available () > 512 ){
90
+ src.read (obuf, 512 );
91
+ sentLen = write (obuf, 512 );
92
+ doneLen = doneLen + sentLen;
93
+ if (sentLen != 512 ){
94
+ return doneLen;
95
+ }
96
+ }
97
+
98
+ size_t leftLen = src.available ();
99
+ src.read (obuf, leftLen);
100
+ sentLen = write (obuf, leftLen);
101
+ doneLen = doneLen + sentLen;
102
+ return doneLen;
103
+ }
104
+ using Print::write;
105
+
84
106
void rewindDirectory ();
85
107
File openNextFile ();
86
108
Original file line number Diff line number Diff line change @@ -331,3 +331,18 @@ TEST_CASE("Listfiles.ino example", "[sd]")
331
331
REQUIRE (readFileSD (" /dir2/dir3/file4" ) == " bonjour" );
332
332
}
333
333
334
+ TEST_CASE (" Multisplendored File::writes" , " [fs]" )
335
+ {
336
+ SDFS_MOCK_DECLARE ();
337
+ SDFS.end ();
338
+ SDFS.setConfig (SDFSConfig (0 , SD_SCK_MHZ (1 )));
339
+ REQUIRE (SDFS.format ());
340
+ REQUIRE (SD.begin (4 ));
341
+
342
+ File f = SD.open (" /file.txt" , FILE_WRITE);
343
+ f.write (' a' );
344
+ f.write (65 );
345
+ f.write (" bbcc" );
346
+ f.close ();
347
+ REQUIRE (readFileSD (" /file.txt" ) == " aAbbcc" );
348
+ }
You can’t perform that action at this time.
0 commit comments