1
- #!/usr/bin/env python3
2
- ''' log command handling'''
1
+ '''
2
+ log command handling
3
3
4
- import time , os
4
+ AP_FLAKE8_CLEAN
5
+ '''
6
+
7
+ import os
8
+ import time
5
9
6
10
from MAVProxy .modules .lib import mp_module
7
11
12
+
8
13
class LogModule (mp_module .MPModule ):
9
14
def __init__ (self , mpstate ):
10
15
super (LogModule , self ).__init__ (mpstate , "log" , "log transfer" )
@@ -43,7 +48,6 @@ def handle_log_entry(self, m):
43
48
self .entries [m .id ] = m
44
49
print ("Log %u numLogs %u lastLog %u size %u %s" % (m .id , m .num_logs , m .last_log_num , m .size , tstring ))
45
50
46
-
47
51
def handle_log_data (self , m ):
48
52
'''handling incoming log data'''
49
53
if self .download_file is None :
@@ -67,17 +71,21 @@ def handle_log_data(self, m):
67
71
self .download_file .close ()
68
72
size = os .path .getsize (self .download_filename )
69
73
speed = size / (1000.0 * dt )
70
- status = "Finished downloading %s (%u bytes %u seconds, %.1f kbyte/sec %u retries)" % (self .download_filename ,
71
- size ,
72
- dt , speed ,
73
- self .retries )
74
- self .console .set_status ('LogDownload' ,status , row = 4 )
74
+ status = (
75
+ f"Finished downloading { self .download_filename } " +
76
+ f"({ size } bytes { dt :0.1f} seconds, " +
77
+ f"{ speed :.1f} kbyte/sec " +
78
+ f"{ self .retries } retries)"
79
+ )
80
+ self .console .set_status ('LogDownload' , status , row = 4 )
75
81
print (status )
76
82
self .download_file = None
77
83
self .download_filename = None
78
84
self .download_set = set ()
79
- self .master .mav .log_request_end_send (self .target_system ,
80
- self .target_component )
85
+ self .master .mav .log_request_end_send (
86
+ self .target_system ,
87
+ self .target_component
88
+ )
81
89
if len (self .download_queue ):
82
90
self .log_download_next ()
83
91
self .update_status ()
@@ -89,9 +97,13 @@ def handle_log_data_missing(self):
89
97
highest = max (self .download_set )
90
98
diff = set (range (highest )).difference (self .download_set )
91
99
if len (diff ) == 0 :
92
- self .master .mav .log_request_data_send (self .target_system ,
93
- self .target_component ,
94
- self .download_lognum , (1 + highest ) * 90 , 0xffffffff )
100
+ self .master .mav .log_request_data_send (
101
+ self .target_system ,
102
+ self .target_component ,
103
+ self .download_lognum ,
104
+ (1 + highest ) * 90 ,
105
+ 0xffffffff
106
+ )
95
107
self .retries += 1
96
108
else :
97
109
num_requests = 0
@@ -102,15 +114,18 @@ def handle_log_data_missing(self):
102
114
while end + 1 in diff :
103
115
end += 1
104
116
diff .remove (end )
105
- self .master .mav .log_request_data_send (self .target_system ,
106
- self .target_component ,
107
- self .download_lognum , start * 90 , (end + 1 - start ) * 90 )
117
+ self .master .mav .log_request_data_send (
118
+ self .target_system ,
119
+ self .target_component ,
120
+ self .download_lognum ,
121
+ start * 90 ,
122
+ (end + 1 - start ) * 90
123
+ )
108
124
num_requests += 1
109
125
self .retries += 1
110
126
if len (diff ) == 0 :
111
127
break
112
128
113
-
114
129
def log_status (self , console = False ):
115
130
'''show download status'''
116
131
if self .download_filename is None :
@@ -133,13 +148,12 @@ def log_status(self, console=False):
133
148
if len (self .download_set ):
134
149
highest = max (self .download_set )
135
150
diff = set (range (highest )).difference (self .download_set )
136
- status = "Downloading %s - %u/%u bytes %.1f%% %.1f kbyte/s (%u retries %u missing)" % (self .download_filename ,
137
- os .path .getsize (self .download_filename ),
138
- size ,
139
- pct ,
140
- speed ,
141
- self .retries ,
142
- len (diff ))
151
+ status = (
152
+ f"Downloading { self .download_filename } - " +
153
+ f"{ os .path .getsize (self .download_filename )} /{ size } bytes " +
154
+ f"{ pct :.1f} % { speed :.1f} kbyte/s " +
155
+ f"({ self .retries } retries { len (diff )} missing)"
156
+ )
143
157
if console :
144
158
self .console .set_status ('LogDownload' , status , row = 4 )
145
159
else :
@@ -164,11 +178,11 @@ def log_download_all(self):
164
178
self .log_download_next ()
165
179
166
180
def log_download_range (self , first , last ):
167
- self .download_queue = sorted (list (range (first ,last + 1 )),reverse = True )
181
+ self .download_queue = sorted (list (range (first , last + 1 )), reverse = True )
168
182
print (self .download_queue )
169
183
self .log_download_next ()
170
184
171
- def log_download_from (self ,fromnum = 0 ):
185
+ def log_download_from (self , fromnum = 0 ):
172
186
if len (self .entries .keys ()) == 0 :
173
187
print ("Please use log list first" )
174
188
return
@@ -181,9 +195,13 @@ def log_download(self, log_num, filename):
181
195
print ("Downloading log %u as %s" % (log_num , filename ))
182
196
self .download_lognum = log_num
183
197
self .download_file = open (filename , "wb" )
184
- self .master .mav .log_request_data_send (self .target_system ,
185
- self .target_component ,
186
- log_num , 0 , 0xFFFFFFFF )
198
+ self .master .mav .log_request_data_send (
199
+ self .target_system ,
200
+ self .target_component ,
201
+ log_num ,
202
+ 0 ,
203
+ 0xFFFFFFFF
204
+ )
187
205
self .download_filename = filename
188
206
self .download_set = set ()
189
207
self .download_start = time .time ()
@@ -206,17 +224,24 @@ def cmd_log(self, args):
206
224
elif args [0 ] == "list" :
207
225
print ("Requesting log list" )
208
226
self .download_set = set ()
209
- self .master .mav .log_request_list_send (self .target_system ,
210
- self .target_component ,
211
- 0 , 0xffff )
227
+ self .master .mav .log_request_list_send (
228
+ self .target_system ,
229
+ self .target_component ,
230
+ 0 ,
231
+ 0xffff
232
+ )
212
233
213
234
elif args [0 ] == "erase" :
214
- self .master .mav .log_erase_send (self .target_system ,
215
- self .target_component )
235
+ self .master .mav .log_erase_send (
236
+ self .target_system ,
237
+ self .target_component
238
+ )
216
239
217
240
elif args [0 ] == "resume" :
218
- self .master .mav .log_request_end_send (self .target_system ,
219
- self .target_component )
241
+ self .master .mav .log_request_end_send (
242
+ self .target_system ,
243
+ self .target_component
244
+ )
220
245
221
246
elif args [0 ] == "cancel" :
222
247
if self .download_file is not None :
@@ -225,7 +250,7 @@ def cmd_log(self, args):
225
250
226
251
elif args [0 ] == "download" :
227
252
if len (args ) < 2 :
228
- print ("usage: log download all | log download <lognumber> <filename> | log download from <lognumber>|log download range FIRST LAST" )
253
+ print ("usage: log download all | log download <lognumber> <filename> | log download from <lognumber>|log download range FIRST LAST" ) # noqa:E501
229
254
return
230
255
if args [1 ] == 'all' :
231
256
self .log_download_all ()
@@ -256,21 +281,21 @@ def cmd_log(self, args):
256
281
else :
257
282
print (usage )
258
283
259
-
260
284
def update_status (self ):
261
285
'''update log download status in console'''
262
286
now = time .time ()
263
287
if self .download_file is not None and now - self .last_status > 0.5 :
264
288
self .last_status = now
265
289
self .log_status (True )
266
-
290
+
267
291
def idle_task (self ):
268
292
'''handle missing log data'''
269
293
if self .download_last_timestamp is not None and time .time () - self .download_last_timestamp > 0.7 :
270
294
self .download_last_timestamp = time .time ()
271
295
self .handle_log_data_missing ()
272
296
self .update_status ()
273
297
298
+
274
299
def init (mpstate ):
275
300
'''initialise module'''
276
301
return LogModule (mpstate )
0 commit comments