VR-Engage  2.2
Loading...
Searching...
No Matches
radioProcessor.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright (c) 2025 MAK Technologies
3 * All rights reserved.
4 *****************************************************************************/
5
6//! \file radioProcessor.h
7//! \ingroup vreMakRadio
8//! \brief Provides radio communication processing components for VREngage
9//!
10//! This file defines the radio processor classes and factory components that
11//! handle radio communications within VREngage simulations. It includes the
12//! DtRadioProcessor which processes radio messages and manages radio state,
13//! along with factory classes for creating specialized radio components.
14
15#pragma once
16
17#include <vreMakRadio/export.h>
18#include <makRadioNet/radioNetManager.h>
19#include <vrvUtil/DtVirtualBaseClass.h>
20#include <vrvUtil/DtSignalConnectionManager.h>
21
22namespace makVrv
23{
24class DtBaseConnection;
25}
26
27namespace makRadio
28{
29class DtJammingSignalFilter;
30}
31
32class DtCommunicationManager;
33
34namespace makVre
35{
36//! \brief Radio processor for handling radio communications in VREngage
37//!
38//! The DtRadioProcessor class manages radio communications for a specific connection,
39//! processing incoming and outgoing radio messages and maintaining radio state.
40//! It integrates with the radio network manager to provide seamless radio
41//! communications within the simulation environment.
42class DT_DLL_VREMAKRADIO DtRadioProcessor : public makVrv::DtVirtualBaseClass
43{
44public:
45 //! \brief Constructor for the radio processor
46 //! \param conn The protocol-specific base connection
47 //! \param m The communication manager to use
48 //!
49 //! Creates a new radio processor for the specified connection and
50 //! associates it with the given communication manager.
51 DtRadioProcessor(makVrv::DtBaseConnection& conn, DtCommunicationManager* m);
52
53 //! \brief Virtual destructor
54 //!
55 //! Properly cleans up resources used by the radio processor.
56 virtual ~DtRadioProcessor() override;
57
58 //! \brief Registers a processor instance with a specific connection
59 //! \param conn The connection to register with
60 //! \param instance The processor instance to register
61 //!
62 //! This static method registers a radio processor instance with a specific
63 //! connection, allowing it to be found later using findInstance().
64 static void registerInstance(makVrv::DtBaseConnection& conn, DtRadioProcessor* instance);
65
66 //! \brief Unregisters a processor instance from a connection
67 //! \param conn The connection to unregister from
68 //!
69 //! Removes any radio processor instance associated with the specified connection.
70 static void unregisterInstance(makVrv::DtBaseConnection& conn);
71
72 //! \brief Finds a registered processor instance for a connection
73 //! \param conn The connection to find a processor for
74 //! \return Pointer to the processor instance or nullptr if not found
75 //!
76 //! Looks up the radio processor instance associated with the specified connection.
77 static DtRadioProcessor* findInstance(makVrv::DtBaseConnection& conn);
78
79 //! \brief Gets the radio network manager associated with this processor
80 //! \return Pointer to the radio network manager
81 //!
82 //! Returns the radio network manager that this processor uses for radio communications.
83 makRadio::DtRadioNetManager* manager() { return myManager; }
84
85protected:
86 //! \brief Handles post-tick processing
87 //!
88 //! This method is called after each simulation tick to process radio communications.
90
91protected:
92 //! \brief Signal connection manager for handling event connections
93 makVrv::DtSignalConnectionManager myConnections;
94
95 //! \brief Pointer to the radio network manager
96 makRadio::DtRadioNetManager* myManager;
97};
98
99//! \brief Factory class for creating radio processor instances
100//!
101//! This class serves as a factory for creating DtRadioProcessor instances.
102//! Subclasses must implement the create() method to provide specific processor implementations.
103class DT_DLL_VREMAKRADIO DtRadioProcessorCreator : public makVrv::DtVirtualBaseClass
104{
105public:
106 //! \brief Constructor
107 //! \param conn The connection the processor will use
108 //!
109 //! Creates a radio processor creator associated with the specified connection.
110 DtRadioProcessorCreator(makVrv::DtBaseConnection& conn);
111
112 //! \brief Gets the singleton creator instance for a connection
113 //! \param conn The connection to get a creator for
114 //! \return Reference to the creator instance
115 //!
116 //! Returns the singleton creator instance for the specified connection.
117 static DtRadioProcessorCreator& instance(makVrv::DtBaseConnection& conn);
118
119 //! \brief Registers a creator instance with a specific connection
120 //! \param conn The connection to register with
121 //! \param instance The creator instance to register
122 //!
123 //! This static method registers a creator instance with a specific connection.
124 //! The creator must be registered with the same connection it was created with.
125 static void registerInstance(makVrv::DtBaseConnection& conn, DtRadioProcessorCreator* instance);
126
127 //! \brief Creates a new radio processor instance
128 //! \param manager The communication manager to use with the processor
129 //! \return Pointer to the newly created radio processor
130 //!
131 //! Creates a new radio processor instance using the specified communication manager.
132 //! This is a virtual method that must be implemented by subclasses.
133 virtual DtRadioProcessor* create(DtCommunicationManager* manager);
134
135protected:
136 //! \brief Reference to the connection this creator is associated with
137 makVrv::DtBaseConnection& myVrlConn;
138};
139
140//! \brief Factory class for creating radio network manager instances
141//!
142//! This class serves as a factory for creating DtRadioNetManager instances.
143//! Subclasses must implement the create() method to provide specific manager implementations.
144class DT_DLL_VREMAKRADIO DtRadioNetManagerCreator : public makVrv::DtVirtualBaseClass
145{
146public:
147 //! \brief Default constructor
148 //!
149 //! Creates a radio network manager creator.
151
152 //! \brief Gets the singleton creator instance for a connection
153 //! \param conn The connection to get a creator for
154 //! \return Reference to the creator instance
155 //!
156 //! Returns the singleton creator instance for the specified connection.
157 static DtRadioNetManagerCreator& instance(makVrv::DtBaseConnection& conn);
158
159 //! \brief Registers a creator instance with a specific connection
160 //! \param conn The connection to register with
161 //! \param instance The creator instance to register
162 //!
163 //! This static method registers a creator instance with a specific connection.
164 static void registerInstance(makVrv::DtBaseConnection& conn, DtRadioNetManagerCreator* instance);
165
166 //! \brief Creates a new radio network manager instance
167 //! \param manager The communication manager to use with the manager
168 //! \return Pointer to the newly created radio network manager
169 //!
170 //! Creates a new radio network manager instance using the specified communication manager.
171 //! This is a virtual method that must be implemented by subclasses.
172 virtual makRadio::DtRadioNetManager* create(DtCommunicationManager* manager);
173};
174
175//! \brief Factory class for creating jamming signal filter instances
176//!
177//! This class serves as a factory for creating DtJammingSignalFilter instances.
178//! Subclasses must implement the create() method to provide specific filter implementations.
179class DT_DLL_VREMAKRADIO DtJammingSignalFilterCreator : public makVrv::DtVirtualBaseClass
180{
181public:
182 //! \brief Default constructor
183 //!
184 //! Creates a jamming signal filter creator.
186
187 //! \brief Gets the singleton creator instance for a connection
188 //! \param conn The connection to get a creator for
189 //! \return Reference to the creator instance
190 //!
191 //! Returns the singleton creator instance for the specified connection.
192 static DtJammingSignalFilterCreator& instance(makVrv::DtBaseConnection& conn);
193
194 //! \brief Registers a creator instance with a specific connection
195 //! \param conn The connection to register with
196 //! \param instance The creator instance to register
197 //!
198 //! This static method registers a creator instance with a specific connection.
199 static void registerInstance(makVrv::DtBaseConnection& conn, DtJammingSignalFilterCreator* instance);
200
201 //! \brief Creates a new jamming signal filter instance
202 //! \param manager The radio network manager to use with the filter
203 //! \return Pointer to the newly created jamming signal filter
204 //!
205 //! Creates a new jamming signal filter instance using the specified radio network manager.
206 //! This is a virtual method that must be implemented by subclasses.
207 virtual makRadio::DtJammingSignalFilter* create(makRadio::DtRadioNetManager* manager);
208};
209} // namespace makVre
static DtJammingSignalFilterCreator & instance(makVrv::DtBaseConnection &conn)
Gets the singleton creator instance for a connection.
DtJammingSignalFilterCreator()
Default constructor.
static void registerInstance(makVrv::DtBaseConnection &conn, DtJammingSignalFilterCreator *instance)
Registers a creator instance with a specific connection.
virtual makRadio::DtJammingSignalFilter * create(makRadio::DtRadioNetManager *manager)
Creates a new jamming signal filter instance.
static DtRadioNetManagerCreator & instance(makVrv::DtBaseConnection &conn)
Gets the singleton creator instance for a connection.
virtual makRadio::DtRadioNetManager * create(DtCommunicationManager *manager)
Creates a new radio network manager instance.
DtRadioNetManagerCreator()
Default constructor.
static void registerInstance(makVrv::DtBaseConnection &conn, DtRadioNetManagerCreator *instance)
Registers a creator instance with a specific connection.
DtRadioProcessorCreator(makVrv::DtBaseConnection &conn)
Constructor.
makVrv::DtBaseConnection & myVrlConn
Reference to the connection this creator is associated with.
Definition radioProcessor.h:137
virtual DtRadioProcessor * create(DtCommunicationManager *manager)
Creates a new radio processor instance.
static void registerInstance(makVrv::DtBaseConnection &conn, DtRadioProcessorCreator *instance)
Registers a creator instance with a specific connection.
static DtRadioProcessorCreator & instance(makVrv::DtBaseConnection &conn)
Gets the singleton creator instance for a connection.
Radio processor for handling radio communications in VREngage.
Definition radioProcessor.h:43
makRadio::DtRadioNetManager * manager()
Gets the radio network manager associated with this processor.
Definition radioProcessor.h:83
makRadio::DtRadioNetManager * myManager
Pointer to the radio network manager.
Definition radioProcessor.h:96
static DtRadioProcessor * findInstance(makVrv::DtBaseConnection &conn)
Finds a registered processor instance for a connection.
DtRadioProcessor(makVrv::DtBaseConnection &conn, DtCommunicationManager *m)
Constructor for the radio processor.
static void registerInstance(makVrv::DtBaseConnection &conn, DtRadioProcessor *instance)
Registers a processor instance with a specific connection.
static void unregisterInstance(makVrv::DtBaseConnection &conn)
Unregisters a processor instance from a connection.
void handlePostTick()
Handles post-tick processing.
makVrv::DtSignalConnectionManager myConnections
Signal connection manager for handling event connections.
Definition radioProcessor.h:93
virtual ~DtRadioProcessor() override
Virtual destructor.
Export/import macros for vreMakRadio library.
#define DT_DLL_VREMAKRADIO
Definition export.h:23
Definition makRadio.h:23
Include export definitions for this library.
Definition glsVreMessageUtil.h:49
Definition appLauncherComponent.h:28