Skip to content
Snippets Groups Projects
100idPyCRL.pl 3.15 KiB
Newer Older
mwyman's avatar
mwyman committed
#!/usr/bin/perl

use strict;
use FindBin;

###################################################################
# Set Environment Variables to be used by the rest of the scripts #
###################################################################

BEGIN
{
	# Top level of the IOC folder
	$ENV{TOP} = "$FindBin::RealBin/../../..";
	
	
	# IOC prefix name, used to find the correct iocBoot directory and executable
	$ENV{IOC_NAME}="100idPyCRL";
	
	
	
	#########################
	# IOC Executable Config #
	#########################
	
	# Name of the IOC executable file
	#! $ENV{IOC_BINARY}="$ENV{IOC_NAME}";
	$ENV{IOC_BINARY}="100idPy";
	
	
	# Top-level bin directory for the IOC
	$ENV{IOC_BIN_DIR}="$ENV{TOP}/bin";
	#! $ENV{IOC_BIN_DIR}="/home/username/epics/synApps/support/100idPy/bin";
	#! $ENV{IOC_BIN_DIR}="/home/username/epics/synApps/support/module/iocs/exampleIOC/bin";
	
	# Architecture the IOC is built under
	$ENV{EPICS_HOST_ARCH} //= "rhel9-x86_64";
	#! $ENV{EPICS_HOST_ARCH} //= "linux-x86_64";
	#! $ENV{EPICS_HOST_ARCH}="linux-x86_64-debug";
	
	
	# Full path to the IOC executable
	$ENV{IOC_BIN_PATH}="$ENV{IOC_BIN_DIR}/$ENV{EPICS_HOST_ARCH}/$ENV{IOC_BINARY}";
	
	
	
	###########################
	# IOC Startup File Config #
	###########################
	
	# Startup Script for the IOC to run
	$ENV{IOC_STARTUP_FILE}="st.cmd.Linux";
	#! $ENV{IOC_STARTUP_FILE}="st.cmd.Cygwin";
	#! $ENV{IOC_STARTUP_FILE}="st.cmd.Win32";
	#! $ENV{IOC_STARTUP_FILE}="st.cmd.Win64";
	
	
	# Directory that contains the startup script
	$ENV{IOC_STARTUP_DIR}="$ENV{TOP}/iocBoot/ioc$ENV{IOC_NAME}";
	#! $ENV{IOC_STARTUP_DIR}="/home/username/epics/ioc/synApps/100idPy/iocBoot/ioc100idPyCRL";
	
	
	# Full path to the startup file
	$ENV{IOC_STARTUP_FILE_PATH}="$ENV{IOC_STARTUP_DIR}/$ENV{IOC_STARTUP_FILE}";
	
	
	
	##########################
	# Config For This Script #
	##########################
	
	# Directory that contains all the command modules to be loaded
	$ENV{IOC_COMMAND_DIR}="$ENV{IOC_STARTUP_DIR}/softioc/commands";
	#! $ENV{IOC_COMMAND_DIR}="/home/username/epics/ioc/synApps/100idPy/iocBoot/ioc100idPyCRL/softioc/commands";
	
	
	$ENV{IOC_CMD}="$ENV{IOC_BIN_PATH} $ENV{IOC_STARTUP_FILE_PATH}";
	
	# Required shell commands
	$ENV{SCREEN}="screen";
	$ENV{TELNET}="telnet";
	$ENV{PROCSERV}="/APSshare/bin/procServ";
	$ENV{NETCAT}="nc";
	$ENV{ECHO}="echo";
	
	##########################
	# Config for PyDeviece   #
	##########################
	
	#If PyDevice is to be used, source script needs to be set here
	$ENV{PYDEV_STARTUP}="$ENV{IOC_STARTUP_DIR}/100idPyCRL_startup_env";
mwyman's avatar
mwyman committed
	$ENV{PYDEV_IOC_CMD}="source $ENV{PYDEV_STARTUP}; $ENV{IOC_CMD}";
}


use Env;
use File::Spec;
use Module::Loaded;
use List::Util;

use lib "$IOC_COMMAND_DIR";
use _info;
use _commands;


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

my $GET_SCREEN_PID=1;

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

if (! -d $ENV{IOC_COMMAND_DIR})
{
	print("Error: IOC command directory ($ENV{IOC_COMMAND_DIR}) doesn't exist.\n");
	print("IOC_COMMAND_DIR in $FindBin::RealScript needs to be corrected.\n");
	die;
}

#####################
#    Parse Input    #
#####################

_commands::call("_local", @ARGV);