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.
67 lines
2.0 KiB
67 lines
2.0 KiB
#!/usr/bin/python3
|
|
import sys
|
|
import os
|
|
import stat
|
|
import subprocess
|
|
import json
|
|
from common.text_window import TextWindow
|
|
import time
|
|
|
|
# Required for sensord not to bus-error on startup
|
|
# commaai/cereal#22
|
|
try:
|
|
os.mkdir("/dev/shm")
|
|
except FileExistsError:
|
|
pass
|
|
except PermissionError:
|
|
print("WARNING: failed to make /dev/shm")
|
|
|
|
try:
|
|
with open('/tmp/sensor-test-results.json', 'r') as infile:
|
|
data = json.load(infile)
|
|
except Exception:
|
|
data = {'sensor-pass': 0, 'sensor-fail': 0}
|
|
|
|
STARTUP_SCRIPT = "/data/data/com.termux/files/continue.sh"
|
|
try:
|
|
with open(STARTUP_SCRIPT, 'w') as startup_script:
|
|
startup_script.write("#!/usr/bin/bash\n\n/data/openpilot/selfdrive/debug/internal/sensor_test_bootloop.py\n")
|
|
os.chmod(STARTUP_SCRIPT, stat.S_IRWXU)
|
|
except Exception:
|
|
print("Failed to install new startup script -- aborting")
|
|
sys.exit(-1)
|
|
|
|
sensord_env = {**os.environ, 'SENSOR_TEST': '1'}
|
|
process = subprocess.run("./sensord", cwd="/data/openpilot/selfdrive/sensord", env=sensord_env)
|
|
|
|
if process.returncode == 40:
|
|
text = "Current run: SUCCESS\n"
|
|
data['sensor-pass'] += 1
|
|
else:
|
|
text = "Current run: FAIL\n"
|
|
data['sensor-fail'] += 1
|
|
|
|
timestr = str(int(time.time()))
|
|
with open('/tmp/dmesg-' + timestr + '.log', 'w') as dmesg_out:
|
|
subprocess.call('dmesg', stdout=dmesg_out, shell=False)
|
|
with open("/tmp/logcat-" + timestr + '.log', 'w') as logcat_out:
|
|
subprocess.call(['logcat','-d'], stdout=logcat_out, shell=False)
|
|
|
|
text += "Sensor pass history: " + str(data['sensor-pass']) + "\n"
|
|
text += "Sensor fail history: " + str(data['sensor-fail']) + "\n"
|
|
|
|
print(text)
|
|
|
|
with open('/tmp/sensor-test-results.json', 'w') as outfile:
|
|
json.dump(data, outfile, indent=4)
|
|
|
|
with TextWindow(text) as status:
|
|
for _ in range(100):
|
|
if status.get_status() == 1:
|
|
with open(STARTUP_SCRIPT, 'w') as startup_script:
|
|
startup_script.write("#!/usr/bin/bash\n\ncd /data/openpilot\nexec ./launch_openpilot.sh\n")
|
|
os.chmod(STARTUP_SCRIPT, stat.S_IRWXU)
|
|
break
|
|
time.sleep(0.1)
|
|
|
|
subprocess.Popen("reboot")
|
|
|