From 0e2d8fdee07a77567de415933ed0687008f829a6 Mon Sep 17 00:00:00 2001
From: Torsten Merz <mer114@moon-ph.nexus.csiro.au>
Date: Fri, 10 Apr 2020 11:58:02 +1000
Subject: [PATCH] added generic cmake file and extended number of concurrent
 regions

---
 smi/CMakeLists.txt    | 84 +++++++++++++++++++++++++++++++++++++++++++
 smi/src/smi_def.h     |  2 +-
 smi/src/smiplay_nrt.c |  8 ++++-
 3 files changed, 92 insertions(+), 2 deletions(-)
 create mode 100644 smi/CMakeLists.txt

diff --git a/smi/CMakeLists.txt b/smi/CMakeLists.txt
new file mode 100644
index 0000000..1e37cca
--- /dev/null
+++ b/smi/CMakeLists.txt
@@ -0,0 +1,84 @@
+cmake_minimum_required (VERSION 2.6)
+project (smi C)
+
+if("$ENV{MACHTYPE}" STREQUAL "x86_64")
+SET(NRTCFLAGS "-D_NRT -O2  -Wall -std=gnu90")
+if($ENV{RTAI})
+# RTAI
+SET(RTCFLAGS "$(shell rtai-config --lxrt-cflags) -D_RTAI  -Wall -std=gnu90")
+SET(RTLIB rtsmirtai)
+SET(NRTLIB nrtsmirtai)
+else()
+# PREEMPT_RT
+SET(RTCFLAGS "-O2  -Wall -fno-stack-protector -std=gnu90")
+SET(RTLIB rtsmi)
+SET(NRTLIB nrtsmi)
+endif()
+else ()
+if($ENV{GNU90})
+SET(NRTCFLAGS "-D_NRT -O2 -m32 -Wall -std=gnu90")
+if($ENV{RTAI})
+# RTAI
+SET(RTCFLAGS "$(shell rtai-config --lxrt-cflags) -D_RTAI -m32 -Wall -std=gnu90")
+SET(RTLIB rtsmirtai)
+SET(NRTLIB nrtsmirtai)
+else()
+# PREEMPT_RT
+SET(RTCFLAGS "-O2 -m32 -Wall -fno-stack-protector -std=gnu90")
+SET(RTLIB rtsmi)
+SET(NRTLIB nrtsmi)
+endif()
+else()
+SET(NRTCFLAGS "-D_NRT -O2 -m32 -Wall")
+if($ENV{RTAI})
+# RTAI
+SET(RTCFLAGS "$(shell rtai-config --lxrt-cflags) -D_RTAI -m32 -Wall")
+SET(RTLIB rtsmirtai)
+SET(NRTLIB nrtsmirtai)
+else()
+# PREEMPT_RT
+SET(RTCFLAGS "-O2 -m32 -Wall -fno-stack-protector")
+SET(RTLIB rtsmi)
+SET(NRTLIB nrtsmi)
+endif()
+endif()
+endif()
+
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../bin)
+
+include_directories(src)
+
+set(RTSOURCES 
+src/rt_system.c
+src/shm.c
+src/smi.c
+src/taskdisp.c
+)
+
+set(NRTSOURCES
+src/nrt_system.c
+src/shm.c
+src/smi_nrt.c
+src/smiplay_nrt.c
+src/taskdisp_nrt.c
+)
+
+if($ENV{RTAI})
+add_library(rtsmirtai STATIC ${RTSOURCES})
+add_library(nrtsmirtai STATIC ${NRTSOURCES})
+SET_TARGET_PROPERTIES(rtsmirtai PROPERTIES COMPILE_FLAGS "${RTCFLAGS} ${DEBUGFLAGS}")
+SET_TARGET_PROPERTIES(nrtsmirtai PROPERTIES COMPILE_FLAGS "${NRTCFLAGS} ${DEBUGFLAGS}")
+else()
+add_library(rtsmi STATIC ${RTSOURCES})
+add_library(nrtsmi STATIC ${NRTSOURCES})
+SET_TARGET_PROPERTIES(rtsmi PROPERTIES COMPILE_FLAGS "${RTCFLAGS} ${DEBUGFLAGS}")
+SET_TARGET_PROPERTIES(nrtsmi PROPERTIES COMPILE_FLAGS "${NRTCFLAGS} ${DEBUGFLAGS}")
+endif()
+
+if($ENV{RTAI})
+add_custom_target(
+   rtaicheck.sh
+   COMMAND ../bin/rtaicheck.sh
+)
+add_dependencies(rtsmirtai rtaicheck.sh)
+endif()
diff --git a/smi/src/smi_def.h b/smi/src/smi_def.h
index e46b632..f5b6791 100644
--- a/smi/src/smi_def.h
+++ b/smi/src/smi_def.h
@@ -10,7 +10,7 @@
 
 #define SMI_LOG_BUF_SIZE (1*1024)
 
-#define MAX_NUMBER_OF_CONCURRENT_STATES 80
+#define MAX_NUMBER_OF_CONCURRENT_STATES 100
 #define MAX_NUMBER_OF_REGIONS_PER_SUPERSTATE 32
 #define MAX_NUMBER_OF_TRANSITIONS_PER_STATE 16 //8
 #define MAX_NUMBER_OF_TRANSITIONS (MAX_NUMBER_OF_ESM_STATES*4)
diff --git a/smi/src/smiplay_nrt.c b/smi/src/smiplay_nrt.c
index f373fb0..7d472a0 100644
--- a/smi/src/smiplay_nrt.c
+++ b/smi/src/smiplay_nrt.c
@@ -10,6 +10,7 @@
 
 #include "smi_def.h"
 
+int printOnce=0;
 
 // UDP socket related
 unsigned short usiGUIUDPPort, usiLocalUDPPort;
@@ -28,8 +29,11 @@ int initUDPSocket(int *UDP_socket, struct sockaddr_in *UDPRemote_addr, unsigned
 	UDPRemote_addr->sin_port        = htons( (u_short) *usiUDPRemote_port );
 
 	if ((he=gethostbyname(rgcHostName))==0){
+if (printOnce&1==0) {	
 		printf("\n[initUDPSocket] Couldn't resolve \"%s\" host name\n",rgcHostName);
 		fflush(stdout);
+printOnce|=1;		
+}		
 		return (-1);
 	}
 	UDPRemote_addr->sin_addr = *((struct in_addr *)he->h_addr);
@@ -62,8 +66,10 @@ int initIPC(char *rgcHostName){
 	usiGUIUDPPort = 7070;
 	
 	sprintf(rgcGUIHostName,"%s",rgcHostName);	
+if (printOnce&2==0) {
 	printf("[initIPC] %s\n",rgcGUIHostName);
-
+printOnce|=2;
+}
 	return initUDPSocket(&iGUIUDPSocket,
 				&addrGUIUDP,
 				&usiGUIUDPPort,
-- 
GitLab