VR-Link API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
environmentalProcessPdu.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2017 MAK Technologies, Inc
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vl/pdu.h>
13 #include <vl/stateMsg.h>
14 #include <vl/exerciseConn.h>
17 #include <vlutil/vlMachineTypes.h>
18 #include <vl/packets/envProcP.h>
19 #include <vector>
20 
22 
24 typedef void (*DtEnvironmentalProcessPduCb)( DtEnvironmentalProcessPdu* pdu, void* usr );
25 
29 #if DtDIS
31 #else
33 #endif
34 {
35 public:
36 
39 
42  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
43 
46 
49 
52 
54  virtual void setEnvironmentalProcessID(const DtEntityIdentifier& entity);
55  virtual const DtEntityIdentifier& environmentalProcessID() const;
56 
58  virtual void setEnvironmentType(const DtEnvironmentTypeRecord& type);
59  virtual const DtEnvironmentTypeRecord& environmentType() const;
60 
62  virtual void setModelType(DtEnvironmentalModelType value);
63  virtual DtEnvironmentalModelType modelType() const;
64 
66  virtual void setEnvironmentalStatus(DtU8 value);
67  virtual DtU8 environmentalStatus() const;
68 
70  virtual void setEnvironmentalStatusBit( DtEnvironmentalStatusBit bit, bool value );
71  virtual bool environmentalStatusBit( DtEnvironmentalStatusBit bit ) const;
72 
74  virtual bool setNumberOfEnvironmentalRecords(DtU16 newNumberOfRecords);
75  virtual DtU16 numberOfEnvironmentalRecords() const;
76 
78  virtual void setSequenceNumber(DtU16 value);
79  virtual DtU16 sequenceNumber() const;
80 
86  virtual bool setRecordBitSize(int recordIndex, int newRecordBitSize);
87 
89  virtual void printData() const;
90  virtual void printDataToStream(std::ostream& stream) const;
91 
93  virtual void setEnvironmentalRecord( int index, const DtEnvironmentalRecord& envRecord );
94 
97  virtual DtNetEnvironmentalRecord* recordPointer(int recordIndex) const;
98 
99  //****
108 
109 
114  virtual int numberOfGeometryRecords() const;
115 
117  virtual DtEnvironmentalRecordType geometryRecordType(int index) const;
118 
122  virtual DtEnvironmentalRecordType stateRecordType(int index) const;
123 
129  virtual bool getGeometryRecord(int index,
130  DtEnvironmentalGeometryRecord& geometryRecord) const;
131 
137  virtual bool getStateRecord(int index,
138  DtEnvironmentalRecord& stateRecord) const;
139 
140 public:
141 
144  static DtPdu* create(const DtNetPacket* initial,
145  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
146 
148  static void addCallback( DtExerciseConn* conn, DtEnvironmentalProcessPduCb cb, void* usr );
149  static void removeCallback( DtExerciseConn* conn, DtEnvironmentalProcessPduCb cb, void* usr );
150 
163  static void setLengthIsWholeEnvRec(bool lengthMode);
164  static bool lengthIsWholeEnvRec();
165 
166 protected:
167 
169  virtual DtPduKind internalGetPduKind() const;
170 
174 
177  DtEnvironmentalProcessPdu* self() const;
178 
180  virtual char* var() const;
181 
184  virtual int recordOffset(int recordIndex) const;
185 
186  virtual void invalidateCache();
187 
193  void verifyRecDataSize();
194 
195 protected:
196 
198  static const int theStaticSize;
199  static bool theLengthIsWholeRec;
200 
204  mutable std::vector<int> myOffsetCache;
205 
206 };
static DtPdu * create(const DtNetPacket *initial, DtBufferPtr buffer=DtUSE_INTERNAL_BUFFER, DtPduFactory *pduFactory=0)
Create a DtEnvironmentalProcessPdu.
static void addCallback(DtExerciseConn *conn, DtEnvironmentalProcessPduCb cb, void *usr)
Add (register)/Remove (deregister) function to be called when pdu is received.
DtEntityIdentifier myEntityID
Temporary objects for reference returns.
Definition: environmentalProcessPdu.h:202
virtual void setEnvironmentType(const DtEnvironmentTypeRecord &type)
Set/Get environment type.
Instances of DtEnvironmentTypeRecord are used by the DtGriddedDataPdu for specifying environmental ty...
Definition: environmentTypeRecord.h:17
Instances of DtExerciseConn are used to provide an application&#39;s interface or connection to the netwo...
Definition: exerciseConnDIS.h:62
virtual bool getGeometryRecord(int index, DtEnvironmentalGeometryRecord &geometryRecord) const
This returns a reference to the nth geometry record.
Instances of DtEnvironmentalProcessPdu are used to send information about environmental effects and p...
Definition: environmentalProcessPdu.h:30
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
virtual const DtEntityIdentifier & environmentalProcessID() const
DtEnvironmentalRecordType
Definition: disEnums.h:2036
virtual DtNetEnvironmentalRecord * recordPointer(int recordIndex) const
Get a pointer to an environmental record.
virtual DtPduKind internalGetPduKind() const
Returns the internal PDU kind.
virtual void printData() const
Print the data contained by this PDU.
Definition: pduHeader.h:14
virtual void printDataToStream(std::ostream &stream) const
virtual bool getStateRecord(int index, DtEnvironmentalRecord &stateRecord) const
This returns a reference to the state record associated with the nth geometry record.
class DtPduFactory:
Definition: pduFactory.h:38
DtEnvironmentalProcessPdu & operator=(const DtEnvironmentalProcessPdu &orig)
Assignment operator.
static bool theLengthIsWholeRec
Definition: environmentalProcessPdu.h:199
virtual DtU16 numberOfEnvironmentalRecords() const
virtual void setEnvironmentalRecord(int index, const DtEnvironmentalRecord &envRecord)
This sets the index&#39;th record to the values in the envRecord supplied.
DtEnvironmentalModelType
Environmental Process enums.
Definition: disEnums.h:2030
virtual bool setNumberOfEnvironmentalRecords(DtU16 newNumberOfRecords)
Set/Get number of environment records.
virtual ~DtEnvironmentalProcessPdu()
Virtual DTOR.
virtual DtEnvironmentalRecordType stateRecordType(int index) const
This returns the type of the state record associated with the geometry record with the index specifie...
virtual void setEnvironmentalStatus(DtU8 value)
Set/Get the environmental status (as an 8-bit value).
void(* DtEnvironmentalProcessPduCb)(DtEnvironmentalProcessPdu *pdu, void *usr)
DtEnvironmentalProcessPdu callback function signature.
Definition: environmentalProcessPdu.h:24
virtual void setEnvironmentalStatusBit(DtEnvironmentalStatusBit bit, bool value)
Set/Get an environmental status bit.
virtual DtU8 environmentalStatus() const
virtual void setModelType(DtEnvironmentalModelType value)
Set/Get the model type.
virtual int numberOfGeometryRecords() const
The following functions are accessors and mutators based on assumptions about what types of environme...
DtEnvironmentalGeometryRecord provides a common base class for all environmental geometry (as opposed...
Definition: environmentalGeometryRecord.h:22
DtPdu is the base class for all PDU&#39;s in VR-Link.
Definition: pdu.h:69
unsigned char DtU8
An eight bit unsigned integer value.
Definition: vlMachineTypes.h:137
virtual void setSequenceNumber(DtU16 value)
Set/Get sequence number.
DtNetEnvironmentalProcessPdu is the network structure for the environmental process PDU...
Definition: envProcP.h:20
static void removeCallback(DtExerciseConn *conn, DtEnvironmentalProcessPduCb cb, void *usr)
static void setLengthIsWholeEnvRec(bool lengthMode)
Methods to set the static variable theLengthIsWholeRec.
DtNetEnvironmentalRecord is the network structure for the environmental process PDU record header (de...
Definition: envProcP.h:34
Instances of DtEntityIdentifier are used as a unique ID for entities in DIS.
Definition: entityIdentifier.h:31
This file provides protocol to independence DtExerciseConn.
DtNetEnvironmentalProcessPdu * netPduStruct() const
Casts the netPdu element to our network struct.
static const int theStaticSize
Size of PDU with zero data bytes.
Definition: environmentalProcessPdu.h:198
virtual bool environmentalStatusBit(DtEnvironmentalStatusBit bit) const
DtEnvironmentalProcessPdu(DtBufferPtr buffer=DtUSE_INTERNAL_BUFFER)
CTOR.
DtEnvironmentalStatusBit
Definition: disEnums.h:2058
virtual const DtEnvironmentTypeRecord & environmentType() const
virtual char * var() const
Returns a pointer to the first byte of variable length data.
DtEnvironmentalRecord is the base class from which all geometry and state environmental records are d...
Definition: environmentalRecord.h:22
virtual DtEnvironmentalModelType modelType() const
struct DtBufferPlaceHolder * DtBufferPtr
Definition: vlBaseMsg.h:17
virtual void setEnvironmentalProcessID(const DtEntityIdentifier &entity)
Set/Get originating environmental process ID.
DtEnvironmentTypeRecord myEnvironmentType
Definition: environmentalProcessPdu.h:203
unsigned short DtU16
A 16 bit unsigned integer value.
Definition: vlMachineTypes.h:140
#define DtUSE_INTERNAL_BUFFER
Definition: vlBaseMsg.h:22
virtual DtEnvironmentalRecordType geometryRecordType(int index) const
This returns the type of the geometry record with the index specified.
virtual int recordOffset(int recordIndex) const
Returns an offset in bytes from the beginning of the variable length data region to the beginning of ...
virtual bool setRecordBitSize(int recordIndex, int newRecordBitSize)
Set the size of an environmental record in bits.
std::vector< int > myOffsetCache
Definition: environmentalProcessPdu.h:204
DtPduKind
([UID 4]) - PDU Type
Definition: disEnums.h:238
static bool lengthIsWholeEnvRec()
virtual DtU16 sequenceNumber() const
Instances of DtStateMsg are used to represent state data communicated via the network in a DIS (as op...
Definition: stateMsgDIS.h:21
void verifyRecDataSize()
Checks the size of the stated length of all environment records, and compares it with the actual leng...
This file declares classes related to the EnvironmentalProcess Object.
This file contains typedefs for machine dependant types.
virtual void invalidateCache()

Document ID: Generated on Wed Mar 27 02:04:30 EDT 2024 from SVN revision 264570
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)