#
# ADVANTECH Intellio industrial Communication Multiport Card Make Node Utility.
#
#
#    Usage : pclmknod
#

#!/bin/sh

MAXBOX=4       # max 4 board
MAXPORTS=8     # 8 ports for each module

BOARDPORTS=`expr $MAXBOX \* $MAXPORTS`    # 8 * 4 = 32 ports for each board

#Tty naming : ttyA[box/module][port]
TTYNAME1=ttyA
TTYNAME2=ttyB
TTYNAME3=ttyC
TTYNAME4=ttyD

#Callout device naming : ttya[box/module][port]
CUANAME1=ttya
CUANAME2=ttyb
CUANAME3=ttyc
CUANAME4=ttyd

echo "PCL Intellio Communication Multiport Board Make Node Utility."
echo "Please input major number(Enter for default=31):"
read MAJOR
if [ ! $MAJOR ] ; then
    MAJOR=31
fi
echo "major=" $MAJOR
echo ""

echo "Please input callout device major number(Enter for default=37):"
read CUMAJOR
if [ ! $CUMAJOR ] ; then
    CUMAJOR=37
fi
echo "major=" $CUMAJOR
echo ""


echo "Please input total board number (1-4, Enter for default=1):"
read BOARDS
if [ ! $BOARDS ] ; then
    BOARDS=1
fi
echo "boards=" $BOARDS
echo ""

#
#make special nod for "pclload"
#
echo "Make special node..."
[ -f /dev/pcl c $MAJOR 128 ] || rm -f /dev/pcl
mknod /dev/pcl c $MAJOR 128
chmod a+wx /dev/pcl

#
# make node loop
#
echo "Make tty device..."

board=0
for szCard in $TTYNAME1 $TTYNAME2 $TTYNAME3 $TTYNAME4  ;
do
    box=1
    while [ $box -le $MAXBOX ]
    do
        port=1
        while [ $port -le $MAXPORTS ]
        do
            id=`expr $board \* $BOARDPORTS`

            id1=`expr $box \* $MAXPORTS`
            id1=`expr $id1 - $MAXPORTS`
            id1=`expr $id1 + $port`
            id1=`expr $id1 - 1`

            id=`expr $id + $id1`
            # id = board * 32 + (box-1)*8 + (port-1)

            [ -c /dev/$szCard$box$port ] && rm -rf /dev/$szCard$box$port
            echo /dev/$szCard$box$port $id
            mknod /dev/$szCard$box$port c $MAJOR $id
	    chmod a+wx /dev/$szCard$box$port
            port=`expr $port + 1`
        done
        box=`expr $box + 1`
    done
    board=`expr $board + 1`

    if [ $board -ge $BOARDS ]
    then
        break 
    fi
done


board=0
for szCard in $CUANAME1 $CUANAME2 $CUANAME3 $CUANAME4  ;
do
    box=1
    while [ $box -le $MAXBOX ]
    do
        port=1
        while [ $port -le $MAXPORTS ]
        do
            id=`expr $board \* $BOARDPORTS`

            id1=`expr $box \* $MAXPORTS`
            id1=`expr $id1 - $MAXPORTS`
            id1=`expr $id1 + $port`
            id1=`expr $id1 - 1`

            id=`expr $id + $id1`
            # id = board * 32 + (box-1)*8 + (port-1)

            [ -c /dev/$szCard$box$port ] && rm -rf /dev/$szCard$box$port
            echo /dev/$szCard$box$port $id
            mknod /dev/$szCard$box$port c $CUMAJOR $id
	    chmod a+wx /dev/$szCard$box$port
            port=`expr $port + 1`
        done
        box=`expr $box + 1`
    done
    board=`expr $board + 1`

    if [ $board -ge $BOARDS ]
    then
        exit
    fi
done


