Commits (2)
......@@ -7,4 +7,5 @@ data/v3/temp/
data/v3/xer/
/bin/
*.user
.vc
\ No newline at end of file
.vc
config.mk
\ No newline at end of file
[submodule "TTF0002_ttcn/LibIts"]
path = ttcn/LibIts
url = ../../LIBS/LibIts.git
branch = TTF0002
branch = cygwin
[submodule "TTF0002_ttcn/LibCommon"]
path = ttcn/LibCommon
url = ../../LIBS/LibCommon.git
branch = v1.4.0
branch = cygwin
[submodule "ttcn/modules/titan.TestPorts.HTTPmsg"]
path = ttcn/modules/titan.TestPorts.HTTPmsg/module
url = https://github.com/eclipse/titan.TestPorts.HTTPmsg.git
[submodule "ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket"]
path = ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module
url = https://github.com/eclipse/titan.TestPorts.Common_Components.Abstract_Socket.git
-include config.mk
ifeq (,$(ATS))
$(error ATS shall be defined)
endif
ifeq (,$(TOPDIR))
TOPDIR := .
endif
ifeq (,$(TTCN3_DIR))
$(error TTCN3_DIR shall be defined in config.mk)
endif
first: all
define IncludeModule
undefine sources
undefine modules
undefine includes
include $(1)/module.mk
$$(foreach S, $$(sources), $$(eval all_sources += $(1)/$$(S)))
$$(foreach I, $$(includes), $$(eval all_includes += $(1)/$$(I)))
$$(foreach M, $$(modules), $$(eval $$(call IncludeModule, $$(if $$(filter /%, $$(M)), $$(M), $(1)/$$(M)))))
endef
all_includes := $(TTCN3_DIR)/include $(TTCN3_DIR)/src $(TOPDIR)/ccsrc/Framework /usr/include/jsoncpp
defines += TITAN_RUNTIME_2 _NO_SOFTLINKS_ $(ATS)
libs += $(TTCN3_DIR)/lib/libttcn3-rt2-parallel.a -lstdc++fs
ifeq (Windows_NT,$(OS))
# Silence linker warnings.
LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc
defines += WIN32
libs += $(patsubst %, -L%/lib, $(OPENSSL_DIR))
all_includes += $(addsuffix /include, $(OPENSSL_DIR))
libs += $(WPCAP_DLL_PATH)
else
defines += LINUX
libs += -lpcap -lrt -lpthread
endif
libs += -lssl -lcrypto -lxml2 -ljsoncpp
$(eval $(call IncludeModule, $(TOPDIR)/ttcn/$(ATS)))
outdir := $(TOPDIR)/build/$(ATS)
bindir := $(TOPDIR)/bin
sources := $(sort $(all_sources))
includes := $(outdir) $(outdir)/.. $(outdir)/../asn1 $(all_includes) $(NPCAP_INCLUDE)
ifeq (Windows_NT,$(OS))
EXE=.exe
endif
ttcn_sources := $(filter %.ttcn , $(sources))
ttcn3_sources := $(filter %.ttcn3, $(sources))
asn_sources := $(filter %.asn, $(sources))
asn1_sources := $(filter %.asn1, $(sources))
tt_sources := $(ttcn_sources) $(ttcn3_sources) $(asn_sources) $(asn1_sources)
cc_sources := $(filter %.cc, $(sources))
gen_ttcn_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn, %.cc, $(ttcn_sources))))
gen_ttcn_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn, %.hh, $(ttcn_sources))))
gen_ttcn3_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn3, %.cc, $(ttcn3_sources))))
gen_ttcn3_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn3, %.hh, $(ttcn3_sources))))
gen_asn_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn, %.cc, $(asn_sources))))
gen_asn_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn, %.hh, $(asn_sources))))
gen_asn1_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn1, %.cc, $(asn1_sources))))
gen_asn1_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn1, %.hh, $(asn1_sources))))
gen_sources := $(gen_ttcn_sources) $(gen_ttcn3_sources) $(gen_asn_sources) $(gen_asn1_sources)
gen_headers := $(gen_ttcn_headers) $(gen_ttcn3_headers) $(gen_asn_headers) $(gen_asn1_headers)
gen_objects := $(patsubst %.cc, %.o, $(gen_sources))
cc_objects := $(patsubst %.cc, $(outdir)/%.o, $(cc_sources))
.PHONY: all FORCE echo
all: $(bindir) $(outdir) $(bindir)/$(ATS)$(EXE)
echo_sources:
@echo -e "$(addsuffix \n,$(all_sources))"
echo: echo_sources
@echo -e "sources:\n $(addsuffix \n, $(sources))"
@echo -e "gen_sources:\n $(addsuffix \n, $(gen_sources))"
@echo -e "gen_objects:\n $(addsuffix \n, $(gen_objects))"
@echo -e "cc_objects:\n $(addsuffix \n, $(cc_objects))"
@echo -e "includes:\n $(addsuffix \n, $(includes))"
@echo -e "defines: $(addsuffix \n, $(defines))"
clean:
rm -f $(outdir)/$(ATS)$(EXE) $(gen_objects) $(gen_sources) $(gen_headers) $(cc_objects) $(outdir)/.generate $(outdir)/../libItsAsn.so
# rm -f $(outdir)/asn1/*.so $(outdir)/asn1/*.o $(outdir)/asn1/*.c $(outdir)/asn1/*.h $(outdir)/asn1/Makefile.am.libasncodec
regen: force_regen $(outdir)/.generate
force_regen:
rm -f $(outdir)/.generate
$(outdir) $(bindir):
mkdir -p $@
$(bindir)/$(ATS)$(EXE): $(outdir)/../asn1/libItsAsn.a $(gen_objects) $(cc_objects)
g++ -g -O0 -o $@ $(LDFLAGS) $(gen_objects) $(cc_objects) $(outdir)/../asn1/libItsAsn.a $(libs)
$(gen_objects) :%.o :%.cc
g++ -g -O0 -c $(addprefix -D, $(defines)) $(addprefix -I, $(includes)) -o $@ $<
$(cc_objects) : $(outdir)/%.o : %.cc
mkdir -p $(dir $@)
g++ -g -O0 -c $(addprefix -D, $(defines)) $(addprefix -I, $(includes)) -o $@ $<
#$(gen_sources):
# $(TTCN3_DIR)/bin/compiler -n -e -L -R -U none -o $(outdir) $(tt_sources)
$(gen_sources): $(outdir)/.generate
$(outdir)/.generate: Makefile $(tt_sources)
$(TTCN3_DIR)/bin/compiler -d -e -f -g -l -L -R -U none -x -X -o $(outdir) $(tt_sources)
touch $@
$(bindir)/libItsAsn.so: $(outdir)/asn1/libItsAsn.so
cp -f $< $@
$(outdir)/../asn1/libItsAsn.a: FORCE
mkdir -p $(outdir)/../asn1
$(MAKE) -C $(outdir)/../asn1 -f ../../asn1/Makefile
$(foreach S, $(ttcn_sources), $(eval $(outdir)/$(notdir $(patsubst %.ttcn, %.cc, $(S))): $(S)))
$(foreach S, $(ttcn3_sources), $(eval $(outdir)/$(notdir $(patsubst %.ttcn3, %.cc, $(S))): $(S)))
$(foreach S, $(asn_sources), $(eval $(outdir)/$(notdir $(patsubst %.asn, %.cc, $(S))): $(S)))
$(foreach S, $(asn1_sources), $(eval $(outdir)/$(notdir $(patsubst %.asn1, %.cc, $(S))): $(S)))
......@@ -170,6 +170,7 @@ Procedure:
libpcap-dev
libgcrypt-dev
libncurses5-dev
libjsoncpp-dev
libssl-dev
libtool-bin
libtool
......@@ -208,7 +209,7 @@ Procedure:
- Clone the ETSI ITS protocols project into $HOME/dev folder
```sh
$ git clone
$ git clone git clone --recurse-submodules -b TTF0002_Its --single-branch https://forge.etsi.org/gitlab/ITS/ITS.git ./TTF0002_Its
```
- Update your default environment with the content of the script $HOME/dev/TTF0002_Its/scripts/devenv.bash.ubuntu
......@@ -249,11 +250,15 @@ Pre-requisites:
- Your are logged as 'etsi' or 'vagrant' user
- Procedure using TITAN command line (only):
- Open several SSH session (PuTTY...)
- Change to the directory ~/dev/TTF0002_Its/src/AtsCAM/objs
- Change to the directory ~/dev/TTF0002_Its/
- Modify the file config.mk according to your system:
- On Linux, comment all the lines using the '#' character
- On Windows, update the path accordingly
- Build the test suite AtsCAM using the following command:
```sh
$ ../bin/cam_generate_makefile.bash
$ export ATS=AtsCAM # The Abstract Test Suite you wnat to build, such as AtsDENM, AtsSecurity...
$ make
...
```
......@@ -264,11 +269,12 @@ $ ../bin/cam_generate_makefile.bash
- To run the test suitem, execute the following command:
```sh
$ ../bin/run-all.bash
$ cd ~/dev/TTF0002_Its/scripts
$ ../run_all.bash
...
```
- The log files are located in ../logs folder. You can edit them using any editor or using the Eclipse TITAN log plugins
- The log files are located in ../logs/AtsCAM folder for this example. You can edit them using any editor or using the Eclipse TITAN log plugins
## How to generate ITS test certificates
......@@ -291,8 +297,8 @@ To build the tool, run the 'make' command in each of the following folders:
After applying the previous clause, change to the folder '~/dev/TTF0002_Its/data/v3' and execute 'make' command:
```
cd ~/dev/TTF0002_Its/data/v3
make
$ cd ~/dev/TTF0002_Its/data/v3
$ make
```
The certificates will be located in the folder '~/dev/TTF0002_Its/data/v3/certificates'.
......
......@@ -6,13 +6,13 @@
##########################################################
# The name of the library
ASN_LIBRARY = libItsAsn.so
ASN_LIBRARY = libItsAsn.a
# ASN.1 files to be included in the library
ASN_FILES = CAM/CAM_PDU_Descriptions.asn \
DENM/DENM_PDU_Descriptions.asn \
IS/ETSI_TS_103301/IVIM_PDU_Descriptions.asn \
IS/ETSI_TS_103301/MAPEM_PDU_Descriptions.asn \
IS/ETSI_TS_103301/RTCM_PDU_Descriptions.asn \
IS/ETSI_TS_103301/RTCMEM_PDU_Descriptions.asn \
IS/ETSI_TS_103301/SPATEM_PDU_Descriptions.asn \
IS/ETSI_TS_103301/SREM_PDU_Descriptions.asn \
IS/ETSI_TS_103301/SSEM_PDU_Descriptions.asn \
......@@ -21,16 +21,18 @@ ASN_FILES = CAM/CAM_PDU_Descriptions.asn \
IS/ISO_TS_14906/EfcDsrcApplication.asn \
IS/ISO_TS_14906/EfcDsrcGeneric.asn \
IS/ISO_TS_17419/CITSapplMgmtIDs.asn \
IS/ISO_TS_19091/original/AddGrpC.asn \
IS/ISO_TS_19091/original/DSRC.asn \
IS/ISO_TS_19091/original/REGION.asn \
IS/ISO_TS_19091/AddGrpC.asn \
IS/ISO_TS_19091/AddGrpC_noCircular.asn \
IS/ISO_TS_19091/DSRC.asn \
IS/ISO_TS_19091/DSRC_REGION_noCircular.asn \
IS/ISO_TS_19091/REGION.asn \
IS/ISO_TS_19321/IVI.asn \
IS/ISO_TS_24534-3/ElectronicRegistrationIdentificationVehicleDataModule.asn \
ITS-Container/ITS_Container.asn \
Security/1609Dot2/IEEE1609dot2.asn \
Security/1609Dot2/IEEE1609dot2BaseTypes.asn \
Security/TS102921/EtsiTs102941BaseTypes.asn \
Security/TS102921/EtsiTs102941MessagesCA.asn \
Security/TS102921/EtsiTs102941MessagesCa.asn \
Security/TS102921/EtsiTs102941TrustLists.asn \
Security/TS102921/EtsiTs102941TypesAuthorization.asn \
Security/TS102921/EtsiTs102941TypesAuthorizationValidation.asn \
......@@ -50,12 +52,12 @@ ASN1C:=asn1c
#ASN1C_PATH =
ifneq (, $(ASN1C_PATH))
OS=$(shell uname)
ifneq ("CYGWIN_NT-6.1", $(OS))
ASN1C:=$(ASN1C_PATH)/asn1c/asn1c -S $(ASN1C_PATH)/skeletons
else
ASN1C:=$(ASN1C_PATH)/asn1c/asn1c.exe -S $(ASN1C_PATH)/skeletons
endif
# OS=$(shell uname)
ifneq (Windows_NT,$(OS))
ASN1C:=$(ASN1C_PATH)/asn1c/asn1c -S $(ASN1C_PATH)/skeletons
else
ASN1C:=$(ASN1C_PATH)/asn1c/asn1c.exe -S $(ASN1C_PATH)/skeletons
endif
endif
ifeq (,$(ASN_DIR))
......@@ -98,17 +100,18 @@ ASN_CONVERTER_SOURCES := \
CONVERTER_OBJS=${ASN_CONVERTER_SOURCES:.c=.o}
CFLAGS += $(ASN_MODULE_CFLAGS) -DPDU=CAM -DASN_PDU_COLLECTION -fPIC -I.
all: Makefile $(CONVERTER)
all: Makefile $(ASN_LIBRARY)
$(LIB_MAKEFILE): $(addprefix $(ASN_DIR)/, $(ASN_FILES))
$(ASN1C) -gen-PER -gen-OER $(addprefix -pdu=,$(PDU)) -fcompound-names $^
$(ASN1C) -no-gen-example $(addprefix -pdu=,$(PDU)) -fcompound-names $^
-for n in $(PATCHES); do git apply "$(SCRIPT_DIR)/$$n"; done
$(CONVERTER): $(ASN_LIBRARY) $(CONVERTER_OBJS)
$(CC) $(CFLAGS) -o $@ $(CONVERTER_OBJS) $(ASN_LIBRARY) $(LIBS)
$(ASN_LIBRARY): ${ASN_MODULE_SRCS:.c=.o}
$(CC) $(CFLAGS) -o $@ $^ -shared $(LDFLAGS) $(LIBS)
ar rcs $@ $^
# $(CC) $(CFLAGS) -o $@ $^ -shared $(LDFLAGS) $(LIBS)
.SUFFIXES:
.SUFFIXES: .c .o
......
File mode changed from 100755 to 100644
sources := asn1_recode_per.cc
includes := .
sources := \
LibItsGeoNetworking_Encdec.cc \
LibItsIpv6OverGeoNetworking_Encdec.cc \
LibItsSecurity_Encdec.cc \
LibItsBtp_Encdec.cc \
# LibItsBtp_Encdec.cc \
# LibItsHttp_Encdec.cc \
# LibItsMapemSpatem_Encdec.cc \
# LibItsPki_Encdec.cc \
# LibItsSremSsem_Encdec.cc
ifeq (AtsCAM, $(ATS))
sources += LibItsCam_Encdec.cc
endif
ifeq (AtsDENM, $(ATS))
sources += LibItsDenm_Encdec.cc
endif
ifeq (AtsIVIM, $(ATS))
sources += LibItsIvim_Encdec.cc
endif
ifeq (AtsRSUsSimulator, $(ATS))
sources += \
LibItsCam_Encdec.cc \
LibItsDenm_Encdec.cc \
LibItsHttp_Encdec.cc \
LibItsMapemSpatem_Encdec.cc \
LibItsSremSsem_Encdec.cc \
LibItsRtcmem_Encdec.cc \
LibItsIvim_Encdec.cc \
LibItsPki_Encdec.cc
endif
ifeq (AtsSecurity, $(ATS))
sources += \
LibItsCam_Encdec.cc \
LibItsDenm_Encdec.cc
endif
ifeq (AtsSremSsem, $(ATS))
sources += LibItsSremSsem_Encdec.cc
endif
ifeq (AtsMapemSpatem, $(ATS))
sources += LibItsMapemSpatem_Encdec.cc
endif
ifeq (AtsRtcmem, $(ATS))
sources += LibItsRtcmem_Encdec.cc
endif
ifeq (AtsPki, $(ATS))
sources := \
LibItsGeoNetworking_Encdec.cc \
LibItsIpv6OverGeoNetworking_Encdec.cc \
LibItsSecurity_Encdec.cc \
LibItsPki_Encdec.cc \
LibItsHttp_Encdec.cc
endif
# LibItsPki_Encdec.cc
# LibItsEvcsn_Encdec.cc \
......@@ -20,6 +20,8 @@
#include "security_services.hh"
#include "geospacial.hh"
#include <openssl/ec.h>
#include <openssl/ecdsa.h>
......@@ -28,8 +30,10 @@
namespace LibItsSecurity__Functions
{
static geospacial g;
// FIXME Unify code with security_services
/**
* \fn OCTETSTRING fx_hashWithSha256(const OCTETSTRING& p__toBeHashedData);
* \brief Produces a 256-bit (32-bytes) hash value
......@@ -1452,7 +1456,7 @@ namespace LibItsSecurity__Functions
return TRUE;
}
// group geodesic
// group geospacial
/* * \brief Check that given polygon doesn't have neither self-intersections nor holes.
* \param p_region Polygonal Region
......
sources := LibItsCommon_externals.cc \
LibItsGeoNetworking_externals.cc \
LibItsIpv6OverGeoNetworking_externals.cc \
LibItsSecurity_externals.cc
ifeq (AtsRSUsSimulator, $(ATS))
sources += AtsRSUsSimulator_externals.cc
endif
# LibItsDcc_externals.cc \
sources := src/base_time.cc \
src/codec_stack_builder.cc \
src/converter.cc \
src/layer_factory.cc \
src/params.cc
includes += .
\ No newline at end of file
#include "AdapterControlPort.hh"
#ifdef _NO_SOFTLINKS_
/* to be used when built without generating softlinks to the working directory */
//#include "CALM_ports/AdapterControlPort_CALM.partC"
#include "CAM_ports/AdapterControlPort_CAM.partC"
#include "DENM_ports/AdapterControlPort_DENM.partC"
#include "GN_ports/AdapterControlPort_GN.partC"
#include "IVIM_ports/AdapterControlPort_IVIM.partC"
#include "MapemSpatem_ports/AdapterControlPort_MapemSpatem.partC"
#include "SremSsem_ports/AdapterControlPort_SremSsem.partC"
#include "Rtcmem_ports/AdapterControlPort_Rtcmem.partC"
//#include "V2G_ports/AdapterControlPort_V2G.partC"
#else //_NO_SOFTLINKS_
#include "AdapterControlPort_CAM.partC"
#include "AdapterControlPort_DENM.partC"
#include "AdapterControlPort_IVIM.partC"
#include "AdapterControlPort_MapemSpatem.partC"
#include "AdapterControlPort_SremSsem.partC"
#include "AdapterControlPort_Rtcmem.partC"
#include "AdapterControlPort_GN.partC"
/*
#include "AdapterControlPort_IVIM.partC"
#include "AdapterControlPort_MapemSpatem.partC"
#include "AdapterControlPort_SremSsem.partC"
#include "AdapterControlPort_Evcsn.partC"
*/
//#include "AdapterControlPort_V2G.partC"
#endif //_NO_SOFTLINKS_
#ifndef AdapterControlPort_HH
#define AdapterControlPort_HH
//#include "TRI_mapper_API.hh"
#ifdef _NO_SOFTLINKS_
/* to be used when built without generating softlinks to the working directory */
//#include "CALM_ports/AdapterControlPort_CALM.partH"
#include "CAM_ports/AdapterControlPort_CAM.partH"
#include "DENM_ports/AdapterControlPort_DENM.partH"
#include "GN_ports/AdapterControlPort_GN.partH"
#include "IVIM_ports/AdapterControlPort_IVIM.partH"
#include "MapemSpatem_ports/AdapterControlPort_MapemSpatem.partH"
#include "SremSsem_ports/AdapterControlPort_SremSsem.partH"
#include "Rtcmem_ports/AdapterControlPort_Rtcmem.partH"
//#include "V2G_ports/AdapterControlPort_V2G.partH"
#ifdef LibItsCam__TestSystem_HH
#include "CAM_ports/AdapterControlPort_CAM.hh"
#endif
#ifdef LibItsDenm__TestSystem_HH
#include "DENM_ports/AdapterControlPort_DENM.hh"
#endif
#ifdef LibItsGeoNetworking__TestSystem_HH
#include "GN_ports/AdapterControlPort_GN.hh"
#endif
#ifdef LibItsIvim__TestSystem_HH
#include "IVIM_ports/AdapterControlPort_IVIM.hh"
#endif
#ifdef LibItsMapemSpatem__TestSystem_HH
#include "MapemSpatem_ports/AdapterControlPort_MapemSpatem.hh"
#endif
#ifdef LibItsSremSsem__TestSystem_HH
#include "SremSsem_ports/AdapterControlPort_SremSsem.hh"
#endif
#ifdef LibItsRtcmem__TestSystem_HH
#include "Rtcmem_ports/AdapterControlPort_Rtcmem.hh"
#endif
#ifdef LibItsV2G__TestSystem_HH
#include "V2G_ports/AdapterControlPort_V2G.hh"
#endif
//#ifdef LibItsPki__TestSystem_HH
//#include "Pki_ports/AdapterControlPort_Pki.hh"
//#endif
#else //_NO_SOFTLINKS_
#include "AdapterControlPort_CAM.partH"
#include "AdapterControlPort_DENM.partH"
#include "AdapterControlPort_IVIM.partH"
#include "AdapterControlPort_MapemSpatem.partH"
#include "AdapterControlPort_SremSsem.partH"
#include "AdapterControlPort_Rtcmem.partH"
#include "AdapterControlPort_GN.partH"
#ifdef LibItsCam__TestSystem_HH
#include "AdapterControlPort_CAM.hh"
#endif
#ifdef LibItsDenm__TestSystem_HH
#include "AdapterControlPort_DENM.hh"
#endif
#ifdef LibItsIvim__TestSystem_HH
#include "AdapterControlPort_IVIM.hh"
#endif
#ifdef LibItsMapemSpatem__TestSystem_HH
#include "AdapterControlPort_MapemSpatem.hh"
#endif
#ifdef LibItsSremSsem__TestSystem_HH
#include "AdapterControlPort_SremSsem.hh"
#endif
#ifdef LibItsRtcmem__TestSystem_HH
#include "AdapterControlPort_Rtcmem.hh"
#endif
#ifdef LibItsGeoNetworking__TestSystem_HH
#include "AdapterControlPort_GN.hh"
#endif
/*
#include "AdapterControlPort_IVIM.partH"
#include "AdapterControlPort_MapemSpatem.partH"
......@@ -32,4 +63,3 @@
*/
//#include "AdapterControlPort_V2G.partH"
#endif //_NO_SOFTLINKS_
#endif
#include "UpperTesterPort_BTP.hh"
//=============================================================================
namespace LibItsBtp__TestSystem {
......
//=============================================================================
#ifndef UpperTesterPort_BTP_HH
#define UpperTesterPort_BTP_HH
#include "LibItsBtp_TestSystem.hh"
namespace LibItsBtp__TestSystem {
......@@ -30,3 +32,4 @@ protected:
};
} /* end of namespace */
#endif
sources := BtpPort.cc UpperTesterPort_BTP.cc
includes := .
......@@ -4,6 +4,7 @@
#include "registration.hh"
#include "cam_layer.hh"
#include "AdapterControlPort_CAM.hh"
//=============================================================================
namespace LibItsCam__TestSystem {
......
#ifndef AdapterControlPort_CAM_HH
#define AdapterControlPort_CAM_HH
//=============================================================================
#include "LibItsCam_TestSystem.hh"
......@@ -32,3 +34,4 @@ protected:
};
} // end of namespace
#endif
\ No newline at end of file
#include "uppertester_cam_layer_factory.hh"
#include "loggers.hh"
#include "UpperTesterPort_CAM.hh"
//=============================================================================
namespace LibItsCam__TestSystem {
......
#ifndef UpperTesterPort_CAM_HH
#define UpperTesterPort_CAM_HH
#include "layer.hh"
#include "params.hh"
......@@ -47,3 +50,4 @@ namespace LibItsCam__TestSystem {
};
} /* end of namespace */
#endif