File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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;
Original file line number Diff line number Diff 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;
Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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/* *
You can’t perform that action at this time.
0 commit comments