VR-Forces 4.8 Class Documentation
 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>
12 
13 #include <vector>
14 #include <list>
15 
16 class DtFilename;
17 
18 namespace makAudio
19 {
20  class DtAudioBuffer;
21 }
22 
23 namespace makRadio
24 {
25  class DtRadio;
26  class DtRadioInterface;
27  class StreamAudioMessage;
28  class ControlMessage;
29  class ConfigureRadioMessage;
30  class RemoveRadioMessage;
32 
35 
37  {
38  DtControlQueue* controlQueue; //handed in net thread
39  DtStreamQueue* toNetQueue; //handled in net thread
40  DtStreamQueue* fromNetQueue; //handled in main thread
41  };
42 
44  {
45  public:
47  virtual ~DtRadioManager();
48 
49  virtual void init(const DtFilename&);
50  virtual void init(const DtRadioSystemInitializer& init, const std::string& captureDevice = "");
51  virtual void tick();
52  virtual void shutdown();
53 
55  virtual void addReference();
56 
58  virtual void removeReference();
59 
61  virtual void setEnabled(bool enable);
62 
66  virtual void setSystemEnabled(bool b, bool save = true);
67  virtual bool systemEnabled() const;
68 
69  virtual void registerConnection(DtRadioConnectionBundle* connection);
70  virtual void unregisterConnection(DtRadioConnectionBundle* connection);
71 
72  virtual void audioOut(makAudio::DtAudioBuffer* buffer);
73 
75  virtual void setActiveEntity(const DtEntityIdentifier& entityId);
76  virtual DtEntityIdentifier activeEntity();
77 
78  virtual DtRadio* findRadio(int idx);
79 
82  virtual void setRadios(const std::vector<DtRwRadioState>&, bool save = true);
83 
84  virtual std::vector<DtRadio*>& radios() {return myRadios;}
85  virtual DtRadio* createRadio(DtRwRadioState& state);
86  virtual void removeRadio(int idx);
87  virtual void removeRadio(DtRadio* radio);
88  virtual void clearRadios();
89 
90  virtual void sendRadioStreamMessage(StreamAudioMessage* msg);
91  virtual void sendControlMessage(ControlMessage* msg);
92 
93  virtual bool changeCaptureDevice(const std::string&);
94 
95  virtual int nextRadioId();
96 
97  virtual float voxThreshold();
98  virtual void setVoxThreshold(float val);
99 
100  virtual bool jammersEnabled();
101  virtual void setJammersEnabled(bool set);
102 
104  virtual bool setAutoSave(bool);
105  virtual bool autoSave() const;
106 
109  virtual void setSampleRate(int, bool save = true, bool reinitialize = true);
110  virtual int sampleRate() const;
111 
114  virtual void setFormat(const std::string&, bool save = true, bool reinitialize = true);
115  virtual std::string format() const;
116 
121  virtual double captureFrequency() const;
122  virtual void setCaputreFrequency(double hertz, bool save = true);
123 
125  virtual bool jammerEnabled(DtRadio*) const;
126 
128  virtual void changeJammerFrequency(double oldFrequency, double newFrequency);
129 
131  virtual bool setJammed(DtRadio*, bool);
132 
134  virtual void clearJammers();
135 
136  virtual DtRadio* findCurrentRadio();
137  virtual void setCurrentRadio(DtRadio* radio);
138 
139  protected:
140  virtual void configureRadios(const DtRadioSystemInitializer::Radios& radios);
141  virtual void recreateRadios();
142  virtual void handleNetStreamMessage(StreamAudioMessage* msg);
143 
144  std::vector<DtRwRadioState> myRadioInit;
145  std::vector<DtRadio*> myRadios;
146 
149  std::map<double, DtRadio*> myJammers;
150  unsigned int myNextRadioId;
151 
152  DtEntityIdentifier myActiveEntityId;
153  typedef std::list<DtRadioConnectionBundle*> ConnectionList;
155 
158 
161 
163 
166 
168  bool myEnabled;
170  };
171 }
DtControlQueue * controlQueue
Definition: radioManager.h:38
std::map< double, DtRadio * > myJammers
These are not cleared out when the radios are.
Definition: radioManager.h:149
DtStreamQueue * fromNetQueue
Definition: radioManager.h:40
Initializer for the radio system (including radios)
Definition: radioSystemInitializer.h:23
std::list< DtRadioConnectionBundle * > ConnectionList
Definition: radioManager.h:153
std::vector< DtRadio * > myRadios
Definition: radioManager.h:145
makVrv::DtLocklessQueue< ControlMessage * > DtControlQueue
Definition: radioManager.h:31
int myReferenceCount
Definition: radioManager.h:162
bool myJammersEnabled
Definition: radioManager.h:157
makVrv::DtLocklessQueue< StreamAudioMessage * > DtStreamQueue
Definition: radioManager.h:34
Definition: radioManager.h:36
double myCaptureFrequency
Definition: radioManager.h:159
Definition: radio.h:34
DtLocklessQueue is a thread safe queue for single reader/single writer.
Definition: DtLocklessQueue.h:21
Definition: radioManager.h:43
bool myAutoSave
Definition: radioManager.h:167
unsigned int myNextRadioId
Definition: radioManager.h:150
virtual std::vector< DtRadio * > & radios()
Definition: radioManager.h:84
#define DT_DLL_MAKRADIO
Get proper local export symbol.
Definition: export.h:17
DtRadioSystemInitializer * myRadioSystemInitializer
Definition: radioManager.h:165
bool myEnabled
Definition: radioManager.h:168
float myVoxThreshold
Definition: radioManager.h:156
Definition: controlMessage.h:13
std::vector< DtRwRadioState > myRadioInit
Definition: radioManager.h:144
Initializer for a radio state reader/writer.
Definition: rwRadioState.h:95
DtRadio * myCurrentRadio
Definition: radioManager.h:164
Definition: changeEntity.h:15
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtStreamQueue * toNetQueue
Definition: radioManager.h:39
bool mySystemEnabled
Definition: radioManager.h:169
double myNextCaptureTime
Definition: radioManager.h:160
ConnectionList myConnections
Definition: radioManager.h:154
Definition: streamAudio.h:17
DtEntityIdentifier myActiveEntityId
Definition: radioManager.h:152

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)