VR-Forces 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() override;
38 
39 private:
46 
47 public:
48  virtual bool init() override;
49 
51  virtual bool isCommand() const override;
52 
54 
55  virtual void sendToNet(DtVrfObjectMessage* msg) override;
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 override;
68 
70  virtual DtString type() const override;
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(
106  const DtAdminContentMessageType& type, DtMessageCallbackFcn fcn, void* usr) override;
107  virtual void removeRadioMessageCallback(
108  const DtAdminContentMessageType& type, DtMessageCallbackFcn fcn, void* usr) override;
109 
110  virtual void addRadioMessageCallback(
111  const DtSimReportMessageType& type, DtMessageCallbackFcn fcn, void* usr) override;
112  virtual void removeRadioMessageCallback(
113  const DtSimReportMessageType& type, DtMessageCallbackFcn fcn, void* usr) override;
114 
115  virtual void addRadioMessageCallback(const DtSimTaskMessageType& type, DtMessageCallbackFcn fcn, void* usr) override;
116  virtual void removeRadioMessageCallback(
117  const DtSimTaskMessageType& type, DtMessageCallbackFcn fcn, void* usr) override;
118 
119  virtual void addRadioMessageCallback(const DtSetMessageType& type, DtMessageCallbackFcn fcn, void* usr) override;
120  virtual void removeRadioMessageCallback(const DtSetMessageType& type, DtMessageCallbackFcn fcn, void* usr) override;
121 
123 
124  virtual void addTaskMessageCallback(DtMessageCallbackFcn fcn, void* usrData) override;
125  virtual void removeTaskMessageCallback(DtMessageCallbackFcn fcn, void* usrData) override;
127 
129 
130  virtual void addSetDataMessageCallback(DtMessageCallbackFcn fcn, void* usrData) override;
131  virtual void removeSetDataMessageCallback(DtMessageCallbackFcn fcn, void* usrData) override;
133 
135 
136  virtual void addReportMessageCallback(DtMessageCallbackFcn fcn, void* usrData) override;
137  virtual void removeReportMessageCallback(DtMessageCallbackFcn fcn, void* usrData) override;
139 
140  static DtSimRadio* create(DtLocalObject* vrfObject);
141 
143  static DtCompatibilityRadio* isCommandChannelRadio(DtSimRadio* radio);
144 
145 
146 protected:
147  typedef std::pair<DtMessageCallbackFcn, void*> DtOldStyleCallbackInfo;
148 
151  static void oldStyleConverterCallback(const DtVrfObjectMessage* msg, void* usr);
152 
155  virtual DtOldStyleCallbackInfo* addOldStyleCallbackInfo(DtMessageCallbackFcn fcn, void* usr);
156 
159  virtual DtOldStyleCallbackInfo* findOldStyleCallbackInfo(DtMessageCallbackFcn fcn, void* usr);
160 
163  virtual void removeAndDeleteOldStyleCallbackInfo(DtOldStyleCallbackInfo* cbInfo);
164 
165 protected:
167 
168  typedef std::list<DtOldStyleCallbackInfo*> DtOldStyleCallbackInfoList;
170 };
DtOldStyleCallbackInfoList myOldStyleCallbackInfoList
Definition: compatibilityRadio.h:169
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:166
DtSimRadio & operator=(const DtSimRadio &orig)
assignment operator not implemented.
std::pair< DtMessageCallbackFcn, void * > DtOldStyleCallbackInfo
Definition: compatibilityRadio.h:147
std::list< DtOldStyleCallbackInfo * > DtOldStyleCallbackInfoList
Definition: compatibilityRadio.h:168
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.
Definition: localObject.h:98

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)