58#ifndef FFTStatus_DEFINED
59#define FFTStatus_DEFINED
66#ifdef WHITEBOARD_POSTER_STRING_CONVERSION
73#pragma clang diagnostic push
74#pragma clang diagnostic ignored "-Winvalid-offsetof"
75#pragma clang diagnostic ignored "-Wclass-varargs"
76#pragma clang diagnostic ignored "-Wvarargs"
90 FFTStatus(int16_t lrms, int16_t
rrms, uint16_t
hi, uint16_t
lo, uint16_t
fsk, va_list freqs):
fft_dominant_frequency(lrms,
rrms,
hi,
lo,
fsk, freqs) {}
93 FFTStatus(int16_t lrms, int16_t
rrms, uint16_t
hi =
FSK_DEFAULT_HI, uint16_t
lo =
FSK_DEFAULT_LO, uint16_t
fsk = 0, ...):
fft_dominant_frequency(lrms,
rrms,
hi,
lo,
fsk, 0)
99 int16_t freq =
static_cast<int16_t
>(va_arg(freqs,
int));
100 int16_t *freqp = &_frequencies->left();
101 while (freq) { *freqp++ = freq; freq =
static_cast<int16_t
>(va_arg(freqs,
int)); }
114#ifdef WHITEBOARD_POSTER_STRING_CONVERSION
128 ss << rms().left() <<
"/" << rms().right() <<
", ";
129 ss <<
fsk().hi_freq() <<
":" <<
fsk().lo_freq() <<
"@" <<
fsk().hi_percentage();
131 for (
unsigned i = 0; i < n; i++)
134 if (!f.left() && !f.right())
136 ss <<
", " << f.left() <<
"+" << f.right();
146 vector<string> components = components_of_string_separated(str,
',',
true);
147 size_t n = components.size();
153 vector<string> rmsvals = components_of_string_separated(components[0],
'/',
true);
154 size_t k = rmsvals.size();
156 rms().set_left(
static_cast<int16_t
>(atoi(rmsvals[0].c_str())));
158 rms().set_right(
static_cast<int16_t
>(atoi(rmsvals[1].c_str())));
164 vector<string> fskvals = components_of_string_separated(components[1],
':',
true);
167 fsk().set_hi_freq(
static_cast<int16_t
>(atoi(fskvals[0].c_str())));
169 fsk().set_lo_freq(
static_cast<int16_t
>(atoi(fskvals[1].c_str())));
170 vector<string> percentvals = components_of_string_separated(fskvals[1],
'@',
true);
171 k = percentvals.size();
172 if (k > 1)
fsk().set_hi_percentage(
static_cast<int16_t
>(atoi(percentvals[1].c_str())));
177 for (
unsigned i = 2; i < n; i++)
179 vector<string> freqvals = components_of_string_separated(components[i],
'+',
true);
183 frequency.set_left(
static_cast<int16_t
>(atoi(freqvals[0].c_str())));
184 if (k > 1) frequency.set_right(
static_cast<int16_t
>(atoi(freqvals[1].c_str())));
185 if (!frequency.left() && !frequency.right())
193#pragma clang diagnostic pop
Container for RMS levels and dominant frequencies.
FFTStatus & operator=(const FFTStatus &other)
copy assignment operator
FFTStatus()
default constructor
FFTStatus(const FFTStatus &other)
copy constructor
FFTStatus(const char *names)
const char *constructor
FFTStatus(const std::string &names)
string constructor
std::string description()
convert to a string
FFTStatus(int16_t lrms, int16_t rrms, uint16_t hi=320, uint16_t lo=200, uint16_t fsk=0,...)
alternate constructor
static int num_frequencies()
number of frequencies that can be put on the wb
void from_string(const std::string &str)
convert from a string
FFTStatus(int16_t lrms, int16_t rrms, uint16_t hi, uint16_t lo, uint16_t fsk, va_list freqs)
designated constructor
#define GU_SIMPLE_WHITEBOARD_BUFSIZE
message len (max)
Main FFT Analysis Structure This structure contains all the components of the FFT analysis,...
fsk int16_t uint16_t uint16_t uint16_t fsk
fsk int16_t uint16_t uint16_t lo
Frequency pair for a stereo channel This struct contains a single frequency pair (in Hz) for a stereo...
#define FSK_DEFAULT_HI
default hi frequency for fsk
#define FSK_DEFAULT_LO
default lo frequency for fsk
#define FFT_DOMINANT_NUMFREQ
no wb -> don't register size