#ifdef DtHLA
#if DtHLA_1516
#if DtHLA_1516_EVOLVED
#include <RTI/time/HLAfloat64Time.h>
#else
#include <RTI/logicalTimeImpl.h>
#endif
#else
#include <fedtime.hh>
#endif
#include <iostream>
int keybrdTick( void );
#if DtHLA_1516
#else
void timeAdvanceRequestCb( const RTI::FedTime &, void * );
void timeConstrainedEnabledCb( const RTI::FedTime &, void * );
#endif
#ifdef DtHLA_1516
#ifdef DtHLA_1516_EVOLVED
HLAfloat64Time GlobalFedTime;
const HLAfloat64Time FedTimeAdvance( 0.25 );
#else
LogicalTimeImpl GlobalFedTime;
const LogicalTimeImpl FedTimeAdvance( 0.25 );
#endif
#else
const RTIfedTime FedTimeAdvance( 0.25 );
RTIfedTime GlobalFedTime;
#endif
bool GlobalTimeConstraintOn = false;
bool GlobalTimeMoved = false;
int main( int argc, char* argv[] )
{
appInit.setExecName( "MAK-RPR-2.0" );
appInit.setRprFomVersion( 2.0 );
appInit.setRprFomRevision( 1 );
appInit.parseCmdLine();
DtInfo <<
"Time Management examples require attributes in FOM to be set to TimeStamp order." << std::endl;
DtInfo <<
"Waiting for Time Constraint Grant." << std::endl;
while ( !GlobalTimeConstraintOn )
{
}
#if DtHLA_1516
#if DtHLA_1516_EVOLVED
HLAfloat64Time lastTime( -10 );
#else
LogicalTimeImpl lastTime( -10 );
#endif
#else
RTIfedTime lastTime( -10 );
#endif
int forever = 1;
while ( forever )
{
if ( keybrdTick() == -1 )
break;
if ( GlobalTimeMoved )
{
GlobalTimeMoved = false;
#if DtHLA_1516
#if DtHLA_1516_EVOLVED
HLAfloat64Time reqTime;
#else
LogicalTimeImpl reqTime;
#endif
reqTime = GlobalFedTime.getTime() + FedTimeAdvance.getTime();
#else
FedTimeAdvance );
#endif
<< ( GlobalFedTime.getTime() + FedTimeAdvance.getTime() )
<< std::endl;
if ( first )
{
double refLongitude =
DtDeg2Rad( -121.326577 );
DtTopoView topoView( esr, refLatitude, refLongitude );
<< GlobalFedTime.getTime()
<< " Position: " << topoView.location().string() << std::endl;
}
}
}
return 0;
}
int keybrdTick()
{
if ( keyPtr && ( *keyPtr == 'q' || *keyPtr == 'Q' ) )
return -1;
else
return 0;
}
void timeAdvanceRequestCb(
#if DtHLA_1516
#else
const RTI::FedTime &aTime,
#endif
void *userData )
{
GlobalFedTime = aTime;
GlobalTimeMoved = true;
DtInfo <<
"Time Advance Grant to: "
<< GlobalFedTime.getTime() << std::endl;
}
void timeConstrainedEnabledCb(
#if DtHLA_1516
#else
const RTI::FedTime &aTime,
#endif
void *userData )
{
GlobalFedTime = aTime;
GlobalTimeConstraintOn = true;
GlobalTimeMoved = true;
DtInfo <<
"Time Constrained Enabled at time: "
<< GlobalFedTime.getTime() << std::endl;
}
{
DtInfo <<
"------------------------------------\n "
DtInfo <<
"------------------------------------\n" << std::endl;
}
#else // !DtHLA
#include <stdio.h>
int main()
{
DtInfo <<
"Time Management is only available in HLA" << std::endl;
return 0;
}
#endif // !DtHLA