24 lines
807 B
C++
24 lines
807 B
C++
#ifndef SPECTRUM_H
|
|
#define SPECTRUM_H
|
|
#include "oneway.h"
|
|
#include "gpio.h"
|
|
#include "fifo.h"
|
|
#include "fft.h"
|
|
|
|
/**
|
|
*/
|
|
class Spectrum : public OneWay<uint16_t> {
|
|
static constexpr unsigned FFTSIZE = 1 << FFTORDER;
|
|
GpioClass & led;
|
|
FIFO<uint32_t, FIFOLEN> & ring;
|
|
const unsigned bhigh, bmiddle, blow;
|
|
uint8_t cred, cgreen, cblue;
|
|
const IFFT ifft;
|
|
complex buffer [FFTSIZE];
|
|
public:
|
|
explicit Spectrum (FIFO<uint32_t, FIFOLEN> & ff, GpioClass & io) noexcept : OneWay<uint16_t>(), led(io), ring(ff),
|
|
bhigh (FFTSIZE >> 1), bmiddle(bhigh >> 1), blow (bmiddle >> 4), cred(0u), cgreen(0u), cblue(0u), ifft() {}
|
|
unsigned int Send(uint16_t * const ptr, const unsigned int len) override;
|
|
};
|
|
|
|
#endif // SPECTRUM_H
|