VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
radioReceiverStateComponent.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
11 #include "vrfutil/rwUUID.h"
12 #include <legionStandardOM/sets/readRadioReceiverRepository.hpp>
13 #include <legionStandardOM/sets/writeRadioReceiverRepository.hpp>
14 
15 namespace makVrf
16 {
18  {
20  : myHostId(DtUUID::nullUUID())
21  , myTransmitterId(DtUUID::nullUUID())
22  , myReceiverState(0)
23  , myReceivedPower(0)
24  , myRadioId(0)
25  {
26  }
27 
29  : myHostId(orig.myHostId)
30  , myTransmitterId(orig.myTransmitterId)
31  , myReceiverState(orig.myReceiverState)
32  , myReceivedPower(orig.myReceivedPower)
33  , myRadioId(orig.myRadioId)
34  {
35  }
36 
38  {
39  myHostId = orig.myHostId;
40  myTransmitterId = orig.myTransmitterId;
41  myReceivedPower = orig.myReceivedPower;
42  myReceiverState = orig.myReceiverState;
43  myRadioId = orig.myRadioId;
44 
45  return *this;
46  }
47 
48  DEFINE_ACCESSOR_MUTATOR(DtUUID, hostId, HostId)
49  DEFINE_ACCESSOR_MUTATOR(DtUUID, transmitterId, TransmitterId)
50  DEFINE_ACCESSOR_MUTATOR(unsigned int, receiverState, ReceiverState)
51  DEFINE_ACCESSOR_MUTATOR(UInt64, radioId, RadioId)
52  DEFINE_ACCESSOR_MUTATOR(float, receivedPower, ReceivedPower)
53 
54  protected:
55  DtUUID myHostId;
56  DtUUID myTransmitterId;
57  unsigned int myReceiverState;
58  float myReceivedPower;
59  UInt64 myRadioId;
60  };
61 
65  {
66  public:
68 
70  : DtFrameStateInterface(storage)
71  {
72  }
73 
75  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(DtUUID, transmitterId, TransmitterId)
76  UNDEFINED_RETURNVALUE_ACCESSOR_MUTATOR(unsigned int, receiverState, ReceiverState)
78  UNDEFINED_RETURNVALUE_ACCESSOR_MUTATOR(float, receivedPower, ReceivedPower)
79  };
80 
83  {
84  public:
87 
88  const DtRadioReceiverStateComponentData& frameState() const { return myData; };
90 
91  const DtUUID hostId() const;
92 
93  const DtUUID& transmitterId() const;
94  void setTransmitterId(const DtUUID&);
95 
96  const unsigned int receiverState() const;
97  void setReceiverState(const unsigned int&);
98 
99  const UInt64 radioId() const;
100  void setRadioId(const UInt64&);
101 
102  const float receivedPower() const;
103  void setReceivedPower(const float&);
104 
106  virtual void makeWritable();
107 
109  virtual void makeReadOnly();
110 
111  Legion::WriteStateInstance writeStateInstance() override;
112  virtual void updateStateData(DtStateData*) override;
113 
114  void cleanupWriteState();
115  void setPublishingOnLegionNetwork(bool b);
116 
117  protected:
119  LOM::WriteRadioReceiverRepository myWriteRadioReceiverRepository;
122  };
123 
126  {
127  public:
130 
131  const DtRadioReceiverStateComponentData& frameState() const { return myData; };
132 
133  const DtUUID hostId() const;
134  const DtUUID& transmitterId() const;
135  const unsigned int receiverState() const;
136  const UInt64 radioId() const;
137  const float receivedPower() const;
138 
139  bool readComponentValid() const;
140  bool findReadComponent();
141 
142  virtual void updateStateData(DtStateData*) override;
143 
144  protected:
147  {
148  myData = data;
149  }
150  virtual void handleDataUpdated();
151 
152  protected:
154  LOM::ReadRadioReceiverRepository myReadRadioReceiverRepository;
157  };
158 
162  {
163  public:
165 
166  bool isDoubleBuffered() { return true; };
167  const DtFrameStateInterface* currentFrameState() const { return &myCurrentFrameState; }
168  virtual DtFrameStateInterface* nextFrameState() { return &myNextFrameState; };
169  virtual const DtFrameStateInterface* nextFrameState() const { return &myNextFrameState; };
170 
172  {
173  if (myNextFrameState.isWritable())
174  {
175  myCurrentFrameState.advanceFrame(myNextFrameState.frameState());
176  }
177  myCurrentFrameState.emitComponentUpdated();
178  }
179 
181  virtual bool forceAdvance();
182 
184  virtual void firstFrameAdvance() override;
185 
187  {
188  myCurrentFrameState.updateStateData(sd);
189  myNextFrameState.updateStateData(sd);
190  }
191 
192  virtual void aboutToBeDeleted() override
193  {
195  myCurrentFrameState.aboutToBeDeleted();
196  myNextFrameState.aboutToBeDeleted();
197  }
198 
199  virtual void completeSetup() override;
200  virtual void removeAdditionalStateComponents() override;
201  virtual void setPublishingOnLegionNetwork(bool b) override;
202 
203  protected:
207  };
208 
212 }
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
DtStateComponentCreator< DtRadioReceiverStateComponentImplementation > DtRadioReceiverStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: radioReceiverStateComponent.h:211
virtual void aboutToBeDeleted() override
Definition: radioReceiverStateComponent.h:192
DtRadioReceiverStateComponentNextFrame myNextFrameState
Definition: radioReceiverStateComponent.h:205
const DtRadioReceiverStateComponentData & frameState() const
Definition: radioReceiverStateComponent.h:131
float myReceivedPower
Definition: radioReceiverStateComponent.h:58
UInt64 myRadioId
Definition: radioReceiverStateComponent.h:59
bool myFoundComponent
Definition: radioReceiverStateComponent.h:206
bool isDoubleBuffered()
Definition: radioReceiverStateComponent.h:166
DtRadioReceiverStateComponentData(const DtRadioReceiverStateComponentData &orig)
Definition: radioReceiverStateComponent.h:28
Definition: stateComponent.h:257
DtUUID myTransmitterId
Definition: radioReceiverStateComponent.h:56
const DtFrameStateInterface * currentFrameState() const
Definition: radioReceiverStateComponent.h:167
2) Define the next frame class. This will be used for write access.
Definition: radioReceiverStateComponent.h:82
3) Define the current frame class. This will be used for read access.
Definition: radioReceiverStateComponent.h:125
#define UNDEFINED_RETURNVALUE_ACCESSOR(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:31
Contains the DtUUID class declaration.
DtRadioReceiverStateComponentData myData
Definition: radioReceiverStateComponent.h:118
DtRadioReceiverStateComponentData()
Definition: radioReceiverStateComponent.h:19
const DtRadioReceiverStateComponentData & frameState() const
Definition: radioReceiverStateComponent.h:88
virtual DtFrameStateInterface * nextFrameState()
Definition: radioReceiverStateComponent.h:168
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:336
LOM::WriteRadioReceiverRepository myWriteRadioReceiverRepository
Definition: radioReceiverStateComponent.h:119
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:219
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:370
LOM::ReadRadioReceiverRepository myReadRadioReceiverRepository
Definition: radioReceiverStateComponent.h:154
void advanceFrame(const DtRadioReceiverStateComponentData &data)
Definition: radioReceiverStateComponent.h:146
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: radioReceiverStateComponent.h:161
void updateStateData(DtStateData *sd)
Implement to update data storage to the new state data.
Definition: radioReceiverStateComponent.h:186
#define UNDEFINED_RETURNVALUE_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:53
virtual void aboutToBeDeleted()
DtStateData * myStateData
Definition: radioReceiverStateComponent.h:120
Definition: radioReceiverStateComponent.h:17
DtStateData * myStateData
Definition: radioReceiverStateComponent.h:156
void updateDataStorage()
Implement to update data storage. Called from advanceFrame.
Definition: radioReceiverStateComponent.h:171
DtRadioReceiverStateComponentData & operator=(const DtRadioReceiverStateComponentData &orig)
Definition: radioReceiverStateComponent.h:37
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
1) Define the interface class that will be used to represent the next and curent frames. The UNDEFINED_ macros are convenience macros that will define methods that throw exceptions (until they are implemented)
Definition: radioReceiverStateComponent.h:64
#define DEFINE_ACCESSOR_MUTATOR(ReturnType, Accessor, Mutator)
Definition: doubleBufferedDataStorage.h:23
DtUUID myHostId
Definition: radioReceiverStateComponent.h:55
#define DT_DLL_vrfStateData
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfStateDataDefines.h:26
bool myPublishingOnLegionNetwork
Definition: radioReceiverStateComponent.h:121
virtual const DtFrameStateInterface * nextFrameState() const
Definition: radioReceiverStateComponent.h:169
DtRadioReceiverStateComponentData & frameState()
Definition: radioReceiverStateComponent.h:89
Contains the DtStateComponent class declaration.
DtRadioReceiverStateComponentData myData
Definition: radioReceiverStateComponent.h:153
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:282
unsigned int myReceiverState
Definition: radioReceiverStateComponent.h:57
DtRadioReceiverStateComponentCurrentFrame myCurrentFrameState
Definition: radioReceiverStateComponent.h:204
int myCallbackHandle
Definition: radioReceiverStateComponent.h:155

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)