@@ -25,6 +25,12 @@ void FileTransferModule::loop(bool configured)
2525// check lastAction
2626// close file or directory after HEARTBEAT_INTERVAL
2727
28+ if (_fileOpen &&delayCheck (_lastAccess,5000 ))
29+ {
30+ _file.flush ();
31+ logInfoP (" File flushed due no activity" );
32+ }
33+
2834if (_fileOpen &&delayCheck (_heartbeat, HEARTBEAT_INTERVAL))
2935 {
3036 _file.close ();
@@ -147,8 +153,7 @@ void FileTransferModule::writeFile(uint16_t sequence, uint8_t *data, uint8_t len
147153
148154if (_lastSequence +1 != sequence)
149155 {
150- logDebugP (" Not continous sequence - seek to position [expected %i, got %i]" , _lastSequence +1 , sequence);
151- uint16_t pos = ((sequence -1 ) * (_size -3 ));
156+ uint32_t pos = ((sequence -1 ) * (_size -3 ));
152157logDebugP (" Not continous sequence - seek to position %d [expected %i, got %i]" , pos, _lastSequence +1 , sequence);
153158if (!_file.seek (pos))
154159 {
@@ -161,15 +166,17 @@ void FileTransferModule::writeFile(uint16_t sequence, uint8_t *data, uint8_t len
161166logDebugP (" Seeked to position %d" , _file.position ());
162167 }
163168
169+ #ifdef OPENKNX_DEBUG
164170size_t filePos = _file.position ();
171+ #endif
165172uint8_t written = _file.write ((const uint8_t *)data +3 , data[2 ]);
166173logDebugP (" Write sequence %i (%i/%i bytes) %i.%i" , sequence, written, data[2 ], filePos, _file.position ());
167174
168- if (sequence %10 ==0 )
169- {
170- logDebugP (" Flush file" );
171- _file.flush ();
172- }
175+ // if (sequence % 10 == 0)
176+ // {
177+ // logDebugP("Flush file");
178+ // _file.flush();
179+ // }
173180
174181if (written != data[2 ])
175182 {
@@ -519,7 +526,12 @@ void FileTransferModule::cmdFileUpload(uint8_t length, uint8_t *data, uint8_t *r
519526if (data[0 ] ==0x00 && data[1 ] ==0x00 )
520527 {
521528const char *filename = (const char *)(data +4 );
522- if (checkOpenFile (resultData, resultLength) ||checkOpenDir (resultData, resultLength))return ;
529+ if (_fileOpen)
530+ {
531+ _file.flush ();
532+ _file.close ();
533+ }
534+ if (checkOpenDir (resultData, resultLength))return ;
523535
524536if (data[3 ] >1 )
525537 {