aboutsummaryrefslogtreecommitdiff
path: root/Tools/fetch_log.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/fetch_log.py')
-rw-r--r--Tools/fetch_log.py133
1 files changed, 0 insertions, 133 deletions
diff --git a/Tools/fetch_log.py b/Tools/fetch_log.py
deleted file mode 100644
index edcc6557c..000000000
--- a/Tools/fetch_log.py
+++ /dev/null
@@ -1,133 +0,0 @@
-#!/usr/bin/env python
-############################################################################
-#
-# Copyright (C) 2012, 2013 PX4 Development Team. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-# 3. Neither the name PX4 nor the names of its contributors may be
-# used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-############################################################################
-
-#
-# Log fetcher
-#
-# Print list of logs:
-# python fetch_log.py
-#
-# Fetch log:
-# python fetch_log.py sess001/log001.bin
-#
-
-import serial, time, sys, os
-
-def wait_for_string(ser, s, timeout=1.0, debug=False):
- t0 = time.time()
- buf = []
- res = []
- n = 0
- while (True):
- c = ser.read()
- if debug:
- sys.stderr.write(c)
- buf.append(c)
- if len(buf) > len(s):
- res.append(buf.pop(0))
- n += 1
- if n % 10000 == 0:
- sys.stderr.write(str(n) + "\n")
- if "".join(buf) == s:
- break
- if timeout > 0.0 and time.time() - t0 > timeout:
- raise Exception("Timeout while waiting for: " + s)
- return "".join(res)
-
-def exec_cmd(ser, cmd, timeout):
- ser.write(cmd + "\n")
- ser.flush()
- wait_for_string(ser, cmd + "\r\n", timeout)
- return wait_for_string(ser, "nsh> \x1b[K", timeout)
-
-def ls_dir(ser, dir, timeout=1.0):
- res = []
- for line in exec_cmd(ser, "ls -l " + dir, timeout).splitlines()[1:]:
- res.append((line[20:], int(line[11:19].strip()), line[1] == "d"))
- return res
-
-def list_logs(ser):
- logs_dir = "/fs/microsd/log"
- res = []
- for d in ls_dir(ser, logs_dir):
- if d[2]:
- sess_dir = d[0][:-1]
- for f in ls_dir(ser, logs_dir + "/" + sess_dir):
- log_file = f[0]
- log_size = f[1]
- res.append(sess_dir + "/" + log_file + "\t" + str(log_size))
- return "\n".join(res)
-
-def fetch_log(ser, fn, timeout):
- cmd = "dumpfile " + fn
- ser.write(cmd + "\n")
- ser.flush()
- wait_for_string(ser, cmd + "\r\n", timeout, True)
- res = wait_for_string(ser, "\n", timeout, True)
- data = []
- if res.startswith("OK"):
- size = int(res.split()[1])
- n = 0
- print "Reading data:"
- while (n < size):
- buf = ser.read(min(size - n, 8192))
- data.append(buf)
- n += len(buf)
- sys.stdout.write(".")
- sys.stdout.flush()
- print
- else:
- raise Exception("Error reading log")
- wait_for_string(ser, "nsh> \x1b[K", timeout)
- return "".join(data)
-
-def main():
- dev = "/dev/tty.usbmodem1"
- ser = serial.Serial(dev, "115200", timeout=0.2)
- if len(sys.argv) < 2:
- print list_logs(ser)
- else:
- log_file = sys.argv[1]
- data = fetch_log(ser, "/fs/microsd/log/" + log_file, 1.0)
- try:
- os.mkdir(log_file.split("/")[0])
- except:
- pass
- fout = open(log_file, "wb")
- fout.write(data)
- fout.close()
- ser.close()
-
-if __name__ == "__main__":
- main()