This is a simple program that prints all received HLA Interactions and all HLA Object updates.
#if DtHLA
#include "stealthControlRegister.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>
int keybrdTick( void );
std::string clearScreen("");
const std::string theSeperator("************************************************************\n");
#if !DtHLA_1516
std::map<RTI::ObjectHandle, DtDdmFederateAmbassador::DtRegionInfo> myRegionInfo;
#else
std::map<RTI::ObjectInstanceHandle, DtDdmFederateAmbassador::DtRegionInfo> myRegionInfo;
#endif
RTI::DimensionHandle myXHandle;
RTI::DimensionHandle myYHandle;
#if VXWORKS
#define main realMain
#endif
int main( int argc, char* argv[] )
{
DtCmdLine::ValueArg<int> rprFomRevision(
"",
"rprFomRevision",
"Internal revision of the implementation of the RPR FOM version",
false, 1,
"int",cmd);
#if DtHLA_1516_EVOLVED
#endif
cmd.add(raw);
cmd.add(clearScreenSwitch);
cmd.add(fullReport);
cmd.add(ddmDump);
cmd.add(showRegionData);
cmd.add(subWithDdm);
cmd.parse(argc, argv);
if (clearScreenSwitch)
{
clearScreen = "\033[H\033[2J";
}
if (ddmDump || showRegionData)
{
}
if ( !fomMapperLib.getValue().isEmpty() )
{
if ( fomMapperInitData.getValue().isEmpty() )
{
#if DtHLA_1516_EVOLVED
fedFileName.getValue().c_str(),
fomMapperLib.getValue().c_str(), (void*)0,
"", fomModuleNames.getValue(), &status );
#else
fedType.
c_str(), fomMapperLib.getValue().c_str(),
fedFileName.getValue().c_str(), (void*)0, &status );
#endif
}
else
{
#if DtHLA_1516_EVOLVED
fedFileName.getValue().c_str(),
fomMapperLib.getValue().c_str(),
(void*)fomMapperInitData.getValue().c_str(),
"", fomModuleNames.getValue(), &status );
#else
fedType.
c_str(), fomMapperLib.getValue().c_str(),
fedFileName.getValue().c_str(),
(void*)fomMapperInitData.getValue().c_str(), &status );
#endif
}
{
return 1;
}
}
else
{
#if DtHLA_1516_EVOLVED
"", fedType.
c_str(), fedFileName.getValue(),
mapper, "", fomModuleNames.getValue(),
&status );
#else
fedType.
c_str(), mapper, fedFileName.getValue().c_str(), &status );
#endif
{
return 1;
}
{
DtStealthControlRegister(exConn);
}
}
if(passiveSubs)
{
}
if (subWithDdm)
{
try
{
geodOrigin.getGeocentric(geocentricPoint);
geodRegion->setRegionBounds(geocentricPoint, regionSize.getValue(),
regionSize.getValue());
region = geodRegion;
regionSet->insert(region);
}
catch (RTI::Exception& except)
{
std::cout << "Caught exception creating region: " << except << std::endl;
std::cout << "Exiting..." << std::endl;
return -1;
}
{
std::cout << "Caught exception creating region: " << except << std::endl;
std::cout << "Exiting..." << std::endl;
return -1;
}
}
if (ddmDump || showRegionData)
{
if (fedAmb)
{
try
{
#if !DtHLA_1516
"BenchmarkGeographicSpace");
"X", spaceHandle);
"Y", spaceHandle);
#else
#endif
}
catch (RTI::Exception& )
{
}
catch (...)
{
}
}
}
{
}
else
{
}
#if DtHLA_1516
for (std::list<DtObjClassDesc*>::const_iterator item = fom->
objClassList().begin();
++item)
{
#else
objClassDesc;
{
#endif
if ( includeMom || !momObjectClass
{
if (rootObjectClass && (objClassDesc->
handle() != rootObjectClass->
handle()))
{
if(passiveSubs)
{
}
else
{
}
}
}
}
#if DtHLA_1516
for (std::list<DtInterClassDesc*>::const_iterator item = fom->
interClassList().begin();
++item)
{
#else
intClassDesc;
{
#endif
if ( includeMom || !momInterClass
|| (momInterClass && !intClassDesc->
isOfClass( momInterClass->
handle() )) )
{
if (rootInterClass && (intClassDesc->
handle() != rootInterClass->
handle()))
{
if(passiveSubs)
{
}
else
{
}
}
}
}
if ( !raw )
{
}
if ( !raw )
{
}
if ( !raw )
{
}
{
}
if ( !raw )
{
}
if ( !raw )
{
}
if ( !raw )
{
}
if ( !raw )
{
}
if ( !raw )
{
}
if ( !raw )
{
}
if ( !raw )
{
}
if ( !raw )
{
}
if ( !raw )
{
}
if ( !rlol )
{
}
#if DtHLA_1516
region );
#else
#endif
int forever = 1;
while( forever )
{
if ( keybrdTick() == -1 )
{
break;
}
}
#if DtHLA_1516
for (std::list<DtObjClassDesc*>::const_iterator item = fom->
objClassList().begin();
++item)
{
#else
objClassDesc;
{
#endif
if ( includeMom || !momObjectClass
{
}
}
#if DtHLA_1516
for (std::list<DtInterClassDesc*>::const_iterator item = fom->
interClassList().begin();
++item)
{
#else
intClassDesc;
{
#endif
if ( includeMom || !momInterClass
|| (momInterClass && !intClassDesc->
isOfClass( momInterClass->
handle() )) )
{
}
}
if (subWithDdm)
{
delete regionSet;
region.reset();
}
return 0;
}
{
DtString lastProducingFederateName =
"Unknown";
#if DtHLA_1516_EVOLVED
lastProducingFederateName = obj->lastProducingFederate();
#endif
if (ddmDump)
{
bool printProducingFederate = false;
{
std::map<RTI::ObjectHandle, DtDdmFederateAmbassador::DtRegionInfo>::iterator iter =
if (iter == myRegionInfo.end())
{
myRegionInfo[obj->
objectId()] = regionInfo;
std::cout
<< clearScreen
<< theSeperator
<< "*************** Update at "
<<
"Object: " << obj->
objectId() <<
"\n"
<<
"Name: " << obj->
name() <<
"\n";
#if DtHLA_1516_EVOLVED
if (!lastProducingFederateName.
isEmpty())
{
std::cout
<< "Updated by Federate: "
<< lastProducingFederateName
<< "\n";
}
#endif
std::cout
<< "DDM Info: " << "\n"
<<
" -- Lower X Bound: " << regionInfo.
lowerXBound <<
"\n"
<<
" -- Upper X Bound: " << regionInfo.
upperXBound <<
"\n"
<<
" -- Lower Y Bound: " << regionInfo.
lowerYBound <<
"\n"
<<
" -- Upper Y Bound: " << regionInfo.
upperYBound <<
"\n";
}
else
{
{
myRegionInfo[obj->
objectId()] = regionInfo;
std::cout
<< clearScreen
<< theSeperator
<< "*************** Update at "
<<
"Object: " << obj->
objectId() <<
"\n"
<<
"Name: " << obj->
name() <<
"\n";
#if DtHLA_1516_EVOLVED
if (!lastProducingFederateName.
isEmpty())
{
std::cout
<< "Updated by Federate: "
<< lastProducingFederateName << "\n";
}
#endif
std::cout
<< "DDM Info: " << "\n"
<<
" -- Lower X Bound: " << regionInfo.
lowerXBound <<
"\n"
<<
" -- Upper X Bound: " << regionInfo.
upperXBound <<
"\n"
<<
" -- Lower Y Bound: " << regionInfo.
lowerYBound <<
"\n"
<<
" -- Upper Y Bound: " << regionInfo.
upperYBound <<
"\n";
}
}
}
else
{
std::cout
<< clearScreen
<< theSeperator
<< "*************** Update at "
<< theSeperator
<<
"Object: " << obj->
objectId() <<
"\n"
<<
"Name: " << obj->
name() <<
"\n";
#if DtHLA_1516_EVOLVED
if (!lastProducingFederateName.
isEmpty())
{
std::cout
<< "Updated by Federate: "
<< lastProducingFederateName
<< "\n";
}
#endif
std::cout
<< "DDM Info: " << "\n"
<< " -- No DDM Region information set." << "\n";
}
}
else
{
std::cout
<< clearScreen
<< theSeperator
<< "*************** Update at "
<< theSeperator;
#if DtHLA_1516_EVOLVED
if (!lastProducingFederateName.
isEmpty())
{
std::cout
<< "Updated by Federate: "
<< lastProducingFederateName;
std::cout
<< "\n";
}
#endif
if ( raw )
{
}
else
{
msg.
print( obj, fullReport );
}
if (showRegionData)
{
std::cout << "DDM Region Data: ";
{
std::cout
<< "\n"
<<
" -- Lower X Bound: " << regionInfo.
lowerXBound <<
"\n"
<<
" -- Upper X Bound: " << regionInfo.
upperXBound <<
"\n"
<<
" -- Lower Y Bound: " << regionInfo.
lowerYBound <<
"\n"
<<
" -- Upper Y Bound: " << regionInfo.
upperYBound <<
"\n";
}
else
{
std::cout << "None" << "\n";
}
}
std::cout << std::endl;
}
}
{
}
{
}
{
std::cout << clearScreen << theSeperator << "*************** Interaction at "
if (!ddmDump)
{
if ( raw )
{
}
else
{
}
if (showRegionData)
{
std::cout << "DDM Region Data: ";
{
std::cout << std::endl;
std::cout <<
" -- Lower X Bound: " << regionInfo.
lowerXBound << std::endl;
std::cout <<
" -- Upper X Bound: " << regionInfo.
upperXBound << std::endl;
std::cout <<
" -- Lower Y Bound: " << regionInfo.
lowerYBound << std::endl;
std::cout <<
" -- Upper Y Bound: " << regionInfo.
upperYBound << std::endl;
}
else
{
std::cout << "None" << std::endl;
}
}
std::cout << std::endl;
}
else
{
{
std::cout <<
" -- Lower X Bound: " << regionInfo.
lowerXBound << std::endl;
std::cout <<
" -- Upper X Bound: " << regionInfo.
upperXBound << std::endl;
std::cout <<
" -- Lower Y Bound: " << regionInfo.
lowerYBound << std::endl;
std::cout <<
" -- Upper Y Bound: " << regionInfo.
upperYBound << std::endl;
}
else
{
std::cout << "-- No Interaction Region" << std::endl;
}
}
}
int keybrdTick()
{
if ( !keyPtr )
{
return 0;
}
switch( *keyPtr )
{
case 'q':
case 'Q':
{
return -1;
}
default:
{
std::cout << "Unrecognized command key <"<< *keyPtr <<">" << std::endl;
break;
}
}
return 0;
}
#endif // DtHLA