@@ -31,11 +31,6 @@ def _fs_free_space(drive='/flash'):
31
31
def _receive_file (file_path , file_size ):
32
32
usb = pyb .USB_VCP ()
33
33
usb .setinterrupt (- 1 )
34
- if file_size > _fs_free_space ():
35
- usb .write (b'NS' )
36
- return
37
- else :
38
- usb .write (b'OK' )
39
34
buf_size = 512
40
35
buf = bytearray (buf_size )
41
36
buf_mv = memoryview (buf )
@@ -49,7 +44,10 @@ def _receive_file(file_path, file_size):
49
44
bytes_remaining -= bytes_read
50
45
f .write (buf_mv [:bytes_read ])
51
46
except :
52
- usb .write (b'ER' )
47
+ if _fs_free_space () < bytes_remaining :
48
+ usb .write (b'NS' ) # Out of space.
49
+ else :
50
+ usb .write (b'ER' )
53
51
54
52
# ----------------------------------------------------------------------------------------
55
53
# Pycboard class.
@@ -188,16 +186,8 @@ def transfer_file(self, file_path, target_path=None):
188
186
for i in range (3 ):
189
187
if file_hash == self .get_file_hash (target_path ):
190
188
return
191
- try :
192
- self .remove_file (file_path )
193
- time .sleep (0.01 )
194
- except PyboardError :
195
- pass
196
189
self .exec_raw_no_follow ("_receive_file('{}',{})"
197
190
.format (target_path , file_size ))
198
- if not self .serial .read (2 ) == b'OK' :
199
- self .print ('\n \n Insufficient space on pyboard filesystem to transfer file.' )
200
- raise PyboardError
201
191
with open (file_path , 'rb' ) as f :
202
192
while True :
203
193
chunk = f .read (512 )
@@ -206,15 +196,16 @@ def transfer_file(self, file_path, target_path=None):
206
196
self .serial .write (chunk )
207
197
response_bytes = self .serial .read (2 )
208
198
if response_bytes != b'OK' :
209
- self .print ('\n \n Error: Unable to transfer file. See the troubleshooting docs:\n '
210
- 'https://pycontrol.readthedocs.io/en/latest/user-guide/troubleshooting/' )
211
-
199
+ if response_bytes == b'NS' :
200
+ self .print ('\n \n Insufficient space on pyboard filesystem to transfer file.' )
201
+ else :
202
+ self .print ('\n \n Error: Unable to transfer file. See the troubleshooting docs:\n '
203
+ 'https://pycontrol.readthedocs.io/en/latest/user-guide/troubleshooting/' )
212
204
time .sleep (0.01 )
213
205
self .serial .reset_input_buffer ()
214
206
raise PyboardError
215
207
self .follow (3 )
216
208
217
-
218
209
def transfer_folder (self , folder_path , target_folder = None , file_type = 'all' ,
219
210
show_progress = False ):
220
211
'''Copy a folder into the root directory of the pyboard. Folders that
0 commit comments