47 size_t n =
scope->GetChannelCount();
49 m_channelInverted = std::make_unique<bool[] >(
n);
50 m_channelOffset = std::make_unique<std::vector<float>[] >(
n);
51 m_channelRange = std::make_unique<std::vector<float>[] >(
n);
53 m_channelDigitalThreshold = std::make_unique<std::atomic<float>[] >(
n);
54 m_channelAttenuation = std::make_unique<std::atomic<float>[] >(
n);
56 m_needsUpdate = std::make_unique<std::atomic<bool>[] >(
n);
58 m_probeName = std::make_unique<std::string[]>(
n);
60 m_channelCoupling = std::make_unique<int[] >(
n);
61 m_couplings = std::make_unique<std::vector<OscilloscopeChannel::CouplingType>[]>(
n);
62 m_couplingNames = std::make_unique<std::vector<std::string>[]>(
n);
64 m_channelBandwidthLimit = std::make_unique<int[] >(
n);
65 m_bandwidthLimits = std::make_unique<std::vector<uint32_t>[]>(
n);
66 m_bandwidthLimitNames = std::make_unique<std::vector<std::string>[]>(
n);
68 m_committedOffset = std::make_unique<std::vector<float>[]>(
n);
69 m_strOffset = std::make_unique<std::vector<std::string>[]>(
n);
71 m_committedRange = std::make_unique<std::vector<float>[]>(
n);
72 m_strRange = std::make_unique<std::vector<std::string>[]>(
n);
74 m_committedDigitalThreshold = std::make_unique<float[]>(
n);
75 m_strDigitalThreshold = std::make_unique<std::string[]>(
n);
77 m_committedAttenuation = std::make_unique<float[]>(
n);
78 m_strAttenuation = std::make_unique<std::string[]>(
n);
80 m_adcMode = std::make_unique<int[]>(
n);
84 for(
size_t i=0;
i<
n;
i++)
86 m_channelInverted[
i] =
false;
88 m_channelDigitalThreshold[
i] = 0;
89 m_channelAttenuation[
i] = 0;
90 m_channelBandwidthLimit[
i] = 0;
91 m_channelCoupling[
i] = 0;
92 m_channelBandwidthLimit[
i] = 0;
102 m_channelOffset[
i].push_back(0);
103 m_channelRange[
i].push_back(0);
104 m_committedOffset[
i].push_back(
FLT_MIN);
105 m_committedRange[
i].push_back(
FLT_MIN);
106 m_strOffset[
i].push_back(
"");
107 m_strRange[
i].push_back(
"");
111 m_needsUpdate[
i] =
true;
113 m_committedDigitalThreshold[
i] =
FLT_MIN;
114 m_committedAttenuation[
i] =
INT_MIN;
118 void FlushConfigCache()
120 for(
size_t i = 0 ;
i < m_channelNumber.load() ;
i++)
121 m_needsUpdate[
i] =
true;
124 std::unique_ptr<bool[]> m_channelInverted;
125 std::unique_ptr<std::vector<float>[]> m_channelOffset;
126 std::unique_ptr<std::vector<float>[]> m_channelRange;
127 std::unique_ptr<std::atomic<float>[]> m_channelDigitalThreshold;
128 std::unique_ptr<std::atomic<float>[]> m_channelAttenuation;
130 std::unique_ptr<std::atomic<bool>[]> m_needsUpdate;
132 std::atomic<size_t> m_channelNumber;
135 std::unique_ptr<std::string[]> m_probeName;
137 std::unique_ptr<int[]> m_channelBandwidthLimit;
138 std::unique_ptr<std::vector<uint32_t>[]> m_bandwidthLimits;
139 std::unique_ptr<std::vector<std::string>[]> m_bandwidthLimitNames;
141 std::unique_ptr<int[]> m_channelCoupling;
142 std::unique_ptr<std::vector<OscilloscopeChannel::CouplingType>[]> m_couplings;
143 std::unique_ptr<std::vector<std::string>[]> m_couplingNames;
145 std::unique_ptr<std::vector<float>[]> m_committedOffset;
146 std::unique_ptr<std::vector<std::string>[]> m_strOffset;
148 std::unique_ptr<std::vector<float>[]> m_committedRange;
149 std::unique_ptr<std::vector<std::string>[]> m_strRange;
151 std::unique_ptr<float[]> m_committedDigitalThreshold;
152 std::unique_ptr<std::string[]> m_strDigitalThreshold;
154 std::unique_ptr<float[]> m_committedAttenuation;
155 std::unique_ptr<std::string[]> m_strAttenuation;
157 std::unique_ptr<int[]> m_adcMode;