Skip to content

Commit b2ed0eb

Browse files
author
Frederic Borry
committed
Added instrument state update on config flush.
1 parent 38ad113 commit b2ed0eb

5 files changed

Lines changed: 50 additions & 0 deletions

File tree

src/ngscopeclient/FunctionGeneratorState.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class FunctionGeneratorState
4545
FunctionGeneratorState(std::shared_ptr<FunctionGenerator> generator)
4646
{
4747
size_t n = generator->GetChannelCount();
48+
m_channelNumner = n;
4849
m_channelActive = std::make_unique<std::atomic<bool>[] >(n);
4950
m_channelAmplitude = std::make_unique<std::atomic<float>[] >(n);
5051
m_channelOffset= std::make_unique<std::atomic<float>[] >(n);
@@ -94,6 +95,12 @@ class FunctionGeneratorState
9495
}
9596
}
9697

98+
void FlushConfigCache()
99+
{
100+
for(size_t i = 0 ; i < m_channelNumner.load() ; i++)
101+
m_needsUpdate[i] = true;
102+
}
103+
97104
std::unique_ptr<std::atomic<bool>[]> m_channelActive;
98105
std::unique_ptr<std::atomic<float>[]> m_channelAmplitude;
99106
std::unique_ptr<std::atomic<float>[]> m_channelOffset;
@@ -107,6 +114,8 @@ class FunctionGeneratorState
107114

108115
std::unique_ptr<std::atomic<bool>[]> m_needsUpdate;
109116

117+
std::atomic<size_t> m_channelNumner;
118+
110119
//UI state for dialogs etc
111120
std::unique_ptr<float[]> m_committedOffset;
112121
std::unique_ptr<std::string[]> m_strOffset;

src/ngscopeclient/MultimeterState.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ class MultimeterState
5151
m_needsRangeUpdate = true;
5252
}
5353

54+
void FlushConfigCache()
55+
{
56+
m_needsRangeUpdate = true;
57+
}
58+
5459
std::atomic<float> m_primaryMeasurement;
5560
std::atomic<float> m_secondaryMeasurement;
5661
std::atomic<bool> m_firstUpdateDone;

src/ngscopeclient/OscilloscopeState.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class OscilloscopeState
4545
OscilloscopeState(std::shared_ptr<Oscilloscope> scope)
4646
{
4747
size_t n = scope->GetChannelCount();
48+
m_channelNumner = n;
4849
m_channelInverted = std::make_unique<bool[] >(n);
4950
m_channelOffset = std::make_unique<std::vector<float>[] >(n);
5051
m_channelRange = std::make_unique<std::vector<float>[] >(n);
@@ -111,6 +112,12 @@ class OscilloscopeState
111112
}
112113
}
113114

115+
void FlushConfigCache()
116+
{
117+
for(size_t i = 0 ; i < m_channelNumner.load() ; i++)
118+
m_needsUpdate[i] = true;
119+
}
120+
114121
std::unique_ptr<bool[]> m_channelInverted;
115122
std::unique_ptr<std::vector<float>[]> m_channelOffset;
116123
std::unique_ptr<std::vector<float>[]> m_channelRange;
@@ -119,6 +126,8 @@ class OscilloscopeState
119126

120127
std::unique_ptr<std::atomic<bool>[]> m_needsUpdate;
121128

129+
std::atomic<size_t> m_channelNumner;
130+
122131
//UI state for dialogs etc
123132
std::unique_ptr<std::string[]> m_probeName;
124133

src/ngscopeclient/PowerSupplyState.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class PowerSupplyState
4545
PowerSupplyState(size_t n = 0)
4646
{
4747
m_masterEnable = false;
48+
m_channelNumner = n;
4849

4950
m_channelVoltage = std::make_unique<std::atomic<float>[] >(n);
5051
m_channelCurrent = std::make_unique<std::atomic<float>[] >(n);
@@ -82,6 +83,12 @@ class PowerSupplyState
8283
m_firstUpdateDone = false;
8384
}
8485

86+
void FlushConfigCache()
87+
{
88+
for(size_t i = 0 ; i < m_channelNumner.load() ; i++)
89+
m_needsUpdate[i] = true;
90+
}
91+
8592
std::unique_ptr<std::atomic<float>[]> m_channelVoltage;
8693
std::unique_ptr<std::atomic<float>[]> m_channelCurrent;
8794
std::unique_ptr<std::atomic<bool>[]> m_channelConstantCurrent;
@@ -104,6 +111,8 @@ class PowerSupplyState
104111
std::atomic<bool> m_firstUpdateDone;
105112

106113
std::atomic<bool> m_masterEnable;
114+
115+
std::atomic<size_t> m_channelNumner;
107116
};
108117

109118
#endif

src/ngscopeclient/Session.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,24 @@ void Session::FlushConfigCache()
166166
lock_guard<mutex> lock(m_scopeMutex);
167167
for(auto it : m_instrumentStates)
168168
it.first->FlushConfigCache();
169+
170+
// Also flush session states
171+
for(auto it : m_psus)
172+
{
173+
it.second->FlushConfigCache();
174+
}
175+
for(auto it : m_meters)
176+
{
177+
it.second->FlushConfigCache();
178+
}
179+
for(auto it : m_oscilloscopesStates)
180+
{
181+
it.second->FlushConfigCache();
182+
}
183+
for(auto it : m_awgs)
184+
{
185+
it.second->FlushConfigCache();
186+
}
169187
}
170188

171189
/**

0 commit comments

Comments
 (0)