##############################################################################

#
#	mkflash -- construct an entire NETtel flash image.
#
#	(C) Copyright 1999-2000, Greg Ungerer (gerg@moreton.com.au)
#

##############################################################################

#
#	The starting MAC address... 00-D0-CF-XX-XX-XX
#	This strings is in octal below, ugh...
#	If setting up 2 ethernet devices then set MAC1 as well.
#
MAC0="\000\320\317\000\001\040"
MAC1="\000\320\317\000\001\041"

#
#	Define the files to use.
#
FLASH=images/flash.bin
BOOT=boot/boot.bin
IMAGE=images/imagez.bin

##############################################################################

usage()
{
	echo "usage: mkflash"
	exit 1
}

##############################################################################

#
#	Check for any args...
#
if [ $# -gt 0 ]
then
	usage
fi

#
#       Check where to see if we're in a cygwin /w32 environment
#       if so, use the 'zeros' program, instead of /dev/zero 
#
if [ `set | grep -i mach|grep -i -c cygwin` -ge 1 ]
then
        CYGWIN=1
else
        CYGWIN=0
fi

#
#	All boards get 2 MAC addresses at first.
#
DUALETHER=1

#
#	Boot loader first.
#
cat $BOOT > $FLASH
SIZE=`wc $FLASH | awk '{ print $3}'`
PAD=`expr 16384 - $SIZE`
echo "BOOT: flash size=$SIZE padding=$PAD"
if [ $CYGWIN -eq 1 ]
then
        zeros $PAD >> $FLASH
else
	dd if=/dev/zero count=1 bs=$PAD >> $FLASH 2> /dev/null
fi

#
#	Command line args next.
#
echo -e "CONSOLE=/dev/null\000\c" >> $FLASH
SIZE=`wc $FLASH | awk '{ print $3}'`
PAD=`expr 24576 - $SIZE`
echo "ARGS: flash size=$SIZE padding=$PAD"
if [ $CYGWIN -eq 1 ]
then
        zeros $PAD >> $FLASH
else
	dd if=/dev/zero count=1 bs=$PAD >> $FLASH 2> /dev/null
fi

#
#	MAC address next.
#
echo -e "$MAC0\c" >> $FLASH
[ "$DUALETHER" = 1 ] && echo -e "$MAC1\c" >> $FLASH
SIZE=`wc $FLASH | awk '{ print $3}'`
PAD=`expr 65536 - $SIZE`
echo "MAC:  flash size=$SIZE padding=$PAD"
if [ $CYGWIN -eq 1 ]
then
        zeros $PAD >> $FLASH
else
	dd if=/dev/zero count=1 bs=$PAD >> $FLASH 2> /dev/null
fi

#
#	Leave space for the file system.
#
SIZE=65536
PAD=0
echo "CFS:  flash size=$SIZE padding=$PAD"
if [ $CYGWIN -eq 1 ]
then
        zeros $SIZE >> $FLASH
else
	dd if=/dev/zero count=1 bs=$SIZE >> $FLASH 2> /dev/null
fi

#
#	Linux and file-system image.
#
cat $IMAGE >> $FLASH
SIZE=`wc $FLASH | awk '{ print $3}'`
####PAD=`expr 2097152 - $SIZE`
PAD=`expr 1048576 - $SIZE`
echo "IMG:  flash size=$SIZE padding=$PAD"
if [ $CYGWIN -eq 1 ]
then
        zeros $PAD >> $FLASH
else
	dd if=/dev/zero count=1 bs=$PAD >> $FLASH 2> /dev/null
fi

cp $FLASH /tftpboot
exit 0