![]() |
VR-Link API Documentation for DIS
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 00009 00010 #ifndef DtGriddedDataPdu_H_ 00011 #define DtGriddedDataPdu_H_ 00012 00013 00014 #include "gridAxiRecVar.h" 00015 #include <vlutil/vlMachineTypes.h> 00016 #include "hostStructs.h" 00017 #include "pdu.h" 00018 #include "stateMsg.h" 00019 #include <matrix/vlMath.h> 00020 00021 #include "packets/gridDataP.h" 00022 00023 #include "gridAxiRecFix.h" 00024 00025 #include "gridDataRec.h" 00026 #include "gridDataRecT0.h" 00027 #include "gridDataRecT1.h" 00028 #include "gridDataRecT2.h" 00029 00030 #include <vlpi/enviroTypeRec.h> 00031 00032 00033 class DT_DLL_VL DtGriddedDataPdu; 00034 00036 typedef void (*DtGriddedDataPduCb)(DtGriddedDataPdu* pdu, void* usr); 00037 00038 00039 00042 00043 #if (DtHLA || DtTENA) 00044 class DT_DLL_VL DtGriddedDataPdu : public DtPdu 00045 #elif DtDIS 00046 class DT_DLL_VL DtGriddedDataPdu : public DtStateMsg 00047 #endif 00048 { 00049 00050 public: 00051 00053 DtGriddedDataPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00054 DtGriddedDataPdu(const DtNetGriddedDataPdu* initial, 00055 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00056 DtGriddedDataPdu(const DtGriddedDataPdu& orig); 00057 00059 virtual ~DtGriddedDataPdu(); 00060 00063 static DtPdu* create(const DtNetPacket* initial, 00064 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00065 00068 static void addCallback(DtExerciseConn* conn, 00069 DtGriddedDataPduCb cb, void* usr); 00070 static void removeCallback(DtExerciseConn* conn, 00071 DtGriddedDataPduCb cb, void* usr); 00072 00074 DtGriddedDataPdu& operator=(const DtGriddedDataPdu& orig); 00075 00077 virtual void setEnvSimAppID(const DtEntityIdentifier& app); 00078 virtual const DtEntityIdentifier& envSimAppID() const; 00079 00081 virtual void setFieldNumber(DtU16 field); 00082 virtual DtU16 fieldNumber() const; 00083 00085 virtual void setPduNumber(DtU16 num); 00086 virtual DtU16 pduNumber() const; 00087 00089 virtual void setPduTotal(DtU16 total); 00090 virtual DtU16 pduTotal() const; 00091 00093 virtual void setCoordSystem(DtU16 sys); 00094 virtual DtU16 coordSystem() const; 00095 00097 virtual bool setNumGridAxes(DtU8 axes); 00098 virtual DtU8 numGridAxes() const; 00099 00101 virtual void setConstantGrid(DtU8 constant); 00102 virtual DtU8 constantGrid() const; 00103 00105 virtual void setEnvironmentType(const DtEnvironmentTypeRecord& type); 00106 virtual const DtEnvironmentTypeRecord& environmentType() const; 00107 00109 virtual void setOrientation(const DtTaitBryan& orientation); 00110 virtual const DtTaitBryan& orientation() const; 00111 00115 virtual void setSampleTime(int index, DtU32 time); 00116 virtual DtU32 sampleTime(int index) const; 00117 00119 virtual void setTotalValues(DtU32 total); 00120 virtual DtU32 totalValues() const; 00121 00124 virtual bool setVectorDim(DtU8 dim); 00125 virtual DtU8 vectorDim() const; 00126 00128 virtual DtGridAxisType gridAxisRecordType(int index) const; 00129 00136 virtual bool setGridAxisRecord(int index, 00137 const DtGridAxisRecordFixed& init); 00138 virtual bool getGridAxisRecord(int index, 00139 DtGridAxisRecordFixed& record) const; 00140 virtual bool setGridAxisRecord(int index, 00141 const DtGridAxisRecordVariable& init); 00142 virtual bool getGridAxisRecord(int index, 00143 DtGridAxisRecordVariable& record) const; 00144 00146 virtual DtGridDataRecType gridDataRecordType(int index) const; 00147 00154 virtual bool setGridDataRecord(int index, 00155 const DtGridDataRecordType0& init); 00156 virtual bool getGridDataRecord(int index, 00157 DtGridDataRecordType0& record) const; 00158 virtual bool setGridDataRecord(int index, 00159 const DtGridDataRecordType1& init); 00160 virtual bool getGridDataRecord(int index, 00161 DtGridDataRecordType1& record) const; 00162 virtual bool setGridDataRecord(int index, 00163 const DtGridDataRecordType2& init); 00164 virtual bool getGridDataRecord(int index, 00165 DtGridDataRecordType2& record) const; 00166 00168 virtual void printData() const; 00169 00171 virtual void printDataToStream(std::ostream& stream) const; 00172 00173 protected: 00174 00176 virtual DtPduKind internalGetPduKind() const; 00177 00179 virtual DtNetGriddedDataPdu* netPduStruct() const; 00180 00182 virtual char* var() const; 00183 00186 DtGriddedDataPdu* self() const; 00187 00189 virtual int gridAxisRecordLength(DtNetGridAxisRecordFixed* rec) const; 00190 00192 virtual int gridDataRecordLength(DtNetGridDataRecord* rec) const; 00193 00195 virtual int gridAxisRecordOffset(int recordIndex) const; 00196 00198 virtual int gridDataRecordOffset(int recordIndex) const; 00199 00201 virtual bool resizeGridAxisRecord(DtNetGridAxisRecordFixed* rec, 00202 int newSize); 00203 00205 virtual bool resizeGridDataRecord(DtNetGridDataRecord* rec, 00206 int newSize); 00207 00208 protected: 00209 00211 static const int theStaticSize; 00212 00213 protected: 00214 00216 DtEntityIdentifier myEntityID; 00217 DtEnvironmentTypeRecord myEnvironmentType; 00218 DtTaitBryan myEulerAngles; 00219 00220 }; 00221 00222 #endif 00223