make discretized sin wave, which is stored internal array var. The iterator of which array can go ahead by calling a get function.
Diff: DSinGenerator.cpp
- Revision:
- 1:b01e84ce3ae0
- Parent:
- 0:6400e338266f
--- a/DSinGenerator.cpp Wed Nov 27 23:03:42 2019 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -#include "DSinGenerator.h" - -DSinGenerator::DSinGenerator( - uint16_t const arg_resolution_ofsin -): - ampl_max(10), - freq_max(5000), - resolution_ofsin(arg_resolution_ofsin) -{ - init(); - setParam(0, 4000); -} - -DSinGenerator::DSinGenerator( - float const arg_ampl, - uint16_t const arg_freq, - uint16_t const arg_resolution_ofsin -): - ampl_max(10), - freq_max(5000), - resolution_ofsin(arg_resolution_ofsin) -{ - init(); - setParam(arg_ampl, arg_freq); -} - -void DSinGenerator::setParam( - float const arg_ampl, - uint16_t const arg_freq -) -{ - setAmplitude(arg_ampl); - setFrequency(arg_freq); -} - -void DSinGenerator::setAmplitude( - float const arg_ampl -) -{ - ampl = arg_ampl; - for(int i = 0; i < resolution_ofsin; i++){ - discretized_sin_p16m16[i] = static_cast<int32_t>(4095.0 / ampl_max * ampl * discretized_sin[i] ); - } -} - -void DSinGenerator::setFrequency( - uint16_t const arg_freq -) -{ - freq = arg_freq; - pwth = 1000000 / freq / resolution_ofsin; -} - -void DSinGenerator::init() -{ - discretized_sin = new float[resolution_ofsin]; - discretized_sin_p16m16 = new int32_t[resolution_ofsin]; - - for(int i = 0; i < resolution_ofsin; i++){ - discretized_sin[i] = sin( 2.0 * M_PI * static_cast<float>(i) / static_cast<float>(resolution_ofsin)); - } -} - -float DSinGenerator::getValue() -{ - static int itr = 0; - return ampl * discretized_sin[itr++ % resolution_ofsin]; -} - -int32_t DSinGenerator::getValue_p16m16() -{ - static int itr = 0; - return discretized_sin_p16m16[itr++ % resolution_ofsin]; -} - -void DSinGenerator::getValueofSamplePoints(float arg_dsin[]) -{ - memcpy(arg_dsin, discretized_sin, sizeof(float) * resolution_ofsin); -} \ No newline at end of file