#!/bin/sh

echo "Configuring CAN Subsystem"

#default values
debug=0

Base_0=0
Irq_0=0
Baud_0=125
AccMask_0=0xffffffff
AccCode_0=0xffffffff
Timeout_0=100
Outc_0=0
IOModel_0='p'

Base_1=0
Irq_1=0
Baud_1=125
AccMask_1=0xffffffff
AccCode_1=0xffffffff
Timeout_1=100
Outc_1=0
IOModel_1='p'

Base_2=0
Irq_2=0
Baud_2=125
AccMask_2=0xffffffff
AccCode_2=0xffffffff
Timeout_2=100
Outc_2=0
IOModel_2='p'


Base_3=0
Irq_3=0
Baud_3=125
AccMask_3=0xffffffff
AccCode_3=0xffffffff
Timeout_3=100
Outc_3=0
IOModel_3='p'

Base_4=0
Irq_4=0
Baud_4=125
AccMask_4=0xffffffff
AccCode_4=0xffffffff
Timeout_4=100
Outc_4=0
IOModel_4='p'

Base_5=0
Irq_5=0
Baud_5=125
AccMask_5=0xffffffff
AccCode_5=0xffffffff
Timeout_5=100
Outc_5=0
IOModel_5='p'

Base_6=0
Irq_6=0
Baud_6=125
AccMask_6=0xffffffff
AccCode_6=0xffffffff
Timeout_6=100
Outc_6=0
IOModel_6='p'


Base_7=0
Irq_7=0
Baud_7=125
AccMask_7=0xffffffff
AccCode_7=0xffffffff
Timeout_7=100
Outc_7=0
IOModel_7='p'

if [ -r "$1" ]; then
. $1
else
 if [ -r /etc/can.conf ]; then
 . /etc/can.conf
 else
   echo "** ERROR: Can't read Config File '$1' "
   exit 1
 fi
fi

echo 

if [ ! -d /proc/sys/Can/ ]; then
  echo "** ERROR: Driver not present !"
  exit 1
fi

IOModel_0=`awk '{print $1}' /proc/sys/Can/IOModel | cut -c 1`
IOModel_1=`awk '{print $1}' /proc/sys/Can/IOModel | cut -c 2`
IOModel_2=`awk '{print $1}' /proc/sys/Can/IOModel | cut -c 3`
IOModel_3=`awk '{print $1}' /proc/sys/Can/IOModel | cut -c 4`
IOModel_4=`awk '{print $1}' /proc/sys/Can/IOModel | cut -c 5`
IOModel_5=`awk '{print $1}' /proc/sys/Can/IOModel | cut -c 6`
IOModel_6=`awk '{print $1}' /proc/sys/Can/IOModel | cut -c 7`
IOModel_7=`awk '{print $1}' /proc/sys/Can/IOModel | cut -c 8`

if  [ "$IOModel_0" = 'p' ]; then
	Base_0=`awk '{print $1}' /proc/sys/Can/Base`
   Irq_0=`awk '{print $1}' /proc/sys/Can/IRQ`
fi
if  [ "$IOModel_1" = "p" ]; then
	Base_1=`awk '{print $2}' /proc/sys/Can/Base`
   Irq_1=`awk '{print $1}' /proc/sys/Can/IRQ`
fi
if  [ "$IOModel_2" = "p" ]; then
	Base_2=`awk '{print $3}' /proc/sys/Can/Base`
   Irq_2=`awk '{print $1}' /proc/sys/Can/IRQ`
fi
if  [ "$IOModel_3" = "p" ]; then
	Base_3=`awk '{print $4}' /proc/sys/Can/Base`
   Irq_3=`awk '{print $1}' /proc/sys/Can/IRQ`
fi
if  [ "$IOModel_4" = "p" ]; then
	Base_4=`awk '{print $5}' /proc/sys/Can/Base`
   Irq_4=`awk '{print $1}' /proc/sys/Can/IRQ`
fi
if  [ "$IOModel_5" = "p" ]; then
	Base_5=`awk '{print $6}' /proc/sys/Can/Base`
   Irq_5=`awk '{print $1}' /proc/sys/Can/IRQ`
fi
if  [ "$IOModel_6" = "p" ]; then
	Base_6=`awk '{print $7}' /proc/sys/Can/Base`
   Irq_6=`awk '{print $1}' /proc/sys/Can/IRQ`
fi
if [ "$IOModel_7" = "p" ]; then
	Base_7=`awk '{print $8}' /proc/sys/Can/Base`
   Irq_7=`awk '{print $1}' /proc/sys/Can/IRQ`
fi

echo "$debug" > /proc/sys/Can/dbgMask

#if [ ! `expr index  "$1" advpci` ]; then
echo "$Base_0 $Base_1 $Base_2 $Base_3 $Base_4 $Base_5 $Base_6 $Base_7 " > /proc/sys/Can/Base
echo "$Irq_0 $Irq_1 $Irq_2 $Irq_3 $Irq_4 $Irq_5 $Irq_6 $Irq_7" > /proc/sys/Can/IRQ
#fi
echo "$Baud_0 $Baud_1 $Baud_2 $Baud_3 $Baud_4 $Baud_5 $Baud_6 $Baud_7" > /proc/sys/Can/Baud
echo "$AccCode_0 $AccCode_1 $AccCode_2 $AccCode_3 $AccCode_4 $AccCode_5 $AccCode_6 $AccCode_7" > /proc/sys/Can/AccCode
echo "$AccMask_0 $AccMask_1 $AccMask_2 $AccMask_3 $AccMask_4 $AccMask_5 $AccMask_6 $AccMask_7" > /proc/sys/Can/AccMask
echo "$Timeout_0 $Timeout_1 $Timeout_2 $Timeout_3 $Timeout_4 $Timeout_5 $Timeout_6 $Timeout_7"> /proc/sys/Can/Timeout
echo "$Outc_0 $Outc_1 $Outc_2 $Outc_3 $Outc_4 $Outc_5 $Outc_6 $Outc_7"> /proc/sys/Can/Outc


