![]() |
VR-Link API Documentation for DIS
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00008 00009 #ifndef DtMinefieldQueryPdu_H_ 00010 #define DtMinefieldQueryPdu_H_ 00011 00012 #if DtDIS 00013 00014 #include <vlutil/vlMachineTypes.h> 00015 #include "hostStructs.h" 00016 #include "dInteraction.h" 00017 #include "exerciseConn.h" 00018 00019 #include "packets/mineQueryP.h" 00020 00021 #include "minePerimeter.h" 00022 00023 00024 class DT_DLL_VL DtMinefieldQueryPdu; 00025 00027 typedef void (*DtMinefieldQueryPduCb)(DtMinefieldQueryPdu* pdu, void* usr); 00028 00029 00033 class DT_DLL_VL DtMinefieldQueryPdu : public DtInteraction 00034 { 00035 00036 public: 00037 00039 DtMinefieldQueryPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00040 DtMinefieldQueryPdu(const DtNetMinefieldQueryPdu* initial, 00041 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00042 DtMinefieldQueryPdu(const DtMinefieldQueryPdu& orig); 00043 00045 virtual ~DtMinefieldQueryPdu(); 00046 00048 DtMinefieldQueryPdu& operator=(const DtMinefieldQueryPdu& orig); 00049 00051 virtual void setMinefieldID(const DtEntityIdentifier& id); 00052 virtual const DtEntityIdentifier& minefieldID() const; 00053 00055 virtual void setRequestingEntityID(const DtEntityIdentifier& id); 00056 virtual const DtEntityIdentifier& requestingEntityID() const; 00057 00059 virtual void setRequestID(DtU8 id); 00060 virtual DtU8 requestID() const; 00061 00063 virtual bool setNumPerimeterPoints(DtU8 num); 00064 virtual DtU8 numPerimeterPoints() const; 00065 00067 virtual bool setNumSensorTypes(DtU8 num); 00068 virtual DtU8 numSensorTypes() const; 00069 00071 virtual void setDataFilter(DtU32 value); 00072 virtual DtU32 dataFilter() const; 00073 00077 virtual void setDataFilterField( 00078 DtMinefieldDataFilterField field, bool value); 00079 virtual bool getDataFilterField(DtMinefieldDataFilterField field); 00080 00082 virtual void setRequestedMineType(const DtEntityType& type); 00083 virtual const DtEntityType& requestedMineType() const; 00084 00087 virtual bool setPerimeterPoint(int index, 00088 const DtMinefieldPerimeterRecord& init); 00089 virtual bool getPerimeterPoint(int index, 00090 DtMinefieldPerimeterRecord& record) const; 00091 00094 virtual bool getSensorTypeCategory(int index, 00095 DtSensorTypeCategory& value); 00096 00100 virtual bool setSensorTypeSubcategory(int index, 00101 DtOpticalSensorTypeSubcategory value); 00102 virtual bool setSensorTypeSubcategory(int index, 00103 DtFLIR_SensorTypeSubcategory value); 00104 virtual bool setSensorTypeSubcategory(int index, 00105 DtRADAR_SensorTypeSubcategory value); 00106 virtual bool setSensorTypeSubcategory(int index, 00107 DtMagneticSensorTypeSubcategory value); 00108 virtual bool setSensorTypeSubcategory(int index, 00109 DtLaserSensorTypeSubcategory value); 00110 virtual bool setSensorTypeSubcategory(int index, 00111 DtSONARSensorTypeSubcategory value); 00112 virtual bool setSensorTypeSubcategory(int index, 00113 DtPhysicalSensorTypeSubcategory value); 00114 virtual bool setSensorTypeSubcategory(int index, 00115 DtMultispectralSensorTypeSubcategory value); 00116 00121 virtual bool getSensorTypeSubcategory(int index, 00122 DtOpticalSensorTypeSubcategory& value); 00123 virtual bool getSensorTypeSubcategory(int index, 00124 DtFLIR_SensorTypeSubcategory& value); 00125 virtual bool getSensorTypeSubcategory(int index, 00126 DtRADAR_SensorTypeSubcategory& value); 00127 virtual bool getSensorTypeSubcategory(int index, 00128 DtMagneticSensorTypeSubcategory& value); 00129 virtual bool getSensorTypeSubcategory(int index, 00130 DtLaserSensorTypeSubcategory& value); 00131 virtual bool getSensorTypeSubcategory(int index, 00132 DtSONARSensorTypeSubcategory& value); 00133 virtual bool getSensorTypeSubcategory(int index, 00134 DtPhysicalSensorTypeSubcategory& value); 00135 virtual bool getSensorTypeSubcategory(int index, 00136 DtMultispectralSensorTypeSubcategory& value); 00137 00139 virtual void printData() const; 00140 00142 virtual void printDataToStream(std::ostream &stream) const; 00143 00144 public: 00145 00148 static DtPdu* create(const DtNetPacket* initial, 00149 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00150 00153 static void addCallback(DtExerciseConn* conn, 00154 DtMinefieldQueryPduCb cb, void* usr); 00155 static void removeCallback(DtExerciseConn* conn, 00156 DtMinefieldQueryPduCb cb, void* usr); 00157 00158 protected: 00159 00161 virtual DtPduKind internalGetPduKind() const; 00162 00164 virtual DtNetMinefieldQueryPdu* netPduStruct() const; 00165 00168 DtMinefieldQueryPdu* self() const; 00169 00171 virtual char* var() const; 00172 00174 virtual int perimeterPointRecordOffset(int recordIndex) const; 00175 00177 virtual int sensorTypeRecordOffset(int recordIndex) const; 00178 00180 virtual void setSensorType(int index, DtU16 value); 00181 virtual DtU16 sensorType(int index) const; 00182 00183 protected: 00184 00186 static const int theStaticSize; 00187 00188 protected: 00189 00191 DtEntityIdentifier myEntityID; 00192 DtEntityType myEntityType; 00193 DtMinefieldPerimeterRecord myPerimeterRecord; 00194 00195 }; 00196 00197 #endif 00198 #endif 00199