![]() |
VR-Link API Documentation for HLA 1.3
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00008 00009 #ifndef DtTransmitterPdu_H_ 00010 #define DtTransmitterPdu_H_ 00011 00012 #if DtDIS 00013 00014 #include "hostStructs.h" 00015 #include "pdu.h" 00016 #include <matrix/vlMath.h> 00017 #include "packets/transmitterP.h" 00018 #include "beamAntRec.h" 00019 #include "stateMsg.h" 00020 00021 00022 class DT_DLL_VL DtExerciseConn; 00023 class DT_DLL_VL DtTransmitterPdu; 00024 typedef void (*DtTransmitterPduCb)(DtTransmitterPdu *pdu, void *usr); 00025 00026 #define DtFREQ_UPPER 0 00027 #define DtFREQ_LOWER 1 00028 00029 class DT_DLL_VL DtModulationType 00030 { 00031 00032 public: 00033 DtModulationType(int spectrum = 0, 00034 DtRadioMajorModulation major = 00035 DtRadioMajorModOther, 00036 int detail = 0, 00037 DtRadioSystem sys = DtRadioSystemOther) 00038 : Spectrum(spectrum), Major(major), Detail(detail), Sys(sys) {} 00039 00040 unsigned int spectrum() const {return Spectrum;} 00041 DtRadioMajorModulation majorModType() const {return Major;} 00042 int detail() const {return Detail;} 00043 DtRadioSystem systemType() const {return Sys;} 00044 00045 void setSpectrum(unsigned int s) {Spectrum = s;} 00046 void setMajor(DtRadioMajorModulation m) {Major = m;} 00047 void setDetail(int d) {Detail = d;} 00048 void setSystemType(DtRadioSystem s) {Sys = s;} 00049 00050 virtual void printData() const; 00051 virtual void printDataToStream(std::ostream& stream) const; 00052 00053 private: 00054 unsigned int Spectrum; 00055 DtRadioMajorModulation Major; 00056 int Detail; 00057 DtRadioSystem Sys; 00058 }; 00059 00062 class DT_DLL_VL DtTransmitterPdu : public DtStateMsg 00063 { 00064 00065 public: 00066 00067 enum { PduStaticSize=104 }; 00068 00069 public: 00070 00071 00072 DtTransmitterPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00073 DtTransmitterPdu(const DtNetTransmitterPdu *initial, 00074 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00075 00076 static DtPdu *create(const DtNetPacket *initial, 00077 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00078 00079 static void addCallback(DtExerciseConn *conn, 00080 DtTransmitterPduCb cb, void *usr); 00081 static void removeCallback(DtExerciseConn *conn, 00082 DtTransmitterPduCb cb, void *usr); 00083 00084 00085 const DtEntityIdentifier &entityId() const; 00086 void setEntityId(const DtEntityIdentifier &id); 00087 00088 unsigned int radioId() const; 00089 void setRadioId(unsigned int id); 00090 00091 const DtRadioEntityType &radioEntityType() const; 00092 void setRadioEntityType(const DtRadioEntityType &type); 00093 void setRadioEntityType(const DtEntityType &type); 00094 00095 DtRadioTransmitState transmitState() const; 00096 void setTransmitState(DtRadioTransmitState state); 00097 00098 DtRadioInputSource inputSource() const; 00099 void setInputSource(DtRadioInputSource source); 00100 00101 const DtVector& worldAntennaLoc() const; 00102 void setWorldAntennaLoc(const DtVector& loc); 00103 00104 const DtVector& relativeAntennaLoc() const; 00105 void setRelativeAntennaLoc(const DtVector& loc); 00106 00107 DtAntennaPatternType antennaPatternType() const; 00108 void setAntennaPatternType(DtAntennaPatternType type); 00109 00110 int antennaParamsLength() const; 00111 00112 unsigned long frequency(int upperLower = DtFREQ_LOWER) const; 00113 void setFrequency(unsigned long freq); 00114 void setFrequency(unsigned long upper, unsigned long lower); 00115 00116 float bandwidth() const; 00117 void setBandwidth(float bw); 00118 00119 float power() const; 00120 void setPower(float power); 00121 00122 const DtModulationType &modulationType() const; 00123 void setModulationType(const DtModulationType &type); 00124 00125 DtRadioCryptoSystem cryptoSystem() const; 00126 void setCryptoSystem(DtRadioCryptoSystem sys); 00127 00128 int cryptoKeyId() const; 00129 void setCryptoKeyId(int key); 00130 00131 int modulationParamsLength() const; 00132 void setModulationParams(void *networkRepresentation, int size); 00133 00134 void getNetModulationParams(void *destination) const; 00135 void getNetAntennaParams(void *destination) const; 00136 const DtBeamAntennaPatternRecord &antennaParams() const; 00137 00138 void setAntennaPatternParams(void *networkRepresentation, int size); 00139 void setAntennaPatternParams(const DtBeamAntennaPatternRecord &rec); 00140 00141 virtual void printData() const; 00142 virtual void printDataToStream(std::ostream &stream) const; 00143 00144 protected: 00145 00146 DtPduKind internalGetPduKind() const {return DtTransmitterPduKind;} 00147 DtEntityIdentifier theId; 00148 DtRadioEntityType theType; 00149 DtVector wLoc; 00150 DtVector rLoc; 00151 DtModulationType modType; 00152 DtBeamAntennaPatternRecord pat; 00153 void setModulationParamsLength(int length); 00154 void setAntennaParamsLength(int length); 00155 void *antennaParamsAddr() const; 00156 void *modulationParamsAddr() const; 00157 virtual void printModulationParams(std::ostream& stream) const; 00158 virtual void printAntennaParams(std::ostream& stream) const; 00159 private: 00162 virtual void printModulationParams() const; 00163 virtual void printAntennaParams() const; 00164 }; 00165 00166 #endif //! DtDIS 00167 #endif //! DtTransmitterPdu_H_ 00168