#!/bin/sh
###############################################################################
# Program:
# 		MOXA Linux driver installer
#	
# History:
# 2012/07/31
#
# Author:
# Jason Chen 
#
# Discription:
# The script install and load the MOXA Linux driver.
#
###############################################################################

TARGET_DRIVER1=mxcandrv
TARGET_DRIVER2=mxcandrv2
TARGET_DRIVER3=mxcanctrl
MXVER=5.0

K_MODULE_VERSION=$(uname -r)
K_SOURCE=/lib/modules/$K_MODULE_VERSION/build

#Check kernel source
if test ! -d $K_SOURCE
then
echo "***********************************ERROR********************************"
echo " Unable to locate matching source for kernel $K_MODULE_VERSION."
echo " Please refer the readme.txt to install proper kernel-header/source."
echo "************************************************************************"
exit 1
fi

if lsmod | grep -q $TARGET_DRIVER1 ; then
	echo "Found $TARGET_DRIVER1 in system..."
	echo "Unloading $TARGET_DRIVER1..."
	rmmod $TARGET_DRIVER1
	echo "Unload $TARGET_DRIVER1 successfully."
	echo ""
fi

if lsmod | grep -q $TARGET_DRIVER2 ; then
	echo "Found $TARGET_DRIVER2 in system..."
	echo "Unloading $TARGET_DRIVER2..."
	rmmod $TARGET_DRIVER2
	echo "Unload $TARGET_DRIVER2 successfully."
	echo ""
fi

if lsmod | grep -q $TARGET_DRIVER3 ; then
	echo "Found $TARGET_DRIVER3 in system..."
	echo "Unloading $TARGET_DRIVER3..."
	rmmod $TARGET_DRIVER3
	echo "Unload $TARGET_DRIVER3 successfully."
	echo ""
fi

echo
echo 'Moxa CAN driver used to name each interface as mxcanX which is deprecated.'
echo 'The naming has been replaced by canX following the Linux convention.'
echo 'However, Moxa driver can rename to traditional mxcanX automatically for each port.'
echo 'Do you want to use mxcanX naming instead of canX? [y/N].'

read check
case $check in
[y])
        USE_MXCAN=y
        ;;
[Y])
        USE_MXCAN=y
        ;;
*)
        USE_MXCAN=n
        ;;
esac

if make install ; then
	echo ""
	echo "Loading driver..."

	if [ "$USE_MXCAN" = "y" ]
	then
	        cp -f driver/91-mxcandrv-naming.rules /etc/udev/rules.d
		udevadm control --reload-rules && udevadm trigger
	fi

	modprobe $TARGET_DRIVER1
	modprobe $TARGET_DRIVER2
	modprobe $TARGET_DRIVER3

	echo "**********************************************************************"
	echo " MOXA CAN Family driver ver $MXVER loaded successfully."
	echo "**********************************************************************"
fi
