VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
compatibilityRadio.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2007 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include "vrfobjcore/simRadio.h"
18 
19 
31 {
32 public:
35 
37  virtual ~DtCompatibilityRadio();
38 
39 private:
46 
47 public:
48  virtual bool init();
49 
51  virtual bool isCommand() const;
52 
54 
55  virtual void sendToNet(DtVrfObjectMessage * msg);
56  virtual void sendToCommandNet(DtVrfObjectMessage* msg);
57  virtual void sendToAllNets(DtVrfObjectMessage* msg);
59 
61 
62  virtual void setCommandChannel(int v) {};
63  virtual int commandChannel() const {return 0;}
65 
67  virtual bool isLocal() const;
68 
70  virtual DtString type() const;
71 
74  template<typename messageType>
75  void addMessageCallback(const messageType& mType, DtMessageCallbackFcn fcn, void* usr)
76  {
77  myCommInterface->addMessageCallback(mType, oldStyleConverterCallback,
78  addOldStyleCallbackInfo(fcn, usr));
79  }
80 
81  template<typename messageType>
82  void removeMessageCallback(const messageType& mType, DtMessageCallbackFcn fcn, void* usr)
83  {
84  DtOldStyleCallbackInfo* cbInfo = findOldStyleCallbackInfo(fcn, usr);
85  if (cbInfo)
86  {
87  myCommInterface->removeMessageCallback(mType, oldStyleConverterCallback, cbInfo);
88  removeAndDeleteOldStyleCallbackInfo(cbInfo);
89  }
90  }
92 
93  template<typename messageType>
94  void addCommandRadioMessageCallback(const messageType& mType, DtMessageCallbackFcn fcn, void* usr)
95  {
96  addMessageCallback(mType, fcn, usr);
97  }
98 
99  template<typename messageType>
100  void removeCommandRadioMessageCallback(const messageType& mType, DtMessageCallbackFcn fcn, void* usr)
101  {
102  removeMessageCallback(mType, fcn, usr);
103  }
104 
105  virtual void addRadioMessageCallback(const DtAdminContentMessageType& type, DtMessageCallbackFcn fcn, void* usr);
106  virtual void removeRadioMessageCallback(const DtAdminContentMessageType& type, DtMessageCallbackFcn fcn, void* usr);
107 
108  virtual void addRadioMessageCallback(const DtSimReportMessageType& type, DtMessageCallbackFcn fcn, void* usr);
109  virtual void removeRadioMessageCallback(const DtSimReportMessageType& type, DtMessageCallbackFcn fcn, void* usr);
110 
111  virtual void addRadioMessageCallback(const DtSimTaskMessageType& type, DtMessageCallbackFcn fcn, void* usr);
112  virtual void removeRadioMessageCallback(const DtSimTaskMessageType& type, DtMessageCallbackFcn fcn, void* usr);
113 
114  virtual void addRadioMessageCallback(const DtSetMessageType& type, DtMessageCallbackFcn fcn, void* usr);
115  virtual void removeRadioMessageCallback(const DtSetMessageType& type, DtMessageCallbackFcn fcn, void* usr);
116 
118 
119  virtual void addTaskMessageCallback(DtMessageCallbackFcn fcn, void* usrData);
120  virtual void removeTaskMessageCallback(DtMessageCallbackFcn fcn, void* usrData);
122 
124 
125  virtual void addSetDataMessageCallback(DtMessageCallbackFcn fcn, void* usrData);
126  virtual void removeSetDataMessageCallback(DtMessageCallbackFcn fcn, void* usrData);
128 
130 
131  virtual void addReportMessageCallback(DtMessageCallbackFcn fcn, void* usrData);
132  virtual void removeReportMessageCallback(DtMessageCallbackFcn fcn, void* usrData);
134 
135  static DtSimRadio* create(DtLocalObject* vrfObject);
136 
138  static DtCompatibilityRadio* isCommandChannelRadio(DtSimRadio* radio);
139 
140 
141 protected:
142  typedef std::pair<DtMessageCallbackFcn, void*> DtOldStyleCallbackInfo;
143 
146  static void oldStyleConverterCallback(const DtVrfObjectMessage* msg, void* usr);
147 
150  virtual DtOldStyleCallbackInfo* addOldStyleCallbackInfo(DtMessageCallbackFcn fcn, void* usr);
151 
154  virtual DtOldStyleCallbackInfo* findOldStyleCallbackInfo(DtMessageCallbackFcn fcn, void* usr);
155 
158  virtual void removeAndDeleteOldStyleCallbackInfo(DtOldStyleCallbackInfo* cbInfo);
159 
160 protected:
162 
163  typedef std::list<DtOldStyleCallbackInfo*> DtOldStyleCallbackInfoList;
165 };
DtOldStyleCallbackInfoList myOldStyleCallbackInfoList
Definition: compatibilityRadio.h:164
virtual bool isLocal() const =0
Radio net calls this to deliver a message to this radio.
virtual void removeTaskMessageCallback(DtMessageCallbackFcn fcn, void *usrData)=0
Callback which is called for every task message received by this entity.
virtual DtString type() const =0
Returns the type of radio object. Strings are defined in simRadioTypes.h.
virtual void removeReportMessageCallback(DtMessageCallbackFcn fcn, void *usrData)=0
Callback which is called for every report message received by this entity.
void addCommandRadioMessageCallback(const messageType &mType, DtMessageCallbackFcn fcn, void *usr)
Definition: compatibilityRadio.h:94
virtual void removeRadioMessageCallback(const DtAdminContentMessageType &type, DtMessageCallbackFcn fcn, void *usr)=0
Definition: simRadio.h:30
virtual void setCommandChannel(int v)
Does nothing. Provided for compile compatibility only.
Definition: compatibilityRadio.h:62
virtual void removeSetDataMessageCallback(DtMessageCallbackFcn fcn, void *usrData)=0
Callback which is called for every set data message received by this entity.
virtual bool isCommand() const =0
Definition: vrfObjectMessageTypeTemplate.h:24
virtual bool init()
This calls createUnitReceiverTransmitter().
virtual void addSetDataMessageCallback(DtMessageCallbackFcn fcn, void *usrData)=0
Callback which is called for every set data message received by this entity.
virtual void addTaskMessageCallback(DtMessageCallbackFcn fcn, void *usrData)=0
Callback which is called for every task message received by this entity.
virtual void sendToNet(DtVrfObjectMessage *msg)=0
Call this to put a message on the net.
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
virtual void addRadioMessageCallback(const DtAdminContentMessageType &type, DtMessageCallbackFcn fcn, void *usr)=0
Define constants for types of tasks, sets, admin messages, reports, and sim commands (all sent via ra...
virtual void addReportMessageCallback(DtMessageCallbackFcn fcn, void *usrData)=0
Callback which is called for every report message received by this entity.
The base class for all messages to/from a specific DtVrfObject. Various subclasses of this class will...
Definition: vrfObjectMessage.h:30
DtVrfObjectCommunicationInterface * myCommInterface
Definition: compatibilityRadio.h:161
DtSimRadio & operator=(const DtSimRadio &orig)
assignment operator not implemented.
std::pair< DtMessageCallbackFcn, void * > DtOldStyleCallbackInfo
Definition: compatibilityRadio.h:142
std::list< DtOldStyleCallbackInfo * > DtOldStyleCallbackInfoList
Definition: compatibilityRadio.h:163
void removeCommandRadioMessageCallback(const messageType &mType, DtMessageCallbackFcn fcn, void *usr)
Definition: compatibilityRadio.h:100
The central class of a DtLocalObject for all communications to and from the object. This class manages all communications on a specific DtLocalObject, though both simulation internal communication, and communication though the simulated radios of the object. All communication is done though the use of the DtVrfObjectMessage class and its subclasses. Callbacks can be registered on this interface which will be called on receipt of a message by this entity. Messages can be sent from this entity by using the message sending functions. These messages may be sent though the SimInternal message mechanism, or the radio message system. Radios will not exist until createRadiosFromDescriptorList() or createRadiosFromDescriptorList(const DtRadioDescriptorList&amp; descList) is called.
Definition: vrfObjectCommunicationInterface.h:40
void addMessageCallback(const messageType &mType, DtMessageCallbackFcn fcn, void *usr)
//! Add/remove corresponding callbacks with the DtVrfObjectCommunicationInterface. //
Definition: compatibilityRadio.h:75
DtCompatibilityRadio.
Definition: compatibilityRadio.h:30
void removeMessageCallback(const messageType &mType, DtMessageCallbackFcn fcn, void *usr)
//! Add/remove corresponding callbacks with the DtVrfObjectCommunicationInterface. //
Definition: compatibilityRadio.h:82
virtual int commandChannel() const
Does nothing. Provided for compile compatibility only.
Definition: compatibilityRadio.h:63
DtCallbackList< DtSimMessage * >::DtCallbackFunctionType DtMessageCallbackFcn
Message callback function signature.
Definition: messageExecutive.h:21
A locally simulated VRF object. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)