VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
radioManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
6 #pragma once
7 
8 #include <makRadio/export.h>
9 #include <makRadio/radio.h>
11 #include <vlutil/vlLockfreeQueue.h>
12 #include <vlutil/vlTime.h>
13 #include <vlpi/entityIdentifier.h>
14 #include <vrfutil/rwUUID.h>
15 
16 #include <vector>
17 #include <list>
18 
19 class DtFilename;
20 
21 namespace makAudio
22 {
23  class DtAudioBuffer;
24 }
25 
26 namespace makRadio
27 {
28  class DtRadio;
29  class DtRadioInterface;
30  class StreamAudioMessage;
31  class ControlMessage;
32  class ConfigureRadioMessage;
33  class RemoveRadioMessage;
35 
36  typedef DtLockfreeQueue<ControlMessage*> DtControlQueue;
37  typedef DtLockfreeQueue<StreamAudioMessage*> DtStreamQueue;
38 
40  {
41  DtControlQueue* controlQueue; //handed in net thread
42  DtStreamQueue* toNetQueue; //handled in net thread
43  DtStreamQueue* fromNetQueue; //handled in main thread
44  };
45 
47  {
48  public:
50  virtual ~DtRadioManager();
51 
52  virtual void init(const DtFilename&);
53  virtual void init(const DtRadioSystemInitializer& init, const std::string& captureDevice = "");
54  virtual void tick();
55  virtual void shutdown();
56 
58  virtual void addReference();
59 
61  virtual void removeReference();
62 
64  virtual void setEnabled(bool enable);
65 
69  virtual void setSystemEnabled(bool b, bool save = true);
70  virtual bool systemEnabled() const;
71 
72  virtual void registerConnection(DtRadioConnectionBundle* connection);
73  virtual void unregisterConnection(DtRadioConnectionBundle* connection);
74 
75  virtual void audioOut(makAudio::DtAudioBuffer* buffer);
76 
78  virtual void setActiveEntity(const DtUUID& entityId, const DtEntityIdentifier& id);
79  virtual const DtUUID& activeEntity() const;
80  virtual const DtEntityIdentifier& vrlinkEntityId() const;
81 
82  virtual DtRadio* findRadio(int idx);
83 
86  virtual void setRadios(const std::vector<DtRwRadioState>&, bool save = true);
87 
88  virtual std::vector<DtRadio*>& radios() {return myRadios;}
89  virtual DtRadio* createRadio(DtRwRadioState& state);
90  virtual void removeRadio(int idx);
91  virtual void removeRadio(DtRadio* radio);
92  virtual void clearRadios();
93 
94  virtual void sendRadioStreamMessage(StreamAudioMessage* msg);
95  virtual void sendControlMessage(ControlMessage* msg);
96 
97  virtual bool changeCaptureDevice(const std::string&);
98 
99  virtual int nextRadioId();
100 
101  virtual float voxThreshold() const;
102  virtual void setVoxThreshold(float val);
103 
104  virtual bool jammersEnabled() const;
105  virtual void setJammersEnabled(bool set);
106 
108  virtual bool setAutoSave(bool);
109  virtual bool autoSave() const;
110 
113  virtual void setSampleRate(int, bool save = true, bool reinitialize = true);
114  virtual int sampleRate() const;
115 
118  virtual void setFormat(const std::string&, bool save = true, bool reinitialize = true);
119  virtual std::string format() const;
120 
125  virtual double captureFrequency() const;
126  virtual void setCaputreFrequency(double hertz, bool save = true);
127 
129  virtual bool jammerEnabled(DtRadio*) const;
130 
132  virtual void changeJammerFrequency(double oldFrequency, double newFrequency);
133 
135  virtual bool setJammed(DtRadio*, bool);
136 
138  virtual void clearJammers();
139 
140  virtual DtRadio* findCurrentRadio();
141  virtual void setCurrentRadio(DtRadio* radio);
142 
143  protected:
144  virtual void configureRadios(const DtRadioSystemInitializer::Radios& radios);
145  virtual void recreateRadios();
146  virtual void handleNetStreamMessage(StreamAudioMessage* msg);
147 
148  std::vector<DtRwRadioState> myRadioInit;
149  std::vector<DtRadio*> myRadios;
150 
153  std::map<double, DtRadio*> myJammers;
154  unsigned int myNextRadioId;
155 
157  DtEntityIdentifier myVrlinkEntityId;
158  typedef std::list<DtRadioConnectionBundle*> ConnectionList;
160 
163 
166 
168 
171 
173  bool myEnabled;
175 
177  };
178 }
DtUUID myActiveEntityId
Definition: radioManager.h:156
DtClock myClock
Definition: radioManager.h:176
UUID is a unique ID wrapper class.
Definition: uuid.h:59
DtControlQueue * controlQueue
Definition: radioManager.h:41
std::map< double, DtRadio * > myJammers
These are not cleared out when the radios are. Only cleared when the manager is deleted or they are t...
Definition: radioManager.h:153
DtStreamQueue * fromNetQueue
Definition: radioManager.h:43
Initializer for the radio system (including radios)
Definition: radioSystemInitializer.h:23
DtLockfreeQueue< StreamAudioMessage * > DtStreamQueue
Definition: radioManager.h:37
std::list< DtRadioConnectionBundle * > ConnectionList
Definition: radioManager.h:158
std::vector< DtRadio * > myRadios
Definition: radioManager.h:149
int myReferenceCount
Definition: radioManager.h:167
DtEntityIdentifier myVrlinkEntityId
Definition: radioManager.h:157
bool myJammersEnabled
Definition: radioManager.h:162
Definition: radioManager.h:39
double myCaptureFrequency
Definition: radioManager.h:164
Definition: radio.h:35
Contains the DtUUID class declaration.
Definition: radioManager.h:46
bool myAutoSave
Definition: radioManager.h:172
unsigned int myNextRadioId
Definition: radioManager.h:154
virtual std::vector< DtRadio * > & radios()
Definition: radioManager.h:88
#define DT_DLL_MAKRADIO
Get proper local export symbol.
Definition: export.h:17
DtRadioSystemInitializer * myRadioSystemInitializer
Definition: radioManager.h:170
bool myEnabled
Definition: radioManager.h:173
float myVoxThreshold
Definition: radioManager.h:161
Definition: controlMessage.h:13
std::vector< DtRwRadioState > myRadioInit
Definition: radioManager.h:148
Initializer for a radio state reader/writer.
Definition: rwRadioState.h:96
DtRadio * myCurrentRadio
Definition: radioManager.h:169
Definition: changeEntity.h:15
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtStreamQueue * toNetQueue
Definition: radioManager.h:42
bool mySystemEnabled
Definition: radioManager.h:174
double myNextCaptureTime
Definition: radioManager.h:165
ConnectionList myConnections
Definition: radioManager.h:159
Definition: streamAudio.h:16
DtLockfreeQueue< ControlMessage * > DtControlQueue
Definition: radioManager.h:34

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)