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.
42 lines
918 B
42 lines
918 B
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Forward all openpilot service ports
|
|
mapfile -t SERVICE_PORTS < <(python3 - <<'PY'
|
|
from cereal.services import SERVICE_LIST
|
|
|
|
FNV_PRIME = 0x100000001b3
|
|
FNV_OFFSET_BASIS = 0xcbf29ce484222325
|
|
START_PORT = 8023
|
|
MAX_PORT = 65535
|
|
PORT_RANGE = MAX_PORT - START_PORT
|
|
MASK = 0xffffffffffffffff
|
|
|
|
def fnv1a(endpoint: str) -> int:
|
|
h = FNV_OFFSET_BASIS
|
|
for b in endpoint.encode():
|
|
h ^= b
|
|
h = (h * FNV_PRIME) & MASK
|
|
return h
|
|
|
|
ports = set()
|
|
for name in SERVICE_LIST.keys():
|
|
port = START_PORT + fnv1a(name) % PORT_RANGE
|
|
ports.add((name, port))
|
|
|
|
for name, port in sorted(ports):
|
|
print(f"{name} {port}")
|
|
PY
|
|
)
|
|
|
|
for entry in "${SERVICE_PORTS[@]}"; do
|
|
name="${entry% *}"
|
|
port="${entry##* }"
|
|
adb forward "tcp:${port}" "tcp:${port}" > /dev/null
|
|
done
|
|
|
|
# Forward SSH port first for interactive shell access.
|
|
adb forward tcp:2222 tcp:22
|
|
|
|
# SSH!
|
|
ssh comma@localhost -p 2222 "$@"
|
|
|