Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/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";
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
$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);