You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.4 KiB
41 lines
1.4 KiB
11 months ago
|
#!/usr/bin/env python3
|
||
|
import sys
|
||
|
import argparse
|
||
|
from subprocess import check_output, CalledProcessError
|
||
|
from panda import Panda
|
||
|
from panda.python.uds import UdsClient, MessageTimeoutError, SESSION_TYPE, DTC_GROUP_TYPE
|
||
|
|
||
|
parser = argparse.ArgumentParser(description="clear DTC status")
|
||
|
parser.add_argument("addr", type=lambda x: int(x,0), nargs="?", default=0x7DF) # default is functional (broadcast) address
|
||
|
parser.add_argument("--bus", type=int, default=0)
|
||
|
parser.add_argument('--debug', action='store_true')
|
||
|
args = parser.parse_args()
|
||
|
|
||
|
try:
|
||
|
check_output(["pidof", "pandad"])
|
||
|
print("pandad is running, please kill openpilot before running this script! (aborted)")
|
||
|
sys.exit(1)
|
||
|
except CalledProcessError as e:
|
||
|
if e.returncode != 1: # 1 == no process found (pandad not running)
|
||
|
raise e
|
||
|
|
||
|
panda = Panda()
|
||
|
panda.set_safety_mode(Panda.SAFETY_ELM327)
|
||
|
uds_client = UdsClient(panda, args.addr, bus=args.bus, debug=args.debug)
|
||
|
print("extended diagnostic session ...")
|
||
|
try:
|
||
|
uds_client.diagnostic_session_control(SESSION_TYPE.EXTENDED_DIAGNOSTIC)
|
||
|
except MessageTimeoutError:
|
||
|
# functional address isn't properly handled so a timeout occurs
|
||
|
if args.addr != 0x7DF:
|
||
|
raise
|
||
|
print("clear diagnostic info ...")
|
||
|
try:
|
||
|
uds_client.clear_diagnostic_information(DTC_GROUP_TYPE.ALL)
|
||
|
except MessageTimeoutError:
|
||
|
# functional address isn't properly handled so a timeout occurs
|
||
|
if args.addr != 0x7DF:
|
||
|
pass
|
||
|
print("")
|
||
|
print("you may need to power cycle your vehicle now")
|