#!/bin/sh

echo "Configuring CAN Subsystem"

#default values
#----------------------------------------
debug=0

Base_0=$(awk '{print $1}' /proc/sys/dev/Can/Base)
Irq_0=$(awk '{print $1}' /proc/sys/dev/Can/IRQ)
Baud_0=$(awk '{print $1}' /proc/sys/dev/Can/Baud)
AccMask_0=$(awk '{print $1}' /proc/sys/dev/Can/AccMask)
AccCode_0=$(awk '{print $1}' /proc/sys/dev/Can/AccCode)
Timeout_0=$(awk '{print $1}' /proc/sys/dev/Can/Timeout)
Outc_0=$(awk '{print $1}' /proc/sys/dev/Can/Outc)

Base_1=$(awk '{print $2}' /proc/sys/dev/Can/Base)
Irq_1=$(awk '{print $2}' /proc/sys/dev/Can/IRQ)
Baud_1=$(awk '{print $2}' /proc/sys/dev/Can/Baud)
AccMask_1=$(awk '{print $2}' /proc/sys/dev/Can/AccMask)
AccCode_1=$(awk '{print $2}' /proc/sys/dev/Can/AccCode)
Timeout_1=$(awk '{print $2}' /proc/sys/dev/Can/Timeout)
Outc_1=$(awk '{print $2}' /proc/sys/dev/Can/Outc)


Base_2=$(awk '{print $3}' /proc/sys/dev/Can/Base)
Irq_2=$(awk '{print $3}' /proc/sys/dev/Can/IRQ)
Baud_2=$(awk '{print $3}' /proc/sys/dev/Can/Baud)
AccMask_2=$(awk '{print $3}' /proc/sys/dev/Can/AccMask)
AccCode_2=$(awk '{print $3}' /proc/sys/dev/Can/AccCode)
Timeout_2=$(awk '{print $3}' /proc/sys/dev/Can/Timeout)
Outc_2=$(awk '{print $3}' /proc/sys/dev/Can/Outc)


Base_3=$(awk '{print $4}' /proc/sys/dev/Can/Base)
Irq_3=$(awk '{print $4}' /proc/sys/dev/Can/IRQ)
Baud_3=$(awk '{print $4}' /proc/sys/dev/Can/Baud)
AccMask_3=$(awk '{print $4}' /proc/sys/dev/Can/AccMask)
AccCode_3=$(awk '{print $4}' /proc/sys/dev/Can/AccCode)
Timeout_3=$(awk '{print $4}' /proc/sys/dev/Can/Timeout)
Outc_3=$(awk '{print $4}' /proc/sys/dev/Can/Outc)


Base_4=$(awk '{print $5}' /proc/sys/dev/Can/Base)
Irq_4=$(awk '{print $5}' /proc/sys/dev/Can/IRQ)
Baud_4=$(awk '{print $5}' /proc/sys/dev/Can/Baud)
AccMask_4=$(awk '{print $5}' /proc/sys/dev/Can/AccMask)
AccCode_4=$(awk '{print $5}' /proc/sys/dev/Can/AccCode)
Timeout_4=$(awk '{print $5}' /proc/sys/dev/Can/Timeout)
Outc_4=$(awk '{print $5}' /proc/sys/dev/Can/Outc)


Base_5=$(awk '{print $6}' /proc/sys/dev/Can/Base)
Irq_5=$(awk '{print $6}' /proc/sys/dev/Can/IRQ)
Baud_5=$(awk '{print $6}' /proc/sys/dev/Can/Baud)
AccMask_5=$(awk '{print $6}' /proc/sys/dev/Can/AccMask)
AccCode_5=$(awk '{print $6}' /proc/sys/dev/Can/AccCode)
Timeout_5=$(awk '{print $6}' /proc/sys/dev/Can/Timeout)
Outc_5=$(awk '{print $6}' /proc/sys/dev/Can/Outc)


Base_6=$(awk '{print $7}' /proc/sys/dev/Can/Base)
Irq_6=$(awk '{print $7}' /proc/sys/dev/Can/IRQ)
Baud_6=$(awk '{print $7}' /proc/sys/dev/Can/Baud)
AccMask_6=$(awk '{print $7}' /proc/sys/dev/Can/AccMask)
AccCode_6=$(awk '{print $7}' /proc/sys/dev/Can/AccCode)
Timeout_6=$(awk '{print $7}' /proc/sys/dev/Can/Timeout)
Outc_6=$(awk '{print $7}' /proc/sys/dev/Can/Outc)


Base_7=$(awk '{print $8}' /proc/sys/dev/Can/Base)
Irq_7=$(awk '{print $8}' /proc/sys/dev/Can/IRQ)
Baud_7=$(awk '{print $8}' /proc/sys/dev/Can/Baud)
AccMask_7=$(awk '{print $8}' /proc/sys/dev/Can/AccMask)
AccCode_7=$(awk '{print $8}' /proc/sys/dev/Can/AccCode)
Timeout_7=$(awk '{print $8}' /proc/sys/dev/Can/Timeout)
Outc_7=$(awk '{print $8}' /proc/sys/dev/Can/Outc)


Base_8=$(awk '{print $9}' /proc/sys/dev/Can/Base)
Irq_8=$(awk '{print $9}' /proc/sys/dev/Can/IRQ)
Baud_8=$(awk '{print $9}' /proc/sys/dev/Can/Baud)
AccMask_8=$(awk '{print $9}' /proc/sys/dev/Can/AccMask)
AccCode_8=$(awk '{print $9}' /proc/sys/dev/Can/AccCode)
Timeout_8=$(awk '{print $9}' /proc/sys/dev/Can/Timeout)
Outc_8=$(awk '{print $9}' /proc/sys/dev/Can/Outc)

Base_9=$(awk '{print $10}' /proc/sys/dev/Can/Base)
Irq_9=$(awk '{print $10}' /proc/sys/dev/Can/IRQ)
Baud_9=$(awk '{print $10}' /proc/sys/dev/Can/Baud)
AccMask_9=$(awk '{print $10}' /proc/sys/dev/Can/AccMask)
AccCode_9=$(awk '{print $10}' /proc/sys/dev/Can/AccCode)
Timeout_9=$(awk '{print $10}' /proc/sys/dev/Can/Timeout)
Outc_9=$(awk '{print $10}' /proc/sys/dev/Can/Outc)

Base_10=$(awk '{print $11}' /proc/sys/dev/Can/Base)
Irq_10=$(awk '{print $11}' /proc/sys/dev/Can/IRQ)
Baud_10=$(awk '{print $11}' /proc/sys/dev/Can/Baud)
AccMask_10=$(awk '{print $11}' /proc/sys/dev/Can/AccMask)
AccCode_10=$(awk '{print $11}' /proc/sys/dev/Can/AccCode)
Timeout_10=$(awk '{print $11}' /proc/sys/dev/Can/Timeout)
Outc_10=$(awk '{print $11}' /proc/sys/dev/Can/Outc)

Base_11=$(awk '{print $12}' /proc/sys/dev/Can/Base)
Irq_11=$(awk '{print $12}' /proc/sys/dev/Can/IRQ)
Baud_11=$(awk '{print $12}' /proc/sys/dev/Can/Baud)
AccMask_11=$(awk '{print $12}' /proc/sys/dev/Can/AccMask)
AccCode_11=$(awk '{print $12}' /proc/sys/dev/Can/AccCode)
Timeout_11=$(awk '{print $12}' /proc/sys/dev/Can/Timeout)
Outc_11=$(awk '{print $12}' /proc/sys/dev/Can/Outc)

Base_12=$(awk '{print $13}' /proc/sys/dev/Can/Base)
Irq_12=$(awk '{print $13}' /proc/sys/dev/Can/IRQ)
Baud_12=$(awk '{print $13}' /proc/sys/dev/Can/Baud)
AccMask_12=$(awk '{print $13}' /proc/sys/dev/Can/AccMask)
AccCode_12=$(awk '{print $13}' /proc/sys/dev/Can/AccCode)
Timeout_12=$(awk '{print $13}' /proc/sys/dev/Can/Timeout)
Outc_12=$(awk '{print $13}' /proc/sys/dev/Can/Outc)

Base_13=$(awk '{print $14}' /proc/sys/dev/Can/Base)
Irq_13=$(awk '{print $14}' /proc/sys/dev/Can/IRQ)
Baud_13=$(awk '{print $14}' /proc/sys/dev/Can/Baud)
AccMask_13=$(awk '{print $14}' /proc/sys/dev/Can/AccMask)
AccCode_13=$(awk '{print $14}' /proc/sys/dev/Can/AccCode)
Timeout_13=$(awk '{print $1}' /proc/sys/dev/Can/Timeout)
Outc_13=$(awk '{print $14}' /proc/sys/dev/Can/Outc)

Base_14=$(awk '{print $15}' /proc/sys/dev/Can/Base)
Irq_14=$(awk '{print $15}' /proc/sys/dev/Can/IRQ)
Baud_14=$(awk '{print $15}' /proc/sys/dev/Can/Baud)
AccMask_14=$(awk '{print $15}' /proc/sys/dev/Can/AccMask)
AccCode_14=$(awk '{print $15}' /proc/sys/dev/Can/AccCode)
Timeout_14=$(awk '{print $15}' /proc/sys/dev/Can/Timeout)
Outc_14=$(awk '{print $15}' /proc/sys/dev/Can/Outc)

Base_15=$(awk '{print $16}' /proc/sys/dev/Can/Base)
Irq_15=$(awk '{print $16}' /proc/sys/dev/Can/IRQ)
Baud_15=$(awk '{print $16}' /proc/sys/dev/Can/Baud)
AccMask_15=$(awk '{print $16}' /proc/sys/dev/Can/AccMask)
AccCode_15=$(awk '{print $16}' /proc/sys/dev/Can/AccCode)
Timeout_15=$(awk '{print $16}' /proc/sys/dev/Can/Timeout)
Outc_14=$(awk '{print $16}' /proc/sys/dev/Can/Outc)


#----------------------------------------

if [ -r "$1" ]; then
# now read parameters from file.conf overwrite default values
echo "reading parameter values from $1"
. $1
else
 if [ -r /etc/can.conf ]; then
 . /etc/can.conf
 else
   echo "** ERROR: Can't read Config File '$1' "
   exit 1
 fi
fi

proc=/proc/sys/dev/Can

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


echo "$debug" > $proc/dbgMask

echo "$Base_0 $Base_1 $Base_2 $Base_3 $Base_4 $Base_5 $Base_6 $Base_7 $Base_8 $Base_9 $Base_10 $Base_11 $Base_12 $Base_13 $Base_14 $Base_15" > $proc/Base
echo "$Irq_0 $Irq_1 $Irq_2 $Irq_3 $Irq_4 $Irq_5 $Irq_6 $Irq_7 $Irq_8 $Irq_9 $Irq_10 $Irq_11 $Irq_12 $Irq_13 $Irq_14 $Irq_15" > $proc/IRQ
echo "$Baud_0 $Baud_1 $Baud_2 $Baud_3 $Baud_0 $Baud_1 $Baud_2 $Baud_3 $Baud_0 $Baud_1 $Baud_2 $Baud_3 $Baud_0 $Baud_1 $Baud_2 $Baud_3" > $proc/Baud
echo "$AccCode_0 $AccCode_1 $AccCode_2 $AccCode_3 $AccCode_4 $AccCode_5 $AccCode_6 $AccCode_7 $AccCode_8 $AccCode_9 $AccCode_10 $AccCode_11 $AccCode_12 $AccCode_13 $AccCode_14 $AccCode_15" > $proc/AccCode
echo "$AccMask_0 $AccMask_1 $AccMask_2 $AccMask_3 $AccMask_4 $AccMask_5 $AccMask_6 $AccMask_7 $AccMask_8 $AccMask_9 $AccMask_10 $AccMask_11 $AccMask_12 $AccMask_13 $AccMask_14 $AccMask_15" > $proc/AccMask
echo "$Timeout_0 $Timeout_1 $Timeout_2 $Timeout_3 $Timeout_4 $Timeout_5 $Timeout_6 $Timeout_7 $Timeout_8 $Timeout_9 $Timeout_10 $Timeout_11 $Timeout_12 $Timeout_13 $Timeout_14 $Timeout_15" > $proc/Timeout
echo "$Outc_0 $Outc_1 $Outc_2 $Outc_3 $Outc_4 $Outc_5 $Outc_6 $Outc_7 $Outc_8 $Outc_9 $Outc_10 $Outc_11 $Outc_12 $Outc_13 $Outc_14 $Outc_15" > $proc/Outc
