#!/bin/bash
#
# Basic script to automate DroidCam installation process
# Usage: ./install [320 240]
# Dev47Apps.com
#
set -e
INSTALL=" -- INSTALL: "
DROIDCAM_V4L_KO="droidcam_v4l.ko";
DRIVER_LOCATION="/lib/modules/`uname -r`/kernel/drivers/media/video/";
WIDTH="320"
HEIGHT="240"

if [ "$1" != "" ]
then
	WIDTH=$1
	HEIGHT=$2
fi

if [[ ! $(echo "$WIDTH" | grep -E "^[0-9]+$") || ! $(echo "$HEIGHT" | grep -E "^[0-9]+$") ]]
then
	echo "Inavlid parameters: '$WIDTH' and '$HEIGHT'"
	exit 1
fi

if [[ $WIDTH < 240 || $HEIGHT < 160 ]]
then
	echo "Parameters too low: '$WIDTH' and '$HEIGHT'"
	exit 1
fi

echo "$INSTALL Building DrodCam v4l driver.."
cd webcam
make -C /lib/modules/`uname -r`/build M=`pwd`
cd ..

if [ ! -e "webcam/$DROIDCAM_V4L_KO" ]
then
	echo "$INSTALL $DROIDCAM_V4L_KO not built.. Failure"
	exit 1;
fi

echo "$INSTALL Moving droidcam driver and executable to system folders.."
cp "webcam/$DROIDCAM_V4L_KO" $DRIVER_LOCATION
cp droidcam /usr/bin/

echo "$INSTALL Registering DroidCam device driver"
/sbin/modprobe videodev
/sbin/insmod $DRIVER_LOCATION$DROIDCAM_V4L_KO width=$WIDTH height=$HEIGHT

echo "$INSTALL adding droidcam to /etc/modules";
echo "videodev
droidcam_v4l width=$WIDTH height=$HEIGHT
" >> /etc/modules

echo "$INSTALL Running depmod"
depmod -a

echo "$INSTALL Creating ~/.droidcam"
mkdir ~/.droidcam/
cp icon.png ~/.droidcam/
cp README ~/.droidcam/

echo "$WIDTH-$HEIGHT
IP_ADDRESS
4747" > ~/.droidcam/settings

chmod a+rw ~/.droidcam/settings

cd webcam
make -C /lib/modules/`uname -r`/build M=`pwd` clean
cd ..

echo "$INSTALL Done! You can make sure droidcam_v4l is loaded using 'lsmod'"
