VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
internalTemperatureStateComponent.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
10 #include <matrix/vlVector.h>
11 
12 namespace makVrf
13 {
15  {
18  {};
19 
21  {
23  }
24 
26  {
28 
29  return *this;
30  }
31 
32  DEFINE_ACCESSOR_MUTATOR(double, internalCoreTemperature, InternalCoreTemperature)
33 
34  protected:
36  };
37  const unsigned int InternalTemperatureStateComponent = 65;
38 
43  {
44  public:
45  DEFINE_STATE_COMPONENT_TYPE(InternalTemperatureStateComponent)
46 
48  : DtFrameStateInterface(storage)
49  {
50  }
51 
52  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(double, internalCoreTemperature, InternalCoreTemperature)
53  };
54 
57  {
58  public:
60 
63  const DtInternalTemperatureStateComponentData& frameState() const { return myData; };
65 
66  const double& internalCoreTemperature() const;
67  void setInternalCoreTemperature(const double&);
68 
70  virtual void makeWritable() {};
71 
73  virtual void makeReadOnly() {};
74 
75  protected:
76  DtStateData* myStateData;
78  };
79 
82  {
83  public:
86 
88  const DtInternalTemperatureStateComponentData& frameState() const { return myData; };
89 
90  const double& internalCoreTemperature() const;
91 
92  protected:
93  void completeSetup();
94  void updateVrfStateComponentParameters();
95 
96  void updateInternalTemperatureData();
97 
100  {
101  myData = data;
102  }
103 
104  protected:
105  boost::signals2::scoped_connection myVrfStateComponentChangedConnection;
106  boost::signals2::scoped_connection myCompleteSetupConnection;
109  };
110 
113  class DtInternalTemperatureStateComponentImplementation : public DtDoubleBufferedStateComponent<DtInternalTemperatureStateComponent>
114  {
115  public:
117 
118  bool isDoubleBuffered() { return true; };
119  const DtFrameStateInterface* currentFrameState() const { return &myCurrentFrameState; }
120  virtual DtFrameStateInterface* nextFrameState() { return &myNextFrameState; };
121  virtual const DtFrameStateInterface* nextFrameState() const { return &myNextFrameState; };
122 
124  {
125  if (myNextFrameState.isWritable())
126  {
127  myCurrentFrameState.advanceFrame(myNextFrameState.frameState());
128  }
129 
130  myCurrentFrameState.emitComponentUpdated();
131  }
132 
134  {
135  myCurrentFrameState.updateStateData(sd);
136  myNextFrameState.updateStateData(sd);
137  }
138 
139  virtual void aboutToBeDeleted() override
140  {
142  myCurrentFrameState.aboutToBeDeleted();
143  myNextFrameState.aboutToBeDeleted();
144  }
145 
146  protected:
149  };
150 
154 }
155 
double myInternalCoreTemperature
Definition: internalTemperatureStateComponent.h:35
2) Define the next frame class. This will be used for write access.
Definition: internalTemperatureStateComponent.h:56
DtInternalTemperatureStateComponentCurrentFrame myCurrentFrameState
Definition: internalTemperatureStateComponent.h:147
DtInternalTemperatureStateComponentData & frameState()
Definition: internalTemperatureStateComponent.h:64
void updateStateData(DtStateData *sd)
Implement to update data storage to the new state data.
Definition: internalTemperatureStateComponent.h:133
const DtFrameStateInterface * currentFrameState() const
Definition: internalTemperatureStateComponent.h:119
DtStateData * myStateData
Definition: internalTemperatureStateComponent.h:107
const DtInternalTemperatureStateComponentData & frameState() const
Next frame access write access. Ensure this is only used in a single thread (i.e.a controller thread)...
Definition: internalTemperatureStateComponent.h:63
Definition: stateComponent.h:266
virtual void makeWritable()
Override to make component writable.
Definition: internalTemperatureStateComponent.h:70
DtInternalTemperatureStateComponentData myData
Definition: internalTemperatureStateComponent.h:77
void updateDataStorage()
Implement to update data storage. Called from advanceFrame.
Definition: internalTemperatureStateComponent.h:123
3) Define the current frame class. This will be used for read access.
Definition: internalTemperatureStateComponent.h:81
const unsigned int InternalTemperatureStateComponent
Definition: internalTemperatureStateComponent.h:37
virtual DtFrameStateInterface * nextFrameState()
Definition: internalTemperatureStateComponent.h:120
const DtInternalTemperatureStateComponentData & frameState() const
Current frame state only can access current frame buffers. This ensures thread safety.
Definition: internalTemperatureStateComponent.h:88
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:339
void advanceFrame(const DtInternalTemperatureStateComponentData &data)
Definition: internalTemperatureStateComponent.h:99
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:228
Definition: internalTemperatureStateComponent.h:14
DtInternalTemperatureStateComponentNextFrame myNextFrameState
Definition: internalTemperatureStateComponent.h:148
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:379
virtual void aboutToBeDeleted() override
Definition: internalTemperatureStateComponent.h:139
virtual void aboutToBeDeleted()
boost::signals2::scoped_connection myVrfStateComponentChangedConnection
Definition: internalTemperatureStateComponent.h:105
DtInternalTemperatureStateComponentData(const DtInternalTemperatureStateComponentData &orig)
Definition: internalTemperatureStateComponent.h:20
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
DtInternalTemperatureStateComponentData()
Definition: internalTemperatureStateComponent.h:16
#define DEFINE_ACCESSOR_MUTATOR(ReturnType, Accessor, Mutator)
Definition: doubleBufferedDataStorage.h:23
DtInternalTemperatureStateComponentData myData
Definition: internalTemperatureStateComponent.h:108
virtual const DtFrameStateInterface * nextFrameState() const
Definition: internalTemperatureStateComponent.h:121
1) Define the interface class that will be used to represent the next and current frames...
Definition: internalTemperatureStateComponent.h:42
DtStateComponentCreator< DtInternalTemperatureStateComponentImplementation > DtInternalTemperatureStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: internalTemperatureStateComponent.h:153
boost::signals2::scoped_connection myCompleteSetupConnection
Definition: internalTemperatureStateComponent.h:106
DtInternalTemperatureStateComponentData & operator=(const DtInternalTemperatureStateComponentData &orig)
Definition: internalTemperatureStateComponent.h:25
Contains the DtStateComponent class declaration.
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:291
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: internalTemperatureStateComponent.h:113
bool isDoubleBuffered()
Definition: internalTemperatureStateComponent.h:118

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)