VR-Forces 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:
86  virtual ~DtRadioReceiverStateComponentNextFrame() override;
87 
88  const DtRadioReceiverStateComponentData& frameState() const { return myData; };
90 
91  virtual const DtUUID hostId() const override;
92 
93  virtual const DtUUID& transmitterId() const override;
94  virtual void setTransmitterId(const DtUUID&) override;
95 
96  virtual const unsigned int receiverState() const override;
97  virtual void setReceiverState(const unsigned int&) override;
98 
99  virtual const UInt64 radioId() const override;
100  virtual void setRadioId(const UInt64&) override;
101 
102  virtual const float receivedPower() const override;
103  virtual void setReceivedPower(const float&) override;
104 
106  virtual void makeWritable() override;
107 
109  virtual void makeReadOnly() override;
110 
111  virtual 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;
121  };
122 
125  {
126  public:
128  virtual ~DtRadioReceiverStateComponentCurrentFrame() override;
129 
130  const DtRadioReceiverStateComponentData& frameState() const { return myData; };
131 
132  virtual const DtUUID hostId() const override;
133  virtual const DtUUID& transmitterId() const override;
134  virtual const unsigned int receiverState() const override;
135  virtual const UInt64 radioId() const override;
136  virtual const float receivedPower() const override;
137 
138  bool readComponentValid() const;
139  bool findReadComponent();
140 
141  virtual void updateStateData(DtStateData*) override;
142 
143  protected:
146  {
147  myData = data;
148  }
149  virtual void handleDataUpdated();
150 
151  protected:
153  LOM::ReadRadioReceiverRepository myReadRadioReceiverRepository;
155  };
156 
160  {
161  public:
163 
164  bool isDoubleBuffered() { return true; };
165  virtual const DtFrameStateInterface* currentFrameState() const override { return &myCurrentFrameState; }
166  virtual DtFrameStateInterface* nextFrameState() override { return &myNextFrameState; };
167  virtual const DtFrameStateInterface* nextFrameState() const override { return &myNextFrameState; };
168 
169  virtual void updateDataStorage() override
170  {
171  if (myNextFrameState.isWritable())
172  {
173  myCurrentFrameState.advanceFrame(myNextFrameState.frameState());
174  }
175  myCurrentFrameState.emitComponentUpdated();
176  }
177 
179  virtual bool forceAdvance() override;
180 
182  virtual void firstFrameAdvance() override;
183 
184  virtual void updateStateData(DtStateData* sd) override
185  {
186  myCurrentFrameState.updateStateData(sd);
187  myNextFrameState.updateStateData(sd);
188  }
189 
190  virtual void aboutToBeDeleted() override
191  {
193  myCurrentFrameState.aboutToBeDeleted();
194  myNextFrameState.aboutToBeDeleted();
195  }
196 
197  virtual void completeSetup() override;
198  virtual void removeAdditionalStateComponents() override;
199  virtual void setPublishingOnLegionNetwork(bool b) override;
200 
201  protected:
205  };
206 
210 }
UUID is a unique ID wrapper class.
Definition: uuid.h:59
DtStateComponentCreator< DtRadioReceiverStateComponentImplementation > DtRadioReceiverStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: radioReceiverStateComponent.h:209
virtual void aboutToBeDeleted() override
Definition: radioReceiverStateComponent.h:190
DtRadioReceiverStateComponentNextFrame myNextFrameState
Definition: radioReceiverStateComponent.h:203
const DtRadioReceiverStateComponentData & frameState() const
Definition: radioReceiverStateComponent.h:130
float myReceivedPower
Definition: radioReceiverStateComponent.h:58
UInt64 myRadioId
Definition: radioReceiverStateComponent.h:59
bool myFoundComponent
Definition: radioReceiverStateComponent.h:204
bool isDoubleBuffered()
Definition: radioReceiverStateComponent.h:164
DtRadioReceiverStateComponentData(const DtRadioReceiverStateComponentData &orig)
Definition: radioReceiverStateComponent.h:28
Definition: stateComponent.h:269
DtUUID myTransmitterId
Definition: radioReceiverStateComponent.h:56
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:124
virtual void updateStateData(DtStateData *sd) override
Implement to update data storage to the new state data.
Definition: radioReceiverStateComponent.h:184
#define UNDEFINED_RETURNVALUE_ACCESSOR(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:31
Contains the DtUUID class declaration.
DtRadioReceiverStateComponentData myData
Definition: radioReceiverStateComponent.h:118
unsigned long long UInt64
Definition: stateDataTypes.h:17
DtRadioReceiverStateComponentData()
Definition: radioReceiverStateComponent.h:19
const DtRadioReceiverStateComponentData & frameState() const
Definition: radioReceiverStateComponent.h:88
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
virtual DtFrameStateInterface * nextFrameState() override
Definition: radioReceiverStateComponent.h:166
LOM::WriteRadioReceiverRepository myWriteRadioReceiverRepository
Definition: radioReceiverStateComponent.h:119
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:231
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:384
LOM::ReadRadioReceiverRepository myReadRadioReceiverRepository
Definition: radioReceiverStateComponent.h:153
void advanceFrame(const DtRadioReceiverStateComponentData &data)
Definition: radioReceiverStateComponent.h:145
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: radioReceiverStateComponent.h:159
#define UNDEFINED_RETURNVALUE_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:53
virtual void aboutToBeDeleted()
Definition: radioReceiverStateComponent.h:17
DtRadioReceiverStateComponentData & operator=(const DtRadioReceiverStateComponentData &orig)
Definition: radioReceiverStateComponent.h:37
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
virtual const DtFrameStateInterface * nextFrameState() const override
Definition: radioReceiverStateComponent.h:167
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
virtual const DtFrameStateInterface * currentFrameState() const override
Definition: radioReceiverStateComponent.h:165
DtUUID myHostId
Definition: radioReceiverStateComponent.h:55
virtual void updateDataStorage() override
Implement to update data storage. Called from advanceFrame.
Definition: radioReceiverStateComponent.h:169
#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:120
DtRadioReceiverStateComponentData & frameState()
Definition: radioReceiverStateComponent.h:89
Contains the DtStateComponent class declaration.
DtRadioReceiverStateComponentData myData
Definition: radioReceiverStateComponent.h:152
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:294
unsigned int myReceiverState
Definition: radioReceiverStateComponent.h:57
DtRadioReceiverStateComponentCurrentFrame myCurrentFrameState
Definition: radioReceiverStateComponent.h:202
int myCallbackHandle
Definition: radioReceiverStateComponent.h:154

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)