From 6577a9a379674928eba5a99177ba153e84bbe67a Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 9 Mar 2023 10:27:51 +0100 Subject: [PATCH 01/12] Remove guile: we don't use it --- cmake_targets/tools/build_helper | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index a32f9afb26..257af59f66 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -594,19 +594,10 @@ check_install_oai_software() { case "$(get_distribution_release)" in "ubuntu18.04") add_cmake_repo - specific_packages="libgcrypt11-dev guile-2.0-dev" - ;; - "ubuntu20.04") - specific_packages="guile-2.0-dev" - ;; - "ubuntu21.04") - specific_packages="guile-2.0-dev" - ;; - "ubuntu22.04") - specific_packages="guile-2.2-dev" + specific_packages="libgcrypt11-dev" ;; "debian11") - specific_packages="guile-2.2-dev libz-dev" + specific_packages="libz-dev" ;; esac $SUDO apt-get install -y \ @@ -649,7 +640,6 @@ check_install_oai_software() { gcc \ gcc-c++ \ git \ - guile-devel \ atlas-devel \ pkgconfig \ libconfig-devel \ From 9dc3b26c1b1d4ec3ea838353c8bc1622d66822bc Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 9 Mar 2023 10:28:04 +0100 Subject: [PATCH 02/12] Remove libxslt: we don't use it --- CMakeLists.txt | 3 --- cmake_targets/tools/build_helper | 2 -- docker/Dockerfile.phySim.rhel8.2 | 2 -- 3 files changed, 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 571c8f05fc..a83475149c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,9 +40,6 @@ include(FindPkgConfig) pkg_search_module(LIBXML2 libxml-2.0 REQUIRED) include_directories(${LIBXML2_INCLUDE_DIRS}) -pkg_search_module(LIBXSLT libxslt REQUIRED) -include_directories(${LIBXSLT_INCLUDE_DIRS}) - pkg_search_module(OPENSSL openssl REQUIRED) include_directories(${OPENSSL_INCLUDE_DIRS}) diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index 257af59f66..c0bbba2973 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -618,7 +618,6 @@ check_install_oai_software() { libsctp-dev \ libssl-dev \ libtool \ - libxslt1-dev \ libtasn1-6-dev \ patch \ openssl \ @@ -649,7 +648,6 @@ check_install_oai_software() { lksctp-tools-devel \ libtasn1 \ libtool \ - libxslt-devel \ ninja-build \ make \ openssl \ diff --git a/docker/Dockerfile.phySim.rhel8.2 b/docker/Dockerfile.phySim.rhel8.2 index 6abbd52832..0264c78731 100644 --- a/docker/Dockerfile.phySim.rhel8.2 +++ b/docker/Dockerfile.phySim.rhel8.2 @@ -84,8 +84,6 @@ COPY --from=phy-sim-build \ /lib64/libforms.so.2 \ /lib64/libblas.so.3 \ /lib64/liblapack.so.3 \ - /lib64/libexslt.so.0 \ - /lib64/libxslt.so.1 \ /usr/lib64/libasan.so.5 \ /oai-ran/cmake_targets/ran_build/build/libdfts.so \ /oai-ran/cmake_targets/ran_build/build/libldpc.so \ From 096857664903dbc3e96051ca53b2818d53b7bd2f Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 9 Mar 2023 10:30:25 +0100 Subject: [PATCH 03/12] Remove libtasn1: we don't need it --- cmake_targets/tools/build_helper | 2 -- 1 file changed, 2 deletions(-) diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index c0bbba2973..79d0d9673e 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -618,7 +618,6 @@ check_install_oai_software() { libsctp-dev \ libssl-dev \ libtool \ - libtasn1-6-dev \ patch \ openssl \ xxd @@ -646,7 +645,6 @@ check_install_oai_software() { libgcrypt-devel \ lksctp-tools \ lksctp-tools-devel \ - libtasn1 \ libtool \ ninja-build \ make \ From 4d16f1f88382357c41a65d9954acd0f883530f14 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Fri, 10 Mar 2023 15:15:25 +0100 Subject: [PATCH 04/12] Remove libxml2: we don't use it --- CMakeLists.txt | 7 ------- 1 file changed, 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a83475149c..b602939345 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,9 +37,6 @@ include("cmake_targets/macros.cmake") ################################### include(FindPkgConfig) -pkg_search_module(LIBXML2 libxml-2.0 REQUIRED) -include_directories(${LIBXML2_INCLUDE_DIRS}) - pkg_search_module(OPENSSL openssl REQUIRED) include_directories(${OPENSSL_INCLUDE_DIRS}) @@ -2159,7 +2156,6 @@ target_link_libraries(lte-softmodem PRIVATE ${NAS_UE_LIB} ITTI SIMU SIMU_ETH -Wl,--end-group z dl) -target_link_libraries(lte-softmodem PRIVATE ${LIBXML2_LIBRARIES}) target_link_libraries(lte-softmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp) target_link_libraries(lte-softmodem PRIVATE ${T_LIB}) target_link_libraries(lte-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs) @@ -2222,7 +2218,6 @@ target_link_libraries(lte-uesoftmodem PRIVATE ${NAS_UE_LIB} ITTI ${ATLAS_LIBRARIES} -Wl,--end-group z dl) -target_link_libraries(lte-uesoftmodem PRIVATE ${LIBXML2_LIBRARIES}) target_link_libraries(lte-uesoftmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${ATLAS_LIBRARIES}) target_link_libraries(lte-uesoftmodem PRIVATE ${T_LIB}) target_link_libraries(lte-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs) @@ -2264,7 +2259,6 @@ target_link_libraries(nr-softmodem PRIVATE x2ap f1ap m2ap m3ap e1ap -Wl,--end-group z dl) -target_link_libraries(nr-softmodem PRIVATE ${LIBXML2_LIBRARIES}) target_link_libraries(nr-softmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${ATLAS_LIBRARIES}) target_link_libraries(nr-softmodem PRIVATE ${T_LIB}) target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs) @@ -2327,7 +2321,6 @@ target_link_libraries(nr-uesoftmodem PRIVATE ITTI ${ATLAS_LIBRARIES} LIB_5GNAS_GNB LIB_NAS_SIMUE ${NAS_SIM_LIB} SIMU SIMU_ETH -Wl,--end-group z dl) -target_link_libraries(nr-uesoftmodem PRIVATE ${LIBXML2_LIBRARIES}) target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${ATLAS_LIBRARIES}) target_link_libraries(nr-uesoftmodem PRIVATE ${T_LIB}) target_link_libraries(nr-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs) From c1394b70975e3fedfca2665d6147cae267f65afe Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 9 Mar 2023 10:35:16 +0100 Subject: [PATCH 05/12] Remove old EPC documentation --- openair3/DOCS/Latex/EPC/EPC.tex | 751 ------------------------------- openair3/DOCS/Latex/EPC/Makefile | 30 -- 2 files changed, 781 deletions(-) delete mode 100644 openair3/DOCS/Latex/EPC/EPC.tex delete mode 100644 openair3/DOCS/Latex/EPC/Makefile diff --git a/openair3/DOCS/Latex/EPC/EPC.tex b/openair3/DOCS/Latex/EPC/EPC.tex deleted file mode 100644 index 97e4f52565..0000000000 --- a/openair3/DOCS/Latex/EPC/EPC.tex +++ /dev/null @@ -1,751 +0,0 @@ -\documentclass[a4paper,oneside]{report} -\usepackage{pgfplots} -\ifx\HCode\UnDef\else\def\pgfsysdriver{pgfsys-tex4ht.def}\fi -\usepackage{verbatim} -\usepackage{listings} -\usepackage{tikz,graphicx} -\usepackage{caption} -\usepackage{float} -\usepackage{hyperref} -\usepackage{subfiles} -\usepackage{nomencl} -\usepackage{chngcntr} -\makenomenclature - -\usepackage{makeidx} -\makeindex - -\counterwithout{figure}{chapter} - -\usetikzlibrary{external,calc,trees,positioning,arrows,chains,shapes.geometric,% -decorations.pathreplacing,decorations.pathmorphing,shapes,% -matrix,fit,shapes.symbols,backgrounds,fit} -\captionsetup[figure]{labelformat=simple} - -\renewcommand{\figurename}{Figure} -% Returns three nodes: The argument, and the projections of the argument on the left and right borders of the bounding box -\newcommand{\extendnode}[1]{ - (#1) - ($(current bounding box.north east)!(#1)!(current bounding box.south east)$) - ($(current bounding box.north west)!(#1)!(current bounding box.south west)$) -} - -\usetikzlibrary{calc,trees,positioning,arrows,chains,shapes.geometric,% -decorations.pathreplacing,decorations.pathmorphing,shapes,% -matrix,shapes.symbols,backgrounds,fit,intersections} - -\title{OAI EPC current development} -\author{Sebastien ROUX\\Eurecom\\sebastien.roux@eurecom.fr} - -\definecolor{javared}{rgb}{0.6,0,0} % for strings -\definecolor{javagreen}{rgb}{0.25,0.5,0.35} % comments -\definecolor{ckeyw}{rgb}{0,0,0.8} % keywords -\definecolor{ccomment}{rgb}{0.6,0.6,0.6} % javadoc - -\lstset{ - language=C, - basicstyle=\ttfamily, - keywordstyle=\color{ckeyw}\bfseries, - stringstyle=\color{javared}, - commentstyle=\color{ccomment}, - morecomment=[s][\color{ccomment}]{/**}{*/}, - numbers=left, - numberstyle=\tiny\color{black}, - stepnumber=1, - numbersep=10pt, - tabsize=4, - showspaces=false, - showstringspaces=false, - breaklines -} - - -\tikzset{ - table nodes/.style={ - rectangle, - rounded corners=0.6mm, - draw=black, - align=center, - minimum height=7mm, - minimum width=22mm, - text depth=0.5ex, - text height=2ex, - % inner xsep=0pt, - outer sep=0pt, - }, - table/.style={ - matrix of nodes, - % row sep=-\pgflinewidth, - % column sep=-\pgflinewidth, - rectangle, - nodes={ - table nodes - }, - execute at empty cell={\node[draw=none]{};} - }, - cps/.style={ - draw=black, - fill=blue!20, - rounded corners=0.6mm, - }, - ups/.style={ - draw=black, - fill=yellow!30, - rounded corners=0.6mm, - }, - stdlinux/.style={ - draw=black, - fill=green!10, - rounded corners=0.6mm, - }, - rect/.style={ - rectangle, - draw, - }, - schritt/.style={ - draw, - rounded corners, - fill=blue!20, - inner xsep=2em, - }, - t0/.style={draw,fill=blue!20}, - t1/.style={draw,fill=blue!40}, - background/.style={ - draw, - fill=yellow!30, - align=center, - dashed, - }, - background2/.style={ - draw, - fill=green!15, - align=center, - }, - connector/.style={ - -latex, - font=\scriptsize - }, - rectangle connector/.style={ - connector, - to path={(\tikztostart) -| (\tikztotarget) }, - pos=0.5 - }, - rectangle connector/.default=-2cm, - straight connector/.style={ - connector, - to path=--(\tikztotarget) \tikztonodes - }, - queue/.style={ - draw, - fill=yellow!30, - cylinder, - aspect=0.7, - minimum height=1cm, - minimum width=0.7cm - }, -} -\renewcommand{\nomname}{List of Abbreviations} -\renewcommand{\thefigure}{\Alph{figure}} - -\begin{document} -\maketitle -\tableofcontents -\printnomenclature[2cm] - -\chapter*{MME and S+P-Gateway} \stepcounter{chapter} -\addcontentsline{toc}{chapter}{MME and S+P-Gateway} - -% \nomenclature{MME}{Mobility Management Entity} -% \nomenclature{S-GW}{Serving Gateway} -% \nomenclature{P-GW}{PDN Gateway} -\begin{figure}[H] -\begin{center} -\begin{tikzpicture} -\tikzstyle{every node}=[font=\footnotesize] -\matrix (table) [row sep=0.5cm, column sep={3.2cm,between origins}, table,text width=3mm,name=table] { - & & &\\ - & & &\\ - & & &\\ - & & &\\ - & & &\\ -}; -\node(MMEAPP)[cps,draw,fit=(table-1-1)(table-1-2),table nodes]{MME Application}; -\node(SPGW)[cps,draw,fit=(table-1-3)(table-1-4),table nodes]{S+P-GW Application}; -\node(NAS)[cps,draw,fit=(table-2-2),table nodes]{NAS}; -\node(S6A)[dashed,cps,draw,fit=(table-3-1),table nodes]{S6a/Diameter}; -\node(S1AP)[cps,draw,fit=(table-3-2),table nodes]{S1-MME/S1AP}; -\node(S1U)[ups,draw,fit=(table-3-3),table nodes]{S1-U/GTPU}; -\node(SGI)[dashed,ups,draw,fit=(table-3-4),table nodes]{SGi}; -\node(SCTP)[stdlinux,draw,fit=(table-4-1)(table-4-2),table nodes]{SCTP}; -\node(UDP)[stdlinux,draw,fit=(table-4-3),table nodes]{UDP}; -\node(IP)[stdlinux,draw,fit=(table-5-1)(table-5-2)(table-5-3)(table-5-4),table nodes]{IP}; - -\draw[<->, dashed, draw=red] (MMEAPP) -- node(arrow1)[above, align=center]{S11}(SPGW); -\draw[<-,dashed] (S1U) -- (SPGW.south-|S1U); -\draw[<-,dashed] (SGI) -- (SPGW.south-|SGI); -\draw[-] (S6A) -- (MMEAPP.south-|S6A); -\draw[-] (NAS) -- (MMEAPP.south-|NAS); -\draw[-] (S1AP) -- (NAS); -\draw[-] (S1U) -- (SGI); -\draw[-] (S1U) -- (UDP); -\draw[-] (S1AP) -- (SCTP.north-|S1AP); -\draw[-] (S6A) -- (SCTP.north-|S6A); -\draw[-] (SCTP) -- (IP.north-|SCTP); -\draw[-] (UDP) -- (IP.north-|UDP); -\draw[-] (SGI) -- (IP.north-|SGI); -\draw[-] (MMEAPP.south) |- (S1AP.west); - -\draw($(table.north west) + (-2mm,1mm)$) rectangle ($(table.south east) + (2mm,-1mm)$); - -\node[cps, minimum width=5mm,minimum height=5mm,below=of IP.south west,anchor=west](l1){}; -\node[right=2mm of l1](ct1) {Control Plane}; -\node[ups,minimum width=5mm,minimum height=5mm,below=0.3cm of l1](l2){}; -\node[below=0.3cm of ct1, right=2mm of l2](ct2) {User Plane}; -\node[stdlinux,minimum width=5mm,minimum height=5mm,below=0.3cm of l2](l3){}; -\node[below=0.3cm of ct2, right=2mm of l3](ct3) {Linux IP Stack}; -\draw[minimum width=5mm,minimum height=5mm,below=0.3cm of l3,<->,dashed, draw=red] -($(l3.south west) - (0,0.55cm)$) -- node(l4){} ($(l3.south east) - (0,0.55cm)$); -\node[right=2mm of l4.north east](ct4) {Abstraction link}; -\draw[minimum width=5mm,minimum height=5mm,below=0.3cm of l4,->,dashed] -($(l4.south west) - (0,0.25cm)$) -- node(l5){} ($(l4.south east) - (0,0.25cm)$); -\node[right=2mm of l5.north east](ct5) {Control}; -\node[draw,fit=(ct1)(l1)(ct2)(l2)(ct3)(l3)(ct4)(l4)(ct5)(l5)] {}; - -\end{tikzpicture} -\caption{MME and S+P-GW architecture} \label{fig:MMEoverall} -\end{center} -\end{figure} - -Figure \ref{fig:MMEoverall} shows the targeted implementation of Eurecom -EPC. - -\chapter*{S1AP layer} \stepcounter{chapter} -\addcontentsline{toc}{chapter}{S1AP layer} - -\nomenclature{S1AP}{S1 Application Protocol}S1AP layer relies on -\nomenclature{ASN.1}{Abstract Syntax Notation.1}ASN.1 messages -description. Generating C code from the specification -implies three steps: -\begin{enumerate} -\item Modify .asn files to match tools limitation. -\item Generate \nomenclature{IE}{Informations Elements}IEs with the help of the asn1c free tool. -\item Use the provided script which generates \nomenclature{PDU}{Protocol Data Unit}PDU codec\footnote{Encode/Decode}. -\end{enumerate} - -\chapter*{Inter-task interface} \stepcounter{chapter} -\addcontentsline{toc}{chapter}{Inter-task interface} - -\section{Concurrency} - -Code divided in layers should be able to be executed in parallel to use the full -\nomenclature{CPU}{Control Processing Unit}CPUs power. We can achieve better performance -by using some mechanisms that runs part of code in parallel on UNIX platforms: -\begin{itemize} -\item Multi-process: no link between processes, usage of sockets or pipes is mandatory. -\item Forks: code is duplicated and data are stored in different spaces. -\item Threads: only code is duplicated, data space is shared between processes -\end{itemize} -Data synchronization is the first issue to think about when using such mechanisms. - -\section{Overall description} - -A single \nomenclature{API}{Application Programming Interface}API -(called ITTI\footnote{InTer-Task Interface}) is used to manage messages -exchanged between the tasks which are running on separate threads. -This will lead in better usage of multi-core environments. -\begin{figure}[h] - \begin{center} - \begin{tikzpicture} - \node[](t1) { Task A }; - \node[below=of t1,yshift=7mm,font=\tiny](s1) { send msg to task }; - \node[queue,rotate=90,below=of t1.south,anchor=top](c1) {}; - \node[right=of t1,xshift=15mm](t2) { Task B }; - \node[below=of t2,yshift=7mm,font=\tiny](r2) { recv msg from task }; - \node[queue,rotate=90,below=of t2.south,anchor=top](c2) {}; - \node[dashed,fit=(c1)(t1)(s1),draw](T1){}; - \node[dashed,fit=(c2)(t2)(r2),draw](T2){}; - \node[draw](ITTI) at ($(T1)!0.5!(T2) + (0, -2.3)$){ITTI interface}; - \draw[->] (T1) |- (ITTI); - \draw[->] (ITTI.east) -| (c2.bottom); - \draw[->] (c2.east) -- (r2); - \node[queue,rotate=90,minimum width=5mm,minimum height=7mm,right=of c2,anchor=top,yshift=-15mm](c3) {}; - \node[dashed,rectangle,minimum width=5mm,minimum height=5mm,draw,below=7mm of c3,anchor=east](c4) {}; - \node[right=4mm of c3.shape center](x3){Message queue}; - \node[right=4mm of c4.center](x4){Thread}; - \node[draw,fit=(c3)(x3)(x4)(c4)](T4){}; - \end{tikzpicture} - \caption{Overall process} \label{fig:Overall process} - \end{center} -\end{figure} -Figure \ref{fig:Overall process} describes the basic fonctionnement of the inter-task interface. -A message sent from -Task A is en-queued to the message queue belonging to the target task. Note that -tasks can send messages to themselves. Another API (See Figure \ref{fig:Broadcasting process}) defines broadcast messaging -where any task can send a broadcast message to every other task. -\begin{figure}[H] - \begin{center} - \begin{tikzpicture} - \node[](t1) { Task A }; - \node[below=of t1,yshift=7mm,font=\tiny](s1) { send broadcast msg }; - \node[queue,rotate=90,below=of t1.south,anchor=top](c1) {}; - - \node[right=of t1,xshift=35mm](t2) { Task B }; - \node[below=of t2,yshift=7mm,font=\tiny](r2) { recv msg from task }; - \node[queue,rotate=90,below=of t2.south,anchor=top](c2) {}; - - \node[right=of t2,xshift=15mm](tn) { Task N }; - \node[below=of tn,yshift=7mm,font=\tiny](rn) { recv msg from task }; - \node[queue,rotate=90,below=of tn.south,anchor=top](cn) {}; - \node[dashed,fit=(c1)(t1)(s1),draw](T1){}; - \node[dashed,fit=(c2)(t2)(r2),draw](T2){}; - \node[dashed,fit=(cn)(tn)(rn),draw](TN){}; - - \node[](ITTI) at ($(T2)!0.5!(TN)$){...}; - \node[draw](ITTI) at ($(T1)!0.5!(T2) + (0, -2.3)$){ITTI interface}; - \draw[->] (T1) |- (ITTI); - \draw[->] (ITTI.east) -| (c2.bottom); - \draw[->] (ITTI.east) -| (cn.bottom); - \draw[->] (c2.east) -- (r2); - \draw[->] (cn.east) -- (rn); - \node[queue,rotate=90,minimum width=5mm,minimum height=7mm,below=23mm of T1](c3) {}; - \node[dashed,rectangle,minimum width=5mm,minimum height=5mm,draw,below=7mm of c3,anchor=east](c4) {}; - \node[right=4mm of c3.shape center](x3){Message queue}; - \node[right=4mm of c4.center](x4){Thread}; - \node[draw,fit=(c3)(x3)(x4)(c4)](T4){}; - \end{tikzpicture} - \caption{Broadcasting process} \label{fig:Broadcasting process} - \end{center} -\end{figure} -Once a task received a new message and if the task is in sleep mode (i.e. not handling -any message), the task is waken up and the message is de-queued. We can imagine a limit -in number of parallel tasks, for example N+1 CPU's. Architectures using hyper-threading -mechanism can have this value extended to 2 x CPU's. -Every task is running in a separated pthread, awaiting for new messages to handle. - -\section{Signals from kernel} - -Handling of signals from kernel is the more critical part as a signal can be raised -at any moment and will interrupt one of the running thread. Used signals should be restricted -to a single task that will handle them (using the POSIX sigmask function) . Moreover, it isn't -thread-safe to use mutexes inside a signal handler, a synchronization flag should be used to -notify the signal handler task. This task will then send the appropriate message -to the right task. For example, handling of signals can be done in the main thread or by a background task -scheduled periodically. -To overcome these issues, sigtimedwait and sigwaitinfo API functions can be used -to wait for a signal to happen. Signals will be received in the thread context, as far as -other threads block these signals. - -\section{Priority handling} - -Usage of message prioritization enables tasks to send critical messages with a faster -delivery time regarding other messages en-queued for the target task. -For now only seven priority levels can be applied when defining tasks: -\begin{itemize} -\item TASK\_PRIORITY\_MAX -\item TASK\_PRIORITY\_MAX\_LEAST -\item TASK\_PRIORITY\_MED\_PLUS -\item TASK\_PRIORITY\_MED -\item TASK\_PRIORITY\_MED\_LEAST -\item TASK\_PRIORITY\_MIN\_PLUS -\item TASK\_PRIORITY\_MIN -\end{itemize} -For now message priority does not involve any suitable scheduler: every time a message is de-queued, -message priority of other messages is incremented by one. - -\section{Message scheduling} -Currently, there is no software limit on the maximum number of threads executed in parallel. -When a task sends a message, it is en-queued in the right message queue, belonging to -the target task. The queue is a double-linked list. A mutex prevents other tasks -from modifying this queue while a task is en-queueing or removing a message. - -\section{Message definition} -Messages are defined using a single macro that adds the message to the ids enumeration -and maps data of the message to the union of messages. -\begin{lstlisting} -MESSAGE_DEF(S1AP_SCTP_NEW_MESSAGE_IND, TASK_PRIORITY_MED, S1apSctpNewMessageInd s1apSctpNewMessageInd) -\end{lstlisting} -and the associated data: -\begin{lstlisting} -typedef struct { - uint8_t *buffer; ///< SCTP buffer - uint32_t bufLen; ///< SCTP buffer length - int32_t assocId; ///< SCTP physical association ID - uint8_t stream; ///< Stream number on which data had been received - uint16_t instreams; ///< Number of input streams for the SCTP connection between peers - uint16_t outstreams; ///< Number of output streams for the SCTP connection between peers -} S1apSctpNewMessageInd; -\end{lstlisting} -\section{Task message handling} -\begin{lstlisting} -void* s1ap_mme_thread(void *args) { - while(1) { - /* Trying to fetch a message from the message queue. - * If the queue is empty, this function will block till a - * message is sent to the task. - */ - receive_msg(TASK_S1AP, &receivedMessage); - assert(receivedMessage != NULL); - switch(receivedMessage->messageId) { - case S1AP_SCTP_NEW_MESSAGE_IND: - { - //Some processing - } break; - default: - { - S1AP_DEBUG("Unkwnon message ID %d\n", receivedMessage->messageId); - } break; - } - free(receivedMessage); - receivedMessage = NULL; - } - return NULL; -} -\end{lstlisting} -\section{Messages logging} -\begin{figure}[H] - \begin{center} - \begin{tikzpicture} - \node[](p1) { Process }; - \node[below=5mm of p1](i1) { ITTI }; - \node[queue,right=of i1,rotate=90,anchor=base](q1) {}; - \node[draw,fit=(i1)(q1)](s1) { }; - \node[fit=(p1)(i1)(q1)(s1),draw](T1){}; - \node[queue,fill=red!30,right=of s1.east,yshift=-5mm](c1) { TCP socket }; - \node[right=of c1](r1){ Remote host n }; - \node[fit=(r1),draw](R2){}; - \node[queue,fill=red!30,right=of s1.east,yshift=5mm](c2) { TCP socket }; - \node[right=of c2](r1){ Remote host 1 }; - \node[fit=(r1),draw](R1){}; - \draw[-] (q1.base) -- ++ (1,0) -| ++ (0,.6) -- (c2.west); - \draw[-] (c2) -- (R1); - \draw[-] (q1.base) -- ++ (1,0) -| ++ (0,-.4) -- (c1.west); - \draw[-] (c1) -- (R2); - \end{tikzpicture} - \caption{Remote debugging} \label{fig:Remote debugging} - \end{center} -\end{figure} -Logging of inter-tasks messages can be setup using an external tool that will be -connected to the ITTI. Based on an array of dumped messages, they are serialized -to produce an array of byte sent over a socket. A remote tool can then decode -messages and display fields, message number, time.\\ -Additionaly, logs from standard output can be printed over the debug tool. -Multi-user debugging on only one running process can be achieved using this interface. -Messages to dump should be queued for a pure asynchronous communication between the -dump task and the remote hosts. -Another interesting feature could be to send a message to a task from an host, -allowing run-time re-configuration. -The C pre-processor can be used to generate messages definition (using -\nomenclature{XML}{Extensible Markup Language}XML templates -for example).\\ -\section{Limitations} -Data pointers belonging to one task should never be passed to another task. -The presented mechanism does not prevent a task from being locked. In such a case, -the blocked task will no more handle messages incoming from other tasks. - -\section{Benefits} -\begin{itemize} - \item Only a single entry point between all tasks (easy inter-task communication tracking and debugging). - \item Usage of message queues enables parallelization of layers. - \item Message prioritization and scheduling. - \item Protection of data between threads is done by the API at an higher level. -\end{itemize} - -\section{To do} -\begin{itemize} - \item Implement a priority based scheduler. Currently the queue of messages works as a FIFO. - \item Limit the number of tasks thread that can be run in parallel -\end{itemize} - -\chapter*{Signal API} \stepcounter{chapter} -\addcontentsline{toc}{chapter}{Signal API} - -On LINUX platforms, processes will receive signals comming from Kernel. -A single blocking entry point handles all used signals that are requested by the -MME. The main application thread is reserved to signal handling as this thread will -be blocked till a new signal is ready for handling.\\ -Using this method prevents threads from being interrupted by signals handler which -can interrupt the thread at any time and as a consequence create some misbehaving -in threads contexts. -Following is a sample list of signals handled: -\begin{itemize} - \item SIGABRT This is signal is sent to the process when abort() function is called - within the process and kill the process. Process can for example display the stack - once this signal is received. - \item SIGRTMIN This signal is used by the timer API and is raised everytime a - timer has expired. -\end{itemize} -Till now there is no way for tasks to request a new signal. - -\chapter*{Timer API} \stepcounter{chapter} -\addcontentsline{toc}{chapter}{Timer API} - -Timer API doesn't consist of a task (i.e. tasks cannot send messages to it). -Handling of UNIX signal associated to the timers is a Real-time signal with an id (SIGRTMIN) -depending on the platform. Management of this signal is done by the signal interface -and developpers should not care about handling timer signals incoming from Kernel. -Once a timer has expired the task which has requested it will receive the TIMER\_HAS\_EXPIRED -signal. -Note that timer\_id is of type long and thus its size is platform specific. - -\section{Timer types} - -\begin{itemize} - \item TIMER\_ONE\_SHOT After expiry and its associated signal, the timer is removed. - \item TIMER\_PERIODIC The timer is automatically reloaded on each expiry while the task -which has setup this timer doesn't cancel it. -\end{itemize} - -\section{Requesting a new signal} -Any task can request a new signal by invoking the following API: -\begin{lstlisting} -int timer_setup( - uint32_t interval_sec, - uint32_t interval_us, - task_id_t task_id, - timer_type_t type, - long *timer_id); -\end{lstlisting} - -Note that timer id is a unique identifier to distinguish timers. - -\section{Disable and remove a timer} - -Disable and remove the timer referenced by timer\_id. -\begin{lstlisting} -int timer_remove(long timer_id); -\end{lstlisting} - -\section{Timer signal expiry} - -Once the signal dispatcher receives the SIGRTMIN signal, a new signal is sent -to the task which has requested the timer. Contrary to signal request, timer -expiry notification is achieved using the intertask mechanism. -The signal data associated to this event follows: -\begin{lstlisting} -typedef struct { - long timer_id; -} timer_has_expired_t; -\end{lstlisting} - -\chapter*{Compiling core EPC} \stepcounter{chapter} -\addcontentsline{toc}{chapter}{Compiling core EPC} - -The core EPC software has been tested on Ubuntu 12.04LTS x86 and ia64. -Before compiling the core EPC, some packages should be installed on the platform. - -\section{Dependencies} - -\begin{itemize} - \item libsctp-dev - \item libpthread-dev - \item automake and autoconf - \item libtoolize - \item gcc, g++, make - \item flex and bison - \item openssl-dev - \item asn1c (see section \ref{sec:asn1c}) - \item freediameter (see section \ref{sec:freediameter}) and gnutls 3.1.0 - (see section \ref{sec:gnutls}) -\end{itemize} -Command-line to install the required packages: -\begin{lstlisting} -sudo apt-get install cmake make gcc flex bison \ -libsctp1 libsctp-dev libidn2-0-dev libidn11-dev \ -libmysqlclient-dev libxml2-dev swig python-dev \ -cmake-curses-gui valgrind guile-2.0-dev \ -libgmp-dev libgcrypt11-dev gdb unzip \ -libtasn1-3-dev g++ autoconf automake \ -openssl-dev -y -\end{lstlisting} - -\subsection{ASN1c} -\label{sec:asn1c} - -\subsection{gnutls} -\label{sec:gnutls} - -The GNUTls library is only used by freediameter for certificate handling and as a -consequence should be installed before trying to compile the freediameter library. -\begin{lstlisting} -wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.1/gnutls-3.1.0.tar.xz -tar -xvf gnutls-3.1.0.tar.xz -cd gnutls-3.1.0/ -./configure LDFLAGS='-L/usr/local/lib' -make -sudo make install -\end{lstlisting} -Note: when dependencies are installed in /usr/local instead of /usr, -LDFLAGS has to be overriden with the path to libraries when configuring the package: -LDFLAGS='-L/usr/local/lib'. - -\subsection{freediameter} -\label{sec:freediameter} -Freediameter is the package that provides diameter capabilities to the MME/HSS. -On top of this stack, S6A avp dictionnary is used to enable a compliant S6A interface. -\begin{lstlisting} -wget http://www.freediameter.net/hg/freeDiameter/archive/1.1.5.tar.gz -tar -xvf 1.1.5.tar.gz -cd freeDiameter-1.1.5 -patch -p1 < ../../freediameter-1.1.5.patch -mkdir build -cd build -cmake ../ -make -make test -sudo make install -\end{lstlisting} -If you want ot install this package in /usr instead of /usr/local,\\ --DCMAKE\_INSTALL\_PREFIX:PATH=/usr should be passed to cmake at configuration. - -\chapter*{System configuration} \stepcounter{chapter} -\addcontentsline{toc}{chapter}{System configuration} - -Currently there is two ways to configure the system: -\begin{itemize} - \item Compilation configuration - \item Boot-up configuration -\end{itemize} -In the first type of configuration, the single system configuration structure -is filled in with default values that can be found in the mme\_default\_values.h -header file.\\ -When Boot-up configuration is used, a configuration file is passed to the process -by using the either -c filename.conf or --conf=filename.conf. This file is then parsed -by the bison interpreter and values are replaced in the global system configuration -structure. - -\section{Global MME parameters} - -\subsection{Relative MME capacity} -Even though this parameter is not used by the MME for controlling the MME load -balancing within a pool (at least for now), the parameter has to be to forwarded -to the eNBs during association procedure. -This parameter is encoded on 8bits, acceptable values going from 0 to 255. -(Default value = 15) -\begin{lstlisting} -RELATIVE_CAPACITY = 10; -\end{lstlisting} - -\subsection{Maximum number of UE} -\label{sec:Maximum number of UE} -This limit is present here only for debug purposes and is used to restrict -the number of served UE the MME can handle. In real network another mechanism -will trigger an MME overload for certain eNBs and will restrict certain types of -traffic. Such a mechanism would imply the Relative MME capacity. -\begin{lstlisting} -MAXUE = 100; -\end{lstlisting} - -\subsection{Maximum number of eNB} -Refer to \ref{sec:Maximum number of UE}. -\begin{lstlisting} -MAXENB = 10; -\end{lstlisting} - -\subsection{Tracking Area Identity} -\nomenclature{TAI}{Tracking Area Identity}TAI is the concatenation of -\nomenclature{MCC}{Mobile Country Code}MCC, \nomenclature{MNC}{Mobile Network Code}MNC and -\nomenclature{TAC}{Tracking Area Code}TAC. -The TAC uniquely identifies a PLMN within a Cell Id. -\begin{lstlisting} -PLMN = mcc.mnc:tac; -\end{lstlisting} -Multiple values can be given using a comma separator. Example: -\begin{lstlisting} -PLMN = 208.38:0,209.130:4,208.35:8; -\end{lstlisting} - -\subsection{MME Code} -A list of a maximum of 256 values can be provided. -\nomenclature{MMEC}{MME Code}MME Code is encoded on 8 bits, -so acceptable range is: 0 to 255. -Example: -\begin{lstlisting} -MME_CODE = 30,56,1,8; -\end{lstlisting} - -\subsection{MME Group Id} -A list of a maximum of 65356 values can be provided. -\nomenclature{MMEGID}{MME Group Id}MME Group Id is encoded on 16 bits, -so acceptable range is: 0 to 65535. -Example: -\begin{lstlisting} -MME_GID = 3,4,5,30,8,9,50021; -\end{lstlisting} - -\section{Intertask parameters} -\subsection{Queue size per task} -To restrict the number of messages in queues or to detect a possible MME overload, -an upper bound for the queue size can be defined like this: -\begin{lstlisting} -ITTI_QUEUE_SIZE = 2000000; -\end{lstlisting} -This parameter is expressed in bytes. Note that all messages exchanged by tasks -have the same size. - -\section{SCTP parameters} -\subsection{IN/OUT streams number} -The number of input/output streams can be configured to limit the number of streams -used for UE-associated signalling. Note that stream with id = 0 is reserved for -non-UE associated signalling. At least two streams should be used by the MME. -(Default value = 64/64 streams) -\begin{lstlisting} -SCTP_INSTREAMS = 32; -SCTP_OUTSTREAMS = 32; -\end{lstlisting} - -\section{S1AP parameters} -\subsection{Outcome timer} -Once an outcome is sent from MME to eNB, the MME locally starts a timer to abort -the procedure and release UE contexts if the expected answer to this outcome is not -received at the expiry of this timer.\\ -This timer is expressed in seconds. (Default value = 5 seconds) -\begin{lstlisting} -S1AP_OUTCOME_TIMER = 10; -\end{lstlisting} - -\section{Network interfaces parameters} - -Three paramters can be tuned in the configuration file: -\begin{itemize} - \item Interface Name: The related interface will be bind to this interface name - \item IP address: Currently only IPv4 address is allowed - \item IP netwmask: Netmask for the LAN -\end{itemize} -These three paramters can be setup for five different interfaces used: -\begin{itemize} - \item SGW interface for S11 - \item SGW interface for S1U/S12/S4 in user plane - \item SGW interface for S5/S8 in user plane - \item PGW interface for S5/S8 - \item PGW interface for SGi - \item MME interface for S1-MME in control plane -\end{itemize} -Example of configuration: -\begin{lstlisting} -# ------- Interfaces definitions -SGW_INTERFACE_NAME_FOR_S11 = "s11sgw"; -SGW_IP_ADDRESS_FOR_S11 = "192.168.10.1"; -SGW_IP_NETMASK_FOR_S11 = 24; - -SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP = "upsgw0"; -SGW_IP_ADDRESS_FOR_S1U_S12_S4_UP = "192.168.1.1"; -SGW_IP_NETMASK_FOR_S1U_S12_S4_UP = 24; - -SGW_INTERFACE_NAME_FOR_S5_S8_UP = "upsgw1"; -SGW_IP_ADDRESS_FOR_S5_S8_UP = "192.168.5.2"; -SGW_IP_NETMASK_FOR_S5_S8_UP = 24; - -PGW_INTERFACE_NAME_FOR_S5_S8 = "uppgw0"; -PGW_IP_ADDRESS_FOR_S5_S8 = "192.168.5.1"; -PGW_IP_NETMASK_FOR_S5_S8 = 24; - -PGW_INTERFACE_NAME_FOR_SGI = "eth1"; -PGW_IP_ADDR_FOR_SGI = "192.168.12.30"; -PGW_IP_NETMASK_FOR_SGI = 24; - -MME_INTERFACE_NAME_FOR_S1_MME = "cpmme0"; -MME_IP_ADDRESS_FOR_S1_MME = "192.168.11.1"; -MME_IP_NETMASK_FOR_S1_MME = 24; -\end{lstlisting} - -\end{document} diff --git a/openair3/DOCS/Latex/EPC/Makefile b/openair3/DOCS/Latex/EPC/Makefile deleted file mode 100644 index 0f0e799384..0000000000 --- a/openair3/DOCS/Latex/EPC/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#/* -# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more -# * contributor license agreements. See the NOTICE file distributed with -# * this work for additional information regarding copyright ownership. -# * The OpenAirInterface Software Alliance licenses this file to You under -# * the OAI Public License, Version 1.1 (the "License"); you may not use this file -# * except in compliance with the License. -# * You may obtain a copy of the License at -# * -# * http://www.openairinterface.org/?page_id=698 -# * -# * Unless required by applicable law or agreed to in writing, software -# * distributed under the License is distributed on an "AS IS" BASIS, -# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# * See the License for the specific language governing permissions and -# * limitations under the License. -# *------------------------------------------------------------------------------- -# * For more information about the OpenAirInterface (OAI) Software Alliance: -# * contact@openairinterface.org -# */ - -MYFILE=EPC - -all: - pdflatex $(MYFILE).tex - pdflatex $(MYFILE).tex - makeindex $(MYFILE).nlo -s nomencl.ist -o $(MYFILE).nls - pdflatex $(MYFILE).tex - -.PHONY: all From cc6b473d17edc350c73141d42944a653f3024a48 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 9 Mar 2023 10:39:34 +0100 Subject: [PATCH 06/12] Remove old s6a leftovers --- openair3/UTILS/mme_config.h | 8 - openair3/UTILS/mme_default_values.h | 6 - openair3/UTILS/mme_parser.y | 570 ---------------------------- 3 files changed, 584 deletions(-) delete mode 100644 openair3/UTILS/mme_parser.y diff --git a/openair3/UTILS/mme_config.h b/openair3/UTILS/mme_config.h index 417c8bbd5f..0f6247e623 100644 --- a/openair3/UTILS/mme_config.h +++ b/openair3/UTILS/mme_config.h @@ -39,10 +39,6 @@ #define MME_CONFIG_STRING_INTERTASK_INTERFACE_CONFIG "INTERTASK_INTERFACE" #define MME_CONFIG_STRING_INTERTASK_INTERFACE_QUEUE_SIZE "ITTI_QUEUE_SIZE" -#define MME_CONFIG_STRING_S6A_CONFIG "S6A" -#define MME_CONFIG_STRING_S6A_CONF_FILE_PATH "S6A_CONF" -#define MME_CONFIG_STRING_S6A_HSS_HOSTNAME "HSS_HOSTNAME" - #define MME_CONFIG_STRING_SCTP_CONFIG "SCTP" #define MME_CONFIG_STRING_SCTP_INSTREAMS "SCTP_INSTREAMS" #define MME_CONFIG_STRING_SCTP_OUTSTREAMS "SCTP_OUTSTREAMS" @@ -149,10 +145,6 @@ typedef struct mme_config_s { uint32_t sgw_ip_address_for_S11; } ipv4; - struct { - char *conf_file; - char *hss_host_name; - } s6a_config; struct { uint32_t queue_size; char *log_file; diff --git a/openair3/UTILS/mme_default_values.h b/openair3/UTILS/mme_default_values.h index f02e94e2c5..de7ab6b62f 100644 --- a/openair3/UTILS/mme_default_values.h +++ b/openair3/UTILS/mme_default_values.h @@ -41,12 +41,6 @@ #define S1AP_OUTCOME_TIMER_DEFAULT (5) ///< S1AP Outcome drop timer (s) -/******************************************************************************* - * S6A Constants - ******************************************************************************/ - -#define S6A_CONF_FILE "../S6A/freediameter/s6a.conf" - /******************************************************************************* * SCTP Constants ******************************************************************************/ diff --git a/openair3/UTILS/mme_parser.y b/openair3/UTILS/mme_parser.y deleted file mode 100644 index ceaedeb8e4..0000000000 --- a/openair3/UTILS/mme_parser.y +++ /dev/null @@ -1,570 +0,0 @@ -/* For development only : */ -%debug -%error-verbose - -%parse-param {struct mme_config_s *mme_config_p} - -/* Keep track of location */ -%locations -%defines -%pure-parser - -%{ -#include -#include -#include -#include -#include -#include -#include - -#include "mme_config.h" -#include "mme_parser.h" - -void yyerror (YYLTYPE *llocp, struct mme_config_s *mme_config_p, const char *s); - -extern int yywrap(); -extern int yylex(); - -/* The Lex parser prototype */ -int fddlex(YYSTYPE *lvalp, YYLTYPE *llocp); -%} - -/* Values returned by lex for token */ -%union { - char *string; /* The string is allocated by strdup in lex.*/ - int integer; /* Store integer values */ -} - -%token LEX_ERROR - -%token QSTRING -%token INTEGER - -%token EMERGENCY_ATTACH_SUPPORTED -%token UNAUTHENTICATED_IMSI_SUPPORTED -%token S6A_CONF -%token MAX_UE -%token MAX_ENB -%token ITTI_QUEUE_SIZE -%token SCTP_INSTREAMS -%token SCTP_OUTSTREAMS -%token MME_CODE -%token MME_GID -%token PLMN_Y -%token REALM -%token RELATIVE_CAP -%token S1AP_OUTCOME_TIMER -%token MME_STATISTIC_TIMER -%token SGW_INTERFACE_NAME_FOR_S11 -%token SGW_IP_ADDRESS_FOR_S11 -%token SGW_IP_NETMASK_FOR_S11 -%token SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP -%token SGW_IP_ADDRESS_FOR_S1U_S12_S4_UP -%token SGW_IP_NETMASK_FOR_S1U_S12_S4_UP -%token SGW_INTERFACE_NAME_FOR_S5_S8_UP -%token SGW_IP_ADDRESS_FOR_S5_S8_UP -%token SGW_IP_NETMASK_FOR_S5_S8_UP -%token PGW_INTERFACE_NAME_FOR_S5_S8 -%token PGW_IP_ADDRESS_FOR_S5_S8 -%token PGW_IP_NETMASK_FOR_S5_S8 -%token PGW_INTERFACE_NAME_FOR_SGI -%token PGW_IP_ADDR_FOR_SGI -%token PGW_IP_NETMASK_FOR_SGI -%token MME_INTERFACE_NAME_FOR_S1_MME -%token MME_IP_ADDRESS_FOR_S1_MME -%token MME_IP_NETMASK_FOR_S1_MME -%token MME_INTERFACE_NAME_FOR_S11_MME -%token MME_IP_ADDRESS_FOR_S11_MME -%token MME_IP_NETMASK_FOR_S11_MME - -%% -conffile: /* If options not provided, we will default values */ - | conffile s6aconf - | conffile emergency_attach_supported - | conffile unauthenticated_imsi_supported - | conffile maxenb - | conffile maxue - | conffile mmec - | conffile mmegid - | conffile plmn - | conffile realm - | conffile relative_capacity - | conffile itti_queue_size - | conffile s1ap_outcome_timer - | conffile mme_statistic_timer - | conffile sgw_interface_name_for_S11 - | conffile sgw_ip_address_for_S11 - | conffile sgw_ip_netmask_for_S11 - | conffile sgw_interface_name_for_S1u_S12_S4_up - | conffile sgw_ip_address_for_S1u_S12_S4_up - | conffile sgw_ip_netmask_for_S1u_S12_S4_up - | conffile sgw_interface_name_for_S5_S8_up - | conffile sgw_ip_address_for_S5_S8_up - | conffile sgw_ip_netmask_for_S5_S8_up - | conffile pgw_interface_name_for_S5_S8 - | conffile pgw_ip_address_for_S5_S8 - | conffile pgw_ip_netmask_for_S5_S8 - | conffile pgw_interface_name_for_SGI - | conffile pgw_ip_addr_for_SGI - | conffile pgw_ip_netmask_for_SGI - | conffile mme_interface_name_for_S1_MME - | conffile mme_ip_address_for_S1_MME - | conffile mme_ip_netmask_for_S1_MME - | conffile mme_interface_name_for_S11_MME - | conffile mme_ip_address_for_S11_MME - | conffile mme_ip_netmask_for_S11_MME - | conffile sctp_instreams - | conffile sctp_outstreams - | conffile errors - { - yyerror(&yylloc, mme_config_p, "An error occurred while parsing the configuration file"); - return EINVAL; - } - ; - -emergency_attach_supported: EMERGENCY_ATTACH_SUPPORTED '=' INTEGER ';' - { - if ($3 != 0 && $3 != 1) { - yyerror(&yylloc, mme_config_p, "Invalid value (possible values are 0 or 1"); - return EINVAL; - } - mme_config_p->emergency_attach_supported = $3; - }; - -unauthenticated_imsi_supported: UNAUTHENTICATED_IMSI_SUPPORTED '=' INTEGER ';' - { - if ($3 != 0 && $3 != 1) { - yyerror(&yylloc, mme_config_p, "Invalid value (possible values are 0 or 1"); - return EINVAL; - } - mme_config_p->unauthenticated_imsi_supported = $3; - }; - -mme_statistic_timer: MME_STATISTIC_TIMER '=' INTEGER ';' - { - if ($3 <= 0) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } - mme_config_p->mme_statistic_timer = $3; - } - ; - -s1ap_outcome_timer: S1AP_OUTCOME_TIMER '=' INTEGER ';' - { - /* 0 is not a valid value here */ - if ($3 <= 0 || $3 >= (1 << (8 * sizeof(mme_config_p->s1ap_config.outcome_drop_timer_sec)))) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } - mme_config_p->s1ap_config.outcome_drop_timer_sec = $3; - } - ; - -s6aconf: S6A_CONF '=' QSTRING ';' - { - mme_config_p->s6a_config.conf_file = $3; - } - ; - -maxenb: MAX_ENB '=' INTEGER ';' - { - if ($3 <= 0) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } - mme_config_p->max_eNBs = (uint32_t)$3; - } - ; - -maxue: MAX_UE '=' INTEGER ';' - { - if ($3 <= 0) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } - mme_config_p->max_ues = (uint32_t)$3; - } - ; - -mmec: MME_CODE '=' mmeclist ';' - ; - -mmeclist: - { - yyerror(&yylloc, mme_config_p, "Empty value is not allowed"); - return EINVAL; - } - | mmecvalue ',' mmeclist - | mmecvalue - ; - -mmecvalue: INTEGER - { - if (mme_config_p->gummei.nb_mmec == 256) { - yyerror(&yylloc, mme_config_p, "Reached maximum number of mmec"); - return EINVAL; - } - if ($1 >= 256) { - yyerror(&yylloc, mme_config_p, "Value exceed limit <= 255"); - return EINVAL; - } - mme_config_p->gummei.nb_mmec++; - mme_config_p->gummei.mmec = realloc(mme_config_p->gummei.mmec, - mme_config_p->gummei.nb_mmec * sizeof(uint8_t)); - mme_config_p->gummei.mmec[mme_config_p->gummei.nb_mmec-1] = (uint8_t)$1; - } - ; - -mmegid: MME_GID '=' mmegidlist ';' - ; - -mmegidlist: - { - yyerror(&yylloc, mme_config_p, "Empty value is not allowed"); - return EINVAL; - } - | mmegidvalue - | mmegidvalue ',' mmegidlist - ; - -mmegidvalue: INTEGER - { - if (mme_config_p->gummei.nb_mme_gid == 65535) { - yyerror(&yylloc, mme_config_p, "Reached maximum number of mmegid"); - return EINVAL; - } - if ($1 >= 65356) { - yyerror(&yylloc, mme_config_p, "Value exceed limit <= 65535"); - return EINVAL; - } - mme_config_p->gummei.nb_mme_gid++; - mme_config_p->gummei.mme_gid = realloc(mme_config_p->gummei.mme_gid, - mme_config_p->gummei.nb_mme_gid * sizeof(uint16_t)); - mme_config_p->gummei.mme_gid[mme_config_p->gummei.nb_mme_gid-1] = (uint16_t)$1; - } - ; - -realm: REALM '=' QSTRING ';' - { - mme_config_p->realm = $3; - mme_config_p->realm_length = strlen(mme_config_p->realm); - } - ; - -plmn: PLMN_Y '=' plmnlist ';' - ; - -plmnlist: - { - yyerror(&yylloc, mme_config_p, "Empty value is not allowed"); - return EINVAL; - } - | plmnvalue - | plmnvalue ',' plmnlist - ; - -plmnvalue: INTEGER '.' INTEGER ':' INTEGER - { - if (mme_config_p->gummei.nb_plmns == 32) { - yyerror(&yylloc, mme_config_p, "Reached maximum number of plmns"); - return EINVAL; - } - if ($1 > 999 || $3 > 999) { - yyerror(&yylloc, mme_config_p, "PLMN value exceed limit <= 999"); - return EINVAL; - } - if ($5 > 65535) { - yyerror(&yylloc, mme_config_p, "TAC value exceed limit <= 65535"); - return EINVAL; - } - mme_config_p->gummei.nb_plmns++; - mme_config_p->gummei.plmn_mcc = realloc(mme_config_p->gummei.plmn_mcc, - mme_config_p->gummei.nb_plmns * sizeof(uint16_t)); - mme_config_p->gummei.plmn_mnc = realloc(mme_config_p->gummei.plmn_mnc, - mme_config_p->gummei.nb_plmns * sizeof(uint16_t)); - mme_config_p->gummei.plmn_tac = realloc(mme_config_p->gummei.plmn_tac, - mme_config_p->gummei.nb_plmns * sizeof(uint16_t)); - mme_config_p->gummei.plmn_mcc[mme_config_p->gummei.nb_plmns-1] = (uint16_t)$1; - mme_config_p->gummei.plmn_mnc[mme_config_p->gummei.nb_plmns-1] = (uint16_t)$3; - mme_config_p->gummei.plmn_tac[mme_config_p->gummei.nb_plmns-1] = (uint16_t)$5; - } - ; - -relative_capacity: RELATIVE_CAP '=' INTEGER ';' - { - if ($3 >= 256 || $3 < 0) { - yyerror(&yylloc, mme_config_p, "Value exceed limit <= 255"); - return EINVAL; - } - mme_config_p->relative_capacity = $3; - } - ; - -itti_queue_size: ITTI_QUEUE_SIZE '=' INTEGER ';' - { - if ($3 <= 0) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } - mme_config_p->itti_config.queue_size = (uint32_t)$3; - } - ; - -sctp_instreams: SCTP_INSTREAMS '=' INTEGER ';' - { - if ($3 <= 0) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else if ($3 > UINT16_MAX) { - yyerror(&yylloc, mme_config_p, "Value exceed container"); - return EINVAL; - } - mme_config_p->sctp_config.in_streams = (uint16_t)$3; - } - ; - -sctp_outstreams: SCTP_OUTSTREAMS '=' INTEGER ';' - { - if ($3 <= 0) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else if ($3 > UINT16_MAX) { - yyerror(&yylloc, mme_config_p, "Value exceed container"); - return EINVAL; - } - mme_config_p->sctp_config.out_streams = (uint16_t)$3; - } - ; - -sgw_interface_name_for_S11: SGW_INTERFACE_NAME_FOR_S11 '=' QSTRING ';' - { - mme_config_p->ipv4.sgw_interface_name_for_S11 = $3; - } - ; - -sgw_ip_address_for_S11: SGW_IP_ADDRESS_FOR_S11 '=' QSTRING ';' - { - struct in_addr inp; - if ( inet_aton($3, &inp ) < 0 ) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else { - mme_config_p->ipv4.sgw_ip_address_for_S11 = inp.s_addr; - } - } - ; - -sgw_ip_netmask_for_S11: SGW_IP_NETMASK_FOR_S11 '=' INTEGER ';' - { - if ($3 <= 0) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else if ($3 > UINT16_MAX) { - yyerror(&yylloc, mme_config_p, "Value exceed container"); - return EINVAL; - } - mme_config_p->ipv4.sgw_ip_netmask_for_S11 = (uint16_t)$3; - } - ; - -sgw_interface_name_for_S1u_S12_S4_up: SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP '=' QSTRING ';' - { - mme_config_p->ipv4.sgw_interface_name_for_S1u_S12_S4_up = $3; - } - ; - -sgw_ip_address_for_S1u_S12_S4_up: SGW_IP_ADDRESS_FOR_S1U_S12_S4_UP '=' QSTRING ';' - { - struct in_addr inp; - if ( inet_aton($3, &inp ) < 0 ) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else { - mme_config_p->ipv4.sgw_ip_address_for_S1u_S12_S4_up = inp.s_addr; - } - } - ; - -sgw_ip_netmask_for_S1u_S12_S4_up: SGW_IP_NETMASK_FOR_S1U_S12_S4_UP '=' INTEGER ';' - { - if ($3 <= 0) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else if ($3 > UINT16_MAX) { - yyerror(&yylloc, mme_config_p, "Value exceed container"); - return EINVAL; - } - mme_config_p->ipv4.sgw_ip_netmask_for_S1u_S12_S4_up = (uint16_t)$3; - } - ; - -sgw_interface_name_for_S5_S8_up: SGW_INTERFACE_NAME_FOR_S5_S8_UP '=' QSTRING ';' - { - mme_config_p->ipv4.sgw_interface_name_for_S5_S8_up = $3; - } - ; - -sgw_ip_address_for_S5_S8_up: SGW_IP_ADDRESS_FOR_S5_S8_UP '=' QSTRING ';' - { - struct in_addr inp; - if ( inet_aton($3, &inp ) < 0 ) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else { - mme_config_p->ipv4.sgw_ip_address_for_S5_S8_up = inp.s_addr; - } - } - ; - -sgw_ip_netmask_for_S5_S8_up: SGW_IP_NETMASK_FOR_S5_S8_UP '=' INTEGER ';' - { - if ($3 <= 0) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else if ($3 > UINT16_MAX) { - yyerror(&yylloc, mme_config_p, "Value exceed container"); - return EINVAL; - } - mme_config_p->ipv4.sgw_ip_netmask_for_S5_S8_up = (uint16_t)$3; - } - ; - -pgw_interface_name_for_S5_S8: PGW_INTERFACE_NAME_FOR_S5_S8 '=' QSTRING ';' - { - mme_config_p->ipv4.pgw_interface_name_for_S5_S8 = $3; - } - ; - -pgw_ip_address_for_S5_S8: PGW_IP_ADDRESS_FOR_S5_S8 '=' QSTRING ';' - { - struct in_addr inp; - if ( inet_aton($3, &inp ) < 0 ) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else { - mme_config_p->ipv4.pgw_ip_address_for_S5_S8 = inp.s_addr; - } - } - ; - -pgw_ip_netmask_for_S5_S8: PGW_IP_NETMASK_FOR_S5_S8 '=' INTEGER ';' - { - if ($3 <= 0) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else if ($3 > UINT16_MAX) { - yyerror(&yylloc, mme_config_p, "Value exceed container"); - return EINVAL; - } - mme_config_p->ipv4.pgw_ip_netmask_for_S5_S8 = (uint16_t)$3; - } - ; - -pgw_interface_name_for_SGI: PGW_INTERFACE_NAME_FOR_SGI '=' QSTRING ';' - { - mme_config_p->ipv4.pgw_interface_name_for_SGI = $3; - } - ; - -pgw_ip_addr_for_SGI: PGW_IP_ADDR_FOR_SGI '=' QSTRING ';' - { - struct in_addr inp; - if ( inet_aton($3, &inp ) < 0 ) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else { - mme_config_p->ipv4.pgw_ip_addr_for_SGI = inp.s_addr; - } - } - ; - -pgw_ip_netmask_for_SGI: PGW_IP_NETMASK_FOR_SGI '=' INTEGER ';' - { - if ($3 <= 0) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else if ($3 > UINT16_MAX) { - yyerror(&yylloc, mme_config_p, "Value exceed container"); - return EINVAL; - } - mme_config_p->ipv4.pgw_ip_netmask_for_SGI = (uint16_t)$3; - } - ; - -mme_interface_name_for_S1_MME: MME_INTERFACE_NAME_FOR_S1_MME '=' QSTRING ';' - { - mme_config_p->ipv4.mme_interface_name_for_S1_MME = $3; - } - ; - -mme_ip_address_for_S1_MME: MME_IP_ADDRESS_FOR_S1_MME '=' QSTRING ';' - { - struct in_addr inp; - if ( inet_aton($3, &inp ) < 0 ) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else { - mme_config_p->ipv4.mme_ip_address_for_S1_MME = inp.s_addr; - } - } - ; - -mme_ip_netmask_for_S1_MME: MME_IP_NETMASK_FOR_S1_MME '=' INTEGER ';' - { - if ($3 <= 0) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else if ($3 > UINT16_MAX) { - yyerror(&yylloc, mme_config_p, "Value exceed container"); - return EINVAL; - } - mme_config_p->ipv4.mme_ip_netmask_for_S1_MME = (uint16_t)$3; - } - ; - -mme_interface_name_for_S11_MME: MME_INTERFACE_NAME_FOR_S11_MME '=' QSTRING ';' - { - mme_config_p->ipv4.mme_interface_name_for_S11 = $3; - } - ; - -mme_ip_address_for_S11_MME: MME_IP_ADDRESS_FOR_S11_MME '=' QSTRING ';' - { - struct in_addr inp; - if ( inet_aton($3, &inp ) < 0 ) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else { - mme_config_p->ipv4.mme_ip_address_for_S11 = inp.s_addr; - } - } - ; - -mme_ip_netmask_for_S11_MME: MME_IP_NETMASK_FOR_S11_MME '=' INTEGER ';' - { - if ($3 <= 0) { - yyerror(&yylloc, mme_config_p, "Invalid value"); - return EINVAL; - } else if ($3 > UINT16_MAX) { - yyerror(&yylloc, mme_config_p, "Value exceed container"); - return EINVAL; - } - mme_config_p->ipv4.mme_ip_netmask_for_S11 = (uint16_t)$3; - } - ; - - - /* Lexical or syntax error */ -errors: LEX_ERROR - | error - ; -%% - -void yyerror(YYLTYPE *llocp, struct mme_config_s *mme_config_p, const char *str) -{ - fprintf(stderr, "Error in %s ( on line %i column %i -> line %i column %i) : %s\n", - mme_config_p->config_file, llocp->first_line, llocp->first_column, - llocp->last_line, llocp->last_column, str); -} From d0357cc998c554d0f49d3a2567e89efbd0c533ac Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 9 Mar 2023 10:44:00 +0100 Subject: [PATCH 07/12] Remove old/unused cmake find files --- .../tools/MODULES/FindFreeDiameter.cmake | 89 ------ cmake_targets/tools/MODULES/FindMySQL.cmake | 55 ---- .../tools/MODULES/FindPostgreSQL.cmake | 36 --- .../tools/MODULES/path_prefixes.cmake | 264 ------------------ openair2/UTIL/OTG/otg_rx.c | 6 - 5 files changed, 450 deletions(-) delete mode 100755 cmake_targets/tools/MODULES/FindFreeDiameter.cmake delete mode 100755 cmake_targets/tools/MODULES/FindMySQL.cmake delete mode 100755 cmake_targets/tools/MODULES/FindPostgreSQL.cmake delete mode 100755 cmake_targets/tools/MODULES/path_prefixes.cmake diff --git a/cmake_targets/tools/MODULES/FindFreeDiameter.cmake b/cmake_targets/tools/MODULES/FindFreeDiameter.cmake deleted file mode 100755 index 62517c0528..0000000000 --- a/cmake_targets/tools/MODULES/FindFreeDiameter.cmake +++ /dev/null @@ -1,89 +0,0 @@ -# - Find freediameter -# Find the native FreeDiameter includes and libraries -# -# FREEDIAMETER_FOUND - True if FreeDiameter found. -# FREEDIAMETER_INCLUDE_DIR - where to find gnutls.h, etc. -# FREEDIAMETER_LIBRARIES - List of libraries when using gnutls. -# FREEDIAMETER_HSS_S6A_ENABLED - true if FreeDiameter enabled for S6A interface - - -if (FREEDIAMETER_INCLUDE_DIR AND FREEDIAMETER_LIBRARIES) - set(FREEDIAMETER_FIND_QUIETLY TRUE) -endif (FREEDIAMETER_INCLUDE_DIR AND FREEDIAMETER_LIBRARIES) - -# Include dir -find_path(FREEDIAMETER_INCLUDE_DIR - NAMES - freeDiameter/freeDiameter-host.h - freeDiameter/libfdcore.h - freeDiameter/libfdproto.h -) - -# Library -find_library(FREEDIAMETER_LIBRARY - NAMES fdcore -) - -# handle the QUIETLY and REQUIRED arguments and set FREEDIAMETER_FOUND to TRUE if -# all listed variables are TRUE -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(FREEDIAMETER DEFAULT_MSG FREEDIAMETER_LIBRARY FREEDIAMETER_INCLUDE_DIR) - -IF(FREEDIAMETER_FOUND) - SET( FREEDIAMETER_LIBRARIES ${FREEDIAMETER_LIBRARY} ) -ELSE(FREEDIAMETER_FOUND) - SET( FREEDIAMETER_LIBRARIES ) -ENDIF(FREEDIAMETER_FOUND) - -find_library(FREEDIAMETER_LIBRARY2 - NAMES fdproto -) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(FREEDIAMETER2 DEFAULT_MSG FREEDIAMETER_LIBRARY2 FREEDIAMETER_INCLUDE_DIR) -IF(FREEDIAMETER2_FOUND) - SET( FREEDIAMETER_LIBRARIES ${FREEDIAMETER_LIBRARIES} ${FREEDIAMETER_LIBRARY2} ) -ELSE(FREEDIAMETER2_FOUND) - SET( FREEDIAMETER_LIBRARIES ) -ENDIF(FREEDIAMETER2_FOUND) - - -# Lastly make it so that the FREEDIAMETER_LIBRARY and FREEDIAMETER_INCLUDE_DIR variables -# only show up under the advanced options in the gui cmake applications. -MARK_AS_ADVANCED( FREEDIAMETER_LIBRARY FREEDIAMETER_INCLUDE_DIR ) - -# Now check if the library is patched for OPENAIR HSS S6A. -IF(FREEDIAMETER_FOUND) - IF( FREEDIAMETER_INCLUDE_DIR ) - # Extract FD_PROJECT_VERSION_MAJOR, FD_PROJECT_VERSION_MINOR from freeDiameter-host.h - # Read the whole file: - # - FILE(READ "${FREEDIAMETER_INCLUDE_DIR}/freeDiameter/freeDiameter-host.h" _freeDiameter_HOST_H_CONTENTS) - - STRING(REGEX REPLACE ".*#define FD_PROJECT_VERSION_MAJOR ([0-9]+).*" "\\1" FD_PROJECT_VERSION_MAJOR "${_freeDiameter_HOST_H_CONTENTS}") - STRING(REGEX REPLACE ".*#define FD_PROJECT_VERSION_MINOR ([0-9]+).*" "\\1" FD_PROJECT_VERSION_MINOR "${_freeDiameter_HOST_H_CONTENTS}") - - IF(FD_PROJECT_VERSION_MAJOR GREATER 0) - MATH(EXPR FREEDIAMETER_VERSION_VALUE "${FD_PROJECT_VERSION_MAJOR} * 100 + ${FD_PROJECT_VERSION_MINOR} * 10") - SET(FREEDIAMETER_VERSION "${FREEDIAMETER_VERSION_VALUE}" CACHE INTERNAL "Freediameter release version") - MESSAGE(STATUS "freeDiameter version found ${FREEDIAMETER_VERSION}") - ENDIF(FD_PROJECT_VERSION_MAJOR GREATER 0) - ENDIF( FREEDIAMETER_INCLUDE_DIR ) - GET_FILENAME_COMPONENT(FREEDIAMETER_PATH ${FREEDIAMETER_LIBRARY} PATH) - IF( NOT( "${FREEDIAMETER_VERSION_TEST_FOR}" STREQUAL "${FREEDIAMETER_LIBRARIES}" )) - INCLUDE (CheckLibraryExists) - MESSAGE(STATUS "Checking freeDiameter patched for S6A") - UNSET(FREEDIAMETER_HSS_S6A_ENABLED) - UNSET(FREEDIAMETER_HSS_S6A_ENABLED CACHE) - UNSET(DICT_S6A_FOUND) - UNSET(DICT_S6A_FOUND CACHE) - - - FIND_FILE(DICT_S6A_FOUND NAMES dict_s6a.fdx PATHS ${FREEDIAMETER_PATH} ${FREEDIAMETER_PATH}/freeDiameter) - IF(DICT_S6A_FOUND) - SET( FREEDIAMETER_HSS_S6A_ENABLED TRUE CACHE INTERNAL "dict_s6a.fdx Found") - ELSE(DICT_S6A_FOUND) - SET( FREEDIAMETER_HSS_S6A_ENABLED FALSE CACHE INTERNAL "dict_s6a.fdx not Found") - ENDIF(DICT_S6A_FOUND) - SET( FREEDIAMETER_VERSION_TEST_FOR ${FREEDIAMETER_LIBRARIES} CACHE INTERNAL "Version the test was made against" ) - ENDIF (NOT( "${FREEDIAMETER_VERSION_TEST_FOR}" STREQUAL "${FREEDIAMETER_LIBRARIES}" )) -ENDIF(FREEDIAMETER_FOUND) - diff --git a/cmake_targets/tools/MODULES/FindMySQL.cmake b/cmake_targets/tools/MODULES/FindMySQL.cmake deleted file mode 100755 index 668f8a434d..0000000000 --- a/cmake_targets/tools/MODULES/FindMySQL.cmake +++ /dev/null @@ -1,55 +0,0 @@ -# - Find mysqlclient -# -# -*- cmake -*- -# -# Find the native MySQL includes and library -# -# MySQL_INCLUDE_DIR - where to find mysql.h, etc. -# MySQL_LIBRARIES - List of libraries when using MySQL. -# MySQL_FOUND - True if MySQL found. - -IF (MySQL_INCLUDE_DIR AND MySQL_LIBRARY) - # Already in cache, be silent - SET(MySQL_FIND_QUIETLY TRUE) -ENDIF (MySQL_INCLUDE_DIR AND MySQL_LIBRARY) - -# Include dir -FIND_PATH(MySQL_INCLUDE_DIR - NAMES mysql.h - PATH_SUFFIXES mysql -) - -# Library -#SET(MySQL_NAMES mysqlclient mysqlclient_r) -SET(MySQL_NAMES mysqlclient) -FIND_LIBRARY(MySQL_LIBRARY - NAMES ${MySQL_NAMES} - PATHS /usr/lib /usr/local/lib - PATH_SUFFIXES mysql -) - -IF (MySQL_INCLUDE_DIR AND MySQL_LIBRARY) - SET(MySQL_FOUND TRUE) - SET( MySQL_LIBRARIES ${MySQL_LIBRARY} ) -ELSE (MySQL_INCLUDE_DIR AND MySQL_LIBRARY) - SET(MySQL_FOUND FALSE) - SET( MySQL_LIBRARIES ) -ENDIF (MySQL_INCLUDE_DIR AND MySQL_LIBRARY) - - -IF (MySQL_FOUND) - IF (NOT MySQL_FIND_QUIETLY) - MESSAGE(STATUS "Found MySQL: ${MySQL_LIBRARY}") - ENDIF (NOT MySQL_FIND_QUIETLY) -ELSE (MySQL_FOUND) - IF (MySQL_FIND_REQUIRED) - MESSAGE(STATUS "Looked for MySQL libraries named ${MySQL_NAMES}.") - MESSAGE(FATAL_ERROR "Could NOT find MySQL library") - ENDIF (MySQL_FIND_REQUIRED) -ENDIF (MySQL_FOUND) - -MARK_AS_ADVANCED( - MySQL_LIBRARY - MySQL_INCLUDE_DIR - ) - diff --git a/cmake_targets/tools/MODULES/FindPostgreSQL.cmake b/cmake_targets/tools/MODULES/FindPostgreSQL.cmake deleted file mode 100755 index a639a262b0..0000000000 --- a/cmake_targets/tools/MODULES/FindPostgreSQL.cmake +++ /dev/null @@ -1,36 +0,0 @@ -# - Find PostgreSQL library -# -# This module defines: -# POSTGRESQL_FOUND - True if the package is found -# POSTGRESQL_INCLUDE_DIR - containing libpq-fe.h -# POSTGRESQL_LIBRARIES - Libraries to link to use PQ functions. - -if (POSTGRESQL_INCLUDE_DIR AND POSTGRESQL_LIBRARIES) - set(POSTGRESQL_FIND_QUIETLY TRUE) -endif (POSTGRESQL_INCLUDE_DIR AND POSTGRESQL_LIBRARIES) - -# Include dir -find_path(POSTGRESQL_INCLUDE_DIR - NAMES libpq-fe.h - PATH_SUFFIXES pgsql postgresql -) - -# Library -find_library(POSTGRESQL_LIBRARY - NAMES pq -) - -# handle the QUIETLY and REQUIRED arguments and set POSTGRESQL_FOUND to TRUE if -# all listed variables are TRUE -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(POSTGRESQL DEFAULT_MSG POSTGRESQL_LIBRARY POSTGRESQL_INCLUDE_DIR) - -IF(POSTGRESQL_FOUND) - SET( POSTGRESQL_LIBRARIES ${POSTGRESQL_LIBRARY} ) -ELSE(POSTGRESQL_FOUND) - SET( POSTGRESQL_LIBRARIES ) -ENDIF(POSTGRESQL_FOUND) - -# Lastly make it so that the POSTGRESQL_LIBRARY and POSTGRESQL_INCLUDE_DIR variables -# only show up under the advanced options in the gui cmake applications. -MARK_AS_ADVANCED( POSTGRESQL_LIBRARY POSTGRESQL_INCLUDE_DIR ) diff --git a/cmake_targets/tools/MODULES/path_prefixes.cmake b/cmake_targets/tools/MODULES/path_prefixes.cmake deleted file mode 100755 index 7deaec0fed..0000000000 --- a/cmake_targets/tools/MODULES/path_prefixes.cmake +++ /dev/null @@ -1,264 +0,0 @@ -# Declare variables for path prefixes for different types of files. -# NB: depends on 'multi_kernel' and 'uninstall_target'. - -# fill_install_prefixes( -# [BASE_INSTALL_PREFIX ] -# [KERNEL] -# ) -# -# Setup variables _* to the install prefixes for -# different project components. -# Precisely, variables with next sufficies are set: -# INSTALL_PREFIX_EXEC - executables -# INSTALL_PREFIX_READONLY - readonly files -# INSTALL_PREFIX_GLOBAL_CONF - global configuration files -# INSTALL_PREFIX_PREFIX_LIB - libraries -# INSTALL_INCLUDE_DIR - include directory(for flags to compiler) -# INSTALL_PREFIX_INCLUDE - include files -# INSTALL_PREFIX_TEMP_SESSION - temporary files(exists until system restarts) -# INSTALL_PREFIX_TEMP - temporary files(preserved even when system restats) -# INSTALL_PREFIX_STATE - files which describe current state of the project. -# INSTALL_PREFIX_CACHE - cache files -# INSTALL_PREFIX_VAR - other modifiable files -# INSTALL_PREFIX_DOC - documentation files -# INSTALL_PREFIX_EXAMPLES - documentation files -# -# With 'KERNEL' option enabled paths for kernel-related files also set: -# INSTALL_KINCLUDE_DIR - directory for include when build kernel components -# INSTALL_PREFIX_KINCLUDE - include files for the kernel. -# -# Additionally, with 'KERNEL' option enabled, several variables are set to -# paths, which contains "%kernel%" pattern. -# These paths are intended for kernel-dependent files; for make paths -# complete one should replace "%kernel%" substring with version of the -# kernel. -# Next kernel-dependend paths are set(sufficies only): -# KERNEL_INSTALL_PREFIX_KMODULE - directory for install kernel modules -# KERNEL_INSTALL_PREFIX_KSYMVERS - directory for install kernel modules' symvers files. -# KERNEL_INSTALL_INCLUDE_KERNEL_DIR - include directory with kernel-dependent headers. -# KERNEL_INSTALL_PREFIX_INCLUDE_KERNEL - include files, which depends from kernel. -# -# Iff option 'COMMON_INSTALL_PREFIX' is given, all paths above are -# calculated using as base prefix. -# Otherwise, CMAKE_INSTALL_PREFIX is used for that purpose. -# -# Additionally, -# INSTALL_TYPE -# variable(suffix) is set to one of: -# - "GLOBAL_OPT" - install into "/opt", -# - "GLOBAL" - global installation except one into "/opt", -# - "LOCAL" - local installation. -function(fill_install_prefixes project_name project_prefix) - cmake_parse_arguments(fip "KERNEL" "BASE_INSTALL_PREFIX" "" ${ARGN}) - if(fip_UNPARSED_ARGUMENTS) - list(GET fip_UNPARSED_ARGUMENTS 0 exceeded_arg) - message(SEND_ERROR "Exceeded argument: ${exceeded_arg}") - endif(fip_UNPARSED_ARGUMENTS) - if(NOT fip_BASE_INSTALL_PREFIX) - set(fip_BASE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") - endif(NOT fip_BASE_INSTALL_PREFIX) - - # Follow conventions about paths listed in - # devel-docs/general/path_conventions.txt - # in kedr-devel package. - - # Determine type of installation - if(fip_BASE_INSTALL_PREFIX MATCHES "^/opt") - set(fip_INSTALL_TYPE "GLOBAL_OPT") - elseif(fip_BASE_INSTALL_PREFIX MATCHES "^/usr" - OR fip_BASE_INSTALL_PREFIX STREQUAL "/" - ) - set(fip_INSTALL_TYPE "GLOBAL") - else() - set(fip_INSTALL_TYPE "LOCAL") - endif() - - # 1 - if(fip_INSTALL_TYPE STREQUAL "GLOBAL_OPT") - set(fip_INSTALL_PREFIX_EXEC "/opt/${project_name}/bin") - else(fip_INSTALL_TYPE STREQUAL "GLOBAL_OPT") - set(fip_INSTALL_PREFIX_EXEC "${fip_BASE_INSTALL_PREFIX}/bin") - endif(fip_INSTALL_TYPE STREQUAL "GLOBAL_OPT") - # 2 - set(fip_INSTALL_PREFIX_EXEC_AUX - "${fip_BASE_INSTALL_PREFIX}/lib/${project_name}" - ) - # 3 - set(fip_INSTALL_PREFIX_READONLY - "${fip_BASE_INSTALL_PREFIX}/share/${project_name}" - ) - # 4 - set(fip_INSTALL_PREFIX_MANPAGE - "${fip_BASE_INSTALL_PREFIX}/share/man" - ) - # 5 - if(fip_INSTALL_TYPE STREQUAL "GLOBAL_OPT") - set(fip_INSTALL_PREFIX_GLOBAL_CONF "/etc/opt/${project_name}") - elseif(fip_INSTALL_TYPE STREQUAL "GLOBAL") - set(fip_INSTALL_PREFIX_GLOBAL_CONF "/etc/${project_name}") - else(fip_INSTALL_TYPE STREQUAL "GLOBAL_OPT") - set(fip_INSTALL_PREFIX_GLOBAL_CONF - "${fip_BASE_INSTALL_PREFIX}/etc/${project_name}" - ) - endif(fip_INSTALL_TYPE STREQUAL "GLOBAL_OPT") - # 6 - set(fip_INSTALL_PREFIX_LIB "${fip_BASE_INSTALL_PREFIX}/lib") - # 7 - set(fip_INSTALL_PREFIX_LIB_AUX - "${fip_BASE_INSTALL_PREFIX}/lib/${project_name}" - ) - # 8 - set(fip_INSTALL_INCLUDE_DIR "${fip_BASE_INSTALL_PREFIX}/include") - - set(fip_INSTALL_PREFIX_INCLUDE - "${fip_INSTALL_INCLUDE_DIR}/${project_name}" - ) - # 9 - set(fip_INSTALL_PREFIX_TEMP_SESSION "/tmp/${project_name}") - # 10 - if(fip_INSTALL_TYPE MATCHES "GLOBAL") - set(fip_INSTALL_PREFIX_TEMP "/var/tmp/${project_name}") - else(fip_INSTALL_TYPE MATCHES "GLOBAL") - set(fip_INSTALL_PREFIX_TEMP - "${fip_BASE_INSTALL_PREFIX}/var/tmp/${project_name}" - ) - endif(fip_INSTALL_TYPE MATCHES "GLOBAL") - # 11 - if(fip_INSTALL_TYPE STREQUAL "GLOBAL_OPT") - set(fip_INSTALL_PREFIX_STATE - "/var/opt/${project_name}/lib/${project_name}" - ) - elseif(fip_INSTALL_TYPE STREQUAL "GLOBAL") - set(fip_INSTALL_PREFIX_STATE "/var/lib/${project_name}") - else(fip_INSTALL_TYPE STREQUAL "GLOBAL") - set(fip_INSTALL_PREFIX_STATE - "${fip_BASE_INSTALL_PREFIX}/var/lib/${project_name}" - ) - endif(fip_INSTALL_TYPE STREQUAL "GLOBAL_OPT") - # 12 - if(fip_INSTALL_TYPE STREQUAL "GLOBAL_OPT") - set(fip_INSTALL_PREFIX_CACHE - "/var/opt/${project_name}/cache/${project_name}" - ) - elseif(fip_INSTALL_TYPE STREQUAL "GLOBAL") - set(fip_INSTALL_PREFIX_CACHE "/var/cache/${project_name}") - else(fip_INSTALL_TYPE STREQUAL "GLOBAL_OPT") - set(fip_INSTALL_PREFIX_CACHE - "${fip_BASE_INSTALL_PREFIX}/var/cache/${project_name}" - ) - endif(fip_INSTALL_TYPE STREQUAL "GLOBAL_OPT") - # 13 - if(fip_INSTALL_TYPE MATCHES "GLOBAL") - set(fip_INSTALL_PREFIX_VAR "/var/opt/${project_name}") - else(fip_INSTALL_TYPE MATCHES "GLOBAL") - set(fip_INSTALL_PREFIX_VAR - "${fip_BASE_INSTALL_PREFIX}/var/${project_name}" - ) - endif(fip_INSTALL_TYPE MATCHES "GLOBAL") - # 14 - set(fip_INSTALL_PREFIX_DOC - "${fip_BASE_INSTALL_PREFIX}/share/doc/${project_name}" - ) - - # Set derivative install path and prefixes - - # additional, 4 - set(fip_INSTALL_PREFIX_EXAMPLES - "${fip_INSTALL_PREFIX_READONLY}/examples") - - # Export symbols to the outer scope - foreach(suffix - INSTALL_TYPE - INSTALL_PREFIX_EXEC - INSTALL_PREFIX_EXEC_AUX - INSTALL_PREFIX_READONLY - INSTALL_PREFIX_MANPAGE - INSTALL_PREFIX_GLOBAL_CONF - INSTALL_PREFIX_LIB - INSTALL_PREFIX_LIB_AUX - INSTALL_INCLUDE_DIR - INSTALL_PREFIX_INCLUDE - INSTALL_PREFIX_TEMP_SESSION - INSTALL_PREFIX_TEMP - INSTALL_PREFIX_STATE - INSTALL_PREFIX_CACHE - INSTALL_PREFIX_VAR - INSTALL_PREFIX_DOC - INSTALL_PREFIX_EXAMPLES - ) - set(${project_prefix}_${suffix} "${fip_${suffix}}" PARENT_SCOPE) - endforeach(suffix) - - if(fip_KERNEL) - # Set derivative install path and prefixes - # additional, 1 - if(fip_INSTALL_TYPE MATCHES GLOBAL) - set(fip_KERNEL_INSTALL_PREFIX_KMODULE - "/lib/modules/%kernel%/extra" - ) - else(fip_INSTALL_TYPE MATCHES GLOBAL) - set(fip_KERNEL_INSTALL_PREFIX_KMODULE - "${fip_INSTALL_PREFIX_LIB}/modules/%kernel%/extra" - ) - endif(fip_INSTALL_TYPE MATCHES GLOBAL) - - # additional, 2 - set(fip_KERNEL_INSTALL_PREFIX_KSYMVERS - "${fip_INSTALL_PREFIX_LIB}/modules/%kernel%/symvers" - ) - # additional, 3 - set(fip_INSTALL_KINCLUDE_DIR "${fip_INSTALL_INCLUDE_DIR}") - set(fip_INSTALL_PREFIX_KINCLUDE "${fip_INSTALL_PREFIX_INCLUDE}") - - # Kernel include files, which depends from kernel version. - # This prefix is not listed in path conventions. - set(fip_KERNEL_INSTALL_INCLUDE_KERNEL_DIR - "${fip_BASE_INSTALL_PREFIX}/include-kernel/%kernel%" - ) - - set(fip_KERNEL_INSTALL_PREFIX_INCLUDE_KERNEL - "${fip_KERNEL_INSTALL_INCLUDE_KERNEL_DIR}/${project_name}-kernel" - ) - - # Export symbols to the outer scope - foreach(suffix - KERNEL_INSTALL_PREFIX_KMODULE - KERNEL_INSTALL_PREFIX_KSYMVERS - INSTALL_KINCLUDE_DIR - INSTALL_PREFIX_KINCLUDE - KERNEL_INSTALL_INCLUDE_KERNEL_DIR - KERNEL_INSTALL_PREFIX_INCLUDE_KERNEL - ) - set(${project_prefix}_${suffix} "${fip_${suffix}}" PARENT_SCOPE) - endforeach(suffix) - endif(fip_KERNEL) -endfunction(fill_install_prefixes project_name project_prefix) - - -######################################################################## -# Kernel-dependent paths. -# -# Some deliverables may depends on linux kernel. -# -# For make "one user installation for several kernels" paradigm works, -# installation directory for that deliverables should include -# kernel-version part(like "3.10.2-generic"). -# -# So, components installed by user installation can determine at runtime, -# which kernel-dependent deliverable should be used on currently loaded system. -# They do selection using 'uname -r' request. -# -# For define variables represented kernel-dependent directories, -# we use strings containing "%kernel%" stem. - -# kernel_path(kernel_version RESULT_VARIABLE pattern ...) -# -# Form concrete path representation from kernel-dependent pattern(s). -# Replace occurence of %kernel% in pattern(s) with given @kernel_version string. -# Result is stored in the RESULT_VARIABLE. -# -# @kernel_version may be concrete version of the kernel, -# or variable reference in some language. -macro(kernel_path kernel_version RESULT_VARIABLE pattern) - string(REPLACE "%kernel%" "${kernel_version}" ${RESULT_VARIABLE} ${pattern} ${ARGN}) -endmacro(kernel_path kernel_version RESULT_VARIABLE pattern) diff --git a/openair2/UTIL/OTG/otg_rx.c b/openair2/UTIL/OTG/otg_rx.c index 135378ff3b..eb123e7216 100644 --- a/openair2/UTIL/OTG/otg_rx.c +++ b/openair2/UTIL/OTG/otg_rx.c @@ -37,12 +37,6 @@ #include "otg_form.h" #include "otg_kpi.h" -#ifdef ENABLE_DB_STATS - #include - #include - #include -#endif - extern uint16_t NB_UE_INST; //#include "LAYER2/MAC/extern.h" From ceef0fdb7b89b76a29ecf0437a460db6bb66b537 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 9 Mar 2023 10:48:46 +0100 Subject: [PATCH 08/12] Remove old/outdated README --- targets/README.txt | 114 --------------------------------------------- 1 file changed, 114 deletions(-) delete mode 100644 targets/README.txt diff --git a/targets/README.txt b/targets/README.txt deleted file mode 100644 index b32e0640e5..0000000000 --- a/targets/README.txt +++ /dev/null @@ -1,114 +0,0 @@ ------------------------------------------ -1) Folders and files description ------------------------------------------ - -This directory contains different targets for OpenAirInterface.org implementations - -RTAI/USER - Target to run .11p (uses openairITS) or LTE modem (uses openair1 and openair2) for x86 in RTAI user-space -SIMU - Simulator/Emulator target for x86 -DOCS - Doxygen documentation generation for openair1/openair2 - - -First, you must have all four openair SW directories, openair1, openair2, openair3, and targets at the same hierarchical level as this directory. - -1. The following packages must be available on your system: - - - ssh, python, python pexpect - - libblas and libblas-dev - - libconfig++8-dev - - libgtk-3-dev - - libpgm-5.1 and libpgm-5.1-dev for distributed simulation with reliable multicast transmport - - libxml2 and libxml2-dev - - libforms-bin libforms-dev - - openssl libssl-dev - - libatlas-base-dev and libatlas-headers (for Ubuntu 11.04, libatlas-dev instead of libatlas-headers) - - asn1c and the LTE ASN1 files (for more information on how to install this and generate the required files see the README file in openair2/RRC/LITE/MESSAGES) - ----------------------------------------------------- -2) Organization of the folders and their dependancies ----------------------------------------------------- -The 3 folders have the following structures - - - EXAMPLES: there you can find some basic examples with/without the network interface - - KERN: this folder includes the files for kernel space compilation targeting realtime operation (RF/emulation platform) - - USER: this folder includes the files for user space compilation targeting soft realtime operation (emulation/simulation/debugging) - ----------------------------------------------------------------- -3) How to use through a tutorial: run a simple experimentation ----------------------------------------------------------------- -1. Up to know you should have created a directory: mkdir openair4G - -2. Check out the openair4G/trunk repository: svn co https://svn.eurecom.fr/openairsvn/openair4G/trunk openair4G - -3. Now, please check the following: - - - the env variables in .bashrc the following lines, and source them if necessary : - set OPENAIR_DIR variable and export the following: - export OPENAIR1_DIR=$OPENAIR_DIR/openair4G/openair1 - export OPENAIR2_DIR=$OPENAIR_DIR/openair4G/openair2 - export OPENAIR3_DIR=$OPENAIR_DIR/openair4G/openair3 - export OPENAIRITS_DIR=$OPENAIR_DIR/openair4G/openairITS - export OPENAIR_TARGETS=$OPENAIR_DIR/openair4G/targets/ - - - checkout and compile the asn1 messages - follow the README.txt in OPENAIR2_DIR/RRC/LITE/MESSAGES to checkout the ASN.1 RRC messages - follow the OPENAIR2_DIR/RRC/LITE/MESSAGE/asn1c/asn1c/INSTALL to install the asn1c - go back to $OPENAIR_TARGET and "make install" if you have not used the shell script to install asn1c - - cd $OPENAIR_TARGET/SIMU/USER, and make a sanity check by doing make pre-ci (require 15 minutes) - - Check out simple examples in $OPENAIR_TARGET/SIMU/EXAMPLES - -4. to automatically bring up the oai interfaces and configure the default radio bearer (useful when sending data traffic): - - add your username into the list of sudoers - + edit /etc/sudoers as a super user - + after the line: # User privilege specification, add : user_name ALL=(ALL:ALL) ALL - + after the line: %admin ALL=(ALL) ALL, add : user_name ALL=(ALL) NOPASSWD: ALL - - include this line: alias sudo='sudo -E', to the .bashrc - - run oai as follows: sudo ./oaisim arg1 arg2 .... - - ----------------------------------------------------------------- -4) Detail Instructions ----------------------------------------------------------------- - - Please follow the instructions given in DOCS/oaisim_walkthrough.pdf - - ----------------------------------------------------------------- -5) OAI on virtual machine ----------------------------------------------------------------- - you may download the image using this URL: https://emu.openairinterface.org/openairlab/openairlab.zip - check that all the packages are there as some packages might be added later. - - ----------------------------------------------------------------- -6) Installing phpmyadmin for HSS ----------------------------------------------------------------- - -Step 1: - -Configure database for phpmyadmin with dbconfig-common? SELECT - - -Step 2: - -Please provide the password for the administrative account with which this package should create its MySQL database and user. -Password of the database's administrative user: The mysql administrative user. - - -Step 3: - -Please provide a password for phpmyadmin to register with the database server. If left blank, a random password will be generated. -MySQL application password for phpmyadmin: admin - - -Step 4: - -Password confirmation: admin - - -Step 5: - -Please choose the web server that should be automatically configured to run phpMyAdmin. -Web server to reconfigure automatically: - [*] apache2 - [ ] lighttpd From 352eaa2c57382b26d22fa906d55f0c6ae8fed369 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 9 Mar 2023 12:11:58 +0100 Subject: [PATCH 09/12] Remove old/unused doxygen files --- openair3/DOCS/DOXYGEN/Doxyfile.in | 1718 ----------------------------- openair3/DOCS/DOXYGEN/Makefile.am | 43 - 2 files changed, 1761 deletions(-) delete mode 100644 openair3/DOCS/DOXYGEN/Doxyfile.in delete mode 100644 openair3/DOCS/DOXYGEN/Makefile.am diff --git a/openair3/DOCS/DOXYGEN/Doxyfile.in b/openair3/DOCS/DOXYGEN/Doxyfile.in deleted file mode 100644 index 90679f9ecd..0000000000 --- a/openair3/DOCS/DOXYGEN/Doxyfile.in +++ /dev/null @@ -1,1718 +0,0 @@ -# Doxyfile 1.7.4 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" "). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# http://www.gnu.org/software/libiconv for the list of possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = @PACKAGE_NAME@ - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = @PACKAGE_VERSION@ - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer -# a quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = "The OAISIM MME provides an almost complete implementation of Evolved Packet Core network for LTE. This include MME, S+P-Gateways." - -# With the PROJECT_LOGO tag one can specify an logo or icon that is -# included in the documentation. The maximum height of the logo should not -# exceed 55 pixels and the maximum width should not exceed 200 pixels. -# Doxygen will copy the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = ../Documentation - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = YES - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful if your file system -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given extension. -# Doxygen has a built-in mapping, but you can override or extend it using this -# tag. The format is ext=language, where ext is a file extension, and language -# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, -# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make -# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C -# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions -# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also makes the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate getter -# and setter methods for a property. Setting this option to YES (the default) -# will make doxygen replace the get and set methods by a property in the -# documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and -# unions are shown inside the group in which they are included (e.g. using -# @ingroup) instead of on a separate page (for HTML and Man pages) or -# section (for LaTeX and RTF). - -INLINE_GROUPED_CLASSES = NO - -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. - -TYPEDEF_HIDES_STRUCT = NO - -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penalty. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will roughly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols - -SYMBOL_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespaces are hidden. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen -# will list include files with double quotes in the documentation -# rather than with sharp brackets. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen -# will sort the (brief and detailed) documentation of class members so that -# constructors and destructors are listed first. If set to NO (the default) -# the constructors will appear in the respective orders defined by -# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. -# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO -# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to -# do proper type resolution of all parameters of a function it will reject a -# match between the prototype and the implementation of a member function even -# if there is only one candidate or it is obvious which candidate to choose -# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen -# will still accept a match between prototype and implementation in such cases. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or macro consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and macros in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. -# This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. The create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. -# You can optionally specify a file name after the option, if omitted -# DoxygenLayout.xml will be used as the name of the layout file. - -LAYOUT_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# The WARN_NO_PARAMDOC option can be enabled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = @top_srcdir@ \ - @top_builddir@/S1AP/s1ap_ies_defs.h - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is -# also the default input encoding. Doxygen uses libiconv (or the iconv built -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for -# the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh -# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py -# *.f90 *.f *.for *.vhd *.vhdl - -FILE_PATTERNS = *.h - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = @top_builddir@ \ - @top_srcdir@/S1AP/MESSAGES - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = *.d - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. -# If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. -# Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. -# The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty or if -# non of the patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) -# and it is also possible to disable source filtering for a specific pattern -# using *.ext= (so without naming a filter). This option only has effect when -# FILTER_SOURCE_FILES is enabled. - -FILTER_SOURCE_PATTERNS = - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. -# Otherwise they will link to the documentation. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. Note that when using a custom header you are responsible -# for the proper inclusion of any scripts and style sheets that doxygen -# needs, which is dependent on the configuration options used. -# It is adviced to generate a default header using "doxygen -w html -# header.html footer.html stylesheet.css YourConfigFile" and then modify -# that header. Note that the header is subject to change so you typically -# have to redo this when upgrading to a newer version of doxygen or when changing the value of configuration settings such as GENERATE_TREEVIEW! - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that -# the files will be copied as-is; there are no commands or markers available. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. -# Doxygen will adjust the colors in the stylesheet and background images -# according to this color. Hue is specified as an angle on a colorwheel, -# see http://en.wikipedia.org/wiki/Hue for more information. -# For instance the value 0 represents red, 60 is yellow, 120 is green, -# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. -# The allowed range is 0 to 359. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of -# the colors in the HTML output. For a value of 0 the output will use -# grayscales only. A value of 255 will produce the most vivid colors. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to -# the luminance component of the colors in the HTML output. Values below -# 100 gradually make the output lighter, whereas values above 100 make -# the output darker. The value divided by 100 is the actual gamma applied, -# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, -# and 100 does not change the gamma. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting -# this to NO can help when comparing the output of multiple runs. - -HTML_TIMESTAMP = YES - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = NO - -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# directory and running "make install" will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find -# it at startup. -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. - -GENERATE_DOCSET = NO - -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. - -CHM_INDEX_ENCODING = - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated -# that can be used as input for Qt's qhelpgenerator to generate a -# Qt Compressed Help (.qch) of the generated HTML documentation. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can -# be used to specify the file name of the resulting .qch file. -# The path specified is relative to the HTML output folder. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#namespace - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#virtual-folders - -QHP_VIRTUAL_FOLDER = doc - -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to -# add. For more information please see -# http://doc.trolltech.com/qthelpproject.html#custom-filters - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see -# -# Qt Help Project / Custom Filters. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's -# filter section matches. -# -# Qt Help Project / Filter Attributes. - -QHP_SECT_FILTER_ATTRS = - -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can -# be used to specify the location of Qt's qhelpgenerator. -# If non-empty doxygen will try to run qhelpgenerator on the generated -# .qhp file. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files -# will be generated, which together with the HTML files, form an Eclipse help -# plugin. To install this plugin and make it available under the help contents -# menu in Eclipse, the contents of the directory containing the HTML and XML -# files needs to be copied into the plugins directory of eclipse. The name of -# the directory within the plugins directory should be the same as -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before -# the help appears. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have -# this name. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values -# (range [0,1..20]) that doxygen will group on one line in the generated HTML -# documentation. Note that a value of 0 will completely suppress the enum -# values from appearing in the overview section. - -ENUM_VALUES_PER_LINE = 4 - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to YES, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). -# Windows users are probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. - -USE_INLINE_TREES = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open -# links to external symbols imported via tag files in a separate window. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are -# not supported properly for IE 6.0, but are supported on all modern browsers. -# Note that when changing this option you need to delete any form_*.png files -# in the HTML output before the changes have effect. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax -# (see http://www.mathjax.org) which uses client side Javascript for the -# rendering instead of using prerendered bitmaps. Use this if you do not -# have LaTeX installed or if you want to formulas look prettier in the HTML -# output. When enabled you also need to install MathJax separately and -# configure the path to it using the MATHJAX_RELPATH option. - -USE_MATHJAX = NO - -# When MathJax is enabled you need to specify the location relative to the -# HTML output directory using the MATHJAX_RELPATH option. The destination -# directory should contain the MathJax.js script. For instance, if the mathjax -# directory is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the -# mathjax.org site, so you can quickly see the result without installing -# MathJax, but it is strongly recommended to install a local copy of MathJax -# before deployment. - -MATHJAX_RELPATH = http://www.mathjax.org/mathjax - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box -# for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using -# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets -# (GENERATE_DOCSET) there is already a search function so this one should -# typically be disabled. For large projects the javascript based search engine -# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. - -SEARCHENGINE = YES - -# When the SERVER_BASED_SEARCH tag is enabled the search engine will be -# implemented using a PHP enabled web server instead of at the web client -# using Javascript. Doxygen will generate the search PHP script and index -# file to put on the web server. The advantage of the server -# based approach is that it scales better to large projects and allows -# full text search. The disadvantages are that it is more difficult to setup -# and does not have live searching capabilities. - -SERVER_BASED_SEARCH = NO - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = YES - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. -# Note that when enabling USE_PDFLATEX this option is only used for -# generating bitmaps for formulas in the HTML output, but not in the -# Makefile that is written to the output directory. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4 - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for -# the generated latex document. The footer should contain everything after -# the last chapter. If it is left blank doxygen will generate a -# standard footer. Notice: only use this tag if you know what you are doing! - -LATEX_FOOTER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -# If LATEX_SOURCE_CODE is set to YES then doxygen will include -# source code with syntax highlighting in the LaTeX output. -# Note that which sources are shown also depends on other settings -# such as SOURCE_BROWSER. - -LATEX_SOURCE_CODE = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. -# This is useful -# if you want to understand what is going on. -# On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# pointed to by INCLUDE_PATH will be searched when a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition that -# overrules the definition found in the source code. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all references to function-like macros -# that are alone on a line, have an all uppercase name, and do not end with a -# semicolon, because these will confuse the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option also works with HAVE_DOT disabled, but it is recommended to -# install and use dot, since it yields more powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see -# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is -# allowed to run in parallel. When set to 0 (the default) doxygen will -# base this on the number of processors available in the system. You can set it -# explicitly to a value larger than 0 to get control over the balance -# between CPU load and processing speed. - -DOT_NUM_THREADS = 0 - -# By default doxygen will write a font called Helvetica to the output -# directory and reference it in all dot files that doxygen generates. -# When you want a differently looking font you can specify the font name -# using DOT_FONTNAME. You need to make sure dot is able to find the font, -# which can be done by putting it in a standard location or by setting the -# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory -# containing the font. - -DOT_FONTNAME = Helvetica - -# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. -# The default size is 10pt. - -DOT_FONTSIZE = 10 - -# By default doxygen will tell dot to use the output directory to look for the -# FreeSans.ttf font (which doxygen will put there itself). If you specify a -# different font using DOT_FONTNAME you can set the path where dot -# can find it using this tag. - -DOT_FONTPATH = - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT options are set to YES then -# doxygen will generate a call dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable call graphs -# for selected functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then -# doxygen will generate a caller dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable caller -# graphs for selected functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will generate a graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are svg, png, jpg, or gif. -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MSCFILE_DIRS tag can be used to specify one or more directories that -# contain msc files that are included in the documentation (see the -# \mscfile command). - -MSCFILE_DIRS = - -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the -# number of direct children of the root node in a graph is already larger than -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not -# seem to support this out of the box. Warning: Depending on the platform used, -# enabling this option may lead to badly anti-aliased labels on the edges of -# a graph (i.e. they become hard to read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = YES - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES diff --git a/openair3/DOCS/DOXYGEN/Makefile.am b/openair3/DOCS/DOXYGEN/Makefile.am deleted file mode 100644 index a291a8817e..0000000000 --- a/openair3/DOCS/DOXYGEN/Makefile.am +++ /dev/null @@ -1,43 +0,0 @@ -#/* -# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more -# * contributor license agreements. See the NOTICE file distributed with -# * this work for additional information regarding copyright ownership. -# * The OpenAirInterface Software Alliance licenses this file to You under -# * the OAI Public License, Version 1.1 (the "License"); you may not use this file -# * except in compliance with the License. -# * You may obtain a copy of the License at -# * -# * http://www.openairinterface.org/?page_id=698 -# * -# * Unless required by applicable law or agreed to in writing, software -# * distributed under the License is distributed on an "AS IS" BASIS, -# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# * See the License for the specific language governing permissions and -# * limitations under the License. -# *------------------------------------------------------------------------------- -# * For more information about the OpenAirInterface (OAI) Software Alliance: -# * contact@openairinterface.org -# */ - -if HAVE_DOXYGEN -directory = $(top_srcdir)/DOCS/Documentation - -if HAVE_PDFLATEX - doc_DATA = $(directory)oaisim_mme.pdf -else - doc_DATA = $(directory) -endif -$(directory): doxyfile.stamp - -doxyfile.stamp: - $(DOXYGEN) Doxyfile - echo Timestamp > doxyfile.stamp - -CLEANFILES = doxyfile.stamp - -all-local: doxyfile.stamp -clean-local: - rm -f doxyfile.stamp - rm -rf $(top_srcdir)/DOCS/Documentation/html - rm -rf $(top_srcdir)/DOCS/Documentation/latex -endif From 258ad6e4c18343e9d1e3c9030c5e861a96ae66c1 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 9 Mar 2023 10:50:29 +0100 Subject: [PATCH 10/12] Move gtkwave files to new directory targets/gtkwave --- targets/{RT/USER => gtkwave}/eNB_usrp.gtkw | 0 targets/{RT/USER => gtkwave}/gNB_usrp.gtkw | 0 targets/{RT/USER => gtkwave}/pnf.gtkw | 0 targets/{RT/USER => gtkwave}/rau_if4_single_thread.gtkw | 0 targets/{RT/USER => gtkwave}/rcc_if4.gtkw | 0 targets/{RT/USER => gtkwave}/rcc_if5.gtkw | 0 targets/{RT/USER => gtkwave}/rru_if4p5_simulator.gtkw | 0 targets/{RT/USER => gtkwave}/rru_if4p5_single_thread.gtkw | 0 targets/{RT/USER => gtkwave}/rru_if4p5_usrp.gtkw | 0 targets/{RT/USER => gtkwave}/rru_if5_usrp.gtkw | 0 targets/{RT/USER => gtkwave}/ue_usrp.gtkw | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename targets/{RT/USER => gtkwave}/eNB_usrp.gtkw (100%) rename targets/{RT/USER => gtkwave}/gNB_usrp.gtkw (100%) rename targets/{RT/USER => gtkwave}/pnf.gtkw (100%) rename targets/{RT/USER => gtkwave}/rau_if4_single_thread.gtkw (100%) rename targets/{RT/USER => gtkwave}/rcc_if4.gtkw (100%) rename targets/{RT/USER => gtkwave}/rcc_if5.gtkw (100%) rename targets/{RT/USER => gtkwave}/rru_if4p5_simulator.gtkw (100%) rename targets/{RT/USER => gtkwave}/rru_if4p5_single_thread.gtkw (100%) rename targets/{RT/USER => gtkwave}/rru_if4p5_usrp.gtkw (100%) rename targets/{RT/USER => gtkwave}/rru_if5_usrp.gtkw (100%) rename targets/{RT/USER => gtkwave}/ue_usrp.gtkw (100%) diff --git a/targets/RT/USER/eNB_usrp.gtkw b/targets/gtkwave/eNB_usrp.gtkw similarity index 100% rename from targets/RT/USER/eNB_usrp.gtkw rename to targets/gtkwave/eNB_usrp.gtkw diff --git a/targets/RT/USER/gNB_usrp.gtkw b/targets/gtkwave/gNB_usrp.gtkw similarity index 100% rename from targets/RT/USER/gNB_usrp.gtkw rename to targets/gtkwave/gNB_usrp.gtkw diff --git a/targets/RT/USER/pnf.gtkw b/targets/gtkwave/pnf.gtkw similarity index 100% rename from targets/RT/USER/pnf.gtkw rename to targets/gtkwave/pnf.gtkw diff --git a/targets/RT/USER/rau_if4_single_thread.gtkw b/targets/gtkwave/rau_if4_single_thread.gtkw similarity index 100% rename from targets/RT/USER/rau_if4_single_thread.gtkw rename to targets/gtkwave/rau_if4_single_thread.gtkw diff --git a/targets/RT/USER/rcc_if4.gtkw b/targets/gtkwave/rcc_if4.gtkw similarity index 100% rename from targets/RT/USER/rcc_if4.gtkw rename to targets/gtkwave/rcc_if4.gtkw diff --git a/targets/RT/USER/rcc_if5.gtkw b/targets/gtkwave/rcc_if5.gtkw similarity index 100% rename from targets/RT/USER/rcc_if5.gtkw rename to targets/gtkwave/rcc_if5.gtkw diff --git a/targets/RT/USER/rru_if4p5_simulator.gtkw b/targets/gtkwave/rru_if4p5_simulator.gtkw similarity index 100% rename from targets/RT/USER/rru_if4p5_simulator.gtkw rename to targets/gtkwave/rru_if4p5_simulator.gtkw diff --git a/targets/RT/USER/rru_if4p5_single_thread.gtkw b/targets/gtkwave/rru_if4p5_single_thread.gtkw similarity index 100% rename from targets/RT/USER/rru_if4p5_single_thread.gtkw rename to targets/gtkwave/rru_if4p5_single_thread.gtkw diff --git a/targets/RT/USER/rru_if4p5_usrp.gtkw b/targets/gtkwave/rru_if4p5_usrp.gtkw similarity index 100% rename from targets/RT/USER/rru_if4p5_usrp.gtkw rename to targets/gtkwave/rru_if4p5_usrp.gtkw diff --git a/targets/RT/USER/rru_if5_usrp.gtkw b/targets/gtkwave/rru_if5_usrp.gtkw similarity index 100% rename from targets/RT/USER/rru_if5_usrp.gtkw rename to targets/gtkwave/rru_if5_usrp.gtkw diff --git a/targets/RT/USER/ue_usrp.gtkw b/targets/gtkwave/ue_usrp.gtkw similarity index 100% rename from targets/RT/USER/ue_usrp.gtkw rename to targets/gtkwave/ue_usrp.gtkw From c9db9b4c229bbfa140191cbe7fec03376c2f3a69 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 9 Mar 2023 10:51:25 +0100 Subject: [PATCH 11/12] Drop backup file of gtkwave --- targets/itti_vcd_tasks.sav | 268 ------------------------------------- 1 file changed, 268 deletions(-) delete mode 100644 targets/itti_vcd_tasks.sav diff --git a/targets/itti_vcd_tasks.sav b/targets/itti_vcd_tasks.sav deleted file mode 100644 index fca66612ac..0000000000 --- a/targets/itti_vcd_tasks.sav +++ /dev/null @@ -1,268 +0,0 @@ -[*] -[*] GTKWave Analyzer v3.3.34 (w)1999-2012 BSI -[*] Thu Dec 19 10:33:06 2013 -[*] -[dumpfile] "/tmp/openair_dump_eNB.vcd" -[dumpfile_mtime] "Thu Dec 19 10:26:58 2013" -[dumpfile_size] 68919271 -[savefile] "$OPENAIR_TARGETS/itti_vcd_tasks.sav" -[timestart] 0 -[size] 1871 1056 -[pos] -1 -1 -*-30.425148 4756417000 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -[sst_width] 223 -[signals_width] 449 -[sst_expanded] 1 -[sst_vpaned_height] 583 -@8024 -variables.frame_number_eNB[63:0] -@20000 -- -@8024 -variables.slot_number_eNB[63:0] -@20000 -- -@8024 -[color] 3 -variables.frame_number_UE[63:0] -@20000 -- -@8024 -[color] 3 -variables.slot_number_UE[63:0] -@20000 -- -@c08022 -[color] 1 -variables.mp_alloc[63:0] -@28 -[color] 2 -(42)variables.mp_alloc[63:0] -[color] 2 -(43)variables.mp_alloc[63:0] -[color] 2 -(44)variables.mp_alloc[63:0] -[color] 2 -(45)variables.mp_alloc[63:0] -[color] 2 -(46)variables.mp_alloc[63:0] -[color] 2 -(47)variables.mp_alloc[63:0] -[color] 2 -(48)variables.mp_alloc[63:0] -[color] 2 -(49)variables.mp_alloc[63:0] -[color] 2 -(50)variables.mp_alloc[63:0] -[color] 2 -(51)variables.mp_alloc[63:0] -[color] 2 -(52)variables.mp_alloc[63:0] -[color] 2 -(53)variables.mp_alloc[63:0] -[color] 2 -(54)variables.mp_alloc[63:0] -[color] 2 -(55)variables.mp_alloc[63:0] -[color] 2 -(56)variables.mp_alloc[63:0] -[color] 2 -(57)variables.mp_alloc[63:0] -[color] 2 -(58)variables.mp_alloc[63:0] -[color] 2 -(59)variables.mp_alloc[63:0] -[color] 2 -(60)variables.mp_alloc[63:0] -[color] 2 -(61)variables.mp_alloc[63:0] -[color] 2 -(62)variables.mp_alloc[63:0] -[color] 2 -(63)variables.mp_alloc[63:0] -@1401200 --group_end -@c08022 -[color] 5 -variables.mp_free[63:0] -@28 -[color] 6 -(42)variables.mp_free[63:0] -[color] 6 -(43)variables.mp_free[63:0] -[color] 6 -(44)variables.mp_free[63:0] -[color] 6 -(45)variables.mp_free[63:0] -[color] 6 -(46)variables.mp_free[63:0] -[color] 6 -(47)variables.mp_free[63:0] -[color] 6 -(48)variables.mp_free[63:0] -[color] 6 -(49)variables.mp_free[63:0] -[color] 6 -(50)variables.mp_free[63:0] -[color] 6 -(51)variables.mp_free[63:0] -[color] 6 -(52)variables.mp_free[63:0] -[color] 6 -(53)variables.mp_free[63:0] -[color] 6 -(54)variables.mp_free[63:0] -[color] 6 -(55)variables.mp_free[63:0] -[color] 6 -(56)variables.mp_free[63:0] -[color] 6 -(57)variables.mp_free[63:0] -[color] 6 -(58)variables.mp_free[63:0] -[color] 6 -(59)variables.mp_free[63:0] -[color] 6 -(60)variables.mp_free[63:0] -[color] 6 -(61)variables.mp_free[63:0] -[color] 6 -(62)variables.mp_free[63:0] -[color] 6 -(63)variables.mp_free[63:0] -@1401200 --group_end -@c08024 -[color] 1 -variables.itti_alloc_msg[63:0] -@1401200 --group_end -@c08022 -[color] 1 -variables.itti_send_msg[63:0] -@28 -[color] 2 -+{UE NAS} (44)variables.itti_send_msg[63:0] -[color] 2 -+{UE RRC} (45)variables.itti_send_msg[63:0] -[color] 2 -+{UE PDCP} (46)variables.itti_send_msg[63:0] -[color] 2 -+{UE RLC} (47)variables.itti_send_msg[63:0] -[color] 2 -+{UE MAC} (48)variables.itti_send_msg[63:0] -[color] 2 -+{UE PHY} (49)variables.itti_send_msg[63:0] -[color] 2 -+{eNB app} (50)variables.itti_send_msg[63:0] -[color] 2 -+{eNB SCTP} (51)variables.itti_send_msg[63:0] -[color] 2 -+{eNB X2AP} (52)variables.itti_send_msg[63:0] -[color] 2 -+{eNB S1AP} (53)variables.itti_send_msg[63:0] -[color] 2 -+{eNB RAL} (54)variables.itti_send_msg[63:0] -[color] 2 -+{eNB RRC} (55)variables.itti_send_msg[63:0] -[color] 2 -+{eNB PDCP} (56)variables.itti_send_msg[63:0] -[color] 2 -+{eNB RLC} (57)variables.itti_send_msg[63:0] -[color] 2 -+{eNB MAC} (58)variables.itti_send_msg[63:0] -[color] 2 -+{eNB PHY} (59)variables.itti_send_msg[63:0] -[color] 2 -+{BM} (60)variables.itti_send_msg[63:0] -[color] 2 -+{L2L1} (61)variables.itti_send_msg[63:0] -[color] 2 -+{Timer} (62)variables.itti_send_msg[63:0] -[color] 2 -+{Unknown} (63)variables.itti_send_msg[63:0] -@1401200 --group_end -@28 -[color] 7 -functions.log_record -[color] 1 -functions.itti_dump_enqueue_message_malloc -[color] 3 -functions.itti_dump_enqueue_message -[color] 3 -functions.itti_enqueue_message -@200 -- -@c08022 -[color] 5 -variables.itti_poll_msg[63:0] -@28 -[color] 6 -+{UE PDCP} (46)variables.itti_poll_msg[63:0] -[color] 6 -+{UE RLC} (47)variables.itti_poll_msg[63:0] -[color] 6 -+{UE MAC} (48)variables.itti_poll_msg[63:0] -[color] 6 -+{UE PHY} (49)variables.itti_poll_msg[63:0] -[color] 6 -+{eNB PDCP} (56)variables.itti_poll_msg[63:0] -[color] 6 -+{eNB RLC} (57)variables.itti_poll_msg[63:0] -[color] 6 -+{eNB MAC} (58)variables.itti_poll_msg[63:0] -[color] 6 -+{eNB PHY} (59)variables.itti_poll_msg[63:0] -[color] 6 -+{L2L1} (61)variables.itti_poll_msg[63:0] -functions.itti_relay_thread -@1401200 --group_end -@c08022 -[color] 5 -variables.itti_recv_msg[63:0] -@28 -[color] 6 -+{UE NAS} (44)variables.itti_recv_msg[63:0] -[color] 6 -+{UE RRC} (45)variables.itti_recv_msg[63:0] -[color] 6 -+{eNB app} (50)variables.itti_recv_msg[63:0] -[color] 6 -+{eNB SCTP} (51)variables.itti_recv_msg[63:0] -[color] 6 -+{eNB X2AP} (52)variables.itti_recv_msg[63:0] -[color] 6 -+{eNB S1AP} (53)variables.itti_recv_msg[63:0] -[color] 6 -+{eNB RRC} (55)variables.itti_recv_msg[63:0] -[color] 6 -+{BM} (60)variables.itti_recv_msg[63:0] -[color] 6 -+{L2L1} (61)variables.itti_recv_msg[63:0] -@1401200 --group_end -@200 -- -@28 -functions.phy_procedures_eNB_lte -functions.phy_procedures_eNb_rx -functions.phy_procedures_eNb_tx -@200 -- -@28 -[color] 3 -functions.phy_procedures_UE_lte -[color] 3 -functions.phy_procedures_ue_rx -[color] 3 -functions.phy_procedures_ue_tx -@200 -- -@28 -[color] 5 -functions.rrc_mac_config_req -functions.pdcp_run -[pattern_trace] 1 -[pattern_trace] 0 From 67919740043217986f6c6fc21de603fd80f540da Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 9 Mar 2023 11:58:41 +0100 Subject: [PATCH 12/12] Remove unused OCG (OpenAir Config Generator) --- CMakeLists.txt | 1 - common/utils/LOG/log.c | 1 - common/utils/LOG/log.h | 1 - common/utils/T/T_messages.txt | 21 - doc/Doxyfile | 3 - openair1/PHY/CODING/TESTBENCH/ltetest.c | 1 - .../SIMULATION/ETH_TRANSPORT/emu_transport.c | 2 - openair1/SIMULATION/LTE_PHY/dlsim.c | 1 - openair1/SIMULATION/LTE_PHY/dlsim_tm4.c | 1 - openair1/SIMULATION/LTE_PHY/dlsim_tm7.c | 1 - openair1/SIMULATION/LTE_PHY/framegen.c | 1 - openair1/SIMULATION/LTE_PHY/mbmssim.c | 1 - openair1/SIMULATION/LTE_PHY/pbchsim.c | 2 - openair1/SIMULATION/LTE_PHY/pdcchsim.c | 1 - openair1/SIMULATION/LTE_PHY/prachsim.c | 2 - openair1/SIMULATION/LTE_PHY/pucchsim.c | 1 - openair1/SIMULATION/LTE_PHY/scansim.c | 2 - openair1/SIMULATION/LTE_PHY/syncsim.c | 1 - openair1/SIMULATION/LTE_PHY/ulsim.c | 1 - openair1/SIMULATION/NR_PHY/prachsim.c | 1 - openair1/SIMULATION/TOOLS/channel_sim.c | 1 - openair2/LAYER2/MAC/eNB_scheduler.c | 2 - openair2/LAYER2/MAC/eNB_scheduler_RA.c | 2 - openair2/LAYER2/MAC/eNB_scheduler_bch.c | 2 - openair2/LAYER2/MAC/eNB_scheduler_dlsch.c | 3 +- openair2/LAYER2/MAC/eNB_scheduler_fairRR.c | 3 +- openair2/LAYER2/MAC/eNB_scheduler_mch.c | 2 - openair2/LAYER2/MAC/eNB_scheduler_phytest.c | 2 - .../LAYER2/MAC/eNB_scheduler_primitives.c | 2 - openair2/LAYER2/MAC/eNB_scheduler_ulsch.c | 3 +- openair2/LAYER2/MAC/pre_processor.c | 2 - openair2/LAYER2/MAC/ra_procedures.c | 2 - openair2/LAYER2/MAC/rar_tools.c | 2 - openair2/LAYER2/MAC/rar_tools_ue.c | 2 - openair2/LAYER2/MAC/ue_procedures.c | 2 - openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c | 2 - .../LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c | 1 - .../NR_MAC_gNB/gNB_scheduler_primitives.c | 2 - openair2/LAYER2/PDCP_v10.1.0/pdcp.c | 2 - openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c | 2 - openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c | 2 - openair2/RRC/LTE/rrc_eNB.c | 3 +- openair2/RRC/NR/rrc_gNB.c | 2 - openair2/UTIL/CLI/cli_cmd.c | 2 - openair2/UTIL/MATH/oml.h | 2 +- openair2/UTIL/OCG/.directory | 3 - openair2/UTIL/OCG/Doxyfile | 231 --- openair2/UTIL/OCG/OCG.c | 263 ---- openair2/UTIL/OCG/OCG.h | 769 ---------- openair2/UTIL/OCG/OCG_call_emu.c | 60 - openair2/UTIL/OCG/OCG_call_emu.h | 51 - openair2/UTIL/OCG/OCG_config_mobi.c | 117 -- openair2/UTIL/OCG/OCG_config_mobi.h | 51 - openair2/UTIL/OCG/OCG_create_dir.c | 93 -- openair2/UTIL/OCG/OCG_create_dir.h | 51 - openair2/UTIL/OCG/OCG_detect_file.c | 117 -- openair2/UTIL/OCG/OCG_detect_file.h | 52 - openair2/UTIL/OCG/OCG_extern.h | 51 - openair2/UTIL/OCG/OCG_generate_report.c | 70 - openair2/UTIL/OCG/OCG_generate_report.h | 51 - openair2/UTIL/OCG/OCG_get_opt.c | 69 - openair2/UTIL/OCG/OCG_get_opt.h | 50 - openair2/UTIL/OCG/OCG_if.h | 64 - openair2/UTIL/OCG/OCG_parse_XML.c | 1357 ----------------- openair2/UTIL/OCG/OCG_parse_XML.h | 58 - openair2/UTIL/OCG/OCG_parse_filename.c | 71 - openair2/UTIL/OCG/OCG_parse_filename.h | 51 - openair2/UTIL/OCG/OCG_save_XML.c | 82 - openair2/UTIL/OCG/OCG_save_XML.h | 51 - openair2/UTIL/OCG/OCG_vars.h | 59 - .../UTIL/OCG/XML_to_mobigen/RWMEmulator.xml | 26 - openair2/UTIL/OCG/eurecom_20110208110244.xml | 92 -- .../OCG/local_XML/Lusheng.20110208110244.xml | 92 -- openair2/UTIL/OCG/makefile | 72 - openair2/UTIL/OCG/readme.txt | 174 --- openair2/UTIL/OCG/temp_output/OCG_report.xml | 9 - openair2/UTIL/OMG/omg.h | 2 +- targets/TEST/AT_COMMANDS/Makefile | 1 - targets/TEST/AT_COMMANDS/oaisim.c | 1 - targets/TEST/PACKET_TRACER/Makefile | 5 - targets/TEST/PACKET_TRACER/pt.c | 2 - targets/TEST/PDCP/Makefile | 4 +- targets/TEST/PDCP/test_pdcp.c | 1 - .../TEST/PDCP/with_rlc/Makefile.data_bearer | 4 +- targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c | 2 - 85 files changed, 8 insertions(+), 4519 deletions(-) delete mode 100644 openair2/UTIL/OCG/.directory delete mode 100644 openair2/UTIL/OCG/Doxyfile delete mode 100644 openair2/UTIL/OCG/OCG.c delete mode 100644 openair2/UTIL/OCG/OCG.h delete mode 100644 openair2/UTIL/OCG/OCG_call_emu.c delete mode 100644 openair2/UTIL/OCG/OCG_call_emu.h delete mode 100644 openair2/UTIL/OCG/OCG_config_mobi.c delete mode 100644 openair2/UTIL/OCG/OCG_config_mobi.h delete mode 100644 openair2/UTIL/OCG/OCG_create_dir.c delete mode 100644 openair2/UTIL/OCG/OCG_create_dir.h delete mode 100644 openair2/UTIL/OCG/OCG_detect_file.c delete mode 100644 openair2/UTIL/OCG/OCG_detect_file.h delete mode 100644 openair2/UTIL/OCG/OCG_extern.h delete mode 100644 openair2/UTIL/OCG/OCG_generate_report.c delete mode 100644 openair2/UTIL/OCG/OCG_generate_report.h delete mode 100644 openair2/UTIL/OCG/OCG_get_opt.c delete mode 100644 openair2/UTIL/OCG/OCG_get_opt.h delete mode 100644 openair2/UTIL/OCG/OCG_if.h delete mode 100644 openair2/UTIL/OCG/OCG_parse_XML.c delete mode 100644 openair2/UTIL/OCG/OCG_parse_XML.h delete mode 100644 openair2/UTIL/OCG/OCG_parse_filename.c delete mode 100644 openair2/UTIL/OCG/OCG_parse_filename.h delete mode 100644 openair2/UTIL/OCG/OCG_save_XML.c delete mode 100644 openair2/UTIL/OCG/OCG_save_XML.h delete mode 100644 openair2/UTIL/OCG/OCG_vars.h delete mode 100644 openair2/UTIL/OCG/XML_to_mobigen/RWMEmulator.xml delete mode 100644 openair2/UTIL/OCG/eurecom_20110208110244.xml delete mode 100644 openair2/UTIL/OCG/local_XML/Lusheng.20110208110244.xml delete mode 100644 openair2/UTIL/OCG/makefile delete mode 100644 openair2/UTIL/OCG/readme.txt delete mode 100644 openair2/UTIL/OCG/temp_output/OCG_report.xml diff --git a/CMakeLists.txt b/CMakeLists.txt index b602939345..2e14f7fe10 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -737,7 +737,6 @@ include_directories("${OPENAIR2_DIR}/UTIL/OSA") include_directories("${OPENAIR2_DIR}/UTIL/MEM") include_directories("${OPENAIR2_DIR}/UTIL/LISTS") include_directories("${OPENAIR2_DIR}/UTIL/FIFO") -include_directories("${OPENAIR2_DIR}/UTIL/OCG") include_directories("${OPENAIR2_DIR}/UTIL/MATH") include_directories("${OPENAIR2_DIR}/UTIL/TIMER") include_directories("${OPENAIR2_DIR}/UTIL/OMG") diff --git a/common/utils/LOG/log.c b/common/utils/LOG/log.c index 84c70c3767..a620dfa5c5 100644 --- a/common/utils/LOG/log.c +++ b/common/utils/LOG/log.c @@ -460,7 +460,6 @@ int logInit (void) register_log_component("OTG_GP","dat",OTG_GP); register_log_component("OTG_GP_BG","dat",OTG_GP_BG); register_log_component("OTG_JITTER","dat",OTG_JITTER); - register_log_component("OCG","",OCG); register_log_component("PERF","",PERF); register_log_component("OIP","",OIP); register_log_component("OCM","log",OCM); diff --git a/common/utils/LOG/log.h b/common/utils/LOG/log.h index 40e8a17d8c..e2c551f648 100644 --- a/common/utils/LOG/log.h +++ b/common/utils/LOG/log.h @@ -197,7 +197,6 @@ typedef enum { MAC, EMU, SIM, - OCG, OMG, OPT, OTG, diff --git a/common/utils/T/T_messages.txt b/common/utils/T/T_messages.txt index 97185aa138..c535f36f5e 100644 --- a/common/utils/T/T_messages.txt +++ b/common/utils/T/T_messages.txt @@ -801,27 +801,6 @@ ID = LEGACY_OTG_TRACE GROUP = ALL:LEGACY_OTG:LEGACY_GROUP_TRACE:LEGACY FORMAT = string,log -ID = LEGACY_OCG_INFO - DESC = OCG legacy logs - info level - GROUP = ALL:LEGACY_OCG:LEGACY_GROUP_INFO:LEGACY - FORMAT = string,log -ID = LEGACY_OCG_ERROR - DESC = OCG legacy logs - error level - GROUP = ALL:LEGACY_OCG:LEGACY_GROUP_ERROR:LEGACY - FORMAT = string,log -ID = LEGACY_OCG_WARNING - DESC = OCG legacy logs - warning level - GROUP = ALL:LEGACY_OCG:LEGACY_GROUP_WARNING:LEGACY - FORMAT = string,log -ID = LEGACY_OCG_DEBUG - DESC = OCG legacy logs - debug level - GROUP = ALL:LEGACY_OCG:LEGACY_GROUP_DEBUG:LEGACY - FORMAT = string,log -ID = LEGACY_OCG_TRACE - DESC = OCG legacy logs - trace level - GROUP = ALL:LEGACY_OCG:LEGACY_GROUP_TRACE:LEGACY - FORMAT = string,log - ID = LEGACY_OCM_INFO DESC = OCM legacy logs - info level GROUP = ALL:LEGACY_OCM:LEGACY_GROUP_INFO:LEGACY diff --git a/doc/Doxyfile b/doc/Doxyfile index 7579fa56bf..6a4dd850a3 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -986,9 +986,6 @@ INPUT = \ @CMAKE_CURRENT_SOURCE_DIR@/../openair2/UTIL/ASYNC_IF/ringbuffer_queue.c \ @CMAKE_CURRENT_SOURCE_DIR@/../openair2/UTIL/ASYNC_IF/message_queue.h \ @CMAKE_CURRENT_SOURCE_DIR@/../openair2/UTIL/ASYNC_IF/link_manager.c \ -@CMAKE_CURRENT_SOURCE_DIR@/../openair2/UTIL/OCG/OCG.h \ -@CMAKE_CURRENT_SOURCE_DIR@/../openair2/UTIL/OCG/OCG_extern.h \ -@CMAKE_CURRENT_SOURCE_DIR@/../openair2/UTIL/OCG/OCG_vars.h \ @CMAKE_CURRENT_SOURCE_DIR@/../openair2/UTIL/LISTS/list.h \ @CMAKE_CURRENT_SOURCE_DIR@/../openair2/UTIL/LISTS/list.c \ @CMAKE_CURRENT_SOURCE_DIR@/../openair2/UTIL/LISTS/list2.c \ diff --git a/openair1/PHY/CODING/TESTBENCH/ltetest.c b/openair1/PHY/CODING/TESTBENCH/ltetest.c index 414c636a31..56053f7784 100644 --- a/openair1/PHY/CODING/TESTBENCH/ltetest.c +++ b/openair1/PHY/CODING/TESTBENCH/ltetest.c @@ -32,7 +32,6 @@ #include "SCHED/defs.h" #include "SCHED/vars.h" #include "LAYER2/MAC/vars.h" -#include "OCG_vars.h" #include "UTIL/LOG/log.h" diff --git a/openair1/SIMULATION/ETH_TRANSPORT/emu_transport.c b/openair1/SIMULATION/ETH_TRANSPORT/emu_transport.c index 9d209043fd..d0f0eab4a6 100644 --- a/openair1/SIMULATION/ETH_TRANSPORT/emu_transport.c +++ b/openair1/SIMULATION/ETH_TRANSPORT/emu_transport.c @@ -35,8 +35,6 @@ #include "defs.h" #include "extern.h" #include "proto.h" -#include "UTIL/OCG/OCG.h" -#include "UTIL/OCG/OCG_extern.h" #include "UTIL/LOG/log.h" #include "UTIL/LOG/vcd_signal_dumper.h" #include "openair1/SIMULATION/ETH_TRANSPORT/extern.h" diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c index e8a06f9e88..f8b1e359e5 100644 --- a/openair1/SIMULATION/LTE_PHY/dlsim.c +++ b/openair1/SIMULATION/LTE_PHY/dlsim.c @@ -52,7 +52,6 @@ #include "SCHED/sched_eNB.h" #include "SCHED_UE/sched_UE.h" #include "SIMULATION/TOOLS/sim.h" -#include "OCG_vars.h" #include "unitary_defs.h" #include "dummy_functions.c" #include "executables/thread-common.h" diff --git a/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c b/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c index d6a248059c..9a086e1a7f 100644 --- a/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c +++ b/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c @@ -48,7 +48,6 @@ #include "SCHED/defs.h" #include "SCHED/vars.h" #include "LAYER2/MAC/vars.h" -#include "OCG_vars.h" #include "UTIL/LOG/log.h" #include "UTIL/LISTS/list.h" diff --git a/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c b/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c index 547d2cfa28..7092fd9d1e 100644 --- a/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c +++ b/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c @@ -45,7 +45,6 @@ #include "SCHED/vars.h" #include "LAYER2/MAC/vars.h" -#include "OCG_vars.h" #include "UTIL/LOG/log.h" #include "UTIL/LISTS/list.h" diff --git a/openair1/SIMULATION/LTE_PHY/framegen.c b/openair1/SIMULATION/LTE_PHY/framegen.c index 9203f0a095..74f76e56b9 100644 --- a/openair1/SIMULATION/LTE_PHY/framegen.c +++ b/openair1/SIMULATION/LTE_PHY/framegen.c @@ -28,7 +28,6 @@ #include "PHY/defs.h" #include "PHY/vars.h" #include "SCHED/extern.h" -#include "OCG_vars.h" #include "MAC_INTERFACE/vars.h" #ifdef IFFT_FPGA #include "PHY/LTE_REFSIG/mod_table.h" diff --git a/openair1/SIMULATION/LTE_PHY/mbmssim.c b/openair1/SIMULATION/LTE_PHY/mbmssim.c index 33d9a58def..accb6004f8 100644 --- a/openair1/SIMULATION/LTE_PHY/mbmssim.c +++ b/openair1/SIMULATION/LTE_PHY/mbmssim.c @@ -45,7 +45,6 @@ #include "SCHED/sched_eNB.h" #include "LAYER2/MAC/mac_vars.h" -#include "OCG_vars.h" #include "common/utils/LOG/log.h" #include "UTIL/LISTS/list.h" diff --git a/openair1/SIMULATION/LTE_PHY/pbchsim.c b/openair1/SIMULATION/LTE_PHY/pbchsim.c index 71286faafb..7d8d8e88f5 100644 --- a/openair1/SIMULATION/LTE_PHY/pbchsim.c +++ b/openair1/SIMULATION/LTE_PHY/pbchsim.c @@ -40,8 +40,6 @@ #include "PHY/TOOLS/lte_phy_scope.h" #endif -#include "OCG_vars.h" - #include "unitary_defs.h" PHY_VARS_eNB *eNB,*eNB1,*eNB2; diff --git a/openair1/SIMULATION/LTE_PHY/pdcchsim.c b/openair1/SIMULATION/LTE_PHY/pdcchsim.c index 50910290c3..494c9bbde6 100644 --- a/openair1/SIMULATION/LTE_PHY/pdcchsim.c +++ b/openair1/SIMULATION/LTE_PHY/pdcchsim.c @@ -31,7 +31,6 @@ #include "SCHED/defs.h" #include "SCHED/vars.h" #include "LAYER2/MAC/vars.h" -#include "OCG_vars.h" #ifdef XFORMS #include "PHY/TOOLS/lte_phy_scope.h" diff --git a/openair1/SIMULATION/LTE_PHY/prachsim.c b/openair1/SIMULATION/LTE_PHY/prachsim.c index 229764a893..0619facf3e 100644 --- a/openair1/SIMULATION/LTE_PHY/prachsim.c +++ b/openair1/SIMULATION/LTE_PHY/prachsim.c @@ -31,8 +31,6 @@ #include "SCHED/vars.h" #include "LAYER2/MAC/vars.h" -#include "OCG_vars.h" - #include "unitary_defs.h" int current_dlsch_cqi; //FIXME! diff --git a/openair1/SIMULATION/LTE_PHY/pucchsim.c b/openair1/SIMULATION/LTE_PHY/pucchsim.c index 083a756afb..fd0e0e44aa 100644 --- a/openair1/SIMULATION/LTE_PHY/pucchsim.c +++ b/openair1/SIMULATION/LTE_PHY/pucchsim.c @@ -31,7 +31,6 @@ #include "SCHED/vars.h" #include "LAYER2/MAC/vars.h" -#include "OCG_vars.h" #include "UTIL/LOG/log_extern.h" #include "unitary_defs.h" diff --git a/openair1/SIMULATION/LTE_PHY/scansim.c b/openair1/SIMULATION/LTE_PHY/scansim.c index 839d30a8de..9660e2343e 100644 --- a/openair1/SIMULATION/LTE_PHY/scansim.c +++ b/openair1/SIMULATION/LTE_PHY/scansim.c @@ -41,8 +41,6 @@ #include "PHY/TOOLS/lte_phy_scope.h" #endif -#include "OCG_vars.h" - #define BW 20.0 diff --git a/openair1/SIMULATION/LTE_PHY/syncsim.c b/openair1/SIMULATION/LTE_PHY/syncsim.c index 97336c509d..02f6f0a63b 100644 --- a/openair1/SIMULATION/LTE_PHY/syncsim.c +++ b/openair1/SIMULATION/LTE_PHY/syncsim.c @@ -50,7 +50,6 @@ #endif //XFORMS -#include "OCG_vars.h" #include "openair_hw.h" #define BW 5.0 diff --git a/openair1/SIMULATION/LTE_PHY/ulsim.c b/openair1/SIMULATION/LTE_PHY/ulsim.c index 8be518e14a..a0286ad719 100644 --- a/openair1/SIMULATION/LTE_PHY/ulsim.c +++ b/openair1/SIMULATION/LTE_PHY/ulsim.c @@ -45,7 +45,6 @@ #include "SCHED/sched_eNB.h" #include "SCHED_UE/sched_UE.h" #include "SIMULATION/TOOLS/sim.h" -#include "OCG_vars.h" #include "unitary_defs.h" #include "dummy_functions.c" #include "nfapi/oai_integration/vendor_ext.h" diff --git a/openair1/SIMULATION/NR_PHY/prachsim.c b/openair1/SIMULATION/NR_PHY/prachsim.c index 59e8a988a2..cd346ded3a 100644 --- a/openair1/SIMULATION/NR_PHY/prachsim.c +++ b/openair1/SIMULATION/NR_PHY/prachsim.c @@ -46,7 +46,6 @@ #include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" #include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h" #include "nr_unitary_defs.h" -#include "OCG_vars.h" #include #include #include diff --git a/openair1/SIMULATION/TOOLS/channel_sim.c b/openair1/SIMULATION/TOOLS/channel_sim.c index 9cf08fa5a3..048cf5de64 100644 --- a/openair1/SIMULATION/TOOLS/channel_sim.c +++ b/openair1/SIMULATION/TOOLS/channel_sim.c @@ -35,7 +35,6 @@ #include "common/utils/LOG/log.h" #include "PHY_INTERFACE/phy_interface_extern.h" -#include "UTIL/OCG/OCG.h" #include "UTIL/OPT/opt.h" // to test OPT #include "common/ran_context.h" diff --git a/openair2/LAYER2/MAC/eNB_scheduler.c b/openair2/LAYER2/MAC/eNB_scheduler.c index b7cbac4256..badcd36cc6 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler.c +++ b/openair2/LAYER2/MAC/eNB_scheduler.c @@ -39,8 +39,6 @@ #include "nfapi/oai_integration/vendor_ext.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" -#include "OCG_extern.h" #include "RRC/LTE/rrc_extern.h" #include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h" diff --git a/openair2/LAYER2/MAC/eNB_scheduler_RA.c b/openair2/LAYER2/MAC/eNB_scheduler_RA.c index 12f37c3b68..40eeacfaec 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_RA.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_RA.c @@ -43,8 +43,6 @@ #include "nfapi/oai_integration/vendor_ext.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" -#include "OCG_extern.h" #include "PHY/LTE_TRANSPORT/transport_common_proto.h" #include "RRC/LTE/rrc_extern.h" diff --git a/openair2/LAYER2/MAC/eNB_scheduler_bch.c b/openair2/LAYER2/MAC/eNB_scheduler_bch.c index 5966f5c10b..a51aca96b9 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_bch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_bch.c @@ -35,8 +35,6 @@ #include "common/utils/LOG/log.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" -#include "OCG_extern.h" #include "RRC/LTE/rrc_extern.h" #include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h" diff --git a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c index 2cd1a4167f..395803b5f5 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c @@ -38,9 +38,8 @@ #include "nfapi/oai_integration/vendor_ext.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" -#include "OCG_extern.h" #include "PHY/LTE_TRANSPORT/transport_common_proto.h" +#include "PHY/defs_eNB.h" #include "RRC/LTE/rrc_extern.h" #include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h" diff --git a/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c b/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c index 9a939f7627..118de4f7f8 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c @@ -35,6 +35,7 @@ #include "PHY/phy_extern.h" #include "PHY/LTE_TRANSPORT/transport_common_proto.h" +#include "PHY/defs_eNB.h" #include "SIMULATION/TOOLS/sim.h" #include "LAYER2/MAC/mac_proto.h" #include "LAYER2/MAC/mac_extern.h" @@ -43,8 +44,6 @@ #include "nfapi/oai_integration/vendor_ext.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" -#include "OCG_extern.h" #include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h" #include "rlc.h" #include "common/utils/lte/prach_utils.h" diff --git a/openair2/LAYER2/MAC/eNB_scheduler_mch.c b/openair2/LAYER2/MAC/eNB_scheduler_mch.c index ff8607a2db..9cdc72a558 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_mch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_mch.c @@ -37,8 +37,6 @@ #include "nfapi/oai_integration/vendor_ext.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" -#include "OCG_extern.h" #include "PHY/LTE_TRANSPORT/transport_common_proto.h" #include "RRC/LTE/rrc_extern.h" diff --git a/openair2/LAYER2/MAC/eNB_scheduler_phytest.c b/openair2/LAYER2/MAC/eNB_scheduler_phytest.c index 9ade5eb8b2..db04ab143f 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_phytest.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_phytest.c @@ -42,8 +42,6 @@ #include "common/utils/LOG/log.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" -#include "OCG_extern.h" #include "SIMULATION/TOOLS/sim.h" // for taus diff --git a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c index e2809b6ca3..6dedc0e47b 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c @@ -39,8 +39,6 @@ #include "nfapi/oai_integration/vendor_ext.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" -#include "OCG_extern.h" #include "RRC/LTE/rrc_extern.h" #include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h" diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c index 4832456915..1372cb7276 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c @@ -38,9 +38,8 @@ #include "common/utils/LOG/vcd_signal_dumper.h" #include "nfapi/oai_integration/vendor_ext.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" -#include "OCG_extern.h" #include "PHY/LTE_TRANSPORT/transport_common_proto.h" +#include "PHY/defs_eNB.h" #include "RRC/LTE/rrc_extern.h" #include "RRC/LTE/rrc_eNB_UE_context.h" diff --git a/openair2/LAYER2/MAC/pre_processor.c b/openair2/LAYER2/MAC/pre_processor.c index e9ed99160e..64e5822071 100644 --- a/openair2/LAYER2/MAC/pre_processor.c +++ b/openair2/LAYER2/MAC/pre_processor.c @@ -40,8 +40,6 @@ #include "common/utils/LOG/log.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" -#include "OCG_extern.h" #include "RRC/LTE/rrc_extern.h" #include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h" #include "rlc.h" diff --git a/openair2/LAYER2/MAC/ra_procedures.c b/openair2/LAYER2/MAC/ra_procedures.c index af68cebbe1..0917e0a1bc 100644 --- a/openair2/LAYER2/MAC/ra_procedures.c +++ b/openair2/LAYER2/MAC/ra_procedures.c @@ -42,8 +42,6 @@ #include "common/utils/LOG/log.h" #include "nfapi/oai_integration/vendor_ext.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" -#include "OCG_extern.h" #include "SIMULATION/TOOLS/sim.h" // for taus #include "PHY/LTE_TRANSPORT/transport_common_proto.h" #include "PHY/LTE_ESTIMATION/lte_estimation.h" diff --git a/openair2/LAYER2/MAC/rar_tools.c b/openair2/LAYER2/MAC/rar_tools.c index 740923cc08..b608ea03a1 100644 --- a/openair2/LAYER2/MAC/rar_tools.c +++ b/openair2/LAYER2/MAC/rar_tools.c @@ -33,8 +33,6 @@ #include "mac_extern.h" #include "SIMULATION/TOOLS/sim.h" #include "common/utils/LOG/log.h" -#include "OCG.h" -#include "OCG_extern.h" #include "UTIL/OPT/opt.h" #include "common/ran_context.h" diff --git a/openair2/LAYER2/MAC/rar_tools_ue.c b/openair2/LAYER2/MAC/rar_tools_ue.c index 9af5baec39..1ab9bbd644 100644 --- a/openair2/LAYER2/MAC/rar_tools_ue.c +++ b/openair2/LAYER2/MAC/rar_tools_ue.c @@ -33,8 +33,6 @@ #include "mac_extern.h" #include "SIMULATION/TOOLS/sim.h" #include "common/utils/LOG/log.h" -#include "OCG.h" -#include "OCG_extern.h" #include "UTIL/OPT/opt.h" #include "common/ran_context.h" diff --git a/openair2/LAYER2/MAC/ue_procedures.c b/openair2/LAYER2/MAC/ue_procedures.c index 44ba53c1db..d7fd5d23dd 100644 --- a/openair2/LAYER2/MAC/ue_procedures.c +++ b/openair2/LAYER2/MAC/ue_procedures.c @@ -45,8 +45,6 @@ #include "nfapi/oai_integration/vendor_ext.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" -#include "OCG_extern.h" #include "openair2/PHY_INTERFACE/phy_stub_UE.h" #include "pdcp.h" diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c index 895f0bd0dc..c641bf4d15 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c @@ -39,8 +39,6 @@ #include "common/utils/nr/nr_common.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" -#include "OCG_extern.h" #include "RRC/NR/nr_rrc_extern.h" diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c index 8db40a26c7..3224223631 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c @@ -38,7 +38,6 @@ #include "common/utils/LOG/log.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" #include "RRC/NR/nr_rrc_extern.h" #include "common/utils/nr/nr_common.h" diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c index 251566f64b..740aa40a12 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c @@ -41,8 +41,6 @@ #include "common/utils/LOG/vcd_signal_dumper.h" #include "common/utils/nr/nr_common.h" #include "UTIL/OPT/opt.h" -#include "OCG.h" -#include "OCG_extern.h" #include "openair2/LAYER2/nr_rlc/nr_rlc_oai_api.h" diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c index c5eadf0a34..b0b4e235c6 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c @@ -40,8 +40,6 @@ #include "LAYER2/MAC/mac_extern.h" #include "RRC/LTE/rrc_proto.h" #include "pdcp_primitives.h" -#include "OCG.h" -#include "OCG_extern.h" #include "otg_rx.h" #include "common/utils/LOG/log.h" #include diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c index a909343965..11ee36669b 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c @@ -51,8 +51,6 @@ extern int otg_enabled; #include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h" #include "NETWORK_DRIVER/LITE/constant.h" //#include "SIMULATION/ETH_TRANSPORT/extern.h" -#include "UTIL/OCG/OCG.h" -#include "UTIL/OCG/OCG_extern.h" #include "common/utils/LOG/log.h" #include "UTIL/OTG/otg_tx.h" #include "nfapi/oai_integration/vendor_ext.h" diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c index 0bd1b8fa8d..b832fee136 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c @@ -54,8 +54,6 @@ #include "common/utils/LOG/log.h" #include "common/utils/system.h" -#include "UTIL/OCG/OCG.h" -#include "UTIL/OCG/OCG_extern.h" #include "LAYER2/MAC/mac_extern.h" #include "pdcp.h" diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c index d9feb95590..f30dc1932e 100644 --- a/openair2/RRC/LTE/rrc_eNB.c +++ b/openair2/RRC/LTE/rrc_eNB.c @@ -59,6 +59,7 @@ #include "LTE_SL-CommConfig-r12.h" #include "LTE_PeriodicBSR-Timer-r12.h" #include "LTE_RetxBSR-Timer-r12.h" +#include "PHY/defs_eNB.h" #include "LTE_BCCH-BCH-Message-MBMS.h" #include "LTE_BCCH-DL-SCH-Message-MBMS.h" @@ -79,8 +80,6 @@ #include "RRC/NAS/nas_config.h" #include "RRC/NAS/rb_config.h" -#include "OCG.h" -#include "OCG_extern.h" #include "UTIL/OSA/osa_defs.h" diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c index 00ff6f39cc..45a1879146 100644 --- a/openair2/RRC/NR/rrc_gNB.c +++ b/openair2/RRC/NR/rrc_gNB.c @@ -74,8 +74,6 @@ #include "RRC/NAS/nas_config.h" #include "RRC/NAS/rb_config.h" -#include "OCG.h" -#include "OCG_extern.h" #include "UTIL/OSA/osa_defs.h" diff --git a/openair2/UTIL/CLI/cli_cmd.c b/openair2/UTIL/CLI/cli_cmd.c index a490255574..021c7c0b97 100644 --- a/openair2/UTIL/CLI/cli_cmd.c +++ b/openair2/UTIL/CLI/cli_cmd.c @@ -31,8 +31,6 @@ #include "cli.h" -#include "OCG.h" -#include "OCG_extern.h" #include "log.h" #include "log_extern.h" diff --git a/openair2/UTIL/MATH/oml.h b/openair2/UTIL/MATH/oml.h index 70f677a559..abdc8fbf09 100644 --- a/openair2/UTIL/MATH/oml.h +++ b/openair2/UTIL/MATH/oml.h @@ -20,7 +20,7 @@ */ /*! \file oml.h -* \brief Data structure for OCG of OpenAir emulator +* \brief Data structure for OML * \author N. Nikaein and A. Hafsaoui * \date 2011 * \version 1.0 diff --git a/openair2/UTIL/OCG/.directory b/openair2/UTIL/OCG/.directory deleted file mode 100644 index 7e667a51d7..0000000000 --- a/openair2/UTIL/OCG/.directory +++ /dev/null @@ -1,3 +0,0 @@ -[Dolphin] -Sorting=6 -Timestamp=2011,2,7,10,19,55 diff --git a/openair2/UTIL/OCG/Doxyfile b/openair2/UTIL/OCG/Doxyfile deleted file mode 100644 index 5f58666d6e..0000000000 --- a/openair2/UTIL/OCG/Doxyfile +++ /dev/null @@ -1,231 +0,0 @@ -# Doxyfile 1.5.3 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = OpenAirInterface -PROJECT_NUMBER = V1.0 -OUTPUT_DIRECTORY = -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = YES -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = NO -QT_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = NO -BUILTIN_STL_SUPPORT = NO -CPP_CLI_SUPPORT = NO -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = NO -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -EXTRACT_ANON_NSPACES = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = NO -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = OCG.h OCG_vars.h OCG_extern.h OCG_get_opt.h OCG_detect_file.h OCG_parse_filename.h OCG_create_dir.h OCG_parse_XML.h OCG_save_XML.h OCG_generate_report.h Readme.doxy -INPUT_ENCODING = UTF-8 -FILE_PATTERNS = -RECURSIVE = NO -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXCLUDE_SYMBOLS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = images/ -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -REFERENCES_LINK_SOURCE = YES -USE_HTAGS = NO -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -HTML_DYNAMIC_SECTIONS = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = YES -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -MSCGEN_PATH = -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = YES -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = YES -TEMPLATE_RELATIONS = NO -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -CALLER_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = /usr/bin/dot -DOTFILE_DIRS = -DOT_GRAPH_MAX_NODES = 50 -MAX_DOT_GRAPH_DEPTH = 0 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/openair2/UTIL/OCG/OCG.c b/openair2/UTIL/OCG/OCG.c deleted file mode 100644 index c3665c93f5..0000000000 --- a/openair2/UTIL/OCG/OCG.c +++ /dev/null @@ -1,263 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG.c -* \brief Main function containing the FSM of OCG -* \author Navid Nikaein and Lusheng Wang -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -/*--- INCLUDES ---------------------------------------------------------------*/ -#include -#include -#include -#include -#include -#include -#include -#include "OCG.h" -#include "OCG_vars.h" -#include "OCG_detect_file.h" -#include "OCG_parse_filename.h" -#include "OCG_create_dir.h" -#include "OCG_parse_XML.h" -#include "OCG_save_XML.h" -#include "OCG_generate_report.h" -#include "UTIL/LOG/log.h" -/*----------------------------------------------------------------------------*/ -//#define TEST_OCG - - - -#ifdef TEST_OCG -int main(int argc, char *argv[]) -{ -#else -int OCG_main(char is_local_server[FILENAME_LENGTH_MAX]) -{ -#endif - int state = STATE_START_OCG; - char web_XML_folder[DIR_LENGTH_MAX] = ""; - char output_dir[DIR_LENGTH_MAX] = ""; // the output folder during the OCG procedure. Change step by step - - char *OPENAIR_TARGETS=getenv("OPENAIR_TARGETS"); - - if (OPENAIR_TARGETS == NULL) { - LOG_E(OCG, "please set the PATH for OPENAIR_TARGETS"); - exit(EXIT_FAILURE); - } - - if (!strcmp(is_local_server, "0")) { // Eurecom web server - strcpy(web_XML_folder, WEB_XML_FOLDER); - strcat(output_dir, OUTPUT_DIR); - } else { // local user - - sprintf(web_XML_folder,"%s/SIMU/EXAMPLES/OSD/WEBXML/",getenv("OPENAIR_TARGETS")); - sprintf(output_dir,"%s/SIMU/EXAMPLES/OSD/RESULTS/",getenv("OPENAIR_TARGETS")); - /* - strcpy(web_XML_folder, OPENAIR_TARGETS); - strcpy(output_dir, OPENAIR_TARGETS); - - char *slash; - slash = web_XML_folder + strlen(web_XML_folder) - 1; - if (strcmp(slash, "/")) { // check if the path OPENAIR_TARGETS is ended with a '/' - strcat(web_XML_folder, "/"); - strcat(output_dir, "/"); - } - strcat(web_XML_folder, "SIMU/EXAMPLES/OSD/WEBXML/"); - strcat(output_dir, "SIMU/EXAMPLES/OSD/RESULTS/"); - */ - } - - LOG_I(OCG, "Folder for detecting the XML configuration file is %s\n", web_XML_folder); - LOG_I(OCG, "Folder for generating the results is %s\n", output_dir); - LOG_I(OCG, "OSD XML config file is %s\n", is_local_server); - - - while(state != STATE_END) { - - switch(state) { - - case STATE_START_OCG : - LOG_I(OCG, "OCG starts ...\n\n"); - get_opt_OK = MODULE_NOT_PROCESSED; // -9999 is the initial value, representing the module not processed - detect_file_OK = MODULE_NOT_PROCESSED; - create_dir_OK = MODULE_NOT_PROCESSED; - - // to write the pid into a file 'OCG.pid' so that the web portal part could check if OCG is running - /* - pid_t pid; - pid = getpid(); - FILE *OCG_pid; - OCG_pid = fopen("OCG.pid", "w"); - fprintf(OCG_pid, "%d\n", pid); - fclose(OCG_pid); - */ -#ifdef TEST_OCG - state = STATE_GET_OPT; - - case STATE_GET_OPT : - get_opt_OK = get_opt(argc, argv); - - if (get_opt_OK == MODULE_OK) { - strcpy(src_file, LOCAL_XML_FOLDER); - copy_or_move = 1; - state = STATE_INI_EMU; - } else if (get_opt_OK == GET_HELP) state = STATE_END; - else state = STATE_DETECT_FILE; - - break; -#else - state = STATE_DETECT_FILE; - //get_opt_OK == MODULE_OK; -#endif - - case STATE_DETECT_FILE : - strcpy(src_file, web_XML_folder); - detect_file_OK = detect_file(src_file, is_local_server); - - if (detect_file_OK == MODULE_OK) { - if ((!strcmp(is_local_server, "0")) || (!strcmp(is_local_server, "-1"))) copy_or_move = 2; - - state = STATE_INI_EMU; - } else if (detect_file_OK == MODULE_ERROR) state = STATE_GENERATE_REPORT; - else if (detect_file_OK == NO_FILE) { - state = STATE_DETECT_FILE; - sleep(1); - } - - break; - - case STATE_INI_EMU : // before initiating an emu, an XML file should be found above - parse_filename_OK = MODULE_NOT_PROCESSED; - create_dir_OK = MODULE_NOT_PROCESSED; - parse_XML_OK = MODULE_NOT_PROCESSED; - save_XML_OK = MODULE_NOT_PROCESSED; - // call_emu_OK = MODULE_NOT_PROCESSED; - //config_mobi_OK = MODULE_NOT_PROCESSED; - generate_report_OK = MODULE_NOT_PROCESSED; - - LOG_I(OCG, "An emulation for file %s is initiated\n", filename); - state = STATE_PARSE_FILENAME; - break; - - case STATE_PARSE_FILENAME : - strcat(src_file, filename); - - if ((parse_filename_OK = parse_filename(filename)) == MODULE_OK) state = STATE_CREATE_DIR; - else { - if (copy_or_move == 2) { - remove(src_file); - state = STATE_DETECT_FILE; - } else state = STATE_GENERATE_REPORT; - } - - break; - - case STATE_CREATE_DIR : - if ((create_dir_OK = create_dir(output_dir, user_name, file_date)) == MODULE_OK) { - state = STATE_PARSE_XML; - strcat(output_dir, user_name); - strcat(output_dir, "/"); - strcat(output_dir, file_date); - strcat(output_dir, "/"); - strcpy(dst_dir, output_dir); - oai_emulation.info.output_path = dst_dir; // information for other modules within OAI - } else state = STATE_GENERATE_REPORT; - - break; - - case STATE_PARSE_XML : - if ((parse_XML_OK = parse_XML(src_file)) == MODULE_OK) state = STATE_SAVE_XML; - else { - if (copy_or_move == 2) remove(src_file); - - state = STATE_GENERATE_REPORT; - } - - break; - - case STATE_SAVE_XML : - if ((save_XML_OK = save_XML(copy_or_move, src_file, output_dir, filename)) == MODULE_OK) - state = STATE_CALL_EMU; - else state = STATE_GENERATE_REPORT; - - break; - - case STATE_CALL_EMU : // change this state to set_params - - if ((detect_file_OK == MODULE_OK) && (parse_filename_OK == MODULE_OK) && (create_dir_OK == MODULE_OK) && (parse_XML_OK == MODULE_OK) && (save_XML_OK == MODULE_OK)) { - // if the above tasks are all successful, we could tell the oaisim_config.c that everything is ready before running the emulation - oai_emulation.info.ocg_ok = 1; - } - -#ifdef TEST_OCG - call_emu_OK = call_emu(output_dir); - // config_mobi_OK = config_mobi("RWMEmulator.xml", filename); // generate the XML for Mobigen -#endif - state = STATE_GENERATE_REPORT; - break; - - case STATE_GENERATE_REPORT : - if (create_dir_OK != MODULE_OK) { - // a temp folder is required when the output folder could not be correctly generated - strncpy(output_dir, OPENAIR_TARGETS, sizeof(output_dir)); - output_dir[sizeof(output_dir) - 1] = 0; // terminate string - strncat(output_dir, "SIMU/EXAMPLES/OSD/", sizeof(output_dir) - strlen(output_dir) - 1); - strncat(output_dir, TEMP_OUTPUT_DIR, sizeof(output_dir) - strlen(output_dir) - 1); - struct stat st; - - if(stat(output_dir, &st) != 0) { // if temp output directory does not exist, we create it here - mkdir(output_dir, S_IRWXU | S_IRWXG | S_IRWXO); - LOG_I(OCG, "temp output directory %s is created", output_dir); - } - } else { - //strcat(output_dir, "SCENARIO/STATE/"); // if needeed the outpur directory can be further set - LOG_I(OCG, "Output directory is %s \n", output_dir); - } - - generate_report(output_dir, "OCG_report.xml"); - - if (copy_or_move == 1) state = STATE_END; - else state = STATE_END; - - //else state = STATE_DETECT_FILE; - break; - } - } // end while - - // Cleanup function for the XML library. - xmlCleanupParser(); - // this is to debug memory for regression tests - xmlMemoryDump(); - LOG_I(OCG, "... OCG ends\n\n"); -#ifdef TEST_OCG - return 0; -#else - return 1; -#endif -} - diff --git a/openair2/UTIL/OCG/OCG.h b/openair2/UTIL/OCG/OCG.h deleted file mode 100644 index 452581bb17..0000000000 --- a/openair2/UTIL/OCG/OCG.h +++ /dev/null @@ -1,769 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG.h -* \brief Data structure for OCG of OpenAir emulator -* \author Navid Nikaein, Lusheng Wang and Andre Gomes(One source) -* \date 2011 -* \version 1.0 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -//#include "SIMULATION/TOOLS/defs.h" - - -#ifndef __OCG_H__ -#define __OCG_H__ - -#include "PHY/defs_common.h" -#include "PHY/impl_defs_top.h" -#include "platform_types.h" -# include "s1ap_eNB.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif -/** @defgroup _OCG OpenAir Config Generation (OCG) - * @{*/ -/* @}*/ - -/** @defgroup _useful_macro Macro Definition - * @ingroup _OCG - * @brief the following macros will be used in the code of OCG - * @{*/ -#define MODULE_NOT_PROCESSED -9999 /*!< \brief the module state indicator is set to -9999 before the module being processed */ -#define MODULE_ERROR -1 /*!< \brief the module state indicator is set to -1 for error */ -#define MODULE_OK 0 /*!< \brief the module state indicator is set to 0 when successfully processed */ -#define GET_HELP 1 /*!< \brief the module state indicator is set to 1 for get_opt_OK when the user types -h option */ -#define NO_FILE -2 /*!< \brief the module state indicator is set to -2 for detect_file_OK when no file is detected */ -#define WEB_XML_FOLDER "/nfs/webxml/" /*!< \brief the web portal generates XML files into this folder */ -#define LOCAL_XML_FOLDER "local_XML/" /*!< \brief this folder contains some XML files for demo, users could also put their own XML files into this folder for a direct emulation without using the web portal */ -#define TEMP_OUTPUT_DIR "temp_output/" /*!< \brief temporary output files will be generated in this folder when folders for an emulation could not be created due to errors */ -#define OUTPUT_DIR "/nfs/emu_results/" /*!< \brief this folder contains all the output files when folders for an emulation could be successfully created */ -#define FILENAME_LENGTH_MAX 128 /*!< \brief the maximum length of a filename */ -#define DIR_LENGTH_MAX 128 /*!< \brief the maximum length of the path name */ -#define MOBI_XML_FOLDER "mobi_XML/" /*!< \brief the folder that mobigen generate XML files in */ -#define DIR_TO_MOBIGEN "XML_to_mobigen/" /*!< \brief the folder that mobigen detects XML file from OCG */ - -#define NUMBER_OF_MASTER_MAX 20 - -/* @}*/ - - - -/** @defgroup _enum_fsm OCG Finite State Machine (FSM) - * @ingroup _OCG - * @brief See the flow chart for details - * @{*/ - -/** @defgroup _fsm_flow FSM Flow Chart - * @ingroup _enum_fsm - * @brief This flow chart shows how the FSM works - -There are the following steps the OCG module should contain : -- start OCG -- get option -- detect file -- initiate an emulation -- parse filename -- create directory -- parse XML -- save XML -- call OAI emulator -- generate report -- end OCG - -The following diagram is based on graphviz (http://www.graphviz.org/), you need to install the package to view the diagram. - - * \dot - * digraph ocg_flow_chart { - * node [shape=rect, fontname=Helvetica, fontsize=14,style=filled,fillcolor=lightgrey]; - * a [ label = " start OCG"]; - * b1 [ label = " get option"]; - * b2 [ label = " detect file"]; - * c [ label = " initiate an emulation"]; - * d [ label = " parse filename"]; - * e [ label = " create directory"]; - * f [ label = " parse XML"]; - * g [ label = " save XML"]; - * i [ label = " generate report"]; - * j [ label = " end OCG"]; - * a->b1; - * b1->b2 [ label = "OCG" ]; - * b1->c [ label = "OCG -f filename" ]; - * b1->j [ label = "OCG -h or command wrong" ]; - * b2->c [ label = "file detected" ]; - * b2->b2 [ label = "check every sec" ]; - * c->d; - * d->e [ label = "OK" ]; - * d->i [ label = "error" ]; - * e->f [ label = "OK" ]; - * e->i [ label = "error" ]; - * f->g [ label = "OK" ]; - * f->i [ label = "error" ]; - * g->i [ label = "OK" ]; - * g->i [ label = "error" ]; - * i->b2; - * label = "OCG Flow Chart" - * - * } - * \enddot - */ - -enum { - STATE_START_OCG, /*!< \brief initiate OCG */ - STATE_GET_OPT, /*!< \brief get options of OCG command */ - STATE_DETECT_FILE, /*!< \brief detect the configuration file in folder USER_XML_FOLDER */ - STATE_INI_EMU, /*!< \brief initiate an emulation after finding a configuration file */ - STATE_PARSE_FILENAME, /*!< \brief parse the filename into user_name and file_date */ - STATE_CREATE_DIR, /*!< \brief create directory for current emulation */ - STATE_PARSE_XML, /*!< \brief parse the configuration file */ - STATE_SAVE_XML, /*!< \brief save the configuration file to the created directory */ - STATE_CALL_EMU, /*!< \brief call the emulator */ - STATE_GENERATE_REPORT, /*!< \brief generate some information of OCG */ - STATE_END /*!< \brief lead to an end of the OCG process */ -}; -/* @}*/ - -// the OSD_basic : - - - -typedef struct { - char *selected_option; - int free_space; - int urban; - int rural; -} Large_Scale; - -////// options of generic -typedef struct { - double pathloss_exponent; // default 2 - double pathloss_0_dB; // default -50 dB -} Free_Space_Model_Parameters; - -typedef struct { - char *selected_option; - int SCM_A; //3GPP 36.384 Spatial channel model A - int SCM_B; - int SCM_C; - int SCM_D; - int rayleigh_8tap; // updated to advanced - int ricean_8tap; - int EPA; - int EVA; - int ETU; -} Small_Scale; - -////// options of Ricean_8Tap -typedef struct { - int rice_factor_dB; // default 10 dB -} Ricean_8Tap; - -typedef struct { - double decorrelation_distance_m; // (m), default 100m - double variance_dB; // (dB), default 10dB - double inter_site_correlation; // (0...1), default 1, not yet implemented -} Shadowing; - -typedef struct { - Large_Scale large_scale; - Small_Scale small_scale; - Shadowing shadowing; - - Free_Space_Model_Parameters free_space_model_parameters; - Ricean_8Tap ricean_8tap; -} Fading; - -typedef struct { - int number_of_sectors; /// Number of sectors (1-3), for UE always 1 - double beam_width_dB; /// Antenna 3dB beam width (in radians) (set to 2*M_PI for onmidirectional antennas), for UE always 2*M_PI - double alpha_rad[3]; /// Antenna orientation for each sector (for non-omnidirectional antennas) in radians wrt north - double antenna_gain_dBi; /// Antenna gain (dBi) (same for Tx and Rx) - double tx_power_dBm; /// Tx power (dBm) - double rx_noise_level_dB; /// Rx noise level (dB) - double antenna_orientation_degree[3]; // 3 is the number of sectors for OpenAir // we need think about how to parse it from the XML ?????? -} eNB_Antenna; - -typedef struct { - double antenna_gain_dBi; /// Antenna gain (dBi) (same for Tx and Rx) - double tx_power_dBm; /// Tx power (dBm) - double rx_noise_level_dB; /// Rx noise level (dB) -} UE_Antenna; - -typedef struct { - eNB_Antenna eNB_antenna; - UE_Antenna UE_antenna; -} Antenna; - -/** @defgroup _envi_config Environment Configuration - * @ingroup _OSD_basic - * @brief Including simulation area, geography, topography, fading information, etc - * @{*/ -typedef struct { - Fading fading; - double wall_penetration_loss_dB; - double system_bandwidth_MB; - double system_frequency_GHz; - Antenna antenna; -} Environment_System_Config; -/* @}*/ - - -typedef struct { - double x_m; - double y_m; - //double zz; // for test -} Area; - -typedef struct { - char *selected_option; - int homogeneous; - int heterogeneous; -} Network_Type; - -typedef struct { - char *selected_option; - int macrocell; - int microcell; - int picocell; - int femtocell; -} Cell_Type; - -typedef struct { - int number_of_relays; -} Relay; // may not exist in the XML if RELAY is not selected by the user - -typedef struct { - char *selected_option; - int fixed; // static - int random_waypoint; - int random_walk; - int grid_walk; - int trace; - int sumo; -} UE_Mobility_Type; - -////// options of UE_Mobility_Type -typedef struct { - char *selected_option; - int horizontal_grid; - int vertical_grid; -} Grid_Map; - -typedef struct { - char *selected_option; - int random_destination; // TRIP_RANDOM - int random_turn; // TRIP_NONE -} Grid_Trip_Type; - -typedef struct { - Grid_Map grid_map; - Grid_Trip_Type grid_trip_type; // JHNote: modificaiton -} Grid_Walk; -////// - -typedef struct { - char *selected_option; - int random; - int concentrated; - int grid; -} UE_Initial_Distribution; - -////// options of UE_Initial_Distribution -typedef struct { - int number_of_nodes; -} Random_UE_Distribution; - -typedef struct { - int number_of_nodes; -} Concentrated_UE_Distribution; - -typedef struct { - int number_of_nodes; -} Random_Grid; - -typedef struct { - int number_of_nodes; -} Border_Grid; - -typedef struct { - char *selected_option; - Random_Grid random_grid; // random choice of vertex in Grid_Graph mobility - Border_Grid border_grid; // random choice of vertex located on the border in Grid_Graph mobility -} Grid_UE_Distribution; -////// - -typedef struct { - double min_speed_mps; // m/s - double max_speed_mps; - double min_sleep_ms; - double max_sleep_ms; - double min_journey_time_ms; - double max_journey_time_ms; -} UE_Moving_Dynamics; // now, we use uniform distribution for these dynamics -typedef struct { - char *trace_mobility_file; -} Trace_Configuration; -typedef struct { - char *command; - char *file; //!< 256 bytes memory (see oaisim_config.c) - int start; - int end; - int step; - char *hip; - int hport; -} SUMO_Configuration; -typedef struct { - UE_Mobility_Type UE_mobility_type; - // ! Note: Grid_Walk is a UE_Mobility_Type, we put it here for the sake of simplicity of the XML file - Grid_Walk grid_walk; - - UE_Initial_Distribution UE_initial_distribution; - // ! Note: the following three options are for UE_Initial_Distribution, we put them here for the sake of simplicity of the XML file - Random_UE_Distribution random_UE_distribution; - Concentrated_UE_Distribution concentrated_UE_distribution; - Grid_UE_Distribution grid_UE_distribution; - - UE_Moving_Dynamics UE_moving_dynamics; - Trace_Configuration trace_config; - SUMO_Configuration sumo_config; -} UE_Mobility; - -typedef struct { - char *selected_option; - int fixed; - int mobile; // at this moment, it is OMG who decides this mobility type, so there is even no config of moving dynamics for eNB -} eNB_Mobility_Type; - -typedef struct { - char *selected_option; - int random; - int hexagonal; - int grid; -} eNB_Initial_Distribution; - -typedef struct { - double pos_x; - double pos_y; -} Fixed_eNB_Distribution; - -////// options of eNB_Initial_Distribution -typedef struct { - int number_of_cells; -} Random_eNB_Distribution; - -typedef struct { - int number_of_cells; - double inter_eNB_distance_km; -} Hexagonal_eNB_Distribution; - -typedef struct { - int number_of_grid_x; - int number_of_grid_y; -} Grid_eNB_Distribution; // inter_eNB_distance = (x/num_x) and (y/num_y) for horizontal and vertical dimensions -////// - -typedef struct { - eNB_Mobility_Type eNB_mobility_type; - - eNB_Initial_Distribution eNB_initial_distribution; - // ! Note: the following four options are for eNB_Initial_Distribution, we put them here for the sake of simplicity of the XML file - Fixed_eNB_Distribution fixed_eNB_distribution; - Random_eNB_Distribution random_eNB_distribution; - Hexagonal_eNB_Distribution hexagonal_eNB_distribution; - Grid_eNB_Distribution grid_eNB_distribution; - Trace_Configuration trace_config; -} eNB_Mobility; - -typedef struct { - UE_Mobility UE_mobility; - eNB_Mobility eNB_mobility; -} Mobility; - -/** @defgroup _topo_config Topology Configuration - * @ingroup _OSD_basic - * @brief Including cell type, eNB topology, UE distribution, mobility information, etc - * @{*/ -typedef struct { - Area area; - Network_Type network_type; - Cell_Type cell_type; - Relay relay; - Mobility mobility; - int omv; -} Topology_Config; -/* @}*/ - - -typedef struct { - uint16_t priority[11];//pas possible d'acceder au MAX_NUM_LCID - // - uint8_t DCI_aggregation_min; - uint8_t DLSCH_dci_size_bits; - //UL transmission bandwidth in RBs - uint8_t ul_bandwidth[11]; - //DL transmission bandwidth in RBs - uint8_t dl_bandwidth[11]; - //UL transmission bandwidth in RBs - uint8_t min_ul_bandwidth[11]; - //DL transmission bandwidth in RBs - uint8_t min_dl_bandwidth[11]; - //aggregated bit rate of non-gbr bearer per UE - uint64_t ue_AggregatedMaximumBitrateDL; - //aggregated bit rate of non-gbr bearer per UE - uint64_t ue_AggregatedMaximumBitrateUL; - //CQI scheduling interval in subframes. - uint16_t cqiSchedInterval; - //Contention resolution timer used during random access - uint8_t mac_ContentionResolutionTimer; - uint16_t max_allowed_rbs[11]; - uint8_t max_mcs[11]; - - - uint8_t num_groups; - - -} Mac_config; - -/** @defgroup _Predefined_traffic Configuration - * @ingroup _OSD_basic - * @brief Including Application type, Source, destination, background, etc - * @{*/ -typedef struct { - char *application_type[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - char *source_id[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - char *destination_id[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - char *background[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - unsigned int aggregation_level[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - int flow_start[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - int flow_duration[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - -} Predefined_Traffic; -/* @}*/ - - -/* - typedef struct - { - - } M2M_Traffic;*/ -/* @}*/ - -/** @defgroup _customized_traffic Configuration - * @ingroup _OSD_basic - * @brief Including Application type, Source, destination, background, idt, packet size, etc - * @{*/ -typedef struct { - //int pu; - //double prob_off_pu; - //double prob_pu_ed; - //double holding_time_off_pu; - //int pe; - //double prob_off_ed; - //double prob_ed_pe; - //double holding_time_off_ed; - //int ed; - //double holding_time_off_pe; - - char *application_type[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - char *source_id[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - char *destination_id[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - char *traffic[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - char *transport_protocol[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - char *ip_version[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - char *background[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - char *idt_dist[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - int idt_min_ms[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - int idt_max_ms[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - double idt_standard_deviation[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - double idt_lambda[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - double idt_scale[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - double idt_shape[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - char *size_dist[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - int size_min_byte[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - int size_max_byte[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - double size_standard_deviation[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - double size_lambda[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - double size_scale[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - double size_shape[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - int stream[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - int destination_port[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - unsigned int aggregation_level[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - int flow_start[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - int flow_duration[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - - char *m2m[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - //M2M_Traffic m2m_traffic; - double prob_off_pu[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - double prob_off_ed[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - double prob_off_pe[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - double prob_pu_ed[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - double prob_pu_pe[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - double prob_ed_pe[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - double prob_ed_pu[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - unsigned int holding_time_off_ed[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - unsigned int holding_time_off_pu[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - unsigned int holding_time_off_pe[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - unsigned int holding_time_pe_off[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - unsigned int pu_size_pkts[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; - unsigned int ed_size_pkts[NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX]; -} Customized_Traffic; -/* @}*/ - - - - -/** @defgroup _app_config Application Configuration - * @ingroup _OSD_basic - * @brief Including application type and traffic information - * @{*/ -typedef struct { - char *packet_gen_type; - Predefined_Traffic predefined_traffic; - Customized_Traffic customized_traffic; -} Application_Config; -/* @}*/ - -typedef struct { - char *throughput; - char *latency; - char *loss_rate; - int signalling_overhead; - char *owd_radio_access; -} Performance_Metrics; - -typedef struct { - int phy; - int mac; - int rlc; - int rrc; - int pdcp; - int omg; - int emu; - int otg; -} Layer; - -typedef struct { - char *level; - char *verbosity; - int interval; -} Log_Emu; - -typedef struct { - int enabled; - unsigned int start_time; - unsigned int end_time; -} Packet_Trace; - -typedef struct { - int value; -} Seed; - - -/** @defgroup _emu_config Emulation Configuration - * @ingroup _OSD_basic - * @brief Including emulation time and performance output - * @{*/ -typedef struct { - double emulation_time_ms; - Performance_Metrics performance_metrics; - Layer layer; - Log_Emu log_emu; - Packet_Trace packet_trace; - Seed seed; - char *curve; - char *background_stats; - // CLI tags are in Info - //char g_log_level[20]; -} Emulation_Config; -/* @}*/ - -/** @defgroup _OSD_basic OAI protocol config - * @ingroup _OCG - * @brief OAI Emulation struct for protocol configuration - * @{*/ - -typedef struct { - uint8_t num_groups; -} eNB_MAC_Config; - -typedef struct { - eNB_MAC_Config eNB_mac_config; /*!< \brief eNB MAC configuration parameters */ - -} Protocol_Config; - - -/* @}*/ - -/** @defgroup _OSD_basic Basic OpenAirInterface Scenario Descriptor - * @ingroup _OCG - * @brief OAI Emulation struct for OSD_basic - * @{*/ - - -typedef struct { - unsigned char nb_ue; - module_id_t first_ue; - unsigned char nb_enb; - module_id_t first_enb; -} master_info_t; - -typedef struct { - char *output_path; /*!< \brief The path where we generate all the emulation results */ - int ocg_ok; - - // distributed emulation params - master_info_t master[NUMBER_OF_MASTER_MAX]; - unsigned char nb_ue_local; - unsigned char nb_ue_remote; - unsigned char nb_enb_local; - unsigned char nb_enb_remote; - unsigned char nb_ru_local; - unsigned char nb_ru_remote; - unsigned char nb_rn_local; - unsigned char nb_rn_remote; - module_id_t first_enb_local; - module_id_t first_rn_local; - module_id_t first_ue_local; - unsigned short master_id; - unsigned char nb_master; - unsigned int master_list; - unsigned int is_primary_master; - unsigned int ethernet_id; - char local_server[128]; // for the oaisim -c option : 0 = EURECOM web portal; -1 = local; 1 - N or filename = running a specific XML configuration file - unsigned char ethernet_flag; - unsigned char multicast_group; - char *multicast_ifname; - // status - unsigned char ocg_enabled; // openair config generator - unsigned char ocm_enabled; // openair channel modeling - unsigned char opt_enabled;//openair packet tracer - unsigned char opt_mode; // openair packet tracer mode: wireshark, pcap - unsigned char otg_enabled; // openair traffic generator - unsigned char omv_enabled; // openair mobility visulizer - unsigned char opp_enabled; // openair performance profiler - unsigned char oeh_enabled; // openair event handler, with CLI this could provide a remote event management - unsigned char vcd_enabled; - char *vcd_file; - unsigned char eMBMS_active_state; - unsigned char cba_group_active; - unsigned char cba_backoff; - unsigned char handover_active; - char *otg_traffic; - unsigned char otg_bg_traffic_enabled; - unsigned char omg_model_rn; - unsigned char omg_model_enb; - unsigned char omg_model_ue; - unsigned char omg_rwp_type; - unsigned char omg_model_ue_current; // when mixed mbility is used - // control eNB/UE instance through CLI - unsigned char cli_enabled; - unsigned char cli_num_enb; - unsigned char cli_start_enb[NUMBER_OF_eNB_MAX]; - unsigned char cli_num_ue; - unsigned char cli_start_ue[NUMBER_OF_UE_MAX]; - unsigned char oai_ifup[NUMBER_OF_eNB_MAX+NUMBER_OF_UE_MAX]; - // emu related - unsigned int seed; - unsigned int frame; - double time_s; - double time_ms; - unsigned int g_log_level; - unsigned int g_log_verbosity; - char *g_log_verbosity_option; - // phy related params - unsigned int n_frames; - unsigned int n_frames_flag; // if set, then let the emulation goes to infinity - node_function_t node_function[MAX_NUM_CCs]; - node_timing_t node_timing[MAX_NUM_CCs]; - unsigned char frame_type[MAX_NUM_CCs]; //! LTE frame type (TDD=1, FDD=0). \note this should be converted to \ref frame_type_t (header file reorganization needed) - char *frame_type_name[MAX_NUM_CCs]; - unsigned char tdd_config[MAX_NUM_CCs]; - unsigned char tdd_config_S[MAX_NUM_CCs]; - unsigned char extended_prefix_flag[MAX_NUM_CCs]; - unsigned char N_RB_DL[MAX_NUM_CCs]; - unsigned char transmission_mode[MAX_NUM_CCs]; - int max_predefined_traffic_config_index; - int max_customized_traffic_config_index; - s1ap_eNB_config_t s1ap_config; - - /* Per-Slot ISR - * Interval between two ISR = 500usec - */ - unsigned char slot_isr; - int slot_sfd; -} Info; -/* @}*/ - -/** @defgroup _OSD_basic Basic OpenAirInterface Scenario Descriptor - * @ingroup _OCG - * @brief OAI Emulation struct for OSD_basic - * @{*/ -typedef struct { - Mac_config mac_config[NUMBER_OF_UE_MAX]; - Environment_System_Config environment_system_config; /*!< \brief Evironment configuration */ - Topology_Config topology_config; /*!< \brief Topology configuration */ - Application_Config application_config; /*!< \brief Applications configuration */ - Emulation_Config emulation_config; /*!< \brief Emulation configuration */ - Protocol_Config protocol_config; /* specific protocol configuration*/ - Info info; /*!< \brief Some important information which should be able to be reached by OAISIM */ - char *profile; -} OAI_Emulation; -/* @}*/ - - -/** @defgroup _fn Functions in OCG - * @ingroup _OCG - * @brief describing all the functions used by OCG - * @{*/ -/* @} */ - -/** @defgroup _log_gen LOG GEN Commands - * @ingroup _OCG - * @brief using the following macro instead of "printf" - * @{*/ - -//#define LOG_A printf("OCG: "); printf /*!< \brief alert */ -//#define LOG_C printf("OCG: "); printf /*!< \brief critical */ -//#define LOG_W printf("OCG: "); printf /*!< \brief warning */ -//#define LOG_N printf("OCG: "); printf /*!< \brief notice */ -//#define LOG_E printf("OCG: "); printf /*!< \brief error */ -//#define LOG_I printf("OCG: "); printf /*!< \brief info */ -//#define LOG_D printf("OCG: "); printf /*!< \brief debug */ -//#define LOG_T printf("OCG: "); printf /*!< \brief trace */ -/* @}*/ - -int OCG_main (char is_local_server[FILENAME_LENGTH_MAX]); - -// void init_oai_emulation (void); -//#include "UTIL/LOG/log.h" - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/openair2/UTIL/OCG/OCG_call_emu.c b/openair2/UTIL/OCG/OCG_call_emu.c deleted file mode 100644 index b6a2c924bf..0000000000 --- a/openair2/UTIL/OCG/OCG_call_emu.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -Lusheng Wang and -/*! \file OCG_call_emu.c -* \brief Call the emulator -* \author Lusheng Wang and Navid Nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -/*--- INCLUDES ---------------------------------------------------------------*/ -#include -#include -#include "OCG_vars.h" -#include "OCG_call_emu.h" -#include "UTIL/LOG/log.h" -/*----------------------------------------------------------------------------*/ - -OAI_Emulation oai_emulation; - -int call_emu(char dst_dir[DIR_LENGTH_MAX]) -{ - - - ////////// print the configuration - FILE *file; - char dst_file[DIR_LENGTH_MAX] = ""; - strcat(dst_file, dst_dir); - strcat(dst_file, "emulation_result.txt"); - file = fopen(dst_file,"w"); - //system("../../../openair1/SIMULATION/LTE_PHY_L2/physim --help"); - - fclose(file); - - LOG_I(OCG, "Emulation finished\n"); - return MODULE_OK; -} diff --git a/openair2/UTIL/OCG/OCG_call_emu.h b/openair2/UTIL/OCG/OCG_call_emu.h deleted file mode 100644 index c7b2bb4327..0000000000 --- a/openair2/UTIL/OCG/OCG_call_emu.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_call_emu.h -* \brief -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -#ifndef __OCG_CALL_EMU_H__ - -#define __OCG_CALL_EMU_H__ - -#ifdef __cplusplus -extern "C" { -#endif -/** @defgroup _call_emu Call Emu - * @ingroup _fn - * @brief Call the emulator - * @{*/ -int call_emu(char dst_dir[DIR_LENGTH_MAX]); -/* @}*/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/openair2/UTIL/OCG/OCG_config_mobi.c b/openair2/UTIL/OCG/OCG_config_mobi.c deleted file mode 100644 index b3100a4214..0000000000 --- a/openair2/UTIL/OCG/OCG_config_mobi.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_config_mobi.c -* \brief Generate an XML to configure the mobility -* \author Lusheng Wang & Navid Nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -/*--- INCLUDES ---------------------------------------------------------------*/ -#include -#include -#include -#include "OCG.h" -#include "OCG_extern.h" -#include "OCG_config_mobi.h" -/*----------------------------------------------------------------------------*/ - -int config_mobi(char mobigen_filename[FILENAME_LENGTH_MAX], char filename[FILENAME_LENGTH_MAX]) { - // for the xml writer, refer to http://xmlsoft.org/html/libxml-xmlwriter.html - char dir_to_mobigen_file[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX]; - char mobi_file[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX] = ""; - xmlTextWriterPtr writer; - strcpy(dir_to_mobigen_file, DIR_TO_MOBIGEN); - strcat(dir_to_mobigen_file, mobigen_filename); - /* Create a new XmlWriter for uri, with no compression. */ - writer = xmlNewTextWriterFilename(dir_to_mobigen_file, 0); - // set the output format of the XML file - xmlTextWriterSetIndent(writer, 1); - xmlTextWriterSetIndentString(writer, " "); - /* Start the document with the xml default for the version, - * encoding ISO 8859-1 and the default for the standalone - * declaration. */ - xmlTextWriterStartDocument(writer, NULL, NULL, NULL); - /* Start an element named "EXAMPLE". Since this is the first - * element, this will be the root element of the document. */ - xmlTextWriterStartElement(writer, "universe"); - /* Write an element named "X_ORDER_ID" as child of HEADER. */ - xmlTextWriterWriteFormatElement(writer, "dimx", "%lf", oai_emulation.topo_config.area.x); - /* Write an element named "X_ORDER_ID" as child of HEADER. */ - xmlTextWriterWriteFormatElement(writer, "dimy", "%lf", oai_emulation.topo_config.area.y); - xmlTextWriterWriteFormatElement(writer, "seed", "%d", 1); - xmlTextWriterStartElement(writer, "extension"); - xmlTextWriterWriteAttribute(writer, "class", "de.uni_stuttgart.informatik.canu.mobisim.simulations.TimeSimulation"); - xmlTextWriterWriteFormatAttribute(writer, "param", "%lf", oai_emulation.emu_config.emu_time); - xmlTextWriterEndElement(writer); - xmlTextWriterStartElement(writer, "extension"); - xmlTextWriterWriteAttribute(writer, "class", "de.uni_stuttgart.informatik.canu.spatialmodel.core.SpatialModel"); - xmlTextWriterWriteFormatAttribute(writer, "max_x", "%lf", oai_emulation.topo_config.area.x); - xmlTextWriterWriteFormatAttribute(writer, "max_y", "%lf", oai_emulation.topo_config.area.y); - xmlTextWriterWriteAttribute(writer, "min_x", "0"); - xmlTextWriterWriteAttribute(writer, "min_y", "0"); - xmlTextWriterWriteFormatElement(writer, "dump_boundary_points", "%s", "false"); - xmlTextWriterWriteFormatElement(writer, "separated_flow", "%s", "false"); - xmlTextWriterWriteFormatElement(writer, "max_traffic_lights", "%d", 500); - xmlTextWriterEndElement(writer); - xmlTextWriterStartElement(writer, "extension"); - xmlTextWriterWriteAttribute(writer, "class", "de.uni_stuttgart.informatik.canu.mobisim.extensions.ReportNodeMobility"); - strcpy(mobi_file, MOBI_XML_FOLDER); - strcat(mobi_file, filename); - xmlTextWriterWriteAttribute(writer, "output", mobi_file); - xmlTextWriterWriteFormatElement(writer, "step", "%d", 1); - xmlTextWriterEndElement(writer); - xmlTextWriterStartElement(writer, "nodegroup"); - xmlTextWriterWriteAttribute(writer, "car2x", "false"); - xmlTextWriterWriteAttribute(writer, "id", ""); - xmlTextWriterWriteAttribute(writer, "n", "50"); - xmlTextWriterWriteAttribute(writer, "type", "car"); - xmlTextWriterStartElement(writer, "position"); - xmlTextWriterWriteAttribute(writer, "random", "true"); - xmlTextWriterWriteFormatElement(writer, "z", "%s", "0.0"); - xmlTextWriterEndElement(writer); - xmlTextWriterStartElement(writer, "extension"); - xmlTextWriterWriteAttribute(writer, "class", "de.uni_stuttgart.informatik.canu.mobisim.mobilitymodels.RandomWaypointWalk"); - - if (!strcmp(oai_emulation.topo_config.UE_mobility.UE_mobility_type.selected_option, "fixed")) { - xmlTextWriterWriteFormatElement(writer, "minspeed", "%d", 0); - xmlTextWriterWriteFormatElement(writer, "maxspeed", "%d", 0); - xmlTextWriterWriteFormatElement(writer, "minstay", "%d", 9999); - xmlTextWriterWriteFormatElement(writer, "maxstay", "%d", 9999); - } else if (!strcmp(oai_emulation.topo_config.UE_mobility.UE_mobility_type.selected_option, "random_waypoint")) { - xmlTextWriterWriteFormatElement(writer, "minspeed", "%lf", oai_emulation.topo_config.UE_mobility.UE_moving_dynamics.min_speed); - xmlTextWriterWriteFormatElement(writer, "maxspeed", "%lf", oai_emulation.topo_config.UE_mobility.UE_moving_dynamics.max_speed); - xmlTextWriterWriteFormatElement(writer, "minstay", "%lf", oai_emulation.topo_config.UE_mobility.UE_moving_dynamics.min_pause_time); - xmlTextWriterWriteFormatElement(writer, "maxstay", "%lf", oai_emulation.topo_config.UE_mobility.UE_moving_dynamics.max_pause_time); - } - - // Close the element named HEADER. - xmlTextWriterEndElement(writer); - xmlTextWriterEndDocument(writer); - xmlFreeTextWriter(writer); - return MODULE_OK; -} - diff --git a/openair2/UTIL/OCG/OCG_config_mobi.h b/openair2/UTIL/OCG/OCG_config_mobi.h deleted file mode 100644 index fbaeb4b281..0000000000 --- a/openair2/UTIL/OCG/OCG_config_mobi.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_config_mobi.h -* \brief -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -#ifndef __OCG_CONFIG_MOBI_H__ - -#define __OCG_CONFIG_MOBI_H__ - -#ifdef __cplusplus -extern "C" { -#endif -/** @defgroup _config_mobi Config Mobigen - * @ingroup _fn - * @brief Generate configuration XML for mobigen - * @{*/ -int config_mobi(char mobigen_filename[FILENAME_LENGTH_MAX], char filename[FILENAME_LENGTH_MAX]); -/* @}*/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/openair2/UTIL/OCG/OCG_create_dir.c b/openair2/UTIL/OCG/OCG_create_dir.c deleted file mode 100644 index 364887163b..0000000000 --- a/openair2/UTIL/OCG/OCG_create_dir.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_create_dir.c -* \brief Create directory for current emulation -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -/*--- INCLUDES ---------------------------------------------------------------*/ -#include -#include -#include -#include "OCG_vars.h" -#include "OCG_create_dir.h" -#include "UTIL/LOG/log.h" -/*----------------------------------------------------------------------------*/ - -int create_dir(char output_dir[DIR_LENGTH_MAX], char user_name[FILENAME_LENGTH_MAX / 2], char file_date[FILENAME_LENGTH_MAX / 2]) -{ - - char directory[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX] = ""; - mode_t process_mask = umask(0); - - strncpy(directory, output_dir, FILENAME_LENGTH_MAX + DIR_LENGTH_MAX); - directory[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX - 1] = 0; // terminate string - - struct stat st; - - if(stat(directory, &st) != 0) { // if output_dir does not exist, we create it here - mkdir(directory, S_IRWXU | S_IRWXG | S_IRWXO); - LOG_I(OCG, "output_dir %s is created", directory); - } - - strncat(directory, user_name, FILENAME_LENGTH_MAX + DIR_LENGTH_MAX - strlen(directory) - 1); - - mkdir(directory, S_IRWXU | S_IRWXG | S_IRWXO); - - strncat(directory, "/", FILENAME_LENGTH_MAX + DIR_LENGTH_MAX - strlen(directory) - 1); - strncat(directory, file_date, FILENAME_LENGTH_MAX + DIR_LENGTH_MAX - strlen(directory) - 1); - - mkdir(directory, S_IRWXU | S_IRWXG |S_IRWXO); - - //char directory_extension[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX + 64] = ""; - /*strcpy(directory_extension, directory); // to create some more folders - strcat(directory_extension, "/LOGS"); - mkdir(directory_extension, S_IRWXU | S_IRWXG |S_IRWXO); - - strcpy(directory_extension, directory); - strcat(directory_extension, "/PACKET_TRACE"); - mkdir(directory_extension, S_IRWXU | S_IRWXG |S_IRWXO); - - strcpy(directory_extension, directory); - strcat(directory_extension, "/SCENARIO"); - mkdir(directory_extension, S_IRWXU | S_IRWXG |S_IRWXO); - - strcpy(directory_extension, directory); - strcat(directory_extension, "/SCENARIO/XML"); - mkdir(directory_extension, S_IRWXU | S_IRWXG |S_IRWXO); - - strcpy(directory_extension, directory); - strcat(directory_extension, "/SCENARIO/STATE"); - mkdir(directory_extension, S_IRWXU | S_IRWXG |S_IRWXO); - */ - umask(process_mask); - - LOG_I(OCG, "Directory for current emulation is created\n"); - return MODULE_OK; - -} diff --git a/openair2/UTIL/OCG/OCG_create_dir.h b/openair2/UTIL/OCG/OCG_create_dir.h deleted file mode 100644 index 692f4b095e..0000000000 --- a/openair2/UTIL/OCG/OCG_create_dir.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_create_dir.h -* \brief -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -#ifndef __OCG_CREATE_DIR_H__ - -#define __OCG_CREATE_DIR_H__ - -#ifdef __cplusplus -extern "C" { -#endif -/** @defgroup _create_dir Create Dir - * @ingroup _fn - * @brief Create directory in OUTPUT_DIR for current emulation - * @{*/ -int create_dir(char output_dir[DIR_LENGTH_MAX], char user_name[FILENAME_LENGTH_MAX / 2], char file_date[FILENAME_LENGTH_MAX / 2]); -/* @}*/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/openair2/UTIL/OCG/OCG_detect_file.c b/openair2/UTIL/OCG/OCG_detect_file.c deleted file mode 100644 index 034f173b77..0000000000 --- a/openair2/UTIL/OCG/OCG_detect_file.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_detect_file.c -* \brief Detect if a new XML is generated from the web portal -* \author Lusheng Wang & Navid Nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -/*--- INCLUDES ---------------------------------------------------------------*/ -#include -#include -#include -#include -#include "OCG_vars.h" -#include "OCG_detect_file.h" -#include "UTIL/LOG/log.h" -/*----------------------------------------------------------------------------*/ - - -int detect_file(char src_dir[DIR_LENGTH_MAX], char is_local_server[FILENAME_LENGTH_MAX]) -{ - DIR *dir = NULL; - struct dirent *file = NULL; - char template[FILENAME_LENGTH_MAX] = ""; - char manual[FILENAME_LENGTH_MAX] = ""; - - if((dir = opendir(src_dir)) == NULL) { - LOG_E(OCG, "Folder %s for detecting the XML configuration file is not found\n", src_dir); - return MODULE_ERROR; - } - - while((file = readdir(dir)) != NULL) { - if(strcmp(file->d_name, ".") && strcmp(file->d_name, "..")) { - if(file->d_type != DT_DIR) { - if ((!strcmp(is_local_server, "0")) || (!strcmp(is_local_server, "-1"))) { // for EURECOM web or local user without specifying the file name - strncpy(template, file->d_name, sizeof("template") - 1); - strncpy(manual, file->d_name, sizeof("manual") - 1); - - if ((!strcmp(template, "template")) || (!strcmp(manual, "manual"))) { // should skip the templates and the manual XML files - - } else { - if (strlen(file->d_name) <= FILENAME_LENGTH_MAX) { - strcpy(filename, file->d_name); - LOG_I(OCG, "Configuration file \"%s\" is detected\n", filename); - closedir(dir); - return MODULE_OK; // find a good file and return - } else { - LOG_E(OCG, "File name too long: char filename[] should be less than 64 characters\n"); - closedir(dir); - return MODULE_ERROR; - } - } - } else { // should use a template or a manual XML file - strncpy(template, is_local_server, sizeof("template") - 1); - strncpy(manual, is_local_server, sizeof("manual") - 1); - - if ((!strcmp(template, "template")) || (!strcmp(manual, "manual"))) { - strcpy(filename, is_local_server); - } else { - strcpy(filename, "template_"); - strcat(filename, is_local_server); - strcat(filename, ".xml"); - } - - char check_src_file[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX]; - strncpy(check_src_file, src_dir, FILENAME_LENGTH_MAX + DIR_LENGTH_MAX); - check_src_file[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX - 1] = 0; // terminate string - strncat(check_src_file, filename, FILENAME_LENGTH_MAX + DIR_LENGTH_MAX - strlen(check_src_file) - 1); - struct stat st; - - if(stat(check_src_file, &st) != 0) { - LOG_E(OCG, "file %s does not exist\n", check_src_file); - closedir(dir); - return MODULE_ERROR; - } else { - LOG_I(OCG, "template/manual file \"%s\" is used\n", filename); - closedir(dir); - return MODULE_OK; - } - } - } else { // this option is not used at this moment : NO directory should be put in the src_dir - //detect_file(strncat(src_dir, file->d_name, FILENAME_LENGTH_MAX + DIR_LENGTH_MAX)); - } - } - } - - closedir(dir); - - if (strcmp(is_local_server, "0") && strcmp(is_local_server, "-1")) { - LOG_E(OCG, "file %s does not exist in directory %s\n", is_local_server, src_dir); - return MODULE_ERROR; - } else return NO_FILE; -} diff --git a/openair2/UTIL/OCG/OCG_detect_file.h b/openair2/UTIL/OCG/OCG_detect_file.h deleted file mode 100644 index 3a43b50552..0000000000 --- a/openair2/UTIL/OCG/OCG_detect_file.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_detect_file.h -* \brief -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -#ifndef __OCG_DETECT_FILE_H__ - -#define __OCG_DETECT_FILE_H__ - -#ifdef __cplusplus -extern "C" { -#endif -/** @defgroup _detect_file Detect File - * @ingroup _fn - * @brief Detect new XML configuration file in USER_XML_FOLDER - * @{*/ -//int detect_file(int argc, char *argv[], char folder[DIR_LENGTH_MAX]); -int detect_file(char folder[DIR_LENGTH_MAX], char is_local_server[FILENAME_LENGTH_MAX]); -/* @}*/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/openair2/UTIL/OCG/OCG_extern.h b/openair2/UTIL/OCG/OCG_extern.h deleted file mode 100644 index 25fea4e90e..0000000000 --- a/openair2/UTIL/OCG/OCG_extern.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -#ifndef __OCG_EXTERN_H__ -#define __OCG_EXTERN_H__ - -extern char filename[]; /*!< \brief user_name.file_date.xml */ -extern char user_name[]; /*!< \brief user_name */ -extern char file_date[]; /*!< \brief file_date */ -extern char src_file[]; /*!< \brief USER_XML_FOLDER/user_name.file_date.xml or DEMO_XML_FOLDER/user_name.file_date.xml */ -extern char dst_dir[]; /*!< \brief user_name/file_date/ */ -extern int copy_or_move; /*!< \brief indicating if the current emulation is with a local XML or an XML generated from the web portal */ -extern int file_detected; /*!< \brief indicate whether a new file is detected */ -/* @}*/ - -/** @defgroup _oks OCG Module State Indicators - * @ingroup _OCG - * @brief Indicate whether a module has processed successfully - * @{*/ -extern int get_opt_OK; /*!< \brief value: -9999, -1, 0 or 1 */ -extern int detect_file_OK; /*!< \brief value: -9999, -1 or 0 */ -extern int parse_filename_OK; /*!< \brief value: -9999, -1 or 0 */ -extern int create_dir_OK; /*!< \brief value: -9999, -1 or 0 */ -extern int parse_XML_OK; /*!< \brief value: -9999, -1 or 0 */ -extern int save_XML_OK; /*!< \brief value: -9999, -1 or 0 */ -extern int call_emu_OK; /*!< \brief value: -9999, -1 or 0 */ -extern int config_mobi_OK; /*!< \brief value: -9999, -1 or 0 */ -extern int generate_report_OK; /*!< \brief value: -9999, -1 or 0 */ -/* @}*/ - -extern OAI_Emulation oai_emulation; - -#endif diff --git a/openair2/UTIL/OCG/OCG_generate_report.c b/openair2/UTIL/OCG/OCG_generate_report.c deleted file mode 100644 index a48b3a7af7..0000000000 --- a/openair2/UTIL/OCG/OCG_generate_report.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_generate_report.c -* \brief Generate a brief report for debug of OCG -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -/*--- INCLUDES ---------------------------------------------------------------*/ -#include -#include -#include -#include -#include "OCG_vars.h" -#include "OCG_generate_report.h" -#include "UTIL/LOG/log.h" - -/*----------------------------------------------------------------------------*/ - - -int generate_report(char dst_dir[DIR_LENGTH_MAX], char filename[FILENAME_LENGTH_MAX]) { - // for the xml writer, refer to http://xmlsoft.org/html/libxml-xmlwriter.html - char dst_file[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX]; - strncpy(dst_file, dst_dir, FILENAME_LENGTH_MAX + DIR_LENGTH_MAX - strlen(filename) - 1); - strcat(dst_file, filename); - xmlTextWriterPtr writer; - writer = xmlNewTextWriterFilename(dst_file, 0); - // set the output format of the XML file - xmlTextWriterSetIndent(writer, 1); - xmlTextWriterSetIndentString(writer,(unsigned char *) " "); - xmlTextWriterStartDocument(writer, NULL, NULL, NULL); - /* Write an element named "X_ORDER_ID" as child of HEADER. */ - xmlTextWriterWriteFormatElement(writer,(unsigned char *) "COMMENT ", " in this output file, %d means NOT_PROCESSED; %d means NO_FILE; %d means ERROR; %d means OK ", MODULE_NOT_PROCESSED, - NO_FILE, MODULE_ERROR, MODULE_OK); - xmlTextWriterWriteFormatElement(writer,(unsigned char *) "OCG_GET_OPT ", " %d ", get_opt_OK); - xmlTextWriterWriteFormatElement(writer,(unsigned char *) "OCG_DETECT_FILE ", " %d ", detect_file_OK); - xmlTextWriterWriteFormatElement(writer,(unsigned char *) "OCG_PARSE_FILENAME", " %d ", parse_filename_OK); - xmlTextWriterWriteFormatElement(writer,(unsigned char *) "OCG_CREATE_DIR ", " %d ", create_dir_OK); - xmlTextWriterWriteFormatElement(writer,(unsigned char *) "OCG_PARSE_XML ", " %d ", parse_XML_OK); - xmlTextWriterWriteFormatElement(writer,(unsigned char *) "OCG_SAVE_XML ", " %d ", save_XML_OK); - // xmlTextWriterWriteFormatElement(writer, "OCG_CALL_EMU ", " %d ", call_emu_OK); - xmlTextWriterEndDocument(writer); - xmlFreeTextWriter(writer); - LOG_I(OCG, "A report of OCG is generated in directory \"%s\"\n\n", dst_dir); - return MODULE_OK; -} diff --git a/openair2/UTIL/OCG/OCG_generate_report.h b/openair2/UTIL/OCG/OCG_generate_report.h deleted file mode 100644 index a67adf70c7..0000000000 --- a/openair2/UTIL/OCG/OCG_generate_report.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_generate_report.h -* \brief -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -#ifndef __OCG_GENERATE_REPORT_H__ - -#define __OCG_GENERATE_REPORT_H__ - -#ifdef __cplusplus -extern "C" { -#endif -/** @defgroup _generate_report Generate report - * @ingroup _fn - * @brief Generate a report to show the states of OCG modules - * @{*/ -int generate_report(char dst_dir[DIR_LENGTH_MAX], char filename[FILENAME_LENGTH_MAX]); -/* @}*/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/openair2/UTIL/OCG/OCG_get_opt.c b/openair2/UTIL/OCG/OCG_get_opt.c deleted file mode 100644 index 0d52197d13..0000000000 --- a/openair2/UTIL/OCG/OCG_get_opt.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_get_opt.c -* \brief Get Options of the OCG command -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -/*--- INCLUDES ---------------------------------------------------------------*/ -#include -#include -#include -#include -#include -#include "OCG.h" -#include "OCG_get_opt.h" -//#include "log.h" -/*----------------------------------------------------------------------------*/ - -char filename[FILENAME_LENGTH_MAX]; - -int get_opt(int argc, char *argv[]) -{ - char opts; - - while((opts = getopt(argc, argv, "f:h")) != -1) { - - switch (opts) { - case 'f' : - strcpy(filename, optarg); - LOG_D(OCG, "User specified configuration file is \"%s\"\n", filename); - return MODULE_OK; - - case 'h' : - LOG_I(OCG, "OCG command : OCG -f \"filename.xml\"\n"); - return GET_HELP; - - default : - LOG_E(OCG, "OCG command : OCG -f \"filename.xml\"\n"); - return GET_HELP; - } - } - - return NO_FILE; -} diff --git a/openair2/UTIL/OCG/OCG_get_opt.h b/openair2/UTIL/OCG/OCG_get_opt.h deleted file mode 100644 index 7fdab0c574..0000000000 --- a/openair2/UTIL/OCG/OCG_get_opt.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_get_opt.h -* \brief -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ -#ifndef __OCG_GET_OPT_H__ - -#define __OCG_GET_OPT_H__ - -#ifdef __cplusplus -extern "C" { -#endif -/** @defgroup _get_opt Get Opt - * @ingroup _fn - * @brief Get options of the OCG command, e.g. "OCG -f" and "OCG -h" - * @{*/ -int get_opt(int argc, char *argv[]); -/* @}*/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/openair2/UTIL/OCG/OCG_if.h b/openair2/UTIL/OCG/OCG_if.h deleted file mode 100644 index cc55b56f36..0000000000 --- a/openair2/UTIL/OCG/OCG_if.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_if.h -* \brief Interfaces to the outside of OCG -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -#ifndef __UTIL_OCG_OCG_IF__H__ -#define __UTIL_OCG_OCG_IF__H__ - -#ifdef __cplusplus -extern "C" { -#endif -/*--- INCLUDES ---------------------------------------------------------------*/ -# include "OCG.h" -/*----------------------------------------------------------------------------*/ - - -# ifdef COMPONENT_CONFIGEN -# ifdef COMPONENT_CONFIGEN_IF -# define private_configen_if(x) x -# define friend_configen_if(x) x -# define public_configen_if(x) x -# else -# define private_configen_if(x) -# define friend_configen_if(x) extern x -# define public_configen_if(x) extern x -# endif -# else -# define private_configen_if(x) -# define friend_configen_if(x) -# define public_configen_if(x) extern x -# endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/openair2/UTIL/OCG/OCG_parse_XML.c b/openair2/UTIL/OCG/OCG_parse_XML.c deleted file mode 100644 index e52bf402db..0000000000 --- a/openair2/UTIL/OCG/OCG_parse_XML.c +++ /dev/null @@ -1,1357 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_parse_XML.c -* \brief Parse the content of the XML configuration file -* \author Lusheng Wang & Navid Nikaein & Andre Gomes(One Source) -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -/*--- INCLUDES ---------------------------------------------------------------*/ -#include -#include -//#include -#include -//#include -#include "OCG_vars.h" -#include "OCG_parse_XML.h" -#include "UTIL/LOG/log.h" -#include "UTIL/OTG/otg_defs.h" -#include "UTIL/OPT/opt.h" -/*----------------------------------------------------------------------------*/ - -static int oai_emulation_; /*!< \brief indicating that the parsing position is now within OAI_Emulation_*/ - -static int environment_system_config_; /*!< \brief indicating that the parsing position is now within Envi_Config_*/ -static int fading_; -static int large_scale_; -static int free_space_model_parameters_; -static int pathloss_exponent_; -static int pathloss_0_dB_; -static int small_scale_; -static int ricean_8tap_; -static int rice_factor_dB_; -static int shadowing_; -static int decorrelation_distance_m_; -static int variance_dB_; -static int inter_site_correlation_; -static int wall_penetration_loss_dB_; -static int system_bandwidth_MB_; -static int system_frequency_GHz_; -static int number_of_rbs_dl_; -static int transmission_mode_; -static int frame_config_; -static int frame_type_; -static int tdd_config_; -static int antenna_; -static int eNB_antenna_; -static int UE_antenna_; -static int number_of_sectors_; -static int beam_width_dB_; -static int alpha_rad_1_; -static int alpha_rad_2_; -static int alpha_rad_3_; -static int antenna_gain_dBi_; -static int tx_power_dBm_; -static int rx_noise_level_dB_; -static int antenna_orientation_degree_1_; -static int antenna_orientation_degree_2_; -static int antenna_orientation_degree_3_; - -static int topology_config_; -static int area_; /*!< \brief indicating that the parsing position is now within Area_*/ -static int x_m_; -static int y_m_; -static int network_type_; -static int cell_type_; -static int relay_; -static int number_of_relays_; -static int mobility_; -static int UE_mobility_; -static int UE_mobility_type_; -static int grid_walk_; -static int grid_map_; -static int horizontal_grid_; -static int vertical_grid_; -static int grid_trip_type_; -static int UE_initial_distribution_; -static int random_UE_distribution_; -static int number_of_nodes_; -static int concentrated_UE_distribution_; -static int grid_UE_distribution_; -static int random_grid_; -static int border_grid_; -static int UE_moving_dynamics_; -static int min_speed_mps_; -static int max_speed_mps_; -static int min_sleep_ms_; -static int max_sleep_ms_; -static int min_journey_time_ms_; -static int max_journey_time_ms_; -static int eNB_mobility_; -static int eNB_mobility_type_; -static int eNB_initial_distribution_; -static int eNB_initial_coordinates_; -static double eNB_pos_x_; -static double eNB_pos_y_; -static int random_eNB_distribution_; -static int number_of_cells_; -static int hexagonal_eNB_distribution_; -static int inter_eNB_distance_km_; -static int grid_eNB_distribution_; -static int number_of_grid_x_; -static int number_of_grid_y_; -static int trace_mobility_file_; -static int sumo_config_; -static int sumo_cmd_; -static int sumo_config_file_; -static int sumo_start_; -static int sumo_end_; -static int sumo_step_; -static int sumo_hip_; -static int sumo_hport_; -static int omv_; - -static int application_config_; /*!< \brief indicating that the parsing position is now within App_Config_*/ -static int predefined_traffic_; -static int background_traffic_; -static int customized_traffic_; -static int application_type_; /*!< \brief indicating that the parsing position is now within App_Type_*/ -static int source_id_; -static int destination_id_; -static int traffic_; /*!< \brief indicating that the parsing position is now within Traffic_*/ -static int transport_protocol_; /*!< \brief indicating that the parsing position is now within Transport_Protocol_*/ -static int ip_version_; -static unsigned int aggregation_level_; -static int flow_start_; -static int flow_duration_; -static int idt_dist_; -static int idt_min_ms_; -static int idt_max_ms_; -static double idt_standard_deviation_; -static double idt_lambda_; -static double idt_scale_; -static double idt_shape_; -static int size_dist_; -static int size_min_byte_; -static int size_max_byte_; -static double size_standard_deviation_; -static double size_lambda_; -static double size_scale_; -static double size_shape_; -static int stream_; -static int destination_port_; -static int packet_gen_type_; - -static int emulation_config_; /*!< \brief indicating that the parsing position is now within Emu_Config_*/ -static int emulation_time_ms_; -static int curve_; -static int profiling_; -static int trace_file_; -static int background_stats_; -static int performance_metrics_; /*!< \brief indicating that the parsing position is now within Performance_*/ -static int throughput_; -static int latency_; -static int loss_rate_; -static int owd_radio_access_; -static int layer_; /*!< \brief indicating that the parsing position is now within Layer_*/ -static int phy_; -static int mac_; -static int rlc_; -static int pdcp_; -static int rrc_; -static int emu_; -static int omg_; -static int otg_; - -/* MAC*/ -static int protocol_; -static int mac_; -static int num_groups_; - -static int log_; -static int level_; -static int verbosity_; -static int interval_; -static int packet_trace_; -static int seed_value_; - -static int cli_enabled_; -static int cli_start_enb_; -static int cli_start_ue_; - -static unsigned int m2m_traffic_; -static double prob_off_pu_; -double prob_off_ed_; -static double prob_off_pe_; -static double prob_pu_ed_; -static double prob_pu_pe_; -static double prob_ed_pe_; -static double prob_ed_pu_; -static unsigned int holding_time_off_ed_; -static unsigned int holding_time_off_pu_; -static unsigned int holding_time_off_pe_; -static unsigned int holding_time_pe_off_; -static unsigned int pu_size_pkts_; -static unsigned int ed_size_pkts_; - -static int profile_; - - -void start_document(void *user_data) -{ - //printf("Start parsing ............ \n"); -} - -void end_document(void *user_data) -{ - //printf("End parsing .\n"); -} - -void start_element(void *user_data, const xmlChar *name, const xmlChar **attrs) // called once at the beginning of each element -{ - if (!xmlStrcmp(name,(unsigned char*) "OAI_EMULATION")) { - oai_emulation_ = 1; - - } else if (!xmlStrcmp(name,(unsigned char*) "ENVIRONMENT_SYSTEM_CONFIG")) { - environment_system_config_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "FADING")) { - fading_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "LARGE_SCALE")) { - large_scale_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "FREE_SPACE_MODEL_PARAMETERS")) { - free_space_model_parameters_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "PATHLOSS_EXPONENT")) { - pathloss_exponent_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "PATHLOSS_0_dB")) { - pathloss_0_dB_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "SMALL_SCALE")) { - small_scale_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "RICEAN_8TAP")) { - ricean_8tap_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "RICE_FACTOR_dB")) { - rice_factor_dB_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "SHADOWING")) { - shadowing_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "DECORRELATION_DISTANCE_m")) { - decorrelation_distance_m_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "VARIANCE_dB")) { - variance_dB_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "INTER_SITE_CORRELATION")) { - inter_site_correlation_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "WALL_PENETRATION_LOSS_dB")) { - wall_penetration_loss_dB_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "SYSTEM_BANDWIDTH_MB")) { - system_bandwidth_MB_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "SYSTEM_FREQUENCY_GHz")) { - system_frequency_GHz_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "NUMBER_OF_RBS_DL")) { - number_of_rbs_dl_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "TRANSMISSION_MODE")) { - transmission_mode_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "FRAME_CONFIG")) { - frame_config_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "FRAME_TYPE")) { - frame_type_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "TDD_CONFIG")) { - tdd_config_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "ANTENNA")) { - antenna_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "eNB_ANTENNA")) { - eNB_antenna_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "UE_ANTENNA")) { - UE_antenna_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "NUMBER_OF_SECTORS")) { - number_of_sectors_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "BEAM_WIDTH_dB")) { - beam_width_dB_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "ALPHA_RAD_1")) { - alpha_rad_1_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "ALPHA_RAD_2")) { - alpha_rad_2_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "ALPHA_RAD_3")) { - alpha_rad_3_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "ANTENNA_GAIN_dBi")) { - antenna_gain_dBi_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "TX_POWER_dBm")) { - tx_power_dBm_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "RX_NOISE_LEVEL_dB")) { - rx_noise_level_dB_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "ANTENNA_ORIENTATION_degree1")) { - antenna_orientation_degree_1_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "ANTENNA_ORIENTATION_degree2")) { - antenna_orientation_degree_2_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "ANTENNA_ORIENTATION_degree3")) { - antenna_orientation_degree_3_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "TOPOLOGY_CONFIG")) { - topology_config_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "AREA")) { - area_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "X_m")) { - x_m_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "Y_m")) { - y_m_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "NETWORK_TYPE")) { - network_type_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "CELL_TYPE")) { - cell_type_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "RELAY")) { - relay_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "NUMBER_OF_RELAYS")) { - number_of_relays_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "MOBILITY")) { - mobility_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "UE_MOBILITY")) { - UE_mobility_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "UE_MOBILITY_TYPE")) { - UE_mobility_type_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "GRID_WALK")) { - grid_walk_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "GRID_MAP")) { - grid_map_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "HORIZONTAL_GRID")) { - horizontal_grid_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "VERTICAL_GRID")) { - vertical_grid_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "GRID_TRIP_TYPE")) { - grid_trip_type_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "UE_INITIAL_DISTRIBUTION")) { - UE_initial_distribution_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "RANDOM_UE_DISTRIBUTION")) { - random_UE_distribution_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "NUMBER_OF_NODES")) { - number_of_nodes_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "CONCENTRATED_UE_DISTRIBUTION")) { - concentrated_UE_distribution_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "GRID_UE_DISTRIBUTION")) { - grid_UE_distribution_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "RANDOM_GRID")) { - random_grid_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "BORDER_GRID")) { - border_grid_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "UE_MOVING_DYNAMICS")) { - UE_moving_dynamics_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "MIN_SPEED_mps")) { - min_speed_mps_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "MAX_SPEED_mps")) { - max_speed_mps_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "MIN_SLEEP_ms")) { - min_sleep_ms_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "MAX_SLEEP_ms")) { - max_sleep_ms_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "MIN_JOURNEY_TIME_ms")) { - min_journey_time_ms_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "MAX_JOURNEY_TIME_ms")) { - max_journey_time_ms_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "eNB_MOBILITY")) { - eNB_mobility_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "eNB_MOBILITY_TYPE")) { - eNB_mobility_type_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "eNB_INITIAL_DISTRIBUTION")) { - eNB_initial_distribution_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "eNB_INITIAL_COORDINATES")) { - eNB_initial_coordinates_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "POS_X")) { - eNB_pos_x_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "POS_Y")) { - eNB_pos_y_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "RANDOM_eNB_DISTRIBUTION")) { - random_eNB_distribution_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "NUMBER_OF_CELLS")) { - number_of_cells_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "HEXAGONAL_eNB_DISTRIBUTION")) { - hexagonal_eNB_distribution_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "INTER_eNB_DISTANCE_km")) { - inter_eNB_distance_km_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "GRID_eNB_DISTRIBUTION")) { - grid_eNB_distribution_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "NUMBER_OF_GRID_X")) { - number_of_grid_x_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "NUMBER_OF_GRID_Y")) { - number_of_grid_y_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "TRACE_MOBILITY_FILE")) { - trace_mobility_file_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_CONFIG")) { - sumo_config_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_CMD")) { - sumo_cmd_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_CONFIG_FILE")) { - sumo_config_file_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_START")) { - sumo_start_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_END")) { - sumo_end_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_STEP")) { - sumo_step_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_HOST_IP")) { - sumo_hip_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_HOST_PORT")) { - sumo_hport_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "OMV")) { - omv_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "APPLICATION_CONFIG")) { - application_config_ = 1; - oai_emulation.info.max_predefined_traffic_config_index = 0; - oai_emulation.info.max_customized_traffic_config_index = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "PREDEFINED_TRAFFIC")) { - predefined_traffic_ = 1; - oai_emulation.info.otg_enabled =1; - oai_emulation.info.max_predefined_traffic_config_index ++; - } else if (!xmlStrcmp(name, (unsigned char*) "CUSTOMIZED_TRAFFIC")) { - customized_traffic_ = 1; - oai_emulation.info.otg_enabled =1; - oai_emulation.info.max_customized_traffic_config_index ++; - } else if (!xmlStrcmp(name, (unsigned char*) "CUSTOMIZED_TRAFFIC")) { - customized_traffic_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "M2M")) { - m2m_traffic_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "PROB_OFF_PU")) { - prob_off_pu_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "PROB_OFF_ED")) { - prob_off_ed_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "PROB_OFF_PE")) { - prob_off_pe_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "PROB_PU_ED")) { - prob_pu_ed_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "PROB_PU_PE")) { - prob_pu_pe_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "PROB_ED_PE")) { - prob_ed_pe_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "PROB_ED_PU")) { - prob_ed_pu_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "HOLDING_TIME_OFF_ED")) { - holding_time_off_ed_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "HOLDING_TIME_OFF_PU")) { - holding_time_off_pu_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "HOLDING_TIME_OFF_PE")) { - holding_time_off_pe_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "HOLDING_TIME_PE_OFF")) { - holding_time_pe_off_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "PU_SIZE_PKTS")) { - pu_size_pkts_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "ED_SIZE_PKTS")) { - ed_size_pkts_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "SOURCE_ID")) { - source_id_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "DESTINATION_ID")) { - destination_id_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "APPLICATION_TYPE")) { - application_type_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "PACKET_GEN_TYPE")) { - packet_gen_type_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "BACKGROUND_TRAFFIC")) { - background_traffic_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "TRAFFIC")) { - traffic_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "TRANSPORT_PROTOCOL")) { - transport_protocol_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "IP_VERSION")) { - ip_version_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "AGGREGATION_LEVEL")) { - aggregation_level_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "FLOW_START_ms")) { - flow_start_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "FLOW_DURATION_ms")) { - flow_duration_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "IDT_DIST")) { - idt_dist_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "IDT_MIN_ms")) { - idt_min_ms_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "IDT_MAX_ms")) { - idt_max_ms_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "IDT_STANDARD_DEVIATION")) { - idt_standard_deviation_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "IDT_LAMBDA")) { - idt_lambda_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "IDT_SCALE")) { - idt_scale_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "IDT_SHAPE")) { - idt_shape_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "SIZE_DIST")) { - size_dist_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "SIZE_MIN_byte")) { - size_min_byte_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "SIZE_MAX_byte")) { - size_max_byte_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "SIZE_STANDARD_DEVIATION")) { - size_standard_deviation_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "SIZE_LAMBDA")) { - size_lambda_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "SIZE_SCALE")) { - size_scale_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "SIZE_SHAPE")) { - size_shape_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "STREAM")) { - stream_ = 1; - } else if (!xmlStrcmp(name, (unsigned char*) "DESTINATION_PORT")) { - destination_port_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "EMULATION_CONFIG")) { - emulation_config_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "EMULATION_TIME_ms")) { - emulation_time_ms_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "CURVE")) { - curve_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "PROFILING")) { - profiling_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "TRACE_FILE")) { - trace_file_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "BACKGROUND_STATS")) { - background_stats_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "PERFORMANCE_METRICS")) { - performance_metrics_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "THROUGHPUT")) { - throughput_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "LATENCY")) { - latency_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "LOSS_RATE")) { - loss_rate_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "OWD_RADIO_ACCESS")) { - owd_radio_access_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "LAYER")) { - layer_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "PHY")) { - phy_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "MAC")) { - mac_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "RLC")) { - rlc_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "PDCP")) { - pdcp_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "RRC")) { - rrc_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "OMG")) { - omg_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "OTG")) { - otg_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "EMU")) { - emu_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "LOG")) { - log_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "LEVEL")) { - level_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "VERBOSITY")) { - verbosity_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "INTERVAL")) { - interval_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "PACKET_TRACE")) { - packet_trace_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "SEED_VALUE")) { - seed_value_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "CLI")) { - cli_enabled_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "START_ENB")) { - cli_start_enb_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "START_UE")) { - cli_start_ue_ = 1; - - } else if (!xmlStrcmp(name,(unsigned char*) "PROTOCOL")) { - protocol_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "MAC")) { - mac_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "NUM_GROUPS")) { - num_groups_ = 1; - } else if (!xmlStrcmp(name,(unsigned char*) "PROFILE")) { - profile_ = 1; - } else { - LOG_W(OCG, "One element could not be parsed : unknown element name '%s'\n", name); - } -} - -void end_element(void *user_data, const xmlChar *name) // called once at the end of each element -{ - if (!xmlStrcmp(name,(unsigned char*) "OAI_EMULATION")) { - oai_emulation_ = 0; - - } else if (!xmlStrcmp(name,(unsigned char*) "ENVIRONMENT_SYSTEM_CONFIG")) { - environment_system_config_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "FADING")) { - fading_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "LARGE_SCALE")) { - large_scale_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "FREE_SPACE_MODEL_PARAMETERS")) { - free_space_model_parameters_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "PATHLOSS_EXPONENT")) { - pathloss_exponent_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "PATHLOSS_0_dB")) { - pathloss_0_dB_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "SMALL_SCALE")) { - small_scale_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "RICEAN_8TAP")) { - ricean_8tap_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "RICE_FACTOR_dB")) { - rice_factor_dB_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "SHADOWING")) { - shadowing_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "DECORRELATION_DISTANCE_m")) { - decorrelation_distance_m_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "VARIANCE_dB")) { - variance_dB_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "INTER_SITE_CORRELATION")) { - inter_site_correlation_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "WALL_PENETRATION_LOSS_dB")) { - wall_penetration_loss_dB_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "SYSTEM_BANDWIDTH_MB")) { - system_bandwidth_MB_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "SYSTEM_FREQUENCY_GHz")) { - system_frequency_GHz_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "NUMBER_OF_RBS_DL")) { - number_of_rbs_dl_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "TRANSMISSION_MODE")) { - transmission_mode_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "FRAME_CONFIG")) { - frame_config_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "FRAME_TYPE")) { - frame_type_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "TDD_CONFIG")) { - tdd_config_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "ANTENNA")) { - antenna_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "eNB_ANTENNA")) { - eNB_antenna_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "UE_ANTENNA")) { - UE_antenna_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "NUMBER_OF_SECTORS")) { - number_of_sectors_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "BEAM_WIDTH_dB")) { - beam_width_dB_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "ALPHA_RAD_1")) { - alpha_rad_1_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "ALPHA_RAD_2")) { - alpha_rad_2_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "ALPHA_RAD_3")) { - alpha_rad_3_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "ANTENNA_GAIN_dBi")) { - antenna_gain_dBi_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "TX_POWER_dBm")) { - tx_power_dBm_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "RX_NOISE_LEVEL_dB")) { - rx_noise_level_dB_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "ANTENNA_ORIENTATION_degree1")) { - antenna_orientation_degree_1_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "ANTENNA_ORIENTATION_degree2")) { - antenna_orientation_degree_2_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "ANTENNA_ORIENTATION_degree3")) { - antenna_orientation_degree_3_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "TOPOLOGY_CONFIG")) { - topology_config_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "AREA")) { - area_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "X_m")) { - x_m_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "Y_m")) { - y_m_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "NETWORK_TYPE")) { - network_type_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "CELL_TYPE")) { - cell_type_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "RELAY")) { - relay_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "NUMBER_OF_RELAYS")) { - number_of_relays_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "MOBILITY")) { - mobility_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "UE_MOBILITY")) { - UE_mobility_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "UE_MOBILITY_TYPE")) { - UE_mobility_type_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "GRID_WALK")) { - grid_walk_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "GRID_MAP")) { - grid_map_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "HORIZONTAL_GRID")) { - horizontal_grid_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "VERTICAL_GRID")) { - vertical_grid_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "GRID_TRIP_TYPE")) { - grid_trip_type_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "UE_INITIAL_DISTRIBUTION")) { - UE_initial_distribution_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "RANDOM_UE_DISTRIBUTION")) { - random_UE_distribution_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "NUMBER_OF_NODES")) { - number_of_nodes_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "CONCENTRATED_UE_DISTRIBUTION")) { - concentrated_UE_distribution_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "GRID_UE_DISTRIBUTION")) { - grid_UE_distribution_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "RANDOM_GRID")) { - random_grid_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "BORDER_GRID")) { - border_grid_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "UE_MOVING_DYNAMICS")) { - UE_moving_dynamics_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "MIN_SPEED_mps")) { - min_speed_mps_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "MAX_SPEED_mps")) { - max_speed_mps_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "MIN_SLEEP_ms")) { - min_sleep_ms_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "MAX_SLEEP_ms")) { - max_sleep_ms_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "MIN_JOURNEY_TIME_ms")) { - min_journey_time_ms_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "MAX_JOURNEY_TIME_ms")) { - max_journey_time_ms_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "eNB_MOBILITY")) { - eNB_mobility_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "eNB_MOBILITY_TYPE")) { - eNB_mobility_type_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "eNB_INITIAL_DISTRIBUTION")) { - eNB_initial_distribution_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "eNB_INITIAL_COORDINATES")) { - eNB_initial_coordinates_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "POS_X")) { - eNB_pos_x_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "POS_Y")) { - eNB_pos_y_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "RANDOM_eNB_DISTRIBUTION")) { - random_eNB_distribution_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "NUMBER_OF_CELLS")) { - number_of_cells_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "HEXAGONAL_eNB_DISTRIBUTION")) { - hexagonal_eNB_distribution_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "INTER_eNB_DISTANCE_km")) { - inter_eNB_distance_km_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "GRID_eNB_DISTRIBUTION")) { - grid_eNB_distribution_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "NUMBER_OF_GRID_X")) { - number_of_grid_x_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "NUMBER_OF_GRID_Y")) { - number_of_grid_y_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "TRACE_MOBILITY_FILE")) { - trace_mobility_file_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_CONFIG")) { - sumo_config_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_CMD")) { - sumo_cmd_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_CONFIG_FILE")) { - sumo_config_file_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_START")) { - sumo_start_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_END")) { - sumo_end_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_STEP")) { - sumo_step_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_HOST_IP")) { - sumo_hip_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "SUMO_HOST_PORT")) { - sumo_hport_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "OMV")) { - omv_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "APPLICATION_CONFIG")) { - application_config_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "PREDEFINED_TRAFFIC")) { - predefined_traffic_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "CUSTOMIZED_TRAFFIC")) { - customized_traffic_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "M2M")) { - m2m_traffic_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "PROB_OFF_PU")) { - prob_off_pu_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "PROB_OFF_ED")) { - prob_off_ed_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "PROB_OFF_PE")) { - prob_off_pe_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "PROB_PU_ED")) { - prob_pu_ed_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "PROB_PU_PE")) { - prob_pu_pe_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "PROB_ED_PE")) { - prob_ed_pe_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "PROB_ED_PU")) { - prob_ed_pu_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "HOLDING_TIME_OFF_ED")) { - holding_time_off_ed_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "HOLDING_TIME_OFF_PU")) { - holding_time_off_pu_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "HOLDING_TIME_OFF_PE")) { - holding_time_off_pe_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "HOLDING_TIME_PE_OFF")) { - holding_time_pe_off_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "PU_SIZE_PKTS")) { - pu_size_pkts_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "ED_SIZE_PKTS")) { - ed_size_pkts_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "SOURCE_ID")) { - source_id_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "DESTINATION_ID")) { - destination_id_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "APPLICATION_TYPE")) { - application_type_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "PACKET_GEN_TYPE")) { - packet_gen_type_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "BACKGROUND_TRAFFIC")) { - background_traffic_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "TRAFFIC")) { - traffic_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "TRANSPORT_PROTOCOL")) { - transport_protocol_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "AGGREGATION_LEVEL")) { - aggregation_level_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "FLOW_START_ms")) { - flow_start_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "FLOW_DURATION_ms")) { - flow_duration_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "IP_VERSION")) { - ip_version_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "IDT_DIST")) { - idt_dist_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "IDT_MIN_ms")) { - idt_min_ms_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "IDT_MAX_ms")) { - idt_max_ms_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "IDT_STANDARD_DEVIATION")) { - idt_standard_deviation_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "IDT_LAMBDA")) { - idt_lambda_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "IDT_SCALE")) { - idt_scale_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "IDT_SHAPE")) { - idt_shape_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "SIZE_DIST")) { - size_dist_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "SIZE_MIN_byte")) { - size_min_byte_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "SIZE_MAX_byte")) { - size_max_byte_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "SIZE_STANDARD_DEVIATION")) { - size_standard_deviation_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "SIZE_LAMBDA")) { - size_lambda_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "SIZE_SCALE")) { - size_scale_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "SIZE_SHAPE")) { - size_shape_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "STREAM")) { - stream_ = 0; - } else if (!xmlStrcmp(name, (unsigned char*) "DESTINATION_PORT")) { - destination_port_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "EMULATION_CONFIG")) { - emulation_config_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "EMULATION_TIME_ms")) { - emulation_time_ms_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "CURVE")) { - curve_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "PROFILING")) { - profiling_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "TRACE_FILE")) { - trace_file_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "BACKGROUND_STATS")) { - background_stats_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "PERFORMANCE_METRICS")) { - performance_metrics_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "THROUGHPUT")) { - throughput_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "LATENCY")) { - latency_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "LOSS_RATE")) { - loss_rate_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "OWD_RADIO_ACCESS")) { - owd_radio_access_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "LAYER")) { - layer_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "PHY")) { - phy_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "MAC")) { - mac_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "RLC")) { - rlc_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "PDCP")) { - pdcp_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "RRC")) { - rrc_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "OMG")) { - omg_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "OTG")) { - otg_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "EMU")) { - emu_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "LOG")) { - log_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "LEVEL")) { - level_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "VERBOSITY")) { - verbosity_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "INTERVAL")) { - interval_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "PACKET_TRACE")) { - packet_trace_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "SEED_VALUE")) { - seed_value_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "CLI")) { - cli_enabled_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "START_ENB")) { - cli_start_enb_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "START_UE")) { - cli_start_ue_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "PROTOCOL")) { - protocol_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "MAC")) { - mac_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "NUM_GROUPS")) { - num_groups_ = 0; - } else if (!xmlStrcmp(name,(unsigned char*) "PROFILE")) { - profile_ = 0; - } -} - -void characters(void *user_data, const xmlChar *xmlch, int xmllen) // called once when there is content in each element -{ - - int i; - const char *ch = (const char*) xmlch; - size_t len = (size_t) xmllen; - - if (oai_emulation_) { - if (environment_system_config_) { - if (fading_) { - if (large_scale_) { - oai_emulation.environment_system_config.fading.large_scale.selected_option = strndup(ch, len); - } else if (small_scale_) { - oai_emulation.environment_system_config.fading.small_scale.selected_option = strndup(ch, len); - } else if (shadowing_) { - if (decorrelation_distance_m_) { - oai_emulation.environment_system_config.fading.shadowing.decorrelation_distance_m = atof(ch); - } else if (variance_dB_) { - oai_emulation.environment_system_config.fading.shadowing.variance_dB = atof(ch); - } else if (inter_site_correlation_) { - oai_emulation.environment_system_config.fading.shadowing.inter_site_correlation = atof(ch); - } - } else if (free_space_model_parameters_) { - if (pathloss_exponent_) { - oai_emulation.environment_system_config.fading.free_space_model_parameters.pathloss_exponent = atof(ch); - } else if (pathloss_0_dB_) { - oai_emulation.environment_system_config.fading.free_space_model_parameters.pathloss_0_dB = atof(ch); - } - } else if (ricean_8tap_) { - oai_emulation.environment_system_config.fading.ricean_8tap.rice_factor_dB = atof(ch); - } - } else if (wall_penetration_loss_dB_) { - oai_emulation.environment_system_config.wall_penetration_loss_dB = atof(ch); - } else if (system_bandwidth_MB_) { - oai_emulation.environment_system_config.system_bandwidth_MB = atof(ch); - } else if (system_frequency_GHz_) { - oai_emulation.environment_system_config.system_frequency_GHz = atof(ch); - } else if (number_of_rbs_dl_) { - oai_emulation.info.N_RB_DL[0] = atoi(ch); - } else if (transmission_mode_) { - oai_emulation.info.transmission_mode[0] = atoi(ch); - } else if (frame_config_) { - if (frame_type_) { - oai_emulation.info.frame_type[0] = atoi(ch); - - if (oai_emulation.info.frame_type[0]) { - oai_emulation.info.frame_type_name[0] = "TDD"; - } else { - oai_emulation.info.frame_type_name[0] = "FDD"; - } - } else if (tdd_config_) { - oai_emulation.info.tdd_config[0] = atoi(ch); - } - } else if (antenna_) { - if (eNB_antenna_) { - if (number_of_sectors_) { - oai_emulation.environment_system_config.antenna.eNB_antenna.number_of_sectors = atoi(ch); - } else if (beam_width_dB_) { - oai_emulation.environment_system_config.antenna.eNB_antenna.beam_width_dB = atof(ch); - } else if (alpha_rad_1_) { - oai_emulation.environment_system_config.antenna.eNB_antenna.alpha_rad[0] = atof(ch); - } else if (alpha_rad_2_) { - oai_emulation.environment_system_config.antenna.eNB_antenna.alpha_rad[1] = atof(ch); - } else if (alpha_rad_3_) { - oai_emulation.environment_system_config.antenna.eNB_antenna.alpha_rad[2] = atof(ch); - } else if (antenna_gain_dBi_) { - oai_emulation.environment_system_config.antenna.eNB_antenna.antenna_gain_dBi = atof(ch); - } else if (tx_power_dBm_) { - oai_emulation.environment_system_config.antenna.eNB_antenna.tx_power_dBm = atof(ch); - } else if (rx_noise_level_dB_) { - oai_emulation.environment_system_config.antenna.eNB_antenna.rx_noise_level_dB = atof(ch); - } else if (antenna_orientation_degree_1_) { - oai_emulation.environment_system_config.antenna.eNB_antenna.antenna_orientation_degree[0] = atof(ch); - } else if (antenna_orientation_degree_2_) { - oai_emulation.environment_system_config.antenna.eNB_antenna.antenna_orientation_degree[1] = atof(ch); - } else if (antenna_orientation_degree_3_) { - oai_emulation.environment_system_config.antenna.eNB_antenna.antenna_orientation_degree[2] = atof(ch); - } - } else if (UE_antenna_) { - if (antenna_gain_dBi_) { - oai_emulation.environment_system_config.antenna.UE_antenna.antenna_gain_dBi = atof(ch); - } else if (tx_power_dBm_) { - oai_emulation.environment_system_config.antenna.UE_antenna.tx_power_dBm = atof(ch); - } else if (rx_noise_level_dB_) { - oai_emulation.environment_system_config.antenna.UE_antenna.rx_noise_level_dB = atof(ch); - } - } - } - - } else if (topology_config_) { - if (area_) { - if (x_m_) { - oai_emulation.topology_config.area.x_m = atof(ch); - } else if (y_m_) { - oai_emulation.topology_config.area.y_m = atof(ch); - } - } else if (network_type_) { - oai_emulation.topology_config.network_type.selected_option = strndup(ch, len); - } else if (cell_type_) { - oai_emulation.topology_config.cell_type.selected_option = strndup(ch, len); - } else if (relay_) { - if (number_of_relays_) { - oai_emulation.topology_config.relay.number_of_relays = atoi(ch); - } - } else if (mobility_) { - if (UE_mobility_) { - if (UE_mobility_type_) { - oai_emulation.topology_config.mobility.UE_mobility.UE_mobility_type.selected_option = strndup(ch, len); - - } else if (grid_walk_) { - if (grid_map_) { - oai_emulation.topology_config.mobility.UE_mobility.grid_walk.grid_map.selected_option = strndup(ch, len); - /* - if (horizontal_grid_) { - oai_emulation.topology_config.mobility.UE_mobility.grid_walk.grid_map.horizontal_grid = atoi(ch); - } else if (vertical_grid_) { - oai_emulation.topology_config.mobility.UE_mobility.grid_walk.grid_map.vertical_grid = atoi(ch); - } - */ - } else if (grid_trip_type_) { - oai_emulation.topology_config.mobility.UE_mobility.grid_walk.grid_trip_type.selected_option = strndup(ch, len); - } - } else if (UE_initial_distribution_) { - oai_emulation.topology_config.mobility.UE_mobility.UE_initial_distribution.selected_option = strndup(ch, len); - } else if (random_UE_distribution_) { - if (number_of_nodes_) { - oai_emulation.topology_config.mobility.UE_mobility.random_UE_distribution.number_of_nodes = atoi(ch); - oai_emulation.info.nb_ue_local = oai_emulation.topology_config.mobility.UE_mobility.random_UE_distribution.number_of_nodes; - } - } else if (concentrated_UE_distribution_) { - if (number_of_nodes_) { - oai_emulation.topology_config.mobility.UE_mobility.concentrated_UE_distribution.number_of_nodes = atoi(ch); - oai_emulation.info.nb_ue_local = oai_emulation.topology_config.mobility.UE_mobility.concentrated_UE_distribution.number_of_nodes; - } - } else if (grid_UE_distribution_) { - if (random_grid_) { - if (number_of_nodes_) { - oai_emulation.topology_config.mobility.UE_mobility.grid_UE_distribution.random_grid.number_of_nodes = atoi(ch); - oai_emulation.info.nb_ue_local = oai_emulation.topology_config.mobility.UE_mobility.grid_UE_distribution.random_grid.number_of_nodes; - } - } else if (border_grid_) { - if (number_of_nodes_) { - oai_emulation.topology_config.mobility.UE_mobility.grid_UE_distribution.border_grid.number_of_nodes = atoi(ch); - oai_emulation.info.nb_ue_local = oai_emulation.topology_config.mobility.UE_mobility.grid_UE_distribution.border_grid.number_of_nodes; - } - } - } else if (UE_moving_dynamics_) { - if (min_speed_mps_) { - oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.min_speed_mps = atof(ch); - } else if (max_speed_mps_) { - oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.max_speed_mps = atof(ch); - } else if (min_sleep_ms_) { - oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.min_sleep_ms = atof(ch); - } else if (max_sleep_ms_) { - oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.max_sleep_ms = atof(ch); - } else if (min_journey_time_ms_) { - oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.min_journey_time_ms = atof(ch); - } else if (max_journey_time_ms_) { - oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.max_journey_time_ms = atof(ch); - } - } else if (trace_mobility_file_) { - oai_emulation.topology_config.mobility.UE_mobility.trace_config.trace_mobility_file=strndup(ch,len); - } else if (sumo_config_) { - if (sumo_cmd_) { - oai_emulation.topology_config.mobility.UE_mobility.sumo_config.command=strndup(ch,len); - } else if (sumo_config_file_) { - oai_emulation.topology_config.mobility.UE_mobility.sumo_config.file=strndup(ch,len); - } else if (sumo_start_) { - oai_emulation.topology_config.mobility.UE_mobility.sumo_config.start=atoi(ch); - } else if (sumo_end_) { - oai_emulation.topology_config.mobility.UE_mobility.sumo_config.end=atoi(ch); - } else if (sumo_step_) { - oai_emulation.topology_config.mobility.UE_mobility.sumo_config.step=atoi(ch); - } else if (sumo_hip_) { - oai_emulation.topology_config.mobility.UE_mobility.sumo_config.hip=strndup(ch,len); - } else if (sumo_hport_) { - oai_emulation.topology_config.mobility.UE_mobility.sumo_config.hport=atoi(ch); - } - } - - } else if (eNB_mobility_) { - if (eNB_mobility_type_) { - oai_emulation.topology_config.mobility.eNB_mobility.eNB_mobility_type.selected_option = strndup(ch, len); - - } else if (eNB_initial_distribution_) { - oai_emulation.topology_config.mobility.eNB_mobility.eNB_initial_distribution.selected_option = strndup(ch, len); - } else if (eNB_initial_coordinates_) { - if (eNB_pos_x_) { - oai_emulation.topology_config.mobility.eNB_mobility.fixed_eNB_distribution.pos_x = atof(ch); - } else if (eNB_pos_y_) { - oai_emulation.topology_config.mobility.eNB_mobility.fixed_eNB_distribution.pos_y = atof(ch); - } - } else if (random_eNB_distribution_) { - if (number_of_cells_) { - oai_emulation.topology_config.mobility.eNB_mobility.random_eNB_distribution.number_of_cells = atoi(ch); - oai_emulation.info.nb_enb_local = oai_emulation.topology_config.mobility.eNB_mobility.random_eNB_distribution.number_of_cells; - } - } else if (hexagonal_eNB_distribution_) { - if (number_of_cells_) { - oai_emulation.topology_config.mobility.eNB_mobility.hexagonal_eNB_distribution.number_of_cells = atoi(ch); - oai_emulation.info.nb_enb_local = oai_emulation.topology_config.mobility.eNB_mobility.hexagonal_eNB_distribution.number_of_cells; - } else if (inter_eNB_distance_km_) { - oai_emulation.topology_config.mobility.eNB_mobility.hexagonal_eNB_distribution.inter_eNB_distance_km = atof(ch); - } - } else if (grid_eNB_distribution_) { - if (number_of_grid_x_) { - oai_emulation.topology_config.mobility.eNB_mobility.grid_eNB_distribution.number_of_grid_x = atoi(ch); - } else if (number_of_grid_y_) { - oai_emulation.topology_config.mobility.eNB_mobility.grid_eNB_distribution.number_of_grid_y = atoi(ch); - oai_emulation.info.nb_enb_local = oai_emulation.topology_config.mobility.eNB_mobility.grid_eNB_distribution.number_of_grid_x * - oai_emulation.topology_config.mobility.eNB_mobility.grid_eNB_distribution.number_of_grid_y; - } - } else if (trace_mobility_file_) { - oai_emulation.topology_config.mobility.eNB_mobility.trace_config.trace_mobility_file=strndup(ch,len); - } - } - } else if (omv_) { - oai_emulation.topology_config.omv=atoi(ch); - } - - } else if (application_config_) { - if (packet_gen_type_) { - oai_emulation.application_config.packet_gen_type=strndup(ch, len); - } else if (predefined_traffic_) { - if (source_id_) { - oai_emulation.application_config.predefined_traffic.source_id[oai_emulation.info.max_predefined_traffic_config_index] = strndup(ch, len); - } else if (destination_id_) { - oai_emulation.application_config.predefined_traffic.destination_id[oai_emulation.info.max_predefined_traffic_config_index] = strndup(ch, len); - } else if (application_type_) { - oai_emulation.application_config.predefined_traffic.application_type[oai_emulation.info.max_predefined_traffic_config_index] = strndup(ch, len); - } else if (background_traffic_) { - oai_emulation.application_config.predefined_traffic.background[oai_emulation.info.max_predefined_traffic_config_index] = strndup(ch, len); - } else if (aggregation_level_) { - oai_emulation.application_config.predefined_traffic.aggregation_level[oai_emulation.info.max_predefined_traffic_config_index] = atoi(ch); - } else if (flow_start_) { - oai_emulation.application_config.predefined_traffic.flow_start[oai_emulation.info.max_predefined_traffic_config_index] = atoi(ch); - } else if (flow_duration_) { - oai_emulation.application_config.predefined_traffic.flow_duration[oai_emulation.info.max_predefined_traffic_config_index] = atoi(ch); - } - } else if (customized_traffic_) { - - - if (prob_off_pu_) { - oai_emulation.application_config.customized_traffic.prob_off_pu[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - oai_emulation.application_config.customized_traffic.m2m[oai_emulation.info.max_customized_traffic_config_index] = "enable"; - } else if (prob_off_ed_) { - oai_emulation.application_config.customized_traffic.prob_off_ed[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - oai_emulation.application_config.customized_traffic.m2m[oai_emulation.info.max_customized_traffic_config_index] = "enable"; - } else if (prob_off_pe_) { - oai_emulation.application_config.customized_traffic.prob_off_pe[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - oai_emulation.application_config.customized_traffic.m2m[oai_emulation.info.max_customized_traffic_config_index] = "enable"; - } else if (prob_pu_ed_) { - oai_emulation.application_config.customized_traffic.prob_pu_ed[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - oai_emulation.application_config.customized_traffic.m2m[oai_emulation.info.max_customized_traffic_config_index] = "enable"; - } else if (prob_pu_pe_) { - oai_emulation.application_config.customized_traffic.prob_pu_pe[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - oai_emulation.application_config.customized_traffic.m2m[oai_emulation.info.max_customized_traffic_config_index] = "enable"; - } else if (prob_ed_pe_) { - oai_emulation.application_config.customized_traffic.prob_ed_pe[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - oai_emulation.application_config.customized_traffic.m2m[oai_emulation.info.max_customized_traffic_config_index] = "enable"; - } else if (prob_ed_pu_) { - oai_emulation.application_config.customized_traffic.prob_ed_pu[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - oai_emulation.application_config.customized_traffic.m2m[oai_emulation.info.max_customized_traffic_config_index] = "enable"; - } else if (holding_time_off_ed_) { - oai_emulation.application_config.customized_traffic.holding_time_off_ed[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - oai_emulation.application_config.customized_traffic.m2m[oai_emulation.info.max_customized_traffic_config_index] = "enable"; - } else if (holding_time_off_pu_) { - oai_emulation.application_config.customized_traffic.holding_time_off_pu[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - oai_emulation.application_config.customized_traffic.m2m[oai_emulation.info.max_customized_traffic_config_index] = "enable"; - } else if (holding_time_off_pe_) { - oai_emulation.application_config.customized_traffic.holding_time_off_pe[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - oai_emulation.application_config.customized_traffic.m2m[oai_emulation.info.max_customized_traffic_config_index] = "enable"; - } else if (holding_time_pe_off_) { - oai_emulation.application_config.customized_traffic.holding_time_pe_off[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - } else if (pu_size_pkts_) { - oai_emulation.application_config.customized_traffic.pu_size_pkts[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - oai_emulation.application_config.customized_traffic.m2m[oai_emulation.info.max_customized_traffic_config_index] = "enable"; - } else if (ed_size_pkts_) { - oai_emulation.application_config.customized_traffic.ed_size_pkts[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - } else if (background_traffic_) { - oai_emulation.application_config.customized_traffic.background[oai_emulation.info.max_customized_traffic_config_index] = strndup(ch, len); - } else if (m2m_traffic_) { - oai_emulation.application_config.customized_traffic.m2m[oai_emulation.info.max_customized_traffic_config_index] = strndup(ch, len); - } else if (source_id_) { - oai_emulation.application_config.customized_traffic.source_id[oai_emulation.info.max_customized_traffic_config_index] = strndup(ch, len); - } else if (destination_id_) { - oai_emulation.application_config.customized_traffic.destination_id[oai_emulation.info.max_customized_traffic_config_index] = strndup(ch, len); - } else if (transport_protocol_) { - oai_emulation.application_config.customized_traffic.transport_protocol[oai_emulation.info.max_customized_traffic_config_index] = strndup(ch, len); - } else if (ip_version_) { - oai_emulation.application_config.customized_traffic.ip_version[oai_emulation.info.max_customized_traffic_config_index] = strndup(ch, len); - } else if (aggregation_level_) { - oai_emulation.application_config.customized_traffic.aggregation_level[oai_emulation.info.max_customized_traffic_config_index] = atoi(ch); - } else if (flow_start_) { - oai_emulation.application_config.customized_traffic.flow_start[oai_emulation.info.max_customized_traffic_config_index] = atoi(ch); - } else if (flow_duration_) { - oai_emulation.application_config.customized_traffic.flow_duration[oai_emulation.info.max_customized_traffic_config_index] = atoi(ch); - } else if (idt_dist_) { - oai_emulation.application_config.customized_traffic.idt_dist[oai_emulation.info.max_customized_traffic_config_index] = strndup(ch, len); - } else if (idt_min_ms_) { - oai_emulation.application_config.customized_traffic.idt_min_ms[oai_emulation.info.max_customized_traffic_config_index] = atoi(ch); - } else if (idt_max_ms_) { - oai_emulation.application_config.customized_traffic.idt_max_ms[oai_emulation.info.max_customized_traffic_config_index] = atoi(ch); - } else if (idt_standard_deviation_) { - oai_emulation.application_config.customized_traffic.idt_standard_deviation[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - } else if (idt_lambda_) { - oai_emulation.application_config.customized_traffic.idt_lambda[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - } else if (idt_scale_) { - oai_emulation.application_config.customized_traffic.idt_scale[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - } else if (idt_shape_) { - oai_emulation.application_config.customized_traffic.idt_shape[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - } else if (size_dist_) { - oai_emulation.application_config.customized_traffic.size_dist[oai_emulation.info.max_customized_traffic_config_index] = strndup(ch, len); - } else if (size_min_byte_) { - oai_emulation.application_config.customized_traffic.size_min_byte[oai_emulation.info.max_customized_traffic_config_index] = atoi(ch); - } else if (size_max_byte_) { - oai_emulation.application_config.customized_traffic.size_max_byte[oai_emulation.info.max_customized_traffic_config_index] = atoi(ch); - } else if (size_standard_deviation_) { - oai_emulation.application_config.customized_traffic.size_standard_deviation[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - } else if (size_lambda_) { - oai_emulation.application_config.customized_traffic.size_lambda[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - } else if (size_scale_) { - oai_emulation.application_config.customized_traffic.size_scale[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - } else if (size_shape_) { - oai_emulation.application_config.customized_traffic.size_shape[oai_emulation.info.max_customized_traffic_config_index] = atof(ch); - } else if (stream_) { - oai_emulation.application_config.customized_traffic.stream[oai_emulation.info.max_customized_traffic_config_index] = atoi(ch); - } else if (destination_port_) { - oai_emulation.application_config.customized_traffic.destination_port[oai_emulation.info.max_customized_traffic_config_index] = atoi(ch); - } - } - - } else if (emulation_config_) { - if (emulation_time_ms_) { - oai_emulation.emulation_config.emulation_time_ms = atof(ch); - } else if (curve_) { - oai_emulation.emulation_config.curve = strndup(ch, len); - } else if (profiling_) { - oai_emulation.info.opp_enabled = atoi(ch); - } else if (trace_file_) { - oai_emulation.info.opt_enabled = 1; - - if (strncmp(ch, "wireshark", len) == 0) { - opt_type = OPT_WIRESHARK; - } else if (strncmp(ch, "pcap", len) == 0) { - opt_type = OPT_PCAP; - } else { - opt_type = OPT_NONE; - oai_emulation.info.opt_enabled = 0; - } - - oai_emulation.info.opt_mode = opt_type; - } else if (background_stats_) { - oai_emulation.emulation_config.background_stats = strndup(ch, len); - } else if (performance_metrics_) { - if (throughput_) { - oai_emulation.emulation_config.performance_metrics.throughput = strndup(ch, len); - } else if (latency_) { - oai_emulation.emulation_config.performance_metrics.latency = strndup(ch, len); - } else if (loss_rate_) { - oai_emulation.emulation_config.performance_metrics.loss_rate = strndup(ch, len); - } else if (owd_radio_access_) { - oai_emulation.emulation_config.performance_metrics.owd_radio_access = strndup(ch, len); - } - } else if (layer_) { - if (phy_) { - oai_emulation.emulation_config.layer.phy = atoi(ch); - } else if (mac_) { - oai_emulation.emulation_config.layer.mac = atoi(ch); - } else if (rlc_) { - oai_emulation.emulation_config.layer.rlc = atoi(ch); - } else if (pdcp_) { - oai_emulation.emulation_config.layer.pdcp = atoi(ch); - } else if (rrc_) { - oai_emulation.emulation_config.layer.rrc = atoi(ch); - } else if (omg_) { - oai_emulation.emulation_config.layer.omg = atoi(ch); - } else if (otg_) { - oai_emulation.emulation_config.layer.otg = atoi(ch); - } else if (emu_) { - oai_emulation.emulation_config.layer.emu = atoi(ch); - } - } else if (log_) { - if (level_) { - oai_emulation.emulation_config.log_emu.level = strndup(ch,len); - } else if (verbosity_) { - oai_emulation.emulation_config.log_emu.verbosity = strndup(ch,len); - } else if (interval_) { - oai_emulation.emulation_config.log_emu.interval = atoi(ch); - } - } else if (packet_trace_) { - oai_emulation.emulation_config.packet_trace.enabled = atoi(ch); - } else if (seed_value_) { - oai_emulation.emulation_config.seed.value = atoi(ch); - } else if (cli_enabled_) { - oai_emulation.info.cli_enabled = 1; - - if (cli_start_enb_) { - for (i=0; i < oai_emulation.info.cli_num_enb; i++) - oai_emulation.info.cli_start_enb[i] = atoi(ch); - } else if (cli_start_ue_) { - for (i=0; i < oai_emulation.info.cli_num_ue; i++) - oai_emulation.info.cli_start_ue[i] = atoi(ch); - } - } - } else if (protocol_) { - if (mac_) { - if (num_groups_) { - oai_emulation.protocol_config.eNB_mac_config.num_groups=atoi(ch); - } - } - } else if (profile_) { - oai_emulation.profile = strndup(ch, len); - } - } -} - - -int parse_XML(char src_file[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX]) -{ - // config the parser, refer to 'http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html' - xmlSAXHandler sax_handler = { 0 }; // a Simple API for XML (SAX) handler - sax_handler.startDocument = start_document; - sax_handler.endDocument = end_document; - sax_handler.startElement = start_element; - sax_handler.endElement = end_element; - sax_handler.characters = characters; - - // Parsing the XML file - if (xmlSAXUserParseFile(&sax_handler, NULL, src_file) != 0) { - LOG_E(OCG, "An error occurs while parsing the configuration file!\n"); - return MODULE_ERROR; - } - - LOG_I(OCG, "The configuration file is parsed\n"); - return MODULE_OK; -} diff --git a/openair2/UTIL/OCG/OCG_parse_XML.h b/openair2/UTIL/OCG/OCG_parse_XML.h deleted file mode 100644 index cb74a9fe1e..0000000000 --- a/openair2/UTIL/OCG/OCG_parse_XML.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_parse_XML.h -* \brief Variables indicating the element which is currently parsed -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -#ifndef __OCG_PARSE_XML_H__ - -#define __OCG_PARSE_XML_H__ - -#ifdef __cplusplus -extern "C" { -#endif -/** @defgroup _parsing_position_indicator Parsing Position Indicator - * @ingroup _parse_XML - * @brief Indicate the position where the program is current parsing in the XML file - * @{*/ - -/* @}*/ - -/** @defgroup _parse_XML Parse XML - * @ingroup _fn - * @brief Parse the XML configuration file - * @{*/ -int parse_XML(char src_file[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX]); -/* @}*/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/openair2/UTIL/OCG/OCG_parse_filename.c b/openair2/UTIL/OCG/OCG_parse_filename.c deleted file mode 100644 index 1ecad56e20..0000000000 --- a/openair2/UTIL/OCG/OCG_parse_filename.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_parse_filename.c -* \brief Parse the filename of the XML file -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -/*--- INCLUDES ---------------------------------------------------------------*/ -#include -#include -#include "OCG_vars.h" -#include "OCG_parse_filename.h" -#include "UTIL/LOG/log.h" - -/*----------------------------------------------------------------------------*/ - -int parse_filename(char filename[FILENAME_LENGTH_MAX]) -{ - char *delim = "._"; - char tmp_filename[FILENAME_LENGTH_MAX]; - char *fd_tmp; - char *un_tmp; - char *ex_tmp; - - //delim = "._"; - strncpy(tmp_filename, filename, FILENAME_LENGTH_MAX); - tmp_filename[FILENAME_LENGTH_MAX - 1] = 0; // terminate string - - un_tmp = strtok(tmp_filename, delim); - fd_tmp = strtok(NULL, delim); - ex_tmp = strtok(NULL, delim); - - if ((ex_tmp == NULL) || ((strcmp(ex_tmp, "xml")) && (strcmp(ex_tmp, "XML")))) { - LOG_E(OCG, - "Please use .xml file for configuration with the format \"user_name.file_date.xml\"\nfile_date = \"year month day hour minute second\" without space, \ne.g. 20100201193045 represents in the year 2010, February 1st, 19:30:45\n"); - return MODULE_ERROR; - } else { - strncpy(file_date, fd_tmp, sizeof(file_date)); - file_date[sizeof(file_date) - 1] = 0; // terminate string - strncpy(user_name, un_tmp, sizeof(user_name)); - user_name[sizeof(user_name) - 1] = 0; // terminate string - - LOG_I(OCG, "File name is parsed as user_name = %s, file_date = %s\n", user_name, file_date); - return MODULE_OK; - } -} diff --git a/openair2/UTIL/OCG/OCG_parse_filename.h b/openair2/UTIL/OCG/OCG_parse_filename.h deleted file mode 100644 index bcc8cd11ed..0000000000 --- a/openair2/UTIL/OCG/OCG_parse_filename.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_parse_filename.h -* \brief -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -#ifndef __OCG_PARSE_FILENAME_H__ - -#define __OCG_PARSE_FILENAME_H__ - -#ifdef __cplusplus -extern "C" { -#endif -/** @defgroup _parse_filename Parse Filename - * @ingroup _fn - * @brief Parse the filename to get user_name and file_date - * @{*/ -int parse_filename(char filename[FILENAME_LENGTH_MAX]); -/* @}*/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/openair2/UTIL/OCG/OCG_save_XML.c b/openair2/UTIL/OCG/OCG_save_XML.c deleted file mode 100644 index 2b0d907cdf..0000000000 --- a/openair2/UTIL/OCG/OCG_save_XML.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_save_XML.c -* \brief Save the XML configuration file in the created directory for current emulation -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -/*--- INCLUDES ---------------------------------------------------------------*/ -#include -#include -#include "OCG_vars.h" -#include "OCG_save_XML.h" -#include "UTIL/LOG/log.h" -/*----------------------------------------------------------------------------*/ - -//int save_XML(int copy_or_move, char src_file[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX], char dst_dir[DIR_LENGTH_MAX], char filename[FILENAME_LENGTH_MAX]) { -int save_XML(int copy_or_move, char *src_file, char *output_dir, char *filename) -{ - - FILE *fs, *ft; - int ch; - char dst_file[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX + 32] = ""; - char XML_saving_dir[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX + 32] = ""; - - strncpy(dst_file, output_dir, sizeof(dst_file)); - dst_file[sizeof(dst_file) - 1] = 0; // terminate string - //strcat(dst_file, "SCENARIO/XML/"); - strncpy(XML_saving_dir, dst_file, sizeof(XML_saving_dir)); - XML_saving_dir[sizeof(XML_saving_dir) - 1] = 0; // terminate string - strncat(dst_file, filename, sizeof(dst_file) - strlen(dst_file) - 1); - fs = fopen(src_file, "r"); - ft = fopen(dst_file, "w"); - - if ((ft !=NULL)&&(fs!=NULL)) { - while(1) { - ch = getc(fs); - - if(ch == EOF) { - break; - } else { - putc(ch, ft); - } - } - - } - - if (fs) - fclose(fs); - - if (ft) - fclose(ft); - - if (copy_or_move == 2) remove(src_file); - - LOG_I(OCG, "The file is saved in directory \"%s\"\n", XML_saving_dir); - return MODULE_OK; -} diff --git a/openair2/UTIL/OCG/OCG_save_XML.h b/openair2/UTIL/OCG/OCG_save_XML.h deleted file mode 100644 index ba2d9240ca..0000000000 --- a/openair2/UTIL/OCG/OCG_save_XML.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*! \file OCG_save_XML.h -* \brief -* \author Lusheng Wang and navid nikaein -* \date 2011 -* \version 0.1 -* \company Eurecom -* \email: navid.nikaein@eurecom.fr -* \note -* \warning -*/ - -#ifndef __OCG_SAVE_XML_H__ - -#define __OCG_SAVE_XML_H__ - -#ifdef __cplusplus -extern "C" { -#endif -/** @defgroup _save_XML Save XML - * @ingroup _fn - * @brief Save the XML configuration file in dst_dir - * @{*/ -int save_XML(int demo_or_user, char src_file[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX], char dst_dir[DIR_LENGTH_MAX], char filename[FILENAME_LENGTH_MAX]); -/* @}*/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/openair2/UTIL/OCG/OCG_vars.h b/openair2/UTIL/OCG/OCG_vars.h deleted file mode 100644 index 947a90715c..0000000000 --- a/openair2/UTIL/OCG/OCG_vars.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -#ifndef __OCG_VARS_H__ -#define __OCG_VARS_H__ - -#include "OCG.h" - -/** @defgroup _main_val Main Variables - * @ingroup _OCG - * @brief Variables used by the main function - * @{*/ -char filename[FILENAME_LENGTH_MAX]; /*!< \brief user_name.file_date.xml */ -char user_name[FILENAME_LENGTH_MAX / 2]; /*!< \brief user_name */ -char file_date[FILENAME_LENGTH_MAX / 2]; /*!< \brief file_date */ -char src_file[FILENAME_LENGTH_MAX + DIR_LENGTH_MAX]; /*!< \brief USER_XML_FOLDER/user_name.file_date.xml or DEMO_XML_FOLDER/user_name.file_date.xml */ -char dst_dir[DIR_LENGTH_MAX]; /*!< \brief user_name/file_date/ */ -int copy_or_move; /*!< \brief indicating if the current emulation is with a local XML or an XML generated from the web portal */ -int file_detected; /*!< \brief indicate whether a new file is detected */ -/* @}*/ - -/** @defgroup _oks OCG Module State Indicators - * @ingroup _OCG - * @brief Indicate whether a module has processed successfully - * @{*/ -int get_opt_OK; /*!< \brief value: -9999, -1, 0 or 1 */ -int detect_file_OK; /*!< \brief value: -9999, -1 or 0 */ -int parse_filename_OK; /*!< \brief value: -9999, -1 or 0 */ -int create_dir_OK; /*!< \brief value: -9999, -1 or 0 */ -int parse_XML_OK; /*!< \brief value: -9999, -1 or 0 */ -int save_XML_OK; /*!< \brief value: -9999, -1 or 0 */ -int call_emu_OK; /*!< \brief value: -9999, -1 or 0 */ -int config_mobi_OK; /*!< \brief value: -9999, -1 or 0 */ -int generate_report_OK; /*!< \brief value: -9999, -1 or 0 */ - -OAI_Emulation oai_emulation; - - -/* @}*/ -#endif - diff --git a/openair2/UTIL/OCG/XML_to_mobigen/RWMEmulator.xml b/openair2/UTIL/OCG/XML_to_mobigen/RWMEmulator.xml deleted file mode 100644 index 062b4c9aa0..0000000000 --- a/openair2/UTIL/OCG/XML_to_mobigen/RWMEmulator.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - 1.000000 - 1.000000 - 1 - - - false - false - 500 - - - 1 - - - - 0.0 - - - 0 - 0 - 9999 - 9999 - - - diff --git a/openair2/UTIL/OCG/eurecom_20110208110244.xml b/openair2/UTIL/OCG/eurecom_20110208110244.xml deleted file mode 100644 index 15acc6fd9a..0000000000 --- a/openair2/UTIL/OCG/eurecom_20110208110244.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - 100 - 1.5 - - home - obstructed - - - 2.3 - 56 - - - - 15 - - - - 1 - -10 - - - homogeneous - macrocell - - 5 - - - - 23 - - - 25 - - 1 - - 100 - 99 - - random_waypoint - - 1 - 3 - 1 - 2 - - - - - cbr - - udp - - - 54 - - - - - 19 - - - - - - 15 - - - 1 - 1 - - - - 1 - - - - - 1 - - - 1 - - - - - - - EURECOM - \ No newline at end of file diff --git a/openair2/UTIL/OCG/local_XML/Lusheng.20110208110244.xml b/openair2/UTIL/OCG/local_XML/Lusheng.20110208110244.xml deleted file mode 100644 index 15acc6fd9a..0000000000 --- a/openair2/UTIL/OCG/local_XML/Lusheng.20110208110244.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - 100 - 1.5 - - home - obstructed - - - 2.3 - 56 - - - - 15 - - - - 1 - -10 - - - homogeneous - macrocell - - 5 - - - - 23 - - - 25 - - 1 - - 100 - 99 - - random_waypoint - - 1 - 3 - 1 - 2 - - - - - cbr - - udp - - - 54 - - - - - 19 - - - - - - 15 - - - 1 - 1 - - - - 1 - - - - - 1 - - - 1 - - - - - - - EURECOM - \ No newline at end of file diff --git a/openair2/UTIL/OCG/makefile b/openair2/UTIL/OCG/makefile deleted file mode 100644 index 1ef4ec98dc..0000000000 --- a/openair2/UTIL/OCG/makefile +++ /dev/null @@ -1,72 +0,0 @@ -include $(OPENAIR_DIR)/common/utils/Makefile.inc -LIB = -lxml2 - -TOP_DIR = ../.. -OPENAIR1_TOP = ../.. -OPENAIR2_TOP = ../../../openair2 -OPENAIR3_TOP = ../../../openair3 -OPENAIR3 = $(OPENAIR3_DIR) - -CFLAGS += -DPHYSIM -DNODE_RG -DNB_ANTENNAS_RX=2 -DNB_ANTENNAS_TX=2 -DMAX_MODULES=1 -I/usr/include/X11 #-Wno-packed-bitfield-compat - - -CFLAGS += -m32 -DOPENAIR_LTE -DOPENAIR2 #-DOFDMA_ULSCH -DIFFT_FPGA -DIFFT_FPGA_UE - -#CFLAGS += -DXFORMS - -ifdef DEBUG_PHY -CFLAGS += -DDEBUG_PHY -endif - -ifdef PDCP_USE_NETLINK -CFLAGS += -DPDCP_USE_NETLINK -DLINUX -DDEBUG_CONTROL -endif - -#ifdef OCG -CFLAGS += -I/usr/include/libxml2 -lxml2 -#endif - -include $(OPENAIR1_DIR)/PHY/Makefile.inc -include $(OPENAIR1_DIR)/SCHED/Makefile.inc -include $(OPENAIR2_DIR)/LAYER2/Makefile.inc -include $(OPENAIR1_DIR)/SIMULATION/ETH_TRANSPORT/Makefile.inc - -SIMULATION_OBJS = $(TOP_DIR)/SIMULATION/TOOLS/gauss.o -SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/TOOLS/random_channel.o -SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/TOOLS/rangen_double.o -SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/TOOLS/taus.o -SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/TOOLS/multipath_channel.o -SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/RF/rf.o -SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/RF/adc.o -SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/RF/dac.o - -OBJ = $(PHY_OBJS) $(SIMULATION_OBJS) $(ETHERNET_TRANSPORT_OBJS) $(TOOLS_OBJS) $(SCHED_OBJS) $(STATS_OBJS) - -all: physim - - -$(OBJ) : %.o : %.c - $(CC) -c $(CFLAGS) $(EXTRA_CFLAGS) -DPHY_CONTEXT=1 -I$(TOP_DIR) $(L2_incl) -o $@ $< - -$(L2_OBJS) : %.o : %.c - $(CC) -c $(CFLAGS) $(EXTRA_CFLAGS) -DMAC_CONTEXT=1 -DPHY_CONTEXT=1 -I$(TOP_DIR) $(L2_incl) -o $@ $< - -physim : $(OBJ) $(L2_OBJS) OCG.c OCG_get_opt.c OCG_detect_file.c OCG_parse_filename.c OCG_create_dir.c OCG_parse_XML.c OCG_save_XML.c OCG_config_mobi.c OCG_generate_report.c - $(CC) OCG.c OCG_get_opt.c OCG_detect_file.c OCG_parse_filename.c OCG_create_dir.c OCG_parse_XML.c OCG_save_XML.c OCG_config_mobi.c OCG_generate_report.c -I$(TOP_DIR) $(L2_incl) -o physim $(CFLAGS) $(EXTRA_CFLAGS) $(OBJ) $(L2_OBJS) -lm -lforms -L/usr/local/lib -lforms -lX11 -L/usr/X11R6/lib -lXpm -lblas -lpthread - -clean: - rm -f physim - rm -f $(OBJ) - rm -f $(L2_OBJS) - rm -f *.o - rm -f *.exe* - -cleanl1: - rm -f physim - rm -f $(OBJ) - rm -f *.o - rm -f *.exe -cleanl2: - rm -f $(L2_OBJS) - - diff --git a/openair2/UTIL/OCG/readme.txt b/openair2/UTIL/OCG/readme.txt deleted file mode 100644 index 35300aa39f..0000000000 --- a/openair2/UTIL/OCG/readme.txt +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The OpenAirInterface Software Alliance licenses this file to You under - * the OAI Public License, Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.openairinterface.org/?page_id=698 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------------------- - * For more information about the OpenAirInterface (OAI) Software Alliance: - * contact@openairinterface.org - */ - -/*________________________OEPNAIR/OPENAIR0/________________________ - - File : Readme.txt - Authors : Lusheng Wang - Company : EURECOM - Emails : lusheng.wang@eurecom.fr -________________________________________________________________*/ - - ------------------ -Table of contents ------------------ - -The content of this readme is the following: - - 1) What is this block about in OpenAirInterface - 2) Organization of the folders and their dependancies - 3) Folders and files description - 4) Makefile targets and how to build - 5) How to use OCG: run a simple experimentation - -------------------------------------------------- -1) What is this block about in OpenAirInterface ? -------------------------------------------------- - - This block is called OpenAirInterface Configuration Generation (OCG). Its major function is to parse the XML configuration file and configure an emulation. - - When the user specifies a scenario for emulation from the web portal, the web portal will generate an XML configuration file in the scenario folder of OCG. OCG automatically detects this file and initiates an emulation for it. During the emulation, OCG calls other blocks (such as MobiGen and TrafficGen) and gets feedbacks from them. After the emulation, OCG generates output files in the created folder of the emulation. - - OCG contains the following key modules: - - a) get opt : Get options of the OCG command, e.g. "OCG -f" and "OCG -h" - b) detect file : Detect new XML configuration file in the scenario folder - c) parse filename : Parse the filename to get user name and file date - d) create dir : Create directory in the output directory for an emulation - e) parse XML : Parse the XML configuration file - f) save XML : Save the XML configuration file in created directory - g) call emu : Call the emulator - h) generate report : Generate a report to show the states of OCG modules - ------------------------------------------------------ -2) Organization of the folders and their dependancies ------------------------------------------------------ - - Folder Description - ------ ----------- - - - src/ contains source files - - - include/ contains header files - - - demo/ contains XML configuration files for demo - - - detecting_XML/ contains nothing, but OCG will detect here the XML files generated by the web portal - - - output_folder/ if filename of the XML file can be successfully parsed, OCG creates output folders for users and generates output files for emulations here - - - temp_output_folder/ if filename of the XML file cannot be successfully parsed, OCG generates an output file here - --------------------------------- -3) Folders and files description --------------------------------- - - Folder/File Description - ----------- ----------- - - - src/OCG.c contains the main() function with the FSM of OCG - - - src/OCG_get_opt.c contains the get_opt() function - - - src/OCG_detect_file.c contains the detect_file() function - - - src/OCG_parse_filename.c contains the parse_filename() function - - - src/OCG_create_dir.c contains the create_dir() function - - - src/OCG_parse_XML.c contains the parse_XML() function - - - src/OCG_save_XML.c contains the save_XML() function - - - src/OCG_call_emu.c contains the call_emu() function - - - src/OCG_generate_report.c contains the generate_report() function - - - include/OCG.h header file of main(), contains the data structure of the basic OpenAirInterface Scenario Descriptor (OSD), etc. - - - include/OCG_get_opt.h header file of get_opt() - - - include/OCG_detect_file.h header file of detect_file() - - - include/OCG_parse_filename.h header file of parse_filename() - - - include/OCG_create_dir.h header file of create_dir() - - - include/OCG_parse_XML.h header file of parse_XML(), contains the declaration of parsing position indicators - - - include/OCG_save_XML.h header file of save_XML() - - - include/OCG_call_emu.h header file of call_emu() - - - include/OCG_generate_report.h header file of generate_report() - - - demo/eurecom.20110208110244.xml contains a demo - -------------------------------------- -4) Makefile targets and how to build -------------------------------------- - - CC= gcc - CFLAGS = -I/usr/include/libxml2 - LIB = -lxml2 - - OCG: - ${CC} ${CFLAGS} ${LIB} src/OCG.c src/OCG_get_opt.c src/OCG_detect_file.c src/OCG_parse_filename.c src/OCG_create_dir.c src/OCG_parse_XML.c src/OCG_save_XML.c src/OCG_call_emu.c src/OCG_generate_OCG_report.c -o OCG - ---------------------------------------------------------------- -6) How to use OCG: run a simple experimentation ---------------------------------------------------------------- - - There are two methods to use the OCG for an emulation: - - a) DEMO mode : use command "OCG -f filename" to run a DEMO mode emulation - - The following steps are required for a DEMO mode emulation: - - i) Put your XML configuration file into the demo/ folder; - - ii) Change the filename as user_name.file_date.xml; - - iii) Run the emulation with the above command; - - iv) Check debug information in the shell, which indicates you the directory where OCG generates the outputs. - - To run an existing demo XML file, step i) and ii) are not required. - - Note that OCG automatically set the path of a demo XML file as demo/, so only filename is required in the command. - - b) USER mode : use command "OCG" to start OCG as a daemon - - The following steps are required for a USER mode emulation: - - i) Run OCG as a daemon with the above command; - - iiA) Configure an emulation scenario through the web portal and press the button to generate an XML file; or - - iiB) Copy your XML file to the detecting_XML/ folder directly; - - iii) Check debug information in the shell, which indicates you the directory where OCG generates the outputs. - - For option iiB), make sure the filename is with the correct format "user_name.file_date.xml". Moreover, make sure the configuration in the XML file is correct. - For the format of the XML configuration file, refer to "demo/eurecom.20110208110244.xml". - - diff --git a/openair2/UTIL/OCG/temp_output/OCG_report.xml b/openair2/UTIL/OCG/temp_output/OCG_report.xml deleted file mode 100644 index 37ef79b4b8..0000000000 --- a/openair2/UTIL/OCG/temp_output/OCG_report.xml +++ /dev/null @@ -1,9 +0,0 @@ - - in this output file, -9999 means NOT_PROCESSED; -2 means NO_FILE; -1 means ERROR; 0 means OK - -2 - 0 - -1 - -9999 - -9999 - -9999 - -9999 diff --git a/openair2/UTIL/OMG/omg.h b/openair2/UTIL/OMG/omg.h index 07dbf1f750..a233164062 100644 --- a/openair2/UTIL/OMG/omg.h +++ b/openair2/UTIL/OMG/omg.h @@ -63,7 +63,7 @@ Given the great importance of mobility features in the world of wireless communi /** @defgroup _omg_ OMG: The mobility generator of OpenAirInterface * @ingroup _omg OMG, or OpenAir Mobility Generation has born to add the mobility features to OpenAir given the increasing importance of realistic mobility patterns in the world of wireless networks and the need for simulation to explore this area. OMG includes the most used mobility models, in three classes, namely: \b EMBEDDED \b TRACE \ FEDERATED. In the \b EMBEDDED class, random mobility is embedded in OMG. The most used random models have been implemneted, namely \b Random \b Walk , \b Random \b Way \b Point and \b Graph based mobility. The \b TRACE class is able to load into OMG and OAI trace-based mobility files. The \b FEDERATED class allows OMG to interface with an external mobility/traffic generator to obtain and change mobility patterns. The \b FEDERATED class currently support the federation with SUMO, Simulation of Urban Mobility, but could easily be extended to accept other simulator. Thus, it is capable of abstracting the motion of vehicles or mobile nodes in different ways. And since it is also useful to model the fix nodes that can exist in the road to communicate with the mobile nodes, a \b STATIC model is also included in OMG. \n -OMG has a direct relation ship with the already existing \b OCG module (OpenAir Config Generation). Actually, this latter module is responsible of setting the emulation time to synchronize OMG, requesting OMG to start simulation scenario, update the nodes positions and many other features. (see section Specification) \n +OMG has a direct relation ship with the (edit: deleted as of 2023-03-09) OCG module (OpenAir Config Generation). Actually, this latter module is responsible of setting the emulation time to synchronize OMG, requesting OMG to start simulation scenario, update the nodes positions and many other features. (see section Specification) \n */ diff --git a/targets/TEST/AT_COMMANDS/Makefile b/targets/TEST/AT_COMMANDS/Makefile index fc5f550329..aa834872e7 100644 --- a/targets/TEST/AT_COMMANDS/Makefile +++ b/targets/TEST/AT_COMMANDS/Makefile @@ -48,7 +48,6 @@ RRC_DIR = $(OPENAIR2_TOP)/RRC/LITE L2_INTERFACE_DIR = $(OPENAIR2_TOP)/RRC/L2_INTERFACE MAC_DIR = $(OPENAIR2_TOP)/LAYER2/MAC LOG_DIR=$(OPENAIR2_TOP)/UTIL/LOG -OCG_DIR=$(OPENAIR2_TOP)/UTIL/OCG OPT_DIR=$(OPENAIR2_TOP)/UTIL/OPT diff --git a/targets/TEST/AT_COMMANDS/oaisim.c b/targets/TEST/AT_COMMANDS/oaisim.c index e14373f87f..bbbbe3da5f 100644 --- a/targets/TEST/AT_COMMANDS/oaisim.c +++ b/targets/TEST/AT_COMMANDS/oaisim.c @@ -36,7 +36,6 @@ #include "UTIL/LOG/log_extern.h" #include "RRC/LTE/vars.h" #include "PHY_INTERFACE/vars.h" -#include "UTIL/OCG/OCG.h" #include "UTIL/AT_COMMANDS/parser.h" mapping level_names[] = { diff --git a/targets/TEST/PACKET_TRACER/Makefile b/targets/TEST/PACKET_TRACER/Makefile index e7a4e70bf9..f49fefe454 100644 --- a/targets/TEST/PACKET_TRACER/Makefile +++ b/targets/TEST/PACKET_TRACER/Makefile @@ -20,10 +20,7 @@ endif # activate OCG and libxml only under linux ifeq ($(linux),1) CFLAGS += -I/usr/include/libxml2 -L/usr/local/lib -I/usr/include/atlas -L/usr/X11R6/lib -OCG_FLAG = 1 CFLAGS += -DLINUX -else -OCG_FLAG = 0 endif @@ -100,7 +97,6 @@ printvars: @echo LINUX variable is $(linux) @echo rrc_cellular variable is $(rrc_cellular) @echo EXTRA_CFLAGS = $(EXTRA_CFLAGS) - @echo OAI Config generator is $(OCG_FLAG) @echo OAI NETLINK FLAG is $(NAS_FLAG) @echo SSE3 proc is $(SSE3PROC) @echo IS_REL_8 is $(IS_REL_8) @@ -153,7 +149,6 @@ cleanasn1: rm -f $(OPENAIR2_DIR)/RRC/LITE/MESSAGES/Makefile.inc.generated print: - @echo $(OCG_FLAG) @echo $(CFLAGS) @echo $(EXTRA_CFLAGS) @echo $(OBJ) diff --git a/targets/TEST/PACKET_TRACER/pt.c b/targets/TEST/PACKET_TRACER/pt.c index 54f3a09405..24c1fe495a 100644 --- a/targets/TEST/PACKET_TRACER/pt.c +++ b/targets/TEST/PACKET_TRACER/pt.c @@ -39,7 +39,6 @@ #include "RRC/LTE/vars.h" #include "PHY_INTERFACE/vars.h" #include "UTIL/LOG/log.h" -#include "OCG_vars.h" #include "UTIL/OTG/otg_tx.h" #include "UTIL/OTG/otg.h" #include "UTIL/OTG/otg_vars.h" @@ -512,7 +511,6 @@ int main (int argc, char **argv) /* set_log(OMG, LOG_INFO, 20); set_log(EMU, LOG_INFO, 10); - set_log(OCG, LOG_INFO, 1); set_log(MAC, LOG_TRACE, 1); set_log(RLC, LOG_TRACE, 1); set_log(PHY, LOG_DEBUG, 1); diff --git a/targets/TEST/PDCP/Makefile b/targets/TEST/PDCP/Makefile index 805cabe7cb..c1f4416bee 100644 --- a/targets/TEST/PDCP/Makefile +++ b/targets/TEST/PDCP/Makefile @@ -48,7 +48,6 @@ RRC_DIR = $(OPENAIR2_TOP)/RRC/LITE L2_INTERFACE_DIR = $(OPENAIR2_TOP)/RRC/L2_INTERFACE MAC_DIR = $(OPENAIR2_TOP)/LAYER2/MAC LOG_DIR=$(OPENAIR2_TOP)/UTIL/LOG -OCG_DIR=$(OPENAIR2_TOP)/UTIL/OCG OPT_DIR=$(OPENAIR2_TOP)/UTIL/OPT SOURCES_L2 = $(LIST_DIR)/list.c @@ -66,8 +65,7 @@ OPT_OBJS = $(OPT_DIR)/probe.o L2_OBJS=$(addsuffix .o,$(basename $(SOURCES_L2))) $(PHY_INTERFACE_OBJS) $(MAC_OBJS) $(L2_INTERFACE_OBJS) $(RRC_OBJS) $(LOG_OBJS) $(OPT_OBJS) L2_incl = -I$(OPENAIR2_TOP) -I$(COMMON_DIR) -I$(RLC_DIR) -I$(RLC_AM_DIR) -I$(RLC_UM_DIR) -I$(RLC_TM_DIR) -I$(PDCP_DIR) -I$(MEM_DIR) -I$(LIST_DIR) \ - -I$(LOG_DIR) -I$(MATH_DIR) -I$(TIMER_DIR) -I$(OPENAIR3)/MESH -I$(OPENAIR2_TOP)/RRC/MESH -I$(OPENAIR2_TOP)/RRC/MESH/MESSAGES -I$(OPENAIR3)/MESH/RRM -I$(OPT_DIR) \ - -I$(OCG_DIR) + -I$(LOG_DIR) -I$(MATH_DIR) -I$(TIMER_DIR) -I$(OPENAIR3)/MESH -I$(OPENAIR2_TOP)/RRC/MESH -I$(OPENAIR2_TOP)/RRC/MESH/MESSAGES -I$(OPENAIR3)/MESH/RRM -I$(OPT_DIR) ASN1_MSG_OBJS2 := $(foreach file, $(ASN1_MSG_OBJS), $(OPENAIR2_DIR)/RRC/LITE/MESSAGES/$(file)) diff --git a/targets/TEST/PDCP/test_pdcp.c b/targets/TEST/PDCP/test_pdcp.c index d6becf87c1..f5f34daec6 100644 --- a/targets/TEST/PDCP/test_pdcp.c +++ b/targets/TEST/PDCP/test_pdcp.c @@ -28,7 +28,6 @@ #include "MAC_INTERFACE/vars.h" #include "LAYER2/MAC/vars.h" #include "UTIL/LOG/log_if.h" -#include "OCG_vars.h" #include "test_util.h" #include "test_pdcp.h" diff --git a/targets/TEST/PDCP/with_rlc/Makefile.data_bearer b/targets/TEST/PDCP/with_rlc/Makefile.data_bearer index d1397d3f49..865545c50f 100644 --- a/targets/TEST/PDCP/with_rlc/Makefile.data_bearer +++ b/targets/TEST/PDCP/with_rlc/Makefile.data_bearer @@ -48,7 +48,6 @@ RRC_DIR = $(OPENAIR2_TOP)/RRC/LITE L2_INTERFACE_DIR = $(OPENAIR2_TOP)/RRC/L2_INTERFACE MAC_DIR = $(OPENAIR2_TOP)/LAYER2/MAC LOG_DIR=$(OPENAIR2_TOP)/UTIL/LOG -OCG_DIR=$(OPENAIR2_TOP)/UTIL/OCG OPT_DIR=$(OPENAIR2_TOP)/UTIL/OPT SOURCES_L2 = $(LIST_DIR)/list.c @@ -104,8 +103,7 @@ OPT_OBJS = $(OPT_DIR)/probe.o L2_OBJS=$(addsuffix .o,$(basename $(SOURCES_L2))) $(PHY_INTERFACE_OBJS) $(MAC_OBJS) $(L2_INTERFACE_OBJS) $(RRC_OBJS) $(LOG_OBJS) $(OPT_OBJS) L2_incl = -I$(OPENAIR2_TOP) -I$(COMMON_DIR) -I$(RLC_DIR) -I$(RLC_AM_DIR) -I$(RLC_UM_DIR) -I$(RLC_TM_DIR) -I$(PDCP_DIR) -I$(MEM_DIR) -I$(LIST_DIR) \ - -I$(LOG_DIR) -I$(MATH_DIR) -I$(TIMER_DIR) -I$(OPENAIR3)/MESH -I$(OPENAIR2_TOP)/RRC/MESH -I$(OPENAIR2_TOP)/RRC/MESH/MESSAGES -I$(OPENAIR3)/MESH/RRM -I$(OPT_DIR) \ - -I$(OCG_DIR) + -I$(LOG_DIR) -I$(MATH_DIR) -I$(TIMER_DIR) -I$(OPENAIR3)/MESH -I$(OPENAIR2_TOP)/RRC/MESH -I$(OPENAIR2_TOP)/RRC/MESH/MESSAGES -I$(OPENAIR3)/MESH/RRM -I$(OPT_DIR) ASN1_MSG_OBJS2 := $(foreach file, $(ASN1_MSG_OBJS), $(OPENAIR2_DIR)/RRC/LITE/MESSAGES/$(file)) diff --git a/targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c b/targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c index 507521ee1e..d2a0d4c6dc 100644 --- a/targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c +++ b/targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c @@ -36,9 +36,7 @@ #include "UTIL/LOG/log_extern.h" #include "RRC/LTE/vars.h" #include "PHY_INTERFACE/vars.h" -#include "UTIL/OCG/OCG.h" #include "LAYER2/PDCP_v10.1.0/pdcp.h" -#include "OCG_vars.h" #include "rlc.h" #include "pdcp.h"