make discretized sin wave, which is stored internal array var. The iterator of which array can go ahead by calling a get function.

Committer:
aktk
Date:
Mon Dec 02 22:48:37 2019 +0000
Revision:
1:b01e84ce3ae0
renamed lib and class; added m_ initial at private members;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aktk 1:b01e84ce3ae0 1 /** Defining Discretized Sinusoidal Wave Model
aktk 1:b01e84ce3ae0 2 *
aktk 1:b01e84ce3ae0 3 * \file DSin.h
aktk 1:b01e84ce3ae0 4 * \author Akifumi Takahashi
aktk 1:b01e84ce3ae0 5 * \date 2019/Nov/28 ver.1 publish
aktk 1:b01e84ce3ae0 6 * \version 1.0.2019.Nov
aktk 1:b01e84ce3ae0 7 * \version 2.0.2019.Dec
aktk 1:b01e84ce3ae0 8 */
aktk 1:b01e84ce3ae0 9
aktk 1:b01e84ce3ae0 10 #ifndef DISCRETIZED_SINUSOIDAL_WAVE_MODEL_H
aktk 1:b01e84ce3ae0 11 #define DISCRETIZED_SINUSOIDAL_WAVE_MODEL_H
aktk 1:b01e84ce3ae0 12 #define _USE_MATH_DEFINES
aktk 1:b01e84ce3ae0 13 #include <cmath>
aktk 1:b01e84ce3ae0 14
aktk 1:b01e84ce3ae0 15 #ifndef M_PI
aktk 1:b01e84ce3ae0 16 #define M_PI 3.141592
aktk 1:b01e84ce3ae0 17 #endif
aktk 1:b01e84ce3ae0 18
aktk 1:b01e84ce3ae0 19 #include "mbed.h"
aktk 1:b01e84ce3ae0 20 /** \Class DISCRETIZED SINUSOIDAL WAVE MODEL
aktk 1:b01e84ce3ae0 21 *
aktk 1:b01e84ce3ae0 22 * Model of a discretized sinusoidal wave whose value type is float,
aktk 1:b01e84ce3ae0 23 * and the range is from (-1.0f * ampl) to (1.0f * ampl).
aktk 1:b01e84ce3ae0 24 *
aktk 1:b01e84ce3ae0 25 */
aktk 1:b01e84ce3ae0 26 class DSin
aktk 1:b01e84ce3ae0 27 {
aktk 1:b01e84ce3ae0 28 private:
aktk 1:b01e84ce3ae0 29 /// Amplitude of sinusoidal wave (mA)
aktk 1:b01e84ce3ae0 30 float m_ampl;
aktk 1:b01e84ce3ae0 31
aktk 1:b01e84ce3ae0 32 /// Frequency of the wave (Hz)
aktk 1:b01e84ce3ae0 33 uint16_t m_freq;
aktk 1:b01e84ce3ae0 34
aktk 1:b01e84ce3ae0 35 /// Pulse width fineness of dicretization (us)
aktk 1:b01e84ce3ae0 36 /// pwth = 1000000 / freq / resolution_ofsin;
aktk 1:b01e84ce3ae0 37 uint16_t m_pwth;
aktk 1:b01e84ce3ae0 38
aktk 1:b01e84ce3ae0 39 float* m_discretized_sin;
aktk 1:b01e84ce3ae0 40 int32_t* m_discretized_sin_p16m16;
aktk 1:b01e84ce3ae0 41
aktk 1:b01e84ce3ae0 42 void init();
aktk 1:b01e84ce3ae0 43
aktk 1:b01e84ce3ae0 44 public:
aktk 1:b01e84ce3ae0 45 float const ampl_max;
aktk 1:b01e84ce3ae0 46 uint16_t const freq_max;
aktk 1:b01e84ce3ae0 47 uint16_t const resolution_ofsin; // = arg_resolution_ofsin below
aktk 1:b01e84ce3ae0 48
aktk 1:b01e84ce3ae0 49 DSin(
aktk 1:b01e84ce3ae0 50 uint16_t const arg_resolution_ofsin = 20
aktk 1:b01e84ce3ae0 51 );
aktk 1:b01e84ce3ae0 52 DSin(
aktk 1:b01e84ce3ae0 53 float const arg_ampl,
aktk 1:b01e84ce3ae0 54 uint16_t const arg_freq,
aktk 1:b01e84ce3ae0 55 uint16_t const arg_resolution_ofsin = 20
aktk 1:b01e84ce3ae0 56 );
aktk 1:b01e84ce3ae0 57
aktk 1:b01e84ce3ae0 58 void setParam(
aktk 1:b01e84ce3ae0 59 float const arg_ampl,
aktk 1:b01e84ce3ae0 60 uint16_t const arg_freq
aktk 1:b01e84ce3ae0 61 );
aktk 1:b01e84ce3ae0 62
aktk 1:b01e84ce3ae0 63 void setAmplitude(
aktk 1:b01e84ce3ae0 64 float const arg_ampl
aktk 1:b01e84ce3ae0 65 );
aktk 1:b01e84ce3ae0 66
aktk 1:b01e84ce3ae0 67 void setFrequency(
aktk 1:b01e84ce3ae0 68 uint16_t const arg_freq
aktk 1:b01e84ce3ae0 69 );
aktk 1:b01e84ce3ae0 70
aktk 1:b01e84ce3ae0 71 float getValue();
aktk 1:b01e84ce3ae0 72 int32_t getValue_p16m16();
aktk 1:b01e84ce3ae0 73
aktk 1:b01e84ce3ae0 74 void getValueofSamplePoints(float[]);
aktk 1:b01e84ce3ae0 75
aktk 1:b01e84ce3ae0 76 float getAmplitude(); //inline
aktk 1:b01e84ce3ae0 77 uint16_t getFrequency(); //inline
aktk 1:b01e84ce3ae0 78 uint16_t getPulseWidth(); //inline
aktk 1:b01e84ce3ae0 79
aktk 1:b01e84ce3ae0 80 };
aktk 1:b01e84ce3ae0 81
aktk 1:b01e84ce3ae0 82
aktk 1:b01e84ce3ae0 83 inline float DSin::getAmplitude()
aktk 1:b01e84ce3ae0 84 {
aktk 1:b01e84ce3ae0 85 return m_ampl;
aktk 1:b01e84ce3ae0 86 }
aktk 1:b01e84ce3ae0 87
aktk 1:b01e84ce3ae0 88 inline uint16_t DSin::getFrequency()
aktk 1:b01e84ce3ae0 89 {
aktk 1:b01e84ce3ae0 90 return m_freq;
aktk 1:b01e84ce3ae0 91 }
aktk 1:b01e84ce3ae0 92
aktk 1:b01e84ce3ae0 93 inline uint16_t DSin::getPulseWidth()
aktk 1:b01e84ce3ae0 94 {
aktk 1:b01e84ce3ae0 95 return m_pwth;
aktk 1:b01e84ce3ae0 96 }
aktk 1:b01e84ce3ae0 97 #endif