Detect latest FC12 gcc -combine breakage.
[seabios.git] / tools / readserial.py
index fec2811a7e557ef9333c8817c70a288162b1abb5..052016d785793d3476d45936170e20fe02d78cb4 100755 (executable)
@@ -18,9 +18,15 @@ RESTARTINTERVAL = 60
 # Alter timing reports based on how much time would be spent writing
 # to serial.
 ADJUSTBAUD = 1
+# Number of bits in a transmitted byte - 8N1 is 1 start bit + 8 data
+# bits + 1 stop bit.
+BITSPERBYTE = 10
 
 def readserial(infile, logfile, baudrate):
     lasttime = 0
+    byteadjust = 0.0
+    if ADJUSTBAUD:
+        byteadjust = float(BITSPERBYTE) / baudrate
     while 1:
         # Read data
         try:
@@ -34,31 +40,32 @@ def readserial(infile, logfile, baudrate):
             lasttime = 0
             if len(res[0]) == 1:
                 continue
-        curtime = time.time()
         d = infile.read(4096)
+        datatime = time.time()
+
+        datatime -= len(d) * byteadjust
 
         # Reset start time if no data for some time
-        if curtime - lasttime > RESTARTINTERVAL:
-            starttime = curtime
+        if datatime - lasttime > RESTARTINTERVAL:
+            starttime = datatime
             charcount = 0
             isnewline = 1
             msg = "\n\n======= %s (adjust=%d)\n" % (
-                time.asctime(time.localtime(curtime)), ADJUSTBAUD)
+                time.asctime(time.localtime(datatime)), ADJUSTBAUD)
             sys.stdout.write(msg)
             logfile.write(msg)
-        lasttime = curtime
+        lasttime = datatime
 
         # Translate unprintable chars; add timestamps
         out = ""
         for c in d:
             if isnewline:
-                delta = curtime - starttime
-                if ADJUSTBAUD:
-                    delta -= float(charcount * 9) / baudrate
+                delta = datatime - starttime - (charcount * byteadjust)
                 out += "%06.3f: " % delta
                 isnewline = 0
             oc = ord(c)
             charcount += 1
+            datatime += byteadjust
             if oc == 0x0d:
                 continue
             if oc == 0x00: