22 bool begin(
int len)
override {
25 p_data =
new float[len*2];
27 LOGE(
"not enough memory");
30 assert(p_data!=
nullptr);
31 ret = dsps_fft2r_init_fc32(NULL, CONFIG_DSP_MAX_FFT_SIZE);
33 LOGE(
"dsps_fft2r_init_fc32 %d", ret);
35 return p_data!=
nullptr && ret == ESP_OK;
39 dsps_fft2r_deinit_fc32();
46 void setValue(
int idx,
int value)
override {
48 p_data[idx*2 + 0] = value;
49 p_data[idx*2 + 1] = 0.0f;
54 ret = dsps_fft2r_fc32(p_data, N);
56 LOGE(
"dsps_fft2r_fc32 %d", ret);
59 ret = dsps_bit_rev_fc32(p_data, N);
61 LOGE(
"dsps_bit_rev_fc32 %d", ret);
64 ret = dsps_cplx2reC_fc32(p_data, N);
66 LOGE(
"dsps_cplx2reC_fc32 %d", ret);
70 float magnitude(
int idx)
override {
71 return sqrt(p_data[idx*2] * p_data[idx*2] + p_data[idx*2+1] * p_data[idx*2+1]);
76 return (p_data[idx*2] * p_data[idx*2] + p_data[idx*2+1] * p_data[idx*2+1]);
79 virtual bool isValid()
override{
return p_data!=
nullptr && ret==ESP_OK; }
82 float *p_data =
nullptr;
98 return driverEx()->p_data;