49 m_channelActive = std::make_unique<bool[] >(
n);
50 m_channelAmplitude = std::make_unique<std::atomic<float>[] >(
n);
51 m_channelOffset= std::make_unique<std::atomic<float>[] >(
n);
52 m_channelFrequency = std::make_unique<std::atomic<float>[] >(
n);
53 m_channelDutyCycle = std::make_unique<std::atomic<float>[] >(
n);
54 m_channelRiseTime = std::make_unique<std::atomic<float>[] >(
n);
55 m_channelFallTime = std::make_unique<std::atomic<float>[] >(
n);
56 m_channelShape = std::make_unique<std::atomic<FunctionGenerator::WaveShape>[] >(
n);
57 m_channelOutputImpedance = std::make_unique<std::atomic<FunctionGenerator::OutputImpedance>[] >(
n);
58 m_channelShapes = std::make_unique<std::vector<FunctionGenerator::WaveShape>[] >(
n);
59 m_channelShapeIndexes = std::make_unique<std::map<FunctionGenerator::WaveShape,int>[] >(
n);
60 m_channelShapeNames = std::make_unique<std::vector<std::string>[] >(
n);
62 m_needsUpdate = std::make_unique<std::atomic<bool>[] >(
n);
64 m_strOffset = std::make_unique<std::string[]>(
n);
65 m_committedOffset = std::make_unique<float[]>(
n);
66 m_strAmplitude = std::make_unique<std::string[]>(
n);
67 m_committedAmplitude = std::make_unique<float[]>(
n);
68 m_strFrequency = std::make_unique<std::string[]>(
n);
69 m_committedFrequency = std::make_unique<float[]>(
n);
70 m_strDutyCycle = std::make_unique<std::string[]>(
n);
71 m_committedDutyCycle = std::make_unique<float[]>(
n);
72 m_strRiseTime = std::make_unique<std::string[]>(
n);
73 m_committedRiseTime = std::make_unique<float[]>(
n);
74 m_strFallTime = std::make_unique<std::string[]>(
n);
75 m_committedFallTime = std::make_unique<float[]>(
n);
79 for(
size_t i=0;
i<
n;
i++)
81 m_channelActive[
i] =
false;
82 m_channelAmplitude[
i] = 0;
83 m_channelOffset[
i] = 0;
84 m_channelFrequency[
i] = 0;
85 m_channelDutyCycle[
i] = 0;
86 m_channelRiseTime[
i] = 0;
87 m_channelFallTime[
i] = 0;
88 m_channelShape[
i] = FunctionGenerator::WaveShape::SHAPE_SINE;
91 m_channelShapes[
i] =
generator->GetAvailableWaveformShapes(
i);
92 for(
size_t j=0;
j<m_channelShapes[
i].size();
j++)
94 m_channelShapeNames[
i].push_back(
generator->GetNameOfShape(m_channelShapes[
i][
j]));
95 m_channelShapeIndexes[
i][m_channelShapes[
i][
j]] =
j;
97 m_needsUpdate[
i] =
true;
108 void FlushConfigCache()
110 for(
size_t i = 0 ;
i < m_channelNumber.load() ;
i++)
111 m_needsUpdate[
i] =
true;
114 std::unique_ptr<bool[]> m_channelActive;
115 std::unique_ptr<std::atomic<float>[]> m_channelAmplitude;
116 std::unique_ptr<std::atomic<float>[]> m_channelOffset;
117 std::unique_ptr<std::atomic<float>[]> m_channelFrequency;
118 std::unique_ptr<std::atomic<float>[]> m_channelDutyCycle;
119 std::unique_ptr<std::atomic<float>[]> m_channelRiseTime;
120 std::unique_ptr<std::atomic<float>[]> m_channelFallTime;
121 std::unique_ptr<std::atomic<FunctionGenerator::WaveShape>[]> m_channelShape;
122 std::unique_ptr<std::atomic<FunctionGenerator::OutputImpedance>[]> m_channelOutputImpedance;
123 std::unique_ptr<std::vector<FunctionGenerator::WaveShape>[]> m_channelShapes;
124 std::unique_ptr<std::map<FunctionGenerator::WaveShape,int>[]> m_channelShapeIndexes;
125 std::unique_ptr<std::vector<std::string>[]> m_channelShapeNames;
127 std::unique_ptr<std::atomic<bool>[]> m_needsUpdate;
129 std::atomic<size_t> m_channelNumber;
132 std::unique_ptr<float[]> m_committedOffset;
133 std::unique_ptr<std::string[]> m_strOffset;
135 std::unique_ptr<float[]> m_committedAmplitude;
136 std::unique_ptr<std::string[]> m_strAmplitude;
138 std::unique_ptr<float[]> m_committedFrequency;
139 std::unique_ptr<std::string[]> m_strFrequency;
141 std::unique_ptr<float[]> m_committedDutyCycle;
142 std::unique_ptr<std::string[]> m_strDutyCycle;
144 std::unique_ptr<float[]> m_committedRiseTime;
145 std::unique_ptr<std::string[]> m_strRiseTime;
147 std::unique_ptr<float[]> m_committedFallTime;
148 std::unique_ptr<std::string[]> m_strFallTime;