mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-10-01 06:03:43 +08:00
Merge branch 'master' into sync-priv-20240220
# Conflicts: # CHANGELOGS.md # panda # selfdrive/car/toyota/interface.py # selfdrive/controls/controlsd.py # selfdrive/manager/manager.py # selfdrive/modeld/fill_model_msg.py # selfdrive/modeld/modeld.py
This commit is contained in:
@@ -10,48 +10,52 @@ from cereal.services import SERVICE_LIST
|
||||
from openpilot.tools.lib.logreader import LogReader, ReadMode
|
||||
|
||||
if __name__ == "__main__":
|
||||
cnt_valid: Counter = Counter()
|
||||
cnt_events: Counter = Counter()
|
||||
|
||||
cams = [s for s in SERVICE_LIST if s.endswith('CameraState')]
|
||||
cnt_cameras = dict.fromkeys(cams, 0)
|
||||
|
||||
events: List[Tuple[float, set[str]]] = []
|
||||
alerts: List[Tuple[float, str]] = []
|
||||
start_time = math.inf
|
||||
end_time = -math.inf
|
||||
ignition_off = None
|
||||
for msg in LogReader(sys.argv[1], ReadMode.QLOG):
|
||||
t = (msg.logMonoTime - start_time) / 1e9
|
||||
end_time = max(end_time, msg.logMonoTime)
|
||||
start_time = min(start_time, msg.logMonoTime)
|
||||
|
||||
if msg.which() == 'onroadEvents':
|
||||
for e in msg.onroadEvents:
|
||||
cnt_events[e.name] += 1
|
||||
|
||||
ae = {str(e.name) for e in msg.onroadEvents if e.name not in ('pedalPressed', 'steerOverride', 'gasPressedOverride')}
|
||||
if len(events) == 0 or ae != events[-1][1]:
|
||||
events.append((t, ae))
|
||||
|
||||
elif msg.which() == 'controlsState':
|
||||
at = msg.controlsState.alertType
|
||||
if "/override" not in at or "lanechange" in at.lower():
|
||||
if len(alerts) == 0 or alerts[-1][1] != at:
|
||||
t = (msg.logMonoTime - start_time) / 1e9
|
||||
alerts.append((t, at))
|
||||
elif msg.which() == 'pandaStates':
|
||||
if ignition_off is None:
|
||||
ign = any(ps.ignitionLine or ps.ignitionCan for ps in msg.pandaStates)
|
||||
if not ign:
|
||||
ignition_off = msg.logMonoTime
|
||||
break
|
||||
elif msg.which() in cams:
|
||||
cnt_cameras[msg.which()] += 1
|
||||
|
||||
if not msg.valid:
|
||||
cnt_valid[msg.which()] += 1
|
||||
|
||||
duration = (end_time - start_time) / 1e9
|
||||
|
||||
print("Events")
|
||||
pprint(cnt_events)
|
||||
|
||||
print("\n")
|
||||
print("Not valid")
|
||||
pprint(cnt_valid)
|
||||
print("Events")
|
||||
for t, evt in events:
|
||||
print(f"{t:8.2f} {evt}")
|
||||
|
||||
print("\n")
|
||||
print("Cameras")
|
||||
@@ -64,9 +68,9 @@ if __name__ == "__main__":
|
||||
print("Alerts")
|
||||
for t, a in alerts:
|
||||
print(f"{t:8.2f} {a}")
|
||||
|
||||
print("\n")
|
||||
if ignition_off is not None:
|
||||
ignition_off = round((ignition_off - start_time) / 1e9, 2)
|
||||
print("Ignition off at", ignition_off)
|
||||
|
||||
print("\n")
|
||||
print("Route duration", datetime.timedelta(seconds=duration))
|
||||
|
||||
@@ -46,6 +46,7 @@ def print_androidlog(t, msg):
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--absolute', action='store_true')
|
||||
parser.add_argument('--level', default='DEBUG')
|
||||
parser.add_argument('--addr', default='127.0.0.1')
|
||||
parser.add_argument("route", type=str, nargs='*', help="route name + segment number for offline usage")
|
||||
@@ -54,15 +55,18 @@ if __name__ == "__main__":
|
||||
min_level = LEVELS[args.level]
|
||||
|
||||
if args.route:
|
||||
st = None if not args.absolute else 0
|
||||
for route in args.route:
|
||||
lr = LogReader(route)
|
||||
lr = LogReader(route, sort_by_time=True)
|
||||
for m in lr:
|
||||
if st is None:
|
||||
st = m.logMonoTime
|
||||
if m.which() == 'logMessage':
|
||||
print_logmessage(m.logMonoTime, m.logMessage, min_level)
|
||||
print_logmessage(m.logMonoTime-st, m.logMessage, min_level)
|
||||
elif m.which() == 'errorLogMessage':
|
||||
print_logmessage(m.logMonoTime, m.errorLogMessage, min_level)
|
||||
print_logmessage(m.logMonoTime-st, m.errorLogMessage, min_level)
|
||||
elif m.which() == 'androidLog':
|
||||
print_androidlog(m.logMonoTime, m.androidLog)
|
||||
print_androidlog(m.logMonoTime-st, m.androidLog)
|
||||
else:
|
||||
sm = messaging.SubMaster(['logMessage', 'androidLog'], addr=args.addr)
|
||||
while True:
|
||||
|
||||
@@ -44,11 +44,15 @@ if __name__ == "__main__":
|
||||
|
||||
dongles = []
|
||||
for route in tqdm(routes):
|
||||
dongle_id = SegmentRange(route).dongle_id
|
||||
sr = SegmentRange(route)
|
||||
dongle_id = sr.dongle_id
|
||||
|
||||
if dongle_id in dongles:
|
||||
continue
|
||||
|
||||
if sr.slice == '' and sr.selector is None:
|
||||
route += '/0'
|
||||
|
||||
lr = LogReader(route, default_mode=ReadMode.QLOG)
|
||||
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user