#!/bin/sh

PASS="$1"

replace_ln()
{
        TMPR="/tmp/setconfig.$$"
        if [ -f "$3" ]
        then
                cat "$3" | grep -v "$1" > "$TMPR"
        else
                touch "$TMPR"
        fi
        echo "$2" >> "$TMPR"
        cp "$TMPR" "$3"
        rm -f "$TMPR"
}

get_config()
{
SLIC_CHANNEL_COUNT=`sed -n /SLIC_CHANNEL_COUNT/p < config.target |sed -e 's/SLIC_CHANNEL_COUNT=//g'`
SLIC_MODULES=`sed -n /SLIC_MODULES/p < config.target |sed -e 's/SLIC_MODULES=//g'`
MAX_VOICE_CHANNELS=`sed -n /MAX_VOICE_CHANNELS/p < config.target |sed -e 's/MAX_VOICE_CHANNELS=//g'`
SLIC_VENDOR=`sed -n /SLIC_VENDOR/p < config.target |sed -e 's/SLIC_VENDOR=//g'`
MAX_DSP_NUM=`sed -n /MAX_DSP_NUM/p < config.target |sed -e 's/MAX_DSP_NUM=//g'`
DSP_CONFIGURATION_FILE=`sed -n /DSP_CONFIGURATION_FILE/p < config.target |sed -e 's/DSP_CONFIGURATION_FILE=//g'`
NUM_COUNTRY=`sed -n /NUM_COUNTRY/p < config.target |sed -e 's/NUM_COUNTRY=//g'`
BOARD_TARGET=`sed -n /BOARD_TARGET/p < config.target |sed -e 's/BOARD_TARGET=//g'`
DTMFRX=`sed -n /DTMFRX/p < config.target |sed -e 's/DTMFRX=//g'`
FAXMODULE=`sed -n /FAXMODULE/p < config.target |sed -e 's/FAXMODULE=//g'`
CALLER_IDTx=`sed -n /CALLER_IDTx/p < config.target |sed -e 's/CALLER_IDTx=//g'`
LOG_CIDTX=`sed -n /LOG_CIDTX/p < config.target |sed -e 's/LOG_CIDTX=//g'`
G711_PLC=`sed -n /G711_PLC/p < config.target |sed -e 's/G711_PLC=//g'`
TONE_GEN=`sed -n /TONE_GEN/p < config.target |sed -e 's/TONE_GEN=//g'`
THREEWAY_CONFERENCE=`sed -n /THREEWAY_CONFERENCE/p < config.target |sed -e 's/THREEWAY_CONFERENCE=//g'`
SPORT_CODEC=`sed -n /SPORT_CODEC/p < config.target |sed -e 's/SPORT_CODEC=//g'`
DSP0_TIME_SLOT=`sed -n /DSP0_TIME_SLOT/p < config.target |sed -e 's/DSP0_TIME_SLOT=//g'`
DSP1_TIME_SLOT=`sed -n /DSP1_TIME_SLOT/p < config.target |sed -e 's/DSP1_TIME_SLOT=//g'`
MAX_CHANNELS_ISR=`sed -n /MAX_CHANNELS_ISR/p < config.target |sed -e 's/MAX_CHANNELS_ISR=//g'`
DELAY_OPT=`sed -n /DELAY_OPT/p < config.target |sed -e 's/DELAY_OPT=//g'`
COUNTRY_NAME=`sed -n /COUNTRY_NAME/p < config.target |sed -e 's/COUNTRY_NAME=//g'`
DEBUG_ENABLED=`sed -n /DEBUG_ENABLED/p < config.target |sed -e 's/DEBUG_ENABLED=//g'`

DSP_G711_IMAGE_NAME=`sed -n /DSP_G711_IMAGE_NAME/p < config.target |sed -e 's/DSP_G711_IMAGE_NAME=//g'`
DSP_G729_IMAGE_NAME=`sed -n /DSP_G729_IMAGE_NAME/p < config.target |sed -e 's/DSP_G729_IMAGE_NAME=//g'`
DSP_G723_IMAGE_NAME=`sed -n /DSP_G723_IMAGE_NAME/p < config.target |sed -e 's/DSP_G723_IMAGE_NAME=//g'`
DYNAMIC_CODEC_DOWNLOAD=`sed -n /DYNAMIC_CODEC_DOWNLOAD/p < config.target |sed -e 's/DYNAMIC_CODEC_DOWNLOAD=//g'`

DSP_FAX_ONLY_IMAGE_NAME=`sed -n /DSP_FAX_ONLY_IMAGE_NAME/p < config.target |sed -e 's/DSP_FAX_ONLY_IMAGE_NAME=//g'`

VOX_DRIVERS_CONTROL=`sed -n /VOX_DRIVERS_CONTROL/p < config.target |sed -e 's/VOX_DRIVERS_CONTROL=//g'`

CVS_RELEASE_TAG=`sed -n /T/p < CVS/Tag |sed -e 's/T//g'`

}


set_voice_param()
{

  replace_ln "" "/* Automatically Generated during "make", don't edit his file */" include/voiceconf.h
  replace_ln "#define SLIC_MODULES" "#define SLIC_MODULES $SLIC_MODULES" include/voiceconf.h
  replace_ln "#define COUNTRY_NAME" "#define COUNTRY_NAME $COUNTRY_NAME" include/voiceconf.h
  replace_ln "#define DTMFRX" "#define DTMFRX	$DTMFRX" include/voiceconf.h
  replace_ln "#define FAXMODULE" "#define FAXMODULE	$FAXMODULE" include/voiceconf.h
  replace_ln "#define CALLER_IDTx" "#define CALLER_IDTx	$CALLER_IDTx" include/voiceconf.h
  replace_ln "#define LOG_CIDTX" "#define LOG_CIDTX	$LOG_CIDTX" include/voiceconf.h
  replace_ln "#define G711_PLC" "#define G711_PLC	$G711_PLC" include/voiceconf.h
  replace_ln "#define DYNAMIC_CODEC_DOWNLOAD" "#define DYNAMIC_CODEC_DOWNLOAD	$DYNAMIC_CODEC_DOWNLOAD" include/voiceconf.h
  replace_ln "#define DEBUG_ENABLED" "#define DEBUG_ENABLED	$DEBUG_ENABLED" include/voiceconf.h
  replace_ln "#define TONE_GEN" "#define TONE_GEN	$TONE_GEN" include/voiceconf.h
  replace_ln "#define MAX_VOICE_CHANNELS" "#define MAX_VOICE_CHANNELS	$MAX_VOICE_CHANNELS" include/voiceconf.h
  replace_ln "#define MAX_CHANNELS_ISR" "#define MAX_CHANNELS_ISR	$MAX_CHANNELS_ISR" include/voiceconf.h
  replace_ln "#define MAX_DSP_NUM" "#define MAX_DSP_NUM	$MAX_DSP_NUM" include/voiceconf.h
  replace_ln "#define NUM_COUNTRY" "#define NUM_COUNTRY	$NUM_COUNTRY" include/voiceconf.h
  replace_ln "#define THREEWAY_CONFERENCE" "#define THREEWAY_CONFERENCE	$THREEWAY_CONFERENCE" include/voiceconf.h
  replace_ln "#define DELAY_OPT" "#define DELAY_OPT $DELAY_OPT" include/voiceconf.h
	
  
  replace_ln "#define SPORT_CODEC" "#define SPORT_CODEC $SPORT_CODEC" include/voiceconf.h


  if [ "$BOARD_TARGET" = "VOX200" ]; then
        replace_ln "#define DSP_CLOCK" "#define DSP_CLOCK 38.912" include/voiceconf.h
        replace_ln "#define VOX200" "#define VOX200 1" include/voiceconf.h
        replace_ln "#define VOX_VOICE" "#define VOX_VOICE 1" include/voiceconf.h
        replace_ln "#define VOX160" "#define VOX160 0" include/voiceconf.h
  fi
  if [ "$BOARD_TARGET" = "VOX160" ]; then
        replace_ln "#define VOX200" "#define VOX200 0" include/voiceconf.h
        replace_ln "#define VOX160" "#define VOX160 1" include/voiceconf.h
        replace_ln "#define VOX_VOICE" "#define VOX_VOICE 1" include/voiceconf.h
        replace_ln "#define DSP_CLOCK" "#define DSP_CLOCK 47.104" include/voiceconf.h

  fi
  if [ "$BOARD_TARGET" = "VOX150" ]; then
        replace_ln "#define DSP_CLOCK" "#define DSP_CLOCK 32.768" include/voicec
onf.h
        replace_ln "#define VOX200" "#define VOX200 1" include/voiceconf.h
        replace_ln "#define VOX_VOICE" "#define VOX_VOICE 1" include/voiceconf.h
        replace_ln "#define VOX160" "#define VOX160 0" include/voiceconf.h
  fi
  replace_ln "#define VOX_DRIVERS_CONTROL" "#define VOX_DRIVERS_CONTROL $VOX_DRIVERS_CONTROL" include/voiceconf.h
  replace_ln "#define DSP0_TIME_SLOT" "#define DSP0_TIME_SLOT $DSP0_TIME_SLOT" include/voiceconf.h
  replace_ln "#define DSP1_TIME_SLOT" "#define DSP1_TIME_SLOT $DSP1_TIME_SLOT" include/voiceconf.h
	
  replace_ln "#define DSP_G711_IMAGE_NAME" "#define DSP_G711_IMAGE_NAME \"$DSP_G711_IMAGE_NAME\"" include/voiceconf.h
  replace_ln "#define DSP_G729_IMAGE_NAME" "#define DSP_G729_IMAGE_NAME \"$DSP_G729_IMAGE_NAME\"" include/voiceconf.h
  replace_ln "#define DSP_G723_IMAGE_NAME" "#define DSP_G723_IMAGE_NAME \"$DSP_G723_IMAGE_NAME\"" include/voiceconf.h
  replace_ln "#define DSP_FAX_ONLY_IMAGE_NAME" "#define DSP_FAX_ONLY_IMAGE_NAME \"$DSP_FAX_ONLY_IMAGE_NAME\"" include/voiceconf.h
  replace_ln "#define DSP_CONFIGURATION_FILE" "#define DSP_CONFIGURATION_FILE \"$DSP_CONFIGURATION_FILE\"" include/voiceconf.h
  replace_ln "#define RELEASE_INFO" "#define RELEASE_INFO \"Software Build($CVS_RELEASE_TAG : $(date))\"" include/voiceconf.h
  
  


}

voice_setup()
{
  rm -f ../voice_setup
  ( echo "
   echo \"*********************************************************************\"
   echo \"Setting UP Voice on ADI Fusiv : "$BOARD_TARGET" \"
   echo \"  Build:  $CVS_RELEASE_TAG : $(date))  \"
   echo \"  Loading DSP Driver .....\" .
   insmod  /dsp/dspvoice.ko
   echo creating nodes voice and dsp
   mknod /dev/dsp       c   115 15
   mknod /dev/voice     c   115 16 
   ") >> ../voice_setup
}

if [ "$PASS" = "set_voice_param" ]; then
	get_config
	set_voice_param
  echo "Setting up voice package for buildroot "
  echo "Enter Linux 2.6 Kernel Build Path :"  &&  read linux_kernel_path
  replace_ln "LINUX_KERNEL_PATH"  "LINUX_KERNEL_PATH=$linux_kernel_path" config.target
	voice_setup

fi

