Skip to content

Commit f8ed524

Browse files
committed
Add induction furnace IOC
1 parent 518963d commit f8ed524

File tree

17 files changed

+398
-0
lines changed

17 files changed

+398
-0
lines changed

INDFURN/INDFURN-IOC-01App/Makefile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
TOP = ..
2+
include $(TOP)/configure/CONFIG
3+
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *src*))
4+
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Src*))
5+
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *db*))
6+
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Db*))
7+
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *protocol*))
8+
include $(TOP)/configure/RULES_DIRS
9+
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/* INDFURN-IOC-01Main.cpp */
2+
/* Author: Marty Kraimer Date: 17MAR2000 */
3+
4+
#include <stddef.h>
5+
#include <stdlib.h>
6+
#include <stddef.h>
7+
#include <string.h>
8+
#include <stdio.h>
9+
10+
#include "epicsExit.h"
11+
#include "epicsThread.h"
12+
#include "iocsh.h"
13+
14+
int main(int argc,char *argv[])
15+
{
16+
if(argc>=2) {
17+
iocsh(argv[1]);
18+
epicsThreadSleep(.2);
19+
}
20+
iocsh(NULL);
21+
epicsExit(0);
22+
return(0);
23+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
TOP=../..
2+
# This file should do very little - it's purpose is to set the APPNAME and then load build.mak
3+
4+
# this definition is used in build.mak
5+
APPNAME=INDFURN-IOC-01
6+
7+
# If we are ###-IOC-01 leave this as is, if we are ###-IOC-02 or higher change to ###-IOC-01 and delete build.mak from this directory
8+
# there should only be a single build.mak for all IOCs of a given family and it is located in the ###-IOC-01 directory
9+
include $(TOP)/INDFURN-IOC-01App/src/build.mak
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
TOP=../..
2+
3+
include $(TOP)/configure/CONFIG
4+
#----------------------------------------
5+
# ADD MACRO DEFINITIONS AFTER THIS LINE
6+
#=============================
7+
8+
### NOTE: there should only be one build.mak for a given IOC family and this should be located in the ###-IOC-01 directory
9+
10+
#=============================
11+
# Build the IOC application INDFURN-IOC-01
12+
# We actually use $(APPNAME) below so this file can be included by multiple IOCs
13+
14+
PROD_IOC = $(APPNAME)
15+
# INDFURN-IOC-01.dbd will be created and installed
16+
DBD += $(APPNAME).dbd
17+
18+
# INDFURN-IOC-01.dbd will be made up from these files:
19+
$(APPNAME)_DBD += base.dbd
20+
## ISIS standard dbd ##
21+
$(APPNAME)_DBD += devSequencer.dbd
22+
$(APPNAME)_DBD += icpconfig.dbd
23+
$(APPNAME)_DBD += pvdump.dbd
24+
$(APPNAME)_DBD += asSupport.dbd
25+
$(APPNAME)_DBD += devIocStats.dbd
26+
$(APPNAME)_DBD += caPutLog.dbd
27+
$(APPNAME)_DBD += utilities.dbd
28+
## Stream device support ##
29+
$(APPNAME)_DBD += stream.dbd
30+
$(APPNAME)_DBD += asyn.dbd
31+
$(APPNAME)_DBD += drvAsynSerialPort.dbd
32+
$(APPNAME)_DBD += drvAsynIPPort.dbd
33+
$(APPNAME)_DBD += calcSupport.dbd
34+
## add other dbd here ##
35+
#$(APPNAME)_DBD += xxx.dbd
36+
37+
# Add all the support libraries needed by this IOC
38+
## ISIS standard libraries ##
39+
$(APPNAME)_LIBS += seqDev seq pv
40+
$(APPNAME)_LIBS += devIocStats
41+
$(APPNAME)_LIBS += pvdump $(MYSQLLIB) easySQLite sqlite
42+
$(APPNAME)_LIBS += caPutLog
43+
$(APPNAME)_LIBS += icpconfig pugixml
44+
$(APPNAME)_LIBS += autosave
45+
$(APPNAME)_LIBS += utilities pcre libjson zlib
46+
## Stream device libraries ##
47+
$(APPNAME)_LIBS += stream
48+
$(APPNAME)_LIBS += pcre
49+
$(APPNAME)_LIBS += asyn
50+
## Add other libraries here ##
51+
$(APPNAME)_LIBS += calc
52+
#$(APPNAME)_LIBS += xxx
53+
54+
# INDFURN-IOC-01_registerRecordDeviceDriver.cpp derives from INDFURN-IOC-01.dbd
55+
$(APPNAME)_SRCS += $(APPNAME)_registerRecordDeviceDriver.cpp
56+
57+
# Build the main IOC entry point on workstation OSs.
58+
$(APPNAME)_SRCS_DEFAULT += $(APPNAME)Main.cpp
59+
$(APPNAME)_SRCS_vxWorks += -nil-
60+
61+
# Add support from base/src/vxWorks if needed
62+
#$(APPNAME)_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary
63+
64+
# Finally link to the EPICS Base libraries
65+
$(APPNAME)_LIBS += $(EPICS_BASE_IOC_LIBS)
66+
67+
#===========================
68+
69+
include $(TOP)/configure/RULES
70+
#----------------------------------------
71+
# ADD RULES AFTER THIS LINE
72+

INDFURN/Makefile

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Makefile at top of application tree
2+
TOP = .
3+
include $(TOP)/configure/CONFIG
4+
5+
# Directories to build, any order
6+
DIRS += configure
7+
DIRS += $(wildcard *Sup)
8+
DIRS += $(wildcard *App)
9+
DIRS += $(wildcard *Top)
10+
DIRS += $(wildcard iocBoot)
11+
12+
# The build order is controlled by these dependency rules:
13+
14+
# All dirs except configure depend on configure
15+
$(foreach dir, $(filter-out configure, $(DIRS)), \
16+
$(eval $(dir)_DEPEND_DIRS += configure))
17+
18+
# Any *App dirs depend on all *Sup dirs
19+
$(foreach dir, $(filter %App, $(DIRS)), \
20+
$(eval $(dir)_DEPEND_DIRS += $(filter %Sup, $(DIRS))))
21+
22+
# Any *Top dirs depend on all *Sup and *App dirs
23+
$(foreach dir, $(filter %Top, $(DIRS)), \
24+
$(eval $(dir)_DEPEND_DIRS += $(filter %Sup %App, $(DIRS))))
25+
26+
# iocBoot depends on all *App dirs
27+
iocBoot_DEPEND_DIRS += $(filter %App,$(DIRS))
28+
29+
# Add any additional dependency rules here:
30+
31+
include $(TOP)/configure/RULES_TOP

INDFURN/configure/CONFIG

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# CONFIG - Load build configuration data
2+
#
3+
# Do not make changes to this file!
4+
5+
# Allow user to override where the build rules come from
6+
RULES = $(EPICS_BASE)
7+
8+
# RELEASE files point to other application tops
9+
include $(TOP)/configure/RELEASE
10+
-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).Common
11+
ifdef T_A
12+
-include $(TOP)/configure/RELEASE.Common.$(T_A)
13+
-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).$(T_A)
14+
endif
15+
16+
CONFIG = $(RULES)/configure
17+
include $(CONFIG)/CONFIG
18+
19+
# Override the Base definition:
20+
INSTALL_LOCATION = $(TOP)
21+
22+
# CONFIG_SITE files contain other build configuration settings
23+
include $(TOP)/configure/CONFIG_SITE
24+
-include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).Common
25+
ifdef T_A
26+
-include $(TOP)/configure/CONFIG_SITE.Common.$(T_A)
27+
-include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
28+
endif
29+

INDFURN/configure/CONFIG_SITE

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# CONFIG_SITE
2+
3+
# Make any application-specific changes to the EPICS build
4+
# configuration variables in this file.
5+
#
6+
# Host/target specific settings can be specified in files named
7+
# CONFIG_SITE.$(EPICS_HOST_ARCH).Common
8+
# CONFIG_SITE.Common.$(T_A)
9+
# CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
10+
11+
# CHECK_RELEASE controls the consistency checking of the support
12+
# applications pointed to by the RELEASE* files.
13+
# Normally CHECK_RELEASE should be set to YES.
14+
# Set CHECK_RELEASE to NO to disable checking completely.
15+
# Set CHECK_RELEASE to WARN to perform consistency checking but
16+
# continue building even if conflicts are found.
17+
CHECK_RELEASE = YES
18+
19+
# Set this when you only want to compile this application
20+
# for a subset of the cross-compiled target architectures
21+
# that Base is built for.
22+
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-ppc32
23+
24+
# To install files into a location other than $(TOP) define
25+
# INSTALL_LOCATION here.
26+
#INSTALL_LOCATION=</absolute/path/to/install/top>
27+
28+
# Set this when the IOC and build host use different paths
29+
# to the install location. This may be needed to boot from
30+
# a Microsoft FTP server say, or on some NFS configurations.
31+
#IOCS_APPL_TOP = </IOC's/absolute/path/to/install/top>
32+
33+
# For application debugging purposes, override the HOST_OPT and/
34+
# or CROSS_OPT settings from base/configure/CONFIG_SITE
35+
#HOST_OPT = NO
36+
#CROSS_OPT = NO
37+
38+
# These allow developers to override the CONFIG_SITE variable
39+
# settings without having to modify the configure/CONFIG_SITE
40+
# file itself.
41+
-include $(TOP)/../CONFIG_SITE.local
42+
-include $(TOP)/configure/CONFIG_SITE.local
43+

INDFURN/configure/Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
TOP=..
2+
3+
include $(TOP)/configure/CONFIG
4+
5+
TARGETS = $(CONFIG_TARGETS)
6+
CONFIGS += $(subst ../,,$(wildcard $(CONFIG_INSTALLS)))
7+
8+
include $(TOP)/configure/RULES

INDFURN/configure/RELEASE

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# RELEASE - Location of external support modules
2+
#
3+
# IF YOU MAKE ANY CHANGES to this file you must subsequently
4+
# do a "gnumake rebuild" in this application's top level
5+
# directory.
6+
#
7+
# The build process does not check dependencies against files
8+
# that are outside this application, thus you should do a
9+
# "gnumake rebuild" in the top level directory after EPICS_BASE
10+
# or any other external module pointed to below is rebuilt.
11+
#
12+
# Host- or target-specific settings can be given in files named
13+
# RELEASE.$(EPICS_HOST_ARCH).Common
14+
# RELEASE.Common.$(T_A)
15+
# RELEASE.$(EPICS_HOST_ARCH).$(T_A)
16+
#
17+
# This file is parsed by both GNUmake and an EPICS Perl script,
18+
# so it can ONLY contain definitions of paths to other support
19+
# modules, variable definitions that are used in module paths,
20+
# and include statements that pull in other RELEASE files.
21+
# Variables may be used before their values have been set.
22+
# Build variables that are NOT used in paths should be set in
23+
# the CONFIG_SITE file.
24+
25+
# Variables and paths to dependent modules:
26+
#MODULES = /path/to/modules
27+
#MYMODULE = $(MODULES)/my-module
28+
29+
# If using the sequencer, point SNCSEQ at its top directory:
30+
#SNCSEQ = $(MODULES)/seq-ver
31+
32+
# EPICS_BASE should appear last so earlier modules can override stuff:
33+
EPICS_BASE = C:/Instrument/Apps/EPICS/base/master
34+
35+
# Set RULES here if you want to use build rules from somewhere
36+
# other than EPICS_BASE:
37+
#RULES = $(MODULES)/build-rules
38+
39+
# These allow developers to override the RELEASE variable settings
40+
# without having to modify the configure/RELEASE file itself.
41+
-include $(TOP)/../RELEASE.local
42+
-include $(TOP)/configure/RELEASE.local
43+
44+
# Macros required for basic ioc/stream device
45+
ACCESSSECURITY=$(SUPPORT)/AccessSecurity/master
46+
ASUBFUNCTIONS=$(SUPPORT)/asubFunctions/master
47+
ASYN=$(SUPPORT)/asyn/master
48+
AUTOSAVE=$(SUPPORT)/autosave/master
49+
CALC=$(SUPPORT)/calc/master
50+
CAPUTLOG=$(SUPPORT)/caPutLog/master
51+
DEVIOCSTATS=$(SUPPORT)/devIocStats/master
52+
ICPCONFIG=$(SUPPORT)/icpconfig/master
53+
LIBJSON=$(SUPPORT)/libjson/master
54+
MYSQL=$(SUPPORT)/MySQL/master
55+
ONCRPC=$(SUPPORT)/oncrpc/master
56+
PCRE=$(SUPPORT)/pcre/master
57+
PUGIXML=$(SUPPORT)/pugixml/master
58+
PVDUMP=$(SUPPORT)/pvdump/master
59+
SNCSEQ=$(SUPPORT)/seq/master
60+
SQLITE=$(SUPPORT)/sqlite/master
61+
SSCAN=$(SUPPORT)/sscan/master
62+
STREAMDEVICE=$(SUPPORT)/StreamDevice/master
63+
UTILITIES=$(SUPPORT)/utilities/master
64+
ZLIB=$(SUPPORT)/zlib/master
65+
66+
# optional extra local definitions here
67+
-include $(TOP)/configure/RELEASE.private
68+
69+
include $(TOP)/../../../ISIS_CONFIG
70+
-include $(TOP)/../../../ISIS_CONFIG.$(EPICS_HOST_ARCH)
71+
72+
# IOC-specific support module
73+
INDFURN=$(SUPPORT)/indfurn/master

INDFURN/configure/RULES

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# RULES
2+
3+
include $(CONFIG)/RULES
4+
5+
# Library should be rebuilt because LIBOBJS may have changed.
6+
$(LIBNAME): ../Makefile

INDFURN/configure/RULES.ioc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#RULES.ioc
2+
include $(CONFIG)/RULES.ioc

INDFURN/configure/RULES_DIRS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#RULES_DIRS
2+
include $(CONFIG)/RULES_DIRS

INDFURN/configure/RULES_TOP

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#RULES_TOP
2+
include $(CONFIG)/RULES_TOP
3+

INDFURN/iocBoot/Makefile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
TOP = ..
2+
include $(TOP)/configure/CONFIG
3+
DIRS += $(wildcard *ioc*)
4+
DIRS += $(wildcard as*)
5+
include $(CONFIG)/RULES_DIRS
6+
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
TOP = ../..
2+
include $(TOP)/configure/CONFIG
3+
#ARCH = windows-x64
4+
ARCH = $(EPICS_HOST_ARCH)
5+
TARGETS = envPaths dllPath.bat relPaths.sh runIOC.bat runIOC.sh
6+
include $(TOP)/configure/RULES.ioc
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" ?>
2+
<ioc_config xmlns:xi="http://www.w3.org/2001/XInclude">
3+
<config_part>
4+
<ioc_desc>This is a template description</ioc_desc>
5+
<ioc_details>These are template details</ioc_details>
6+
<macros>
7+
<macro name="PORT" pattern="^COM[0-9]+$" description="Serial COM port" />
8+
</macros>
9+
<pvsets>
10+
</pvsets>
11+
</config_part>
12+
</ioc_config>

0 commit comments

Comments
 (0)