10 #include <type_traits>
14 #include "Decimator.hpp"
15 #include "SampleFilter.hpp"
16 #include "OutputHandler.hpp"
18 #include "mic_array.h"
20 #include <xcore/channel.h>
25 #if defined(MIC_COUNT)
26 # error Application must not define the following as precompiler macros: MIC_COUNT.
42 template <
unsigned MIC_COUNT,
55 static constexpr
unsigned MicCount = MIC_COUNT;
104 TSampleFilter sample_filter,
105 TOutputHandler output_handler)
107 SampleFilter(sample_filter),
108 OutputHandler(output_handler) { }
117 TOutputHandler output_handler)
118 :
MicArray(pdm_rx, TSampleFilter(), output_handler) { }
134 template <
unsigned MIC_COUNT,
138 class TOutputHandler>
141 TOutputHandler>::ThreadEntry()
143 int32_t sample_out[MIC_COUNT] = {0};
146 uint32_t* pdm_samples = PdmRx.GetPdmBlock();
147 Decimator.ProcessBlock(sample_out, pdm_samples);
148 SampleFilter.Filter(sample_out);
149 OutputHandler.OutputSample(sample_out);
Represents the microphone array component of an application.
Definition: MicArray.hpp:48
TSampleFilter SampleFilter
The output filter.
Definition: MicArray.hpp:79
MicArray(TPdmRx pdm_rx, TOutputHandler output_handler)
Construct a MicArray
Definition: MicArray.hpp:116
MicArray()
Construct a MicArray.
Definition: MicArray.hpp:94
void ThreadEntry()
Entry point for the decimation thread.
Definition: MicArray.hpp:141
TPdmRx PdmRx
The PDM rx service.
Definition: MicArray.hpp:63
TDecimator Decimator
The Decimator.
Definition: MicArray.hpp:71
MicArray(TPdmRx pdm_rx, TSampleFilter sample_filter, TOutputHandler output_handler)
Construct a MicArray.
Definition: MicArray.hpp:103
TOutputHandler OutputHandler
The output handler.
Definition: MicArray.hpp:87