Revert "Simplify passive mode handling (#30593)"

pull/30584/head^2
Adeeb Shihadeh 1 year ago
parent 05e932b088
commit 99d51bf02c
  1. 91
      launch_chffrplus.sh
  2. 4
      launch_env.sh
  3. 87
      launch_openpilot.sh
  4. 8
      selfdrive/manager/manager.py
  5. 1
      selfdrive/manager/test/test_manager.py
  6. 1
      selfdrive/test/helpers.py
  7. 4
      selfdrive/ui/installer/continue_dashcam.sh
  8. 2
      tools/webcam/README.md

@ -1,13 +1,88 @@
#!/usr/bin/bash #!/usr/bin/bash
# TODO: this can be removed after 0.9.6 release if [ -z "$BASEDIR" ]; then
BASEDIR="/data/openpilot"
fi
# migrate continue.sh and relaunch source "$BASEDIR/launch_env.sh"
cat << EOF > /data/continue.sh
#!/usr/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
function agnos_init {
# TODO: move this to agnos
sudo rm -f /data/etc/NetworkManager/system-connections/*.nmmeta
# set success flag for current boot slot
sudo abctl --set_success
# Check if AGNOS update is required
if [ $(< /VERSION) != "$AGNOS_VERSION" ]; then
AGNOS_PY="$DIR/system/hardware/tici/agnos.py"
MANIFEST="$DIR/system/hardware/tici/agnos.json"
if $AGNOS_PY --verify $MANIFEST; then
sudo reboot
fi
$DIR/system/hardware/tici/updater $AGNOS_PY $MANIFEST
fi
}
function launch {
# Remove orphaned git lock if it exists on boot
[ -f "$DIR/.git/index.lock" ] && rm -f $DIR/.git/index.lock
# Pull time from panda
$DIR/selfdrive/boardd/set_time.py
# Check to see if there's a valid overlay-based update available. Conditions
# are as follows:
#
# 1. The BASEDIR init file has to exist, with a newer modtime than anything in
# the BASEDIR Git repo. This checks for local development work or the user
# switching branches/forks, which should not be overwritten.
# 2. The FINALIZED consistent file has to exist, indicating there's an update
# that completed successfully and synced to disk.
if [ -f "${BASEDIR}/.overlay_init" ]; then
find ${BASEDIR}/.git -newer ${BASEDIR}/.overlay_init | grep -q '.' 2> /dev/null
if [ $? -eq 0 ]; then
echo "${BASEDIR} has been modified, skipping overlay update installation"
else
if [ -f "${STAGING_ROOT}/finalized/.overlay_consistent" ]; then
if [ ! -d /data/safe_staging/old_openpilot ]; then
echo "Valid overlay update found, installing"
LAUNCHER_LOCATION="${BASH_SOURCE[0]}"
mv $BASEDIR /data/safe_staging/old_openpilot
mv "${STAGING_ROOT}/finalized" $BASEDIR
cd $BASEDIR
echo "Restarting launch script ${LAUNCHER_LOCATION}"
unset AGNOS_VERSION
exec "${LAUNCHER_LOCATION}"
else
echo "openpilot backup found, not updating"
# TODO: restore backup? This means the updater didn't start after swapping
fi
fi
fi
fi
# handle pythonpath
ln -sfn $(pwd) /data/pythonpath
export PYTHONPATH="$PWD"
# hardware specific init
agnos_init
# write tmux scrollback to a file
tmux capture-pane -pq -S-1000 > /tmp/launch_log
# start manager
cd selfdrive/manager
./build.py && ./manager.py
cd /data/openpilot # if broken, keep on screen error
exec ./launch_openpilot.sh while true; do sleep 1; done
EOF }
/data/continue.sh launch

@ -10,4 +10,8 @@ if [ -z "$AGNOS_VERSION" ]; then
export AGNOS_VERSION="8.2" export AGNOS_VERSION="8.2"
fi fi
if [ -z "$PASSIVE" ]; then
export PASSIVE="1"
fi
export STAGING_ROOT="/data/safe_staging" export STAGING_ROOT="/data/safe_staging"

@ -1,88 +1,5 @@
#!/usr/bin/bash #!/usr/bin/bash
if [ -z "$BASEDIR" ]; then export PASSIVE="0"
BASEDIR="/data/openpilot" exec ./launch_chffrplus.sh
fi
source "$BASEDIR/launch_env.sh"
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
function agnos_init {
# TODO: move this to agnos
sudo rm -f /data/etc/NetworkManager/system-connections/*.nmmeta
# set success flag for current boot slot
sudo abctl --set_success
# Check if AGNOS update is required
if [ $(< /VERSION) != "$AGNOS_VERSION" ]; then
AGNOS_PY="$DIR/system/hardware/tici/agnos.py"
MANIFEST="$DIR/system/hardware/tici/agnos.json"
if $AGNOS_PY --verify $MANIFEST; then
sudo reboot
fi
$DIR/system/hardware/tici/updater $AGNOS_PY $MANIFEST
fi
}
function launch {
# Remove orphaned git lock if it exists on boot
[ -f "$DIR/.git/index.lock" ] && rm -f $DIR/.git/index.lock
# Pull time from panda
$DIR/selfdrive/boardd/set_time.py
# Check to see if there's a valid overlay-based update available. Conditions
# are as follows:
#
# 1. The BASEDIR init file has to exist, with a newer modtime than anything in
# the BASEDIR Git repo. This checks for local development work or the user
# switching branches/forks, which should not be overwritten.
# 2. The FINALIZED consistent file has to exist, indicating there's an update
# that completed successfully and synced to disk.
if [ -f "${BASEDIR}/.overlay_init" ]; then
find ${BASEDIR}/.git -newer ${BASEDIR}/.overlay_init | grep -q '.' 2> /dev/null
if [ $? -eq 0 ]; then
echo "${BASEDIR} has been modified, skipping overlay update installation"
else
if [ -f "${STAGING_ROOT}/finalized/.overlay_consistent" ]; then
if [ ! -d /data/safe_staging/old_openpilot ]; then
echo "Valid overlay update found, installing"
LAUNCHER_LOCATION="${BASH_SOURCE[0]}"
mv $BASEDIR /data/safe_staging/old_openpilot
mv "${STAGING_ROOT}/finalized" $BASEDIR
cd $BASEDIR
echo "Restarting launch script ${LAUNCHER_LOCATION}"
unset AGNOS_VERSION
exec "${LAUNCHER_LOCATION}"
else
echo "openpilot backup found, not updating"
# TODO: restore backup? This means the updater didn't start after swapping
fi
fi
fi
fi
# handle pythonpath
ln -sfn $(pwd) /data/pythonpath
export PYTHONPATH="$PWD"
# hardware specific init
agnos_init
# write tmux scrollback to a file
tmux capture-pane -pq -S-1000 > /tmp/launch_log
# start manager
cd selfdrive/manager
./build.py && ./manager.py
# if broken, keep on screen error
while true; do sleep 1; done
}
launch

@ -60,8 +60,12 @@ def manager_init() -> None:
if params.get(k) is None: if params.get(k) is None:
params.put(k, v) params.put(k, v)
# is this a dashcam build? # is this dashcam?
params.put_bool("Passive", bool(int(os.getenv("PASSIVE", "0")))) if os.getenv("PASSIVE") is not None:
params.put_bool("Passive", bool(int(os.getenv("PASSIVE", "0"))))
if params.get("Passive") is None:
raise Exception("Passive must be set to continue")
# Create folders needed for msgq # Create folders needed for msgq
try: try:

@ -21,6 +21,7 @@ BLACKLIST_PROCS = ['manage_athenad', 'pandad', 'pigeond']
@pytest.mark.tici @pytest.mark.tici
class TestManager(unittest.TestCase): class TestManager(unittest.TestCase):
def setUp(self): def setUp(self):
os.environ['PASSIVE'] = '0'
HARDWARE.set_power_save(False) HARDWARE.set_power_save(False)
# ensure clean CarParams # ensure clean CarParams

@ -11,6 +11,7 @@ from openpilot.system.version import training_version, terms_version
def set_params_enabled(): def set_params_enabled():
os.environ['PASSIVE'] = "0"
os.environ['REPLAY'] = "1" os.environ['REPLAY'] = "1"
os.environ['FINGERPRINT'] = "TOYOTA COROLLA TSS2 2019" os.environ['FINGERPRINT'] = "TOYOTA COROLLA TSS2 2019"
os.environ['LOGPRINT'] = "debug" os.environ['LOGPRINT'] = "debug"

@ -1,6 +1,4 @@
#!/usr/bin/bash #!/usr/bin/bash
export PASSIVE=1
cd /data/openpilot cd /data/openpilot
exec ./launch_openpilot.sh exec ./launch_chffrplus.sh

@ -38,7 +38,7 @@ USE_WEBCAM=1 scons -j$(nproc)
## GO ## GO
``` ```
cd ~/openpilot/selfdrive/manager cd ~/openpilot/selfdrive/manager
NOSENSOR=1 USE_WEBCAM=1 ./manager.py PASSIVE=0 NOSENSOR=1 USE_WEBCAM=1 ./manager.py
``` ```
- Start the car, then the UI should show the road webcam's view - Start the car, then the UI should show the road webcam's view
- Adjust and secure the webcams (you can run tools/webcam/front_mount_helper.py to help mount the driver camera) - Adjust and secure the webcams (you can run tools/webcam/front_mount_helper.py to help mount the driver camera)

Loading…
Cancel
Save