Эх сурвалжийг харах

scp_info: Present aggregate flux stats

Keir Fraser 4 жил өмнө
parent
commit
fe09d840cb
1 өөрчлөгдсөн 13 нэмэгдсэн , 8 устгасан
  1. 13 8
      scripts/misc/scp_info.py

+ 13 - 8
scripts/misc/scp_info.py

@@ -5,6 +5,14 @@ NO_DAT    = 0
 PRINT_DAT = 1
 PLOT_DAT  = 2
 
+def decode_flux(tdat):
+    fluxl = []
+    while tdat:
+        flux, = struct.unpack(">H", tdat[:2])
+        tdat = tdat[2:]
+        fluxl.append(flux / 40)
+    return fluxl
+
 def dump_track(dat, trk_offs, trknr, show_dat):
     print("Track %u:" % trknr)
 
@@ -20,20 +28,17 @@ def dump_track(dat, trk_offs, trknr, show_dat):
     assert tnr == trknr
     p_idx, tot = [], 0.0
     for i in range(nr_revs):
-        t,n,_ = struct.unpack("<3I", thdr[4+i*12:4+(i+1)*12])
-        print("Rev %u: time=%uus flux=%u" % (i, t//40, n))
+        t,n,off = struct.unpack("<3I", thdr[4+i*12:4+(i+1)*12])
+        flux = decode_flux(dat[trk_off+off:trk_off+off+n*2])
+        print("Rev %u: time=%.2fus nr_flux=%u tot_flux=%.2fus"
+              % (i, t/40, n, sum(flux)))
         tot += t/40
         p_idx.append(tot)
     if not show_dat:
         return
     
     _, e_nr, e_off = struct.unpack("<3I", thdr[-12:])
-    tdat = dat[trk_off+s_off:trk_off+e_off+e_nr*2]
-    fluxl = []
-    while tdat:
-        flux, = struct.unpack(">H", tdat[:2])
-        tdat = tdat[2:]
-        fluxl.append(flux / 40)
+    fluxl = decode_flux(dat[trk_off+s_off:trk_off+e_off+e_nr*2])
     tot = 0.0
     i = 0
     px, py = [], []