94 lines
2.2 KiB
Python
Executable File
94 lines
2.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import sys, os, argparse
|
|
import mod_globals
|
|
|
|
os.chdir(os.path.dirname(os.path.realpath(sys.argv[0])))
|
|
|
|
import mod_elm
|
|
|
|
parser = argparse.ArgumentParser(
|
|
version="bus_playback Version 0.1",
|
|
description = "bus_playback - playing back logs written by bus_monitor.py"
|
|
)
|
|
|
|
parser.add_argument('-p',
|
|
help="ELM327 com port name (or BT mac addr e.g 24:42:16:08:00:00)",
|
|
dest="port",
|
|
default="")
|
|
|
|
parser.add_argument("-r",
|
|
help="com port rate during diagnostic session {38400[default],57600,115200,230400,500000}",
|
|
dest="rate",
|
|
default="38400",)
|
|
|
|
parser.add_argument("--log",
|
|
help="log file name",
|
|
dest="logfile",
|
|
default="")
|
|
|
|
parser.add_argument(
|
|
'log',
|
|
help='the log file name to be played back')
|
|
|
|
options = parser.parse_args()
|
|
|
|
if not options.port and mod_globals.os != 'android':
|
|
parser.print_help()
|
|
|
|
try:
|
|
from serial.tools import list_ports
|
|
except ImportError as e:
|
|
print("WARNING:", e, file=sys.stderr)
|
|
exit(-1)
|
|
|
|
print("\nAvailable COM ports:")
|
|
for port, desc, hwid in sorted(list(list_ports.comports())):
|
|
print("%-30s \n\tdesc: %s \n\thwid: %s" % (port, desc, hwid))
|
|
print("")
|
|
|
|
exit(2)
|
|
|
|
mod_globals.opt_port = options.port
|
|
mod_globals.opt_rate = int(options.rate)
|
|
mod_globals.opt_log = options.logfile
|
|
|
|
try:
|
|
playbackfile = open(options.log)
|
|
except IOError as e:
|
|
print("ERROR:", e, file=sys.stderr)
|
|
exit(2)
|
|
|
|
print('Opening ELM')
|
|
elm = mod_elm.ELM(mod_globals.opt_port, mod_globals.opt_speed, mod_globals.opt_log )
|
|
|
|
if mod_globals.opt_speed < mod_globals.opt_rate:
|
|
elm.port.soft_boudrate( mod_globals.opt_rate)
|
|
|
|
print('Init ELM')
|
|
print(elm.cmd("at z"))
|
|
#print elm.cmd("at ws")
|
|
|
|
print(elm.cmd("at d1"))
|
|
print(elm.cmd("at h1"))
|
|
print(elm.cmd("at al"))
|
|
print(elm.cmd("at at 0"))
|
|
print(elm.cmd("at st 10"))
|
|
print(elm.cmd("at r 0"))
|
|
|
|
print(elm.cmd("at cea"))
|
|
print(elm.cmd("at sp 6"))
|
|
print(elm.cmd("at al"))
|
|
print(elm.cmd("at caf 0"))
|
|
print(elm.cmd("at v1"))
|
|
print(elm.cmd("at bi"))
|
|
|
|
print('Playing data back...')
|
|
for n, line in enumerate(open(options.log)):
|
|
t, _, addr, len, data = line.split(None,4)
|
|
data = data.split(None, 8)
|
|
print(elm.cmd("at sh %s" % addr))
|
|
print(elm.cmd(''.join(data[:8])))
|
|
|
|
playbackfile.close()
|