#!/bin/sh
#
#
#    Copyright (c) 1996-2000 Brocade Communications Systems, Inc.
#    All rights reserved.
#
#
# NAME
#      diagsilkworm - set or display silkworm mode
# 
# SYNOPSIS
#      diagsilkworm [ mode | -show ]
# 
# AVAILABILITY
#      admin
# 
# DESCRIPTION
#      This command enables silkworm mode if mode value is non-zero
#      and disables the silkworm mode if mode value is 0. The  mode
#      is  saved  in  flash memory and stays in that mode until the
#      next execution of diagsilkworm. The mode becomes  active  as
#      soon  as  this  command  is  executed. It does not require a
#      reboot to take effect.
# 
#      Silkworm mode when enabled notifies the diagnostics environ-
#      ment and test methods that the tests are running in silkworm
#      mode.  For proper operation FCSW mode must also be disabled.
# 
# OPTIONS
#      mode      Specify  the  silkworm mode value. 0 means to dis-
#                able silkworm mode, any other  value  will  enable
#                show time mode.
# 
#      -show     If  specified  or  no  mode  is given, the current
#                silkworm mode will be displayed.
# 
# EXAMPLES
#      > diagsilkworm -show
#      Silkworm mode is 0 (Disabled).
# 
# NOTE
#      This mode may not be used by  burnin  or  POST  scripts  for
#      multi-blade  systems  because it is a switch-wide configura-
#      tion.
# 

#
#
# Load library -- must be first.
#
home="/fabos/share"
util="diagcommon.sh"
ok=0
for f in "./$util" "$FABOSHOME/share/$util" "$home/$util" ; do
	if [ -r $f ] ; then
		. $f
		ok=1
		break;
	fi
done
if [ $ok -ne 1 ] ; then
	echo "Error -- could not locate $util"
	exit 3
fi

#
# Program customization
#

config_string="diag.mode.silkworm"	# config string to update
config_name="Silkworm mode"		# User name of config.
config_default=0		# default value
config_mode=$INTEGER		# config mode

syntax="`/bin/basename $0` [ mode \| -show ]" ; export syntax
bool_false="Disabled" ; export bool_false
bool_true="Enabled" ; export bool_true

#
# diagsilkworm()
#
checkForShow "$config_name" "$config_string" "$config_mode" "$config_default" $1
val=`getValue $1`
if [ $? != 0 ] ; then exit 3 ; fi

if [ "$val" -ne "0" ]
then
	val=1
fi

if [ "$val" -ne "0" ]
then
     res=$bool_true
else
     res=$bool_false
fi
cur_val=`getConfig $config_string $config_mode $config_default`
if [ "$cur_val" != "$val" ]
then
	setConfig $config_string $config_mode $val
	updateConfig
	echo "$config_name is now $val ($res)."
else
	echo "$config_name is still $val ($res)."
fi
exit 0
