[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[certi-cvs] applications/XPlaneHLAPlugin CMakeLists.txt COP...
From: |
certi-cvs |
Subject: |
[certi-cvs] applications/XPlaneHLAPlugin CMakeLists.txt COP... |
Date: |
Tue, 27 May 2008 14:05:50 +0000 |
CVSROOT: /sources/certi
Module name: applications
Changes by: Eric NOULARD <erk> 08/05/27 14:05:50
Added files:
XPlaneHLAPlugin: CMakeLists.txt COPYING FindXPlane.cmake
README.txt XPlane_DESCRIPTION.txt
XPlaneHLAPlugin/Misc: XPlane.fed initCERTI.txt
XPlaneHLAPlugin/XPlane_PlugIn: CMakeLists.txt XP_Certi.h
XP_Init.cpp XP_Run.cpp
XPlane_InitDll.cpp
XPlane_RunDll.cpp
XPlaneHLAPlugin/XPlane_Trace: CMakeLists.txt XP_RTData.cpp
XP_Trace.cpp XP_Trace.h
Log message:
First XPlane_PlugIn prototype
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/CMakeLists.txt?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/COPYING?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/FindXPlane.cmake?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/README.txt?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/XPlane_DESCRIPTION.txt?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/Misc/XPlane.fed?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/Misc/initCERTI.txt?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/XPlane_PlugIn/CMakeLists.txt?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/XPlane_PlugIn/XP_Certi.h?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/XPlane_PlugIn/XP_Init.cpp?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/XPlane_PlugIn/XP_Run.cpp?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/XPlane_PlugIn/XPlane_InitDll.cpp?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/XPlane_PlugIn/XPlane_RunDll.cpp?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/XPlane_Trace/CMakeLists.txt?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/XPlane_Trace/XP_RTData.cpp?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/XPlane_Trace/XP_Trace.cpp?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/applications/XPlaneHLAPlugin/XPlane_Trace/XP_Trace.h?cvsroot=certi&rev=1.1
Patches:
Index: CMakeLists.txt
===================================================================
RCS file: CMakeLists.txt
diff -N CMakeLists.txt
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ CMakeLists.txt 27 May 2008 14:05:48 -0000 1.1
@@ -0,0 +1,91 @@
+#########################################################################
+# CMakeLists.txt for the XPlane project
+#########################################################################
+PROJECT(XPlaneHLAPlugin CXX)
+
+#########################################################################
+# Setup reasonable default CMake behavior
+#########################################################################
+
+# CERTI requires CMake 2.4.x
+CMAKE_MINIMUM_REQUIRED(VERSION 2.4.4)
+
+# Use CERTI specific CMake modules first
+# You should set CERTI_HOME env var to appropriate value or put here the full
path to the directory containing FindCERTI.cmake
+FILE(TO_CMAKE_PATH "$ENV{CERTI_HOME}" CERTI_PATH_HOME)
+LIST(APPEND CMAKE_MODULE_PATH ${CERTI_PATH_HOME}/share/scripts)
+
+# You should uncomment the following line if you want VERBOSE build
+#SET(CMAKE_VERBOSE_MAKEFILE ON)
+
+# The preferred (default) behaviour is to build library as shared on all
platform
+OPTION(BUILD_SHARED
+ "Build libraries as shared library" ON)
+IF (BUILD_SHARED)
+ SET(BUILD_SHARED_LIBS ON)
+ELSE (BUILD_SHARED)
+ SET(BUILD_SHARED_LIBS OFF)
+ENDIF (BUILD_SHARED)
+
+# Change the build type to release when you are ready to release
+SET(CMAKE_BUILD_TYPE "Debug")
+#SET(CMAKE_BUILD_TYPE "Release")
+
+#########################################################################
+# Define your project packaging basics
+#########################################################################
+SET(PACKAGE_NAME ${CMAKE_PROJECT_NAME})
+SET(PACKAGE_VERSION_MAJOR "0")
+SET(PACKAGE_VERSION_MINOR "1")
+SET(PACKAGE_VERSION_PATCH "0")
+SET(PACKAGE_VERSION
"${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH}")
+SET(PACKAGE_BUGREPORT "address@hidden")
+MESSAGE(STATUS "Configuring ${PACKAGE_NAME} version ${PACKAGE_VERSION}")
+
+#########################################################################
+# Call i.e. INCLUDE the CERTI usage configuration
+#########################################################################
+INCLUDE(UseCERTI)
+
+#########################################################################
+# CPack specific Configuration
+#########################################################################
+SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "XPlane Federation using CERTI")
+SET(CPACK_PACKAGE_VENDOR "ONERA, CT/TIS, JMMathé")
+SET(CPACK_PACKAGE_DESCRIPTION_FILE
"${CMAKE_CURRENT_SOURCE_DIR}/XPlane_DESCRIPTION.txt")
+SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
+SET(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME})
+SET(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME})
+SET(CPACK_SOURCE_IGNORE_FILES
"/CVS/;/\\\\.svn/;\\\\.swp$;\\\\.#;/#;.*~;cscope.*")
+SET(CPACK_SOURCE_GENERATOR "ZIP;TGZ")
+IF (WIN32)
+ SET(CPACK_GENERATOR "ZIP;NSIS")
+ ## Add a custom target callable from IDE (Mostly for Visual Studio)
+ GET_FILENAME_COMPONENT(CPACK_COMMAND ${CMAKE_COMMAND} PATH)
+ SET(CPACK_COMMAND ${CPACK_COMMAND}/cpack)
+ ADD_CUSTOM_TARGET(PACKAGE_SOURCE_ZIP
+ COMMAND ${CPACK_COMMAND} -G ZIP --config CPackSourceConfig.cmake
+ COMMENTS "Build a ZIP file containing the source")
+ # NSIS installer specific part
+ INCLUDE(InstallRequiredSystemLibraries)
+ELSE (WIN32)
+ SET(CPACK_GENERATOR "ZIP;TGZ")
+ENDIF(WIN32)
+SET(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION})
+SET(CPACK_PACKAGE_VERSION_MAJOR ${PACKAGE_VERSION_MAJOR})
+SET(CPACK_PACKAGE_VERSION_MINOR ${PACKAGE_VERSION_MINOR})
+SET(CPACK_PACKAGE_VERSION_PATCH ${PACKAGE_VERSION_PATCH})
+
+INCLUDE(CPack)
+
+ LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}")
+ FIND_PACKAGE(XPlane)
+
+ADD_SUBDIRECTORY(XPlane_PlugIn)
+ADD_SUBDIRECTORY(XPlane_Trace)
+
+INSTALL(FILES
+ XPlane_CERTI.fed
+ DESTINATION share/federations)
+
+MESSAGE(STATUS "*** ${CMAKE_PROJECT_NAME} has been successfully configured
***")
\ No newline at end of file
Index: COPYING
===================================================================
RCS file: COPYING
diff -N COPYING
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ COPYING 27 May 2008 14:05:49 -0000 1.1
@@ -0,0 +1,15 @@
+
+CERTI_TUTORIAL is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of
+the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program, in the file "gpl.txt"; if not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA
Index: FindXPlane.cmake
===================================================================
RCS file: FindXPlane.cmake
diff -N FindXPlane.cmake
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ FindXPlane.cmake 27 May 2008 14:05:49 -0000 1.1
@@ -0,0 +1,80 @@
+#########################################################################
+#Look for Xplane.exe
+#########################################################################
+FIND_PROGRAM(XPLANE_EXECUTABLE
+ NAMES XPlane.exe
+ PATHS "C:\\Program Files\\X-Plane 9.00 Beta-19" "D:\\mathe\\X-Plane
9.00 Beta-19"
+ PATH_SUFFIXES
+ DOC "XPlane Software")
+IF (XPLANE_EXECUTABLE)
+ IF (NOT XPLANE_FIND_QUIETLY)
+ MESSAGE_QUIETLY(XPLANE_FIND_QUIETLY STATUS "Looking for XPlane... -
XPlane is ${XPLANE_EXECUTABLE}")
+ ENDIF(NOT XPLANE_FIND_QUIETLY)
+ SET(XPLANE_EXECUTABLE_FOUND "YES")
+ GET_FILENAME_COMPONENT(XPLANE_BIN_DIRS ${XPLANE_EXECUTABLE} PATH)
+ELSE (XPLANE_EXECUTABLE)
+ SET(XPLANE_EXECUTABLE_FOUND "NO")
+ IF (NOT XPLANE_FIND_QUIETLY)
+ MESSAGE_QUIETLY(XPLANE_FIND_QUIETLY STATUS "Looking for XPlane... -
XPlane NOT FOUND")
+ ENDIF(NOT XPLANE_FIND_QUIETLY)
+ENDIF (XPLANE_EXECUTABLE)
+
+#########################################################################
+# Go to subdirs XPLANE_LIBRARY
+#########################################################################
+FIND_LIBRARY(XPLANE_XPLM_LIBRARY
+ NAMES XPLM
+ PATHS "D:\\mathe\\X-Plane PlugIn\\XPSDK200b1\\Libraries"
+ PATH_SUFFIXES lib
+ DOC "The XPLANE Library")
+
+FIND_LIBRARY(XPLANE_XPWidgets_LIBRARY
+ NAMES XPWidgets
+ PATHS "D:\\mathe\\X-Plane PlugIn\\XPSDK200b1\\Libraries"
+ PATH_SUFFIXES lib
+ DOC "The XPLANE Library")
+
+IF (XPLANE_XPLM_LIBRARY)
+ IF (NOT XPLANE_FIND_QUIETLY)
+ MESSAGE_QUIETLY(XPLANE_FIND_QUIETLY STATUS "Looking for XPlane library...
- found ${XPLANE_LIBRARY}")
+ ENDIF(NOT XPLANE_FIND_QUIETLY)
+ SET(XPLANE_FOUND "YES")
+ LIST(APPEND XPLANE_LIBRARIES ${XPLANE_XPLM_LIBRARY}
${XPLANE_XPWidgets_LIBRARY})
+ELSE (XPLANE_XPLM_LIBRARY)
+ SET(XPLANE_FOUND "NO")
+ IF (NOT XPLANE_FIND_QUIETLY)
+ MESSAGE_QUIETLY(XPLANE_FIND_QUIETLY STATUS "Looking for XPlane
library... - NOT FOUND")
+ ENDIF(NOT XPLANE_FIND_QUIETLY)
+ENDIF (XPLANE_XPLM_LIBRARY)
+
+IF (XPLANE_XPLM_LIBRARY)
+ GET_FILENAME_COMPONENT(XPLANE_LIBRARY_DIRS ${XPLANE_XPLM_LIBRARY} PATH)
+ENDIF (XPLANE_XPLM_LIBRARY)
+
+#########################################################################
+# Go to subdirs XPLANE_XPLM_INCLUDE
+#########################################################################
+FIND_FILE(XPLANE_XPLM_INCLUDE
+ NAMES XPLMPlugin.h
+ PATHS "D:\\mathe\\X-Plane PlugIn\\XPSDK200b1\\CHeaders\\XPLM"
+ PATH_SUFFIXES include
+ DOC "The XPLANE_XPLM Include Files")
+
+IF (XPLANE_XPLM_INCLUDE)
+ GET_FILENAME_COMPONENT(XPLANE_XPLM_INCLUDE_DIRS ${XPLANE_XPLM_INCLUDE} PATH)
+ INCLUDE_DIRECTORIES(${XPLANE_XPLM_INCLUDE_DIRS})
+ENDIF (XPLANE_XPLM_INCLUDE)
+
+#########################################################################
+# Go to subdirs XPLANE_XPW_INCLUDE
+#########################################################################
+FIND_FILE(XPLANE_XPW_INCLUDE
+ NAMES XPWidgets.h
+ PATHS "D:\\mathe\\X-Plane PlugIn\\XPSDK200b1\\CHeaders\\Widgets"
+ PATH_SUFFIXES include
+ DOC "The XPLANE_XPW Include Files")
+
+IF (XPLANE_XPW_INCLUDE)
+ GET_FILENAME_COMPONENT(XPLANE_XPW_INCLUDE_DIRS ${XPLANE_XPW_INCLUDE} PATH)
+ INCLUDE_DIRECTORIES(${XPLANE_XPW_INCLUDE_DIRS})
+ENDIF (XPLANE_XPW_INCLUDE)
Index: README.txt
===================================================================
RCS file: README.txt
diff -N README.txt
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ README.txt 27 May 2008 14:05:49 -0000 1.1
@@ -0,0 +1,55 @@
+Federation HLA - XPlane
+
+HLA (High Level Architecture) is a standard (IEE1516/HLA 1.3) for distributed
simulation.
+
+This plug-in should be usable with all HLA RTI even if it has only been
thoroughly
+tested with the CERTI Open Source RTI
https://savannah.nongnu.org/projects/certi/).
+
+For CERTI, you have to define the "CERTI_HOME" env var pointing the path to
CERTI install folder.
+
+The source tree has the following layout:
+
+X/Misc
Folder-------------------------------------------------------------------
+initCERTI.txt
+ {
+ XPlane
+ D:\DVP Cert\CertiSav\installed\share\federations\XPlane.fed
//where is FOM?
+ 192.000.000.001
//
+ }
+XPlane.fed (file HLA Federation Object Model : FOM)
+
+
+A/ XPlane_Plugin Folder: XPlane Federate
---------------------------------------
+ {
+ XP_Certi.h
+ XPlane_InitDll.cpp //Xplane interface
+ XPlane_RunDll.cpp
+ XP_Init.cpp //CERTI interface
+ XP_Run.cpp
+ CMakeLists.txt //for building "Federate XPlane"
+ }
+
+B/ XPlane_Trace Folder: Trace Federate
-----------------------------------------
+ {
+ XP_Trace.h
+ XP_Trace.cpp
+ XP_RTData.cpp
+ CMakeLists.txt //for building "Federate Trace "
+ }
+
+Run CMake.... (see www.cmake.org)
+Build XPlaneFederate.dll
+Build XplaneTrace.exe
+
+Move the file XPlaneFederate.dll into folder "XXXX/Resources/plugins"
+XPlaneFederate.dll must be renamed XPlaneFederate.xpl (normal XPlane extension)
+Copy file initCERTI.txt from /Misc to /XXXX
+!!! /XXXX is the XPlane root folder !!!
+
+Copy file initCERTI.txt from /Misc to /YYYY
+!!! /YYYY is the Trace build folder !!!
+
+//-------------------------------------------------------------------------------
+Have a look at https://savannah.nongnu.org/projects/certi/
+//-------------------------------------------------------------------------------
+
Index: XPlane_DESCRIPTION.txt
===================================================================
RCS file: XPlane_DESCRIPTION.txt
diff -N XPlane_DESCRIPTION.txt
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ XPlane_DESCRIPTION.txt 27 May 2008 14:05:49 -0000 1.1
@@ -0,0 +1,18 @@
+// $Id: XPlane_DESCRIPTION.txt,v 1.1 2008/05/27 14:05:49 erk Exp $
+This is a "XPlane" Federation using CERTI
(http://savannah.nongnu.org/projects/certi)
+
+ INSTRUCTIONS FOR UNIX like system.
+ =================================
+
+1. HOW TO USE THESE INSTRUCTIONS
+================================
+
+2. CERTI VERIFICATION.
+======================
+
+3. BUILDING TUTORIAL
+====================
+4. RUNNING TUTORIAL
+===================
+
+Use without moderation....and don't forget to stop rtig before going home.
Index: Misc/XPlane.fed
===================================================================
RCS file: Misc/XPlane.fed
diff -N Misc/XPlane.fed
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Misc/XPlane.fed 27 May 2008 14:05:49 -0000 1.1
@@ -0,0 +1,29 @@
+(FED
+(Federation X_Plane_CERTI)
+(FEDversion v1.3)
+ (spaces
+ )
+ (objects
+ (class ObjectRoot
+ (attribute privilegeToDelete reliable timestamp)
+ (class RTIprivate)
+
+ (class Aircraft
+
+ (attribute Aircraft_Type reliable timestamp) ;; type aeronef
+
+;; Federate : local X,Y,Z,phi,theta,psi
+
+ (attribute Att_Lat reliable timestamp)
+ (attribute Att_Lon reliable timestamp)
+ (attribute Att_Hte reliable timestamp)
+ (attribute Att_Phi reliable timestamp)
+ (attribute Att_The reliable timestamp)
+ (attribute Att_Psi reliable timestamp)
+
+ )
+ )
+)
+ (interactions
+ )
+)
Index: Misc/initCERTI.txt
===================================================================
RCS file: Misc/initCERTI.txt
diff -N Misc/initCERTI.txt
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Misc/initCERTI.txt 27 May 2008 14:05:49 -0000 1.1
@@ -0,0 +1,3 @@
+XPlane
+D:\DVP Cert\CertiSav\installed\share\federations\XPlane.fed
+192.000.000.001
\ No newline at end of file
Index: XPlane_PlugIn/CMakeLists.txt
===================================================================
RCS file: XPlane_PlugIn/CMakeLists.txt
diff -N XPlane_PlugIn/CMakeLists.txt
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ XPlane_PlugIn/CMakeLists.txt 27 May 2008 14:05:49 -0000 1.1
@@ -0,0 +1,22 @@
+IF(WIN32)
+ADD_DEFINITIONS(-DIBM=1 -DAPL=0)
+ENDIF(WIN32)
+
+###################################
+# Setup XPlane PlugIn Federate
+# the executable name
+# the source list
+###################################
+SET(EXE_NAME XPlaneFederate)
+SET(SRC_LIST XPlane_InitDll.cpp XPlane_RunDll.cpp XP_Init.cpp XP_Run.cpp
XP_Certi.h)
+
+###################################
+# Generic CMake executable target
+###################################
+ADD_LIBRARY(${EXE_NAME} ${SRC_LIST})
+TARGET_LINK_LIBRARIES (${EXE_NAME}
+ ${CERTI_LIBRARIES}
+ ${XPLANE_LIBRARIES} )
+INSTALL(TARGETS ${EXE_NAME}
+ RUNTIME DESTINATION bin
+ ARCHIVE DESTINATION lib)
\ No newline at end of file
Index: XPlane_PlugIn/XP_Certi.h
===================================================================
RCS file: XPlane_PlugIn/XP_Certi.h
diff -N XPlane_PlugIn/XP_Certi.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ XPlane_PlugIn/XP_Certi.h 27 May 2008 14:05:49 -0000 1.1
@@ -0,0 +1,62 @@
+#ifndef XP_CERTI_H
+#define XP_CERTI_H
+
+#define NBDATA 6
//TODO : Number of parameters
+//enum { leX,leY,leZ,Phi,The,Psi} dataPlane;
+
+#include <RTI.hh>
+#include <fedtime.hh>
+#include <NullFederateAmbassador.hh>
+
+#define NB_IP 25
//IP Size
+#define NBCAR 300
//Federation, Federate : name[NBCAR]
+
+//-----------------------------------------------------------------------------XPluginStart
+
+extern "C"
+{
+int createFedere();
+void destroyFederate();
+void upDateValues(float *fData, short nbE);
+}
+
+//=============================================================================CLASS
Federe
+class Federe : public RTI::RTIambassador, public NullFederateAmbassador
+{
+public:
+ Federe() throw (RTI::RTIinternalError) { pass= false;}
+ ~Federe() throw (RTI::FederateInternalError) {}
+ void destroyFederation();
+
+ bool pass;
//for xyz initial values
+ RTI::ObjectClassHandle IDClass;
+ RTI::ObjectHandle HObject;
+
+ static const int nbData= NBDATA;
+ RTI::AttributeHandle ID_Att[nbData];
+
+ char readFileInit ();
//Description file
+ bool createFederation ();
//Create Fedération
+ bool joinFederation ();
//Join fédération
+ void registreObjAndpublishVal();
//Registre Object and Value
+
+ void setFederateName(char *nameGen,short id)
+
{ sprintf(federateName,"%s%03hx",nameGen,id);}
+
+ char* getFederationDesc() { return(federationDesc);}
+ char* getFederationName() { return(federationName);}
+ char* getFederateName() { return(federateName);}
+
+ void setMemData(float val, short id) { data[id]= val;}
+ float getMemData(short id) { return(data[id]);}
+
+protected:
+ float data[nbData];
//Xplane Datas
+
+ char federationDesc[NBCAR+1] ;
+ char federationName[NBCAR+1];
+ char federateName[NBCAR+1];
+ char IP_RTIg[NB_IP];
+};
+
+#endif
\ No newline at end of file
Index: XPlane_PlugIn/XP_Init.cpp
===================================================================
RCS file: XPlane_PlugIn/XP_Init.cpp
diff -N XPlane_PlugIn/XP_Init.cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ XPlane_PlugIn/XP_Init.cpp 27 May 2008 14:05:49 -0000 1.1
@@ -0,0 +1,190 @@
+#include <iostream>
+#include <memory>
+#include <string>
+
+#include "XP_Certi.h"
+
+using std::string;
+using std::auto_ptr;
+
+FILE *fLog; //Log File
+Federe *FedereXPlane ; //Ambassador
+
+//=============================================================================MAIN
+int createFedere()
+{//Load during the first call from XPlane
+int i;
+int nbcar= NBCAR;
+
+fLog= fopen("FedXPlane.txt","wt");
+
+try
+ {//Ambassador creation (and then rtia will begin)
+ FedereXPlane= new Federe();
+ }
+
+catch ( RTI::Exception &e)
+ {
+ fprintf(fLog,"!!Error : Can't create Ambassador %s\n",e._reason) ;
+ exit(-1);
+ }
+fprintf(fLog,"Ambassador have been created, so rtia is running\n");
fflush(fLog);
+
+try{
+//=============================================================================Read
Descriptor
+if (FedereXPlane->readFileInit())
+ {//Read configFile : federation name, fed file, IP RTIg
+ fprintf(fLog,"Error : File initCERTI.txt \n"); fflush(fLog);
+ exit(-1);
+ }
+
+//=============================================================================Creating
Federation
+fprintf(fLog,"About creating federation execution\n"); fflush(fLog);
+
+bool is_created= FedereXPlane->createFederation();
+if (is_created ) fprintf(fLog,"Creation of federation execution right.
%s\n", FedereXPlane->getFederationName());
+else fprintf(fLog,"Creation of federation
execution failed. %s\n", FedereXPlane->getFederationName());
+fflush(fLog);
+
+//=============================================================================Creating
Federation
+bool is_joined= false ;
+short cpt= 0; do
+ {
+ FedereXPlane->setFederateName("XPlane",cpt);
//Federate Name = XPlaneXXX
+ is_joined= FedereXPlane->joinFederation();
+ if (is_joined)
+ fprintf(fLog,"Federate %s has joined federation
%s\n",FedereXPlane->getFederateName(),FedereXPlane->getFederationName());
+ else if (cpt > 0x0FFF)
+ {//Federate no admit -> Exit
+ fprintf(fLog,"!!Error : Creation of federate failed.\n");
+ return(1);
+ }
+ cpt++;
+ } while (is_joined == false);
+ fflush(fLog);
+
+//=============================================================================Publish
Objet/Attributs
+FedereXPlane->registreObjAndpublishVal();
+return(0);
+}
+
+catch ( RTI::Exception &e)
+ {
+ fprintf(fLog,"!!Error : Can't launch Federate : %s\n",e._reason) ;
+ exit(-1);
+} }
+//-----------------------------------------------------------------------------MAIN
+
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Read
Descriptor
+char Federe::readFileInit()
+{
+FILE *theFile= fopen("initCERTI.txt","r"); if (theFile == NULL) return(1);
+
+fscanf(theFile,"%s\n",federationName); //Federation name :-)
+fgets(federationDesc,259,theFile); //Fedfile
(\installed\share\federations\xxxxx.fed)
+fscanf(theFile,"%s\n",IP_RTIg); //Server RTIG IP address
+
+short lng= strlen(federationDesc) - 1; //Delete "line feed" if exists
+if (federationDesc[lng] == 10) federationDesc[lng]= 0;
+return(0);
+}
+
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Create
Federation
+bool Federe::createFederation()
+// Create a federation execution name giving :
+// federationName : federation execution name
+// federationDesc : file Federation descriptor
+// Return : true if federation execution created
+// false if creation failed
+// Note 5 exceptions may raise :
+//
CouldNotOpenFED,RTIinternalError,ConcurrentAccessAttempted,ErrorReadingFED,FederationExecutionAlreadyExists
+{
+bool is_created= false ;
+
+ try {
+ FedereXPlane->createFederationExecution(federationName,federationDesc);
+ std::cout << "federation "<<federationName <<" created."<<std::endl;
+ is_created= true ;
+ }
+catch (RTI::Exception &e)
+ {
+ fprintf(fLog,"!!Error : %s ",e._name);
+
+ if (strcmp(e._name,"CouldNotOpenFED")==0 ||
strcmp(e._name,"ErrorReadingFED")==0)
+ {
+ fprintf(fLog,"!!Error : file %s :
%s\n",Federe::federationDesc,e._reason);
+ }
+ else if (strcmp(e._name,"FederationExecutionAlreadyExists")==0)
+ {
+ fprintf(fLog,"!!Error : Federation : %s\n",e._reason);
+ }
+ else
+ fprintf(fLog,"!!Error : %s\n",e._reason);
+ fflush(fLog);
+ }
+
+return is_created ;
+}
+
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Join
Federation
+bool Federe::joinFederation()
+// Create a federation execution name giving :
+// federationName : federation execution name
+// fileName : FED file name
+// Return : true if federation execution created
+// false if creation failed
+// Note 5 exceptions may raise : CouldNotOpenFED,RTIinternalError,
+// ConcurrentAccessAttempted,ErrorReadingFED,FederationExecutionAlreadyExists
+{
+bool success= false ;
+
+ try {
+
FedereXPlane->joinFederationExecution(federateName,federationName,FedereXPlane);
+ fprintf(fLog,"Federation joined\n");
+ }
+catch (RTI::Exception &e)
+ {
+ fprintf(fLog,"!!Error : %s ",e._name);
+ return false ;
+ }
+
+fflush(fLog);
+return true;
+}
+
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Destroy
Federate
+void destroyFederate()
+{//RESIGNING FEDERATION EXECUTION
+FedereXPlane->deleteObjectInstance(FedereXPlane->HObject,FedereXPlane->getFederateName());
+FedereXPlane->resignFederationExecution(RTI::DELETE_OBJECTS_AND_RELEASE_ATTRIBUTES);
+fprintf(fLog,"Destroy Federate. \n"); fflush(fLog);
+}
+
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Destroy
Federation
+void Federe::destroyFederation()
+{
+try
+{
+FedereXPlane->destroyFederationExecution(federationName);
+fprintf(fLog,"Federation has been destroyed.\n");
+}
+
+catch (RTI::FederatesCurrentlyJoined)
+ {
+ fprintf(fLog,"!!Error (Destroy): federates currently joined\n");
+ }
+catch (RTI::FederationExecutionDoesNotExist)
+ {
+ fprintf(fLog,"!!Error (Destroy): federation does not exist (maybe has
been yet destroyed)\n");
+ }
+catch (RTI::ConcurrentAccessAttempted)
+ {
+ fprintf(fLog,"!!Error (Destroy): Concurrent Access Attempted\n");
+ }
+catch (RTI::RTIinternalError)
+ {
+ fprintf(fLog,"!!Error (Destroy): RTI internal error\n");
+ }
+
+fflush(fLog);
+}
\ No newline at end of file
Index: XPlane_PlugIn/XP_Run.cpp
===================================================================
RCS file: XPlane_PlugIn/XP_Run.cpp
diff -N XPlane_PlugIn/XP_Run.cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ XPlane_PlugIn/XP_Run.cpp 27 May 2008 14:05:49 -0000 1.1
@@ -0,0 +1,69 @@
+#include <iostream>
+#include <memory>
+#include <string>
+
+#include "XP_Certi.h"
+
+using std::string;
+using std::auto_ptr;
+
+extern FILE *fLog;
//Log File
+extern Federe *FedereXPlane ;
//Ambassador
+extern enum { leX,leY,leZ,Phi,The,Psi} dataPlane;
//TODO : datas
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Publish
Values
+void Federe::registreObjAndpublishVal()
+{
+try
+{
+auto_ptr<RTI::AttributeHandleSet>
attributes(RTI::AttributeHandleSetFactory::create(nbData));
+
+IDClass= getObjectClassHandle("Aircraft");
+
+ID_Att[leX]= getAttributeHandle("Att_Lat",IDClass);
attributes->add(ID_Att[leX]); //TODO : datas
+ID_Att[leY]= getAttributeHandle("Att_Lon",IDClass);
attributes->add(ID_Att[leY]);
+ID_Att[leZ]= getAttributeHandle("Att_Hte",IDClass);
attributes->add(ID_Att[leZ]);
+ID_Att[Phi]= getAttributeHandle("Att_Phi",IDClass);
attributes->add(ID_Att[Phi]);
+ID_Att[The]= getAttributeHandle("Att_The",IDClass);
attributes->add(ID_Att[The]);
+ID_Att[Psi]= getAttributeHandle("Att_Psi",IDClass);
attributes->add(ID_Att[Psi]);
+
+fprintf(fLog,"Publish attributes of class %d ",IDClass); fflush(fLog);
+publishObjectClass(IDClass, *attributes);
+
+fprintf(fLog,"Register object %s ",federationName); fflush(fLog);
+HObject= registerObjectInstance(IDClass,federationName);
+fprintf(fLog,"Made\n"); fflush(fLog);
+}
+
+catch ( RTI::Exception &e)
+ {
+ fprintf(fLog,"!!Error : Publish Value : %s\n",e._reason) ;
+ exit(-1);
+} }
+
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Update
Values
+void upDateValues(float *fData, short nbE)
+{
+RTI::AttributeHandleValuePairSet *attributeSet=
RTI::AttributeSetFactory::create(nbE);
+
+if (FedereXPlane->pass == false)
+ {//Save datas on the first call
+ FedereXPlane->pass= true;
+
+ FedereXPlane->setMemData(fData[leX],leX);
+ FedereXPlane->setMemData(fData[leY],leY);
+ FedereXPlane->setMemData(fData[leZ],leZ);
+
+ fData[0]= fData[1]= fData[2]= 0.0f;
+ }
+else
+ {//Adjust Value of xyz
+ fData[leX]-= FedereXPlane->getMemData(leX);
+ fData[leY]-= FedereXPlane->getMemData(leY);
+ fData[leZ]-= FedereXPlane->getMemData(leZ);
+ }
+
+for (short i= leX; i < nbE; i++)
+ attributeSet->add(FedereXPlane->ID_Att[i],
(char*)&fData[i],sizeof(fData[i]));
+
+FedereXPlane->updateAttributeValues(FedereXPlane->HObject,*attributeSet,FedereXPlane->getFederateName());
+}
\ No newline at end of file
Index: XPlane_PlugIn/XPlane_InitDll.cpp
===================================================================
RCS file: XPlane_PlugIn/XPlane_InitDll.cpp
diff -N XPlane_PlugIn/XPlane_InitDll.cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ XPlane_PlugIn/XPlane_InitDll.cpp 27 May 2008 14:05:49 -0000 1.1
@@ -0,0 +1,19 @@
+#include <windows.h>
+//#include <stdio.h>
+
+BOOL APIENTRY DllMain( HANDLE hModule,
+ DWORD ul_reason_for_call,
+ LPVOID lpReserved
+ )
+{
+switch (ul_reason_for_call)
+ {
+ case DLL_PROCESS_ATTACH:
+ case DLL_THREAD_ATTACH:
+ case DLL_THREAD_DETACH:
+ case DLL_PROCESS_DETACH: break;
+ }
+return TRUE;
+}
+
+
Index: XPlane_PlugIn/XPlane_RunDll.cpp
===================================================================
RCS file: XPlane_PlugIn/XPlane_RunDll.cpp
diff -N XPlane_PlugIn/XPlane_RunDll.cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ XPlane_PlugIn/XPlane_RunDll.cpp 27 May 2008 14:05:50 -0000 1.1
@@ -0,0 +1,76 @@
+#include "XPLMProcessing.h"
+#include "XPLMDataAccess.h"
+#include "XPLMUtilities.h"
+#include "XP_Certi.h"
+
+#define NBDATA 6
+XPLMDataRef hPlane[NBDATA];
+
+float getPlaneDatas(float, float, int, void*);
+enum { leX,leY,leZ,Phi,The,Psi} dataPlane;
//TODO : datas
+
+//-----------------------------------------------------------------------------XPluginStart
+PLUGIN_API int XPluginStart(char* outName, char* outSig, char* outDesc)
+{
+createFedere();
+
+strcpy(outName,"HLA");
+strcpy(outSig, "HLA-CERTI");
+strcpy(outDesc,"CERTI PlugIn");
+
+hPlane[leX]= XPLMFindDataRef("sim/flightmodel/position/local_x");
//TODO : XPlane Parameters
+hPlane[leY]= XPLMFindDataRef("sim/flightmodel/position/local_y");
+hPlane[leZ]= XPLMFindDataRef("sim/flightmodel/position/local_z");
+
+hPlane[Phi]= XPLMFindDataRef("sim/flightmodel/position/phi");
+hPlane[The]= XPLMFindDataRef("sim/flightmodel/position/theta");
+hPlane[Psi]= XPLMFindDataRef("sim/flightmodel/position/psi");
+
+XPLMRegisterFlightLoopCallback( getPlaneDatas, //Callback
+
1.0, //Interval
+
NULL); //Refcon not used
+return 1;
+}
+
+//-----------------------------------------------------------------------------XPluginStop
+PLUGIN_API void XPluginStop(void)
+{
+destroyFederate();
+XPLMUnregisterFlightLoopCallback(getPlaneDatas, NULL);
+}
+
+//-----------------------------------------------------------------------------XPluginDisable
+PLUGIN_API void XPluginDisable(void)
+{
+}
+
+//-----------------------------------------------------------------------------XPluginEnable
+PLUGIN_API int XPluginEnable(void)
+{
+return 1;
+}
+
+//-----------------------------------------------------------------------------XPluginReceive
+PLUGIN_API void XPluginReceiveMessage(XPLMPluginID inFromWho, long
inMessage, void *inParam)
+{
+}
+
+
+//-----------------------------------------------------------------------------getPlaneDatas
+float getPlaneDatas( float inElapsedSinceLastCall,
+ float
inElapsedTimeSinceLastFlightLoop,
+ int inCounter,
+ void* inRefcon)
+{
+float fData[NBDATA], elapsed = XPLMGetElapsedTime(); //read the
sim's time and the data
+
+fData[leX]= XPLMGetDataf(hPlane[0]);
//TODO : XPlane
Parameters
+fData[leY]= XPLMGetDataf(hPlane[1]);
+fData[leZ]= XPLMGetDataf(hPlane[2]);
+fData[Phi]= XPLMGetDataf(hPlane[3]);
+fData[The]= XPLMGetDataf(hPlane[4]);
+fData[Psi]= XPLMGetDataf(hPlane[5]);
+
+upDateValues(fData,NBDATA);
+return 1.0;
//Return 1.0 to
indicate that we want to be called again in 1 second
+}
\ No newline at end of file
Index: XPlane_Trace/CMakeLists.txt
===================================================================
RCS file: XPlane_Trace/CMakeLists.txt
diff -N XPlane_Trace/CMakeLists.txt
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ XPlane_Trace/CMakeLists.txt 27 May 2008 14:05:50 -0000 1.1
@@ -0,0 +1,14 @@
+###################################
+# Setup XPlane Trace
+# the executable name
+# the source list
+###################################
+SET(EXE_NAME XPlaneTrace)
+SET(SRC_LIST XP_Trace.cpp XP_RTData.cpp XP_Trace.h)
+
+###################################
+# Generic CMake executable target
+###################################
+ADD_EXECUTABLE(${EXE_NAME} ${SRC_LIST})
+TARGET_LINK_LIBRARIES (${EXE_NAME} ${CERTI_LIBRARIES})
+INSTALL(TARGETS ${EXE_NAME} RUNTIME DESTINATION bin)
\ No newline at end of file
Index: XPlane_Trace/XP_RTData.cpp
===================================================================
RCS file: XPlane_Trace/XP_RTData.cpp
diff -N XPlane_Trace/XP_RTData.cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ XPlane_Trace/XP_RTData.cpp 27 May 2008 14:05:50 -0000 1.1
@@ -0,0 +1,44 @@
+#include <iostream>
+#include <memory>
+#include <string>
+
+#include "XP_Trace.h"
+
+using std::string;
+using std::auto_ptr;
+
+#define FHFREE -1
+extern FILE *fLog;
//Log File Federate
+extern Federe *FedereViewer;
//Ambassador
+
+extern enum { leX,leZ,leY, Phi,The,Psi} XPLane;
+
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++REFELECT
ATTRIBUTE VALUE
+void Federe::reflectAttributeValues(RTI::ObjectHandle
oHandle,
//Instance
+
const RTI::AttributeHandleValuePairSet& theAttributes,
//Attributs list
+
const char
*theTag) //Tag
Name Federate
+ throw
(RTI::ObjectNotKnown, RTI::AttributeNotKnown, RTI::FederateInternalError)
+{
+float value[NBDATA];
+RTI::ULong valueLength;
+
+for (long idT= 0; idT < 6; idT++)
+ {
+ long idH;
+ int leH= theAttributes.getHandle(idT);
+
+ if (leH == ID_Att[leX]) idH= leX;
+ else if (leH == ID_Att[leY]) idH= leZ;
+ else if (leH == ID_Att[leZ]) idH= leY;
+ else if (leH == ID_Att[Phi]) idH= Phi;
+ else if (leH == ID_Att[The]) idH= The;
+ else if (leH == ID_Att[Psi]) idH= Psi;
+
+ theAttributes.getValue(idT, (char*)&value[idH], valueLength);
+
+ printf("V%02d %10.3f ", idH,value[idH]);
+ }
+
+printf("\n");
+}
+
Index: XPlane_Trace/XP_Trace.cpp
===================================================================
RCS file: XPlane_Trace/XP_Trace.cpp
diff -N XPlane_Trace/XP_Trace.cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ XPlane_Trace/XP_Trace.cpp 27 May 2008 14:05:50 -0000 1.1
@@ -0,0 +1,217 @@
+#include <iostream>
+#include <memory>
+#include <string>
+
+#include "XP_Trace.h"
+
+using std::string;
+using std::auto_ptr;
+
+#define FHFREE -1
+FILE *fLog; //Log File Federate
+Federe *FedereViewer ; //Ambassador
+
+enum { leX,leZ,leY, Phi,The,Psi} XPLane;
+//=============================================================================MAIN
+int main(int argc, char **argv)
+{
+int i;
+int nbcar= NBCAR;
+
+fLog= fopen("FedXPlane.txt","wt");
+
+try
+ {//Ambassador creation (and then rtia will begin)
+ FedereViewer= new Federe();
+ }
+catch ( RTI::Exception &e)
+ {
+ fprintf(fLog,"!!Error : Can't create ambassador so : %s\n",e._reason);
fflush(fLog);
+ return(false);
+ }
+fprintf(fLog,"Ambassador have been created : RTIa is running\n"); fflush(fLog);
+
+try{
+//=============================================================================Read
Descriptor
+if (FedereViewer->readFileInit())
+ {//Read configFile : federation name, fed file, IP RTIg
+ fprintf(fLog,"!!Error : File initCERTI.txt \n"); fflush(fLog);
+ return(false);
+ }
+
+//=============================================================================CREATING
FEDERATION
+bool is_created= FedereViewer->createFederation();
+if (is_created ) fprintf(fLog,"Creating Federation right. %s\n",
FedereViewer->getFederationName());
+else fprintf(fLog,"Creating Federation
failed. %s\n",FedereViewer->getFederationName());
+fflush(fLog);
+
+//=============================================================================JOINING
FEDERATION
+FedereViewer->setFederateName("XViewer");
//Federate Name = XViewer
+if (!FedereViewer->joinFederation())
+ {//Federate no admit -> Exit
+ fprintf(fLog,"Creation of federateName failed.\n"); fflush(fLog);
+ return(false);
+ }
+
+fprintf(fLog,"Federate %s has joined federation
%s\n",FedereViewer->getFederateName(),FedereViewer->getFederationName());
+fflush(fLog);
+
+//=============================================================================SUBSCRIBE
ATTRIBUTES
+FedereViewer->subscribeAttVal();
+
+while (1)
+ {
+ Sleep(900);
+ FedereViewer->tick();
+ }
+
+FedereViewer->destroyFederate();
+}
+
+catch ( RTI::Exception &e)
+ {
+ fprintf(fLog,"!!Error : %s\n",e._reason); fflush(fLog);
+ return(false);
+ }
+}
+
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++READ
DESCRIPTOR
+char Federe::readFileInit()
+{
+FILE *theFile= fopen("initCERTI.txt","r"); if (theFile == NULL) return(1);
+
+fscanf(theFile,"%s\n",federationName); //Federation name :-)
+fgets(federationDesc,259,theFile); //Fedfile
(\installed\share\federations\xxxxx.fed)
+fscanf(theFile,"%s\n",IP_RTIg); //Server RTIG
IP address
+
+short lng= strlen(federationDesc) - 1; //Delete "line feed" if
exists
+if (federationDesc[lng] == 10) federationDesc[lng]= 0;
+return(0);
+}
+
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++CREATE
FEDERATION
+bool Federe::createFederation()
+// Create a federation execution name giving :
+// federationName : federation execution name
+// federationDesc : file Federation descriptor
+// Return : true if federation execution created
+// false if creation failed
+// Note 5 exceptions may raise :
+//
CouldNotOpenFED,RTIinternalError,ConcurrentAccessAttempted,ErrorReadingFED,FederationExecutionAlreadyExists
+{
+bool is_created= false ;
+
+try
+ {
+ FedereViewer->createFederationExecution(federationName,federationDesc);
+ std::cout << "federation "<<federationName <<" created."<<std::endl;
+ is_created= true ;
+ }
+
+catch (RTI::Exception &e)
+ {
+ fprintf(fLog,"!!Error : %s ",e._name);
+
+ if (strcmp(e._name,"CouldNotOpenFED")==0 ||
strcmp(e._name,"ErrorReadingFED")==0)
+ {
+ fprintf(fLog,"!!Error : file %s :
%s\n",Federe::federationDesc,e._reason);
+ }
+ else if (strcmp(e._name,"FederationExecutionAlreadyExists")==0)
+ {
+ fprintf(fLog,"!!Error : Federation : %s\n",e._reason);
+ }
+ else
+ fprintf(fLog,"!!Error : %s\n",e._reason);
+ fflush(fLog);
+ }
+
+fflush(fLog);
+return is_created ;
+}
+
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JOIN
FEDERATION
+bool Federe::joinFederation()
+// Create a federation execution name giving :
+// federationName : federation execution name
+// fileName : FED file name
+// Return : true if federation execution created
+// false if creation failed
+// Note 5 exceptions may raise : CouldNotOpenFED,RTIinternalError,
+// ConcurrentAccessAttempted,ErrorReadingFED,FederationExecutionAlreadyExists
+{
+try
+ {
+
FedereViewer->joinFederationExecution(federateName,federationName,FedereViewer);
+ fprintf(fLog,"Federation joined\n"); fflush(fLog);
+ }
+catch (RTI::Exception &e)
+ {
+ fprintf(fLog,"!!Error : %s ",e._name); fflush(fLog);
+ return false ;
+ }
+
+return true;
+}
+
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++SUBSCRIBE
ATTRIBUTE VALUES
+void Federe::subscribeAttVal()
+{
+try
+{
+auto_ptr<RTI::AttributeHandleSet>
attributes(RTI::AttributeHandleSetFactory::create(NBDATA));
+
+IDClass= getObjectClassHandle("Aircraft");
+ID_Att[leX]= getAttributeHandle("Att_Lat",IDClass);
attributes->add(ID_Att[leX]);
+ID_Att[leY]= getAttributeHandle("Att_Lon",IDClass);
attributes->add(ID_Att[leY]);
+ID_Att[leZ]= getAttributeHandle("Att_Hte",IDClass);
attributes->add(ID_Att[leZ]);
+
+ID_Att[Phi]= getAttributeHandle("Att_Phi",IDClass);
attributes->add(ID_Att[Phi]);
+ID_Att[The]= getAttributeHandle("Att_The",IDClass);
attributes->add(ID_Att[The]);
+ID_Att[Psi]= getAttributeHandle("Att_Psi",IDClass);
attributes->add(ID_Att[Psi]);
+
+fprintf(fLog,"Subscribe attributes of class %d : %d,%d,%d <>
%d,%d,%d",IDClass,ID_Att[leX],ID_Att[leY],ID_Att[leZ],
+
ID_Att[Phi],ID_Att[The],ID_Att[Psi]); fflush(fLog);
+subscribeObjectClassAttributes(IDClass, *attributes, RTI::RTI_TRUE);
+}
+
+catch (RTI::Exception &e)
+ {
+ fprintf(fLog,"!!Error : %s ",e._name); fflush(fLog);
+} }
+
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++DESTROY
FEDERATE
+void Federe::destroyFederate()
+{//RESIGNING FEDERATION EXECUTION
+
+FedereViewer->resignFederationExecution(RTI::DELETE_OBJECTS_AND_RELEASE_ATTRIBUTES);
+fprintf(fLog,"Destroy Federate. \n"); fflush(fLog);
+}
+
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++DESTROY
FEDERATION
+void Federe::destroyFederation()
+{
+try
+{
+FedereViewer->destroyFederationExecution(getFederationName());
+fprintf(fLog,"Federation has been destroyed.\n");
+}
+
+catch (RTI::FederatesCurrentlyJoined)
+ {
+ fprintf(fLog,"!!Error (Destroy): federates currently joined\n");
+ }
+catch (RTI::FederationExecutionDoesNotExist)
+ {
+ fprintf(fLog,"!!Error (Destroy): federation does not exist (maybe has
been yet destroyed)\n");
+ }
+catch (RTI::ConcurrentAccessAttempted)
+ {
+ fprintf(fLog,"!!Error (Destroy): Concurrent Access Attempted\n");
+ }
+catch (RTI::RTIinternalError)
+ {
+ fprintf(fLog,"!!Error (Destroy): RTI internal error\n");
+ }
+
+fflush(fLog);
+}
\ No newline at end of file
Index: XPlane_Trace/XP_Trace.h
===================================================================
RCS file: XPlane_Trace/XP_Trace.h
diff -N XPlane_Trace/XP_Trace.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ XPlane_Trace/XP_Trace.h 27 May 2008 14:05:50 -0000 1.1
@@ -0,0 +1,55 @@
+#ifndef XP_CERTI_H
+#define XP_CERTI_H
+
+#define NBDATA 6
+
+#include <RTI.hh>
+#include <fedtime.hh>
+#include <NullFederateAmbassador.hh>
+
+#define NB_IP 25
+#define NBCAR 300
+
+//enum { leX,leY,leZ,Phi,The,Psi} dataPlane;
+
+//-----------------------------------------------------------------------------XPluginStart
+
+//=============================================================================CLASS
Federe
+class Federe : public RTI::RTIambassador, public NullFederateAmbassador
+{
+public:
+ Federe() throw (RTI::RTIinternalError) {}
+ ~Federe() throw (RTI::FederateInternalError) {}
+
+ void destroyFederation ();
+ void destroyFederate (); //
+
+ RTI::ObjectClassHandle IDClass;
+ RTI::ObjectHandle HObject;
+ RTI::AttributeHandle ID_Att[NBDATA];
+
+ char readFileInit ();
//Description file
+ bool createFederation ();
//Create Fedération
+ bool joinFederation (); //Join
fédération
+ void subscribeAttVal (); //Subscribe
Attributes Value
+
+ void reflectAttributeValues(RTI::ObjectHandle
theObject,
+
const RTI::AttributeHandleValuePairSet& theAttributes,
+
const char
*theTag);
+
+ void setFederateName(char *nameGen) {
strcpy(federateName,nameGen);}
+
+ char* getFederationDesc() {
return(federationDesc);}
+ char* getFederationName() {
return(federationName);}
+ char* getFederateName()
{ return(federateName);}
+
+private:
+//=============================================================================CALLBACKS
+
+protected:
+ char federationDesc[NBCAR+1] ;
+ char federationName[NBCAR+1];
+ char federateName[NBCAR+1];
+ char IP_RTIg[NB_IP];
+};
+#endif
\ No newline at end of file
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [certi-cvs] applications/XPlaneHLAPlugin CMakeLists.txt COP...,
certi-cvs <=