mirror of
https://github.com/RasppleII/a2cloud.git
synced 2025-01-02 21:29:37 +00:00
55c53b9c10
As noted, Ivan has agreed to allow these scripts to be relicensed under CC0. We have one file under LGPL (a unit file we lifted wholesake from systemd) and the ADTPro wrapper which I'm pretty sure Ivan wrote, but if he didn't we need to fix its license to be the same as ADTPro. Either way, to the best of my knowledge, this resolves the question of how things are licensed explicitly. (Closes #21)
156 lines
5.1 KiB
Bash
Executable File
156 lines
5.1 KiB
Bash
Executable File
#! /bin/bash
|
|
# vim: set tabstop=4 shiftwidth=4 noexpandtab filetype=sh:
|
|
|
|
# adtpro.sh - a2cloud wrapper for adtpro
|
|
#
|
|
# To the extent possible under law, T. Joseph Carter and Ivan Drucker have
|
|
# waived all copyright and related or neighboring rights to the a2cloud
|
|
# scripts themselves. Software used or installed by these scripts is subject
|
|
# to other licenses. This work is published from the United States.
|
|
|
|
# This script may have some common history with the similar script found in
|
|
# ADTPro's source tree. The original may have been written by David Schmidt,
|
|
# and we should check on that.
|
|
|
|
# ADTPro - *nix startup shell script
|
|
#
|
|
# Note:
|
|
# Invoke with the name of the communications button to push
|
|
# in order to start with that mode active (i.e. './adtpro.sh ethernet')
|
|
#
|
|
# You can set two variables here:
|
|
# 1. $MY_JAVA_HOME - to pick a particular java to run under
|
|
# 2. $ADTPRO_HOME - to say where you installed ADTPro
|
|
#
|
|
# Set default ADTPRO_HOME to be the fully qualified
|
|
# current working directory.
|
|
#export ADTPRO_HOME="`dirname \"$0\"`"
|
|
#cd "$ADTPRO_HOME"
|
|
#export ADTPRO_HOME=`pwd`
|
|
|
|
# Uncomment and modify one or both of the lines below if you
|
|
# want to specify a particular location for Java or ADTPro.
|
|
# NOTE: be sure to include a trailing slash on MY_JAVA_HOME,
|
|
# but not on ADTPRO_HOME.
|
|
#
|
|
# export MY_JAVA_HOME=/usr/local/java/bin/
|
|
# export ADTPRO_HOME=~/myuser/adtpro
|
|
|
|
usageExit () {
|
|
echo "usage:" 1>&2
|
|
echo "adtpro.sh [headless] [serial|ethernet|audio|localhost] [serialPortName]" 1>&2
|
|
exit 1
|
|
}
|
|
|
|
export ADTPRO_HOME=/usr/local/adtpro
|
|
cd "$ADTPRO_HOME"
|
|
|
|
OS=`uname`
|
|
OS_ARCH=`uname -m`
|
|
|
|
[[ $1 == "headless" ]] && { headless=1; shift; } || headless=
|
|
|
|
if [[ $1 && ( $1 != "serial" && $1 != "ethernet" && $1 != "audio" && $1 != "localhost" ) ]]; then
|
|
usageExit
|
|
fi
|
|
|
|
# For Linux, use this:
|
|
if [ "$OS" = "Linux" ]; then
|
|
|
|
serialPortName=
|
|
if [[ $1 == "serial" ]]; then
|
|
if [[ $2 ]]; then
|
|
serialPortName="$2"
|
|
[[ ${serialPortName:0:5} == "/dev/" ]] && serialPortName=${serialPortName:5}
|
|
if [[ ! -c /dev/$serialPortName ]]; then
|
|
echo "Serial port $serialPortName not found." 1>&2
|
|
usageExit
|
|
fi
|
|
elif [[ -c /dev/ttyUSBlower ]]; then
|
|
serialPortName=ttyUSBlower
|
|
elif [[ $(ls -1 /dev/ttyUSBlower_hub* 2> /dev/null | wc -l) -gt 0 ]]; then
|
|
serialPortName=$(ls -1 /dev/ttyUSBlower_hub* 2> /dev/null | head -1 | cut -c 6-)
|
|
elif [[ $(ls -1 /dev/ttyUSBupper_hub* 2> /dev/null | wc -l) -gt 1 ]]; then
|
|
serialPortName=$(ls -1 /dev/ttyUSBupper_hub* 2> /dev/null | head -1 | cut -c 6-)
|
|
else
|
|
echo "No eligible USB-to-serial adapter found." 1>&2
|
|
echo "Possible ports:" 1>&2
|
|
echo " lower USB port"
|
|
echo " any port on lower USB hub with no other adapters"
|
|
echo " lowest port on USB hub on upper or lower USB port with multiple adapters"
|
|
usageExit
|
|
fi
|
|
fi
|
|
|
|
if [[ $(grep CommPort= /usr/local/adtpro/disks/ADTPro.properties) ]]; then
|
|
if [[ $serialPortName ]]; then
|
|
sed -i "s/^CommPort=.*$/CommPort=\/dev\/$serialPortName/" /usr/local/adtpro/disks/ADTPro.properties &> /dev/null
|
|
else
|
|
serialPortName=$(grep 'CommPort=/dev/' /usr/local/adtpro/disks/ADTPro.properties 2> /dev/null | cut -f 3 -d '/')
|
|
fi
|
|
else
|
|
echo -e "#ADTPro.properties\n#$(date)\nCommPortSpeed=115200\nCommPortBootstrapSpeed=2400\nCommPort=/dev/$serialPortName\nCommPortBootstrapPacing=250\nHardwareHandshaking=false\nSerialIPHost=localhost\nSerialIPPort=1977" > /usr/local/adtpro/disks/ADTPro.properties
|
|
chmod ugo+w /usr/local/adtpro/disks/ADTPro.properties
|
|
fi
|
|
|
|
ADTPRO_EXTRA_JAVA_PARMS="-Dgnu.io.rxtx.SerialPorts=/dev/$serialPortName"
|
|
|
|
if [ -f /usr/bin/raspi-config ]; then
|
|
export RXTXLIB=lib/rxtx/rxtx-2.2pre2-local/arm
|
|
elif [ "$OS_ARCH" = "i686" ]; then
|
|
export RXTXLIB=lib/rxtx/rxtx-2.2pre2-local/i686-pc-linux-gnu
|
|
else
|
|
if [ "$OS_ARCH" = "i386" ]; then
|
|
export RXTXLIB=lib/rxtx/rxtx-2.2pre2-local/i686-pc-linux-gnu
|
|
else
|
|
export RXTXLIB=lib/rxtx/rxtx-2.2pre2-local/x86_64-unknown-linux-gnu
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# For OSX, use this:
|
|
if [ "$OS" = "Darwin" ]; then
|
|
if [ "$OS_ARCH" = "powerpc" ]; then
|
|
export RXTXLIB=lib/rxtx/rxtx-2.1-7-bins-r2/Mac_OS_X
|
|
else
|
|
export RXTXLIB=lib/rxtx/rxtx-2.2pre2-local/mac-10.5
|
|
fi
|
|
fi
|
|
|
|
# For Solaris, use this:
|
|
if [ "$OS" = "SunOS" ]; then
|
|
export RXTXLIB=lib/rxtx/rxtx-2.2pre2-local/sparc-sun-solaris2.10-32
|
|
fi
|
|
|
|
# Set up the library location.
|
|
export TWEAK1="-Djava.library.path="
|
|
export TWEAK=$TWEAK1$ADTPRO_HOME/$RXTXLIB
|
|
|
|
if [[ $headless ]]; then
|
|
if [[ ! $1 || ! -f /usr/bin/xvfb-run ]]; then
|
|
if [[ ! -f /usr/bin/xvfb-run ]]; then
|
|
echo "Headless operation requires xvfb."
|
|
usageExit
|
|
else
|
|
echo "Headless operation requires a communication mode (e.g. serial)."
|
|
usageExit
|
|
fi
|
|
exit 1
|
|
else
|
|
HEADLESS="xvfb-run --auto-servernum "
|
|
fi
|
|
fi
|
|
|
|
if [[ $serialPortName && $(ps aux | grep "/sbin/getty.*$serialPortName") ]]; then
|
|
sudo pkill -f "/sbin/getty.*$serialPortName"
|
|
fi
|
|
sudo pkill -f [A]DTPro
|
|
cd "$ADTPRO_HOME"/disks
|
|
$HEADLESS"$MY_JAVA_HOME"java -Xms256m -Xmx512m "$TWEAK" $ADTPRO_EXTRA_JAVA_PARMS -cp ../lib/ADTPro.jar:../"$RXTXLIB"/../RXTXcomm.jar:../lib/AppleCommander/AppleCommander-ac.jar org.adtpro.ADTPro $* &
|
|
if [[ $1 == "serial" ]]; then
|
|
echo "Starting up on interface $serialPortName. Please wait..."
|
|
fi
|
|
if [ -t 0 ]; then
|
|
sleep 30
|
|
fi
|