Simplify passive mode handling (#30593)
	
		
	
				
					
				
			* simplify passive handling
* makes more sense
old-commit-hash: 5ccff25d88
			
			
				vw-mqb-aeb
			
			
		
							parent
							
								
									1cc4f1a634
								
							
						
					
					
						commit
						4be789d40a
					
				
				 8 changed files with 100 additions and 98 deletions
			
			
		@ -1,88 +1,15 @@ | 
				
			||||
#!/usr/bin/bash | 
				
			||||
 | 
				
			||||
if [ -z "$BASEDIR" ]; then | 
				
			||||
  BASEDIR="/data/openpilot" | 
				
			||||
fi | 
				
			||||
# TODO: this can be removed after 0.9.6 release | 
				
			||||
 | 
				
			||||
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 | 
				
			||||
# migrate continue.sh and relaunch | 
				
			||||
cat << EOF > /data/continue.sh | 
				
			||||
#!/usr/bin/bash | 
				
			||||
 | 
				
			||||
  # start manager | 
				
			||||
  cd selfdrive/manager | 
				
			||||
  ./build.py && ./manager.py | 
				
			||||
export PASSIVE=1 | 
				
			||||
 | 
				
			||||
  # if broken, keep on screen error | 
				
			||||
  while true; do sleep 1; done | 
				
			||||
} | 
				
			||||
cd /data/openpilot | 
				
			||||
exec ./launch_openpilot.sh | 
				
			||||
EOF | 
				
			||||
 | 
				
			||||
launch | 
				
			||||
/data/continue.sh | 
				
			||||
 | 
				
			||||
@ -1,5 +1,88 @@ | 
				
			||||
#!/usr/bin/bash | 
				
			||||
 | 
				
			||||
export PASSIVE="0" | 
				
			||||
exec ./launch_chffrplus.sh | 
				
			||||
if [ -z "$BASEDIR" ]; then | 
				
			||||
  BASEDIR="/data/openpilot" | 
				
			||||
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 | 
				
			||||
 | 
				
			||||
@ -1,4 +1,6 @@ | 
				
			||||
#!/usr/bin/bash | 
				
			||||
 | 
				
			||||
export PASSIVE=1 | 
				
			||||
 | 
				
			||||
cd /data/openpilot | 
				
			||||
exec ./launch_chffrplus.sh | 
				
			||||
exec ./launch_openpilot.sh | 
				
			||||
 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue