certi-cvs
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]