VR-Link API Documentation for DIS
elecEmitPdu.h
Go to the documentation of this file.
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 

Document ID: Generated on Mon May 14 08:06:18 EDT 2012 from SVN revision 114750
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)