![]() |
VR-Link API Documentation for HLA 1.3
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 00009 00010 #ifndef DtElectromagneticEmissionPdu_H_ 00011 #define DtElectromagneticEmissionPdu_H_ 00012 00013 #if DtDIS 00014 00015 #include "hostStructs.h" 00016 #include "eventId.h" 00017 #include "stateMsg.h" 00018 #include <matrix/vlMath.h> 00019 #include "packets/elecEmitP.h" 00020 00021 #define DtEMISSION_SUCCESS 0 00022 #define DtBAD_SYS_NUM 1 00023 #define DtBAD_BEAM_NUM 2 00024 #define DtBAD_TARGET_NUM 3 00025 #define DtBAD_SYS_ADDR 4 00026 #define DtBAD_BEAM_ADDR 5 00027 #define DtBAD_TARGET_ADDR 6 00028 #define DtINCONSISTENT_SYS_LENGTHS_PDU_LENGTH 7 00029 #define DtINCONSISTENT_BEAM_LENGTHS_SYS_LENGTH 8 00030 #define DtINCONSISTENT_NUM_TARGETS_BEAM_LENGTH 9 00031 00032 class DT_DLL_VL DtFundamentalParameterData 00033 { 00034 public: 00035 float frequency; 00036 float frequencyRange; 00037 float effectiveRadiatedPower; 00038 float pulseRepetitionFrequency; 00039 float pulseWidth; 00040 float beamAzCenter; 00041 float beamAzSweep; 00042 float beamElCenter; 00043 float beamElSweep; 00044 float beamSweepSync; 00045 virtual void printData() const; 00046 virtual void printDataToStream(std::ostream& stream) const; 00047 }; 00048 00049 class DT_DLL_VL DtTrackJamTarget 00050 { 00051 public: 00052 DtEntityIdentifier entityId; 00053 int emitterId; 00054 int beamId; 00055 virtual void printData() const; 00056 virtual void printDataToStream(std::ostream& stream) const; 00057 }; 00058 00059 class DT_DLL_VL DtExerciseConn; 00060 class DT_DLL_VL DtElectromagneticEmissionPdu; 00061 00062 typedef void (*DtElectromagneticEmissionPduCb)( 00063 DtElectromagneticEmissionPdu *pdu, void *usr); 00064 00065 class DT_DLL_VL DtElectromagneticEmissionPdu : public DtStateMsg 00066 { 00067 public: 00068 00069 enum 00070 { 00071 PduStaticSize=28, 00072 DtEmitterSystemStaticSize=20, 00073 DtEmitterBeamStaticSize=52 00074 }; 00075 00076 public: 00077 00078 DtElectromagneticEmissionPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00079 00080 DtElectromagneticEmissionPdu(const DtNetElectromagneticEmissionPdu *initial, 00081 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00082 00083 static DtPdu *create(const DtNetPacket *initial, 00084 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00085 00086 static void addCallback(DtExerciseConn *conn, 00087 DtElectromagneticEmissionPduCb cb, void *usr); 00088 00089 static void removeCallback(DtExerciseConn *conn, 00090 DtElectromagneticEmissionPduCb cb, void *usr); 00091 00092 const DtEntityIdentifier &emittingEntityId() const; 00093 void setEmittingEntityId(const DtEntityIdentifier &id); 00094 00095 const DtEventID &eventId() const; 00096 void setEventId(const DtEventID &id); 00097 00098 DtEmissionPduType stateUpdateIndicator() const; 00099 void setStateUpdateIndicator(DtEmissionPduType indicator); 00100 00101 int numSystems() const; 00102 void setNumSystems(int num); 00103 00104 /************ FOR A PARTICULAR SYSTEM **************/ 00105 int systemDataWords(int sysNum, int *retcode = 0) const; 00106 00107 int numBeams(int sysNum, int *retcode = 0) const; 00108 void setNumBeams(int sysNum, int numBeams, int *retcode = 0); 00109 00110 DtEmitterSysName systemName(int sysNum, int *retcode = 0) const; 00111 void setSystemName(int sysNum, DtEmitterSysName name, int *retcode = 0); 00112 00113 DtEmissionFunc systemFunction(int sysNum, int *retcode = 0) const; 00114 void setSystemFunction(int sysNum, DtEmissionFunc func, int *retcode = 0); 00115 00116 int emitterId(int sysNum, int *retcode = 0) const; 00117 void setEmitterId(int sysNum, int id, int *retcode = 0); 00118 00119 const DtVector& location(int sysNum, int *retcode = 0) const; 00120 void setLocation(int sysNum, const DtVector& loc, int *retcode = 0); 00121 00122 /************ FOR A PARTICULAR BEAM **************/ 00123 int beamDataWords(int sysNum, int beamNum, int *retcode = 0) const; 00124 00125 int beamId(int sysNum, int beamNum, int *retcode = 0) const; 00126 00127 void setBeamId(int sysNum, int beamNum, int id, int *retcode = 0); 00128 00129 int beamParameterIndex(int sysNum, int beamNum, int *retcode = 0) const; 00130 00131 void setBeamParameterIndex(int sysNum, int beamNum, int bpIndex, 00132 int *retcode = 0); 00133 00134 const DtFundamentalParameterData& parameterData(int sysNum, int beamNum, 00135 int *retcode = 0) const; 00136 00137 void setParameterData(int sysNum, int beamNum, 00138 const DtFundamentalParameterData &data, int *retcode = 0); 00139 00140 int beamFunction(int sysNum, int beamNum, int *retcode = 0) const; 00141 00142 void setBeamFunction(int sysNum, int beamNum, int func, int *retcode = 0); 00143 00144 int numTargetsInBeam(int sysNum, int beamNum,int *retcode = 0) const; 00145 void setNumTargetsInBeam(int sysNum, int beamNum, int num, int *retcode = 0); 00146 00147 DtTrackingJamming trackingAllTargets(int sysNum, int beamNum, 00148 int *retcode = 0) const; 00149 00150 void setTrackingAllTargets(int sysNum, int beamNum, 00151 DtTrackingJamming trackJamAll, int *retcode = 0); 00152 00153 unsigned long jammingModeSequence(int sysNum, int beamNum, 00154 int *retcode = 0) const; 00155 00156 void setJammingModeSequence(int sysNum, int beamNum, unsigned long seq, 00157 int *retcode = 0); 00158 00159 const DtTrackJamTarget &trackJamTarget(int sysNum, int beamNum, 00160 int targetNum, int *retcode = 0) const; 00161 00162 void setTrackJamTarget(int sysNum, int beamNum, int targetNum, 00163 const DtTrackJamTarget &targ, int *retcode = 0); 00164 00165 virtual void printData() const; 00166 00167 virtual void printDataToStream(std::ostream& stream) const; 00168 00169 protected: 00170 00171 DtPduKind internalGetPduKind() const {return DtElectromagneticEmissionPduKind;} 00172 00173 DtNetSystemData *emitterSystemAddr(int sysNum, int *retcode = 0) const; 00174 00175 DtNetBeamData *emitterBeamAddr(int sysNum, int beamNum, 00176 int *retcode = 0) const; 00177 00178 DtNetEmitterTrackJam *targetAddr(int sysNum, int beamNum, int targetNum, 00179 int *retcode = 0) const; 00180 00181 int computedSystemDataLength(int sysNum) const; 00182 int computedBeamDataLength(int sysNum, int beamNum) const; 00183 void printSystem(std::ostream& stream,int i) const; 00184 void printBeam(std::ostream& stream,int i, int j) const; 00185 int addressInPacket(void *addr) const; 00186 int computeStatus() const; 00187 00188 DtEntityIdentifier cacheId; 00189 DtEventID cacheEvent; 00190 DtVector cacheLoc; 00191 DtFundamentalParameterData cacheData; 00192 DtTrackJamTarget cacheTarget; 00193 00194 }; 00195 00196 #endif //! DtHLA 00197 #endif //! DtElectromagneticEmissionPdu_H_ 00198