#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 <<
"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