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

Revision:
1:b01e84ce3ae0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DSin.h	Mon Dec 02 22:48:37 2019 +0000
@@ -0,0 +1,97 @@
+/** Defining Discretized Sinusoidal Wave Model 
+ *
+ *  \file   DSin.h
+ *  \author Akifumi Takahashi
+ *  \date   2019/Nov/28 ver.1 publish
+ *  \version 1.0.2019.Nov
+ *  \version 2.0.2019.Dec
+ */
+ 
+#ifndef DISCRETIZED_SINUSOIDAL_WAVE_MODEL_H
+#define DISCRETIZED_SINUSOIDAL_WAVE_MODEL_H
+#define _USE_MATH_DEFINES
+#include <cmath>
+
+#ifndef M_PI
+#define M_PI 3.141592
+#endif
+
+#include "mbed.h"
+/** \Class DISCRETIZED SINUSOIDAL WAVE MODEL
+ *
+ *  Model of a discretized sinusoidal wave whose value type is float, 
+ *  and the range is from (-1.0f * ampl) to (1.0f * ampl).
+ *
+ */
+class DSin
+{
+private:
+    /// Amplitude of sinusoidal wave (mA)
+    float m_ampl;
+    
+    /// Frequency of the wave (Hz)
+    uint16_t m_freq;
+    
+    /// Pulse width fineness of dicretization (us) 
+    /// pwth = 1000000 / freq / resolution_ofsin;
+    uint16_t m_pwth;
+    
+    float*      m_discretized_sin;
+    int32_t*    m_discretized_sin_p16m16;
+    
+    void init();
+
+public:
+    float const ampl_max;
+    uint16_t const freq_max;
+    uint16_t const resolution_ofsin; // = arg_resolution_ofsin below
+    
+    DSin(
+        uint16_t const arg_resolution_ofsin = 20
+    );
+    DSin(
+        float const arg_ampl,
+        uint16_t const arg_freq,
+        uint16_t const arg_resolution_ofsin = 20
+    );
+    
+    void setParam(
+        float const arg_ampl,
+        uint16_t const arg_freq
+    );
+    
+    void setAmplitude(
+        float const arg_ampl
+    );
+    
+    void setFrequency(
+        uint16_t const arg_freq
+    );
+    
+    float getValue();
+    int32_t getValue_p16m16();
+    
+    void getValueofSamplePoints(float[]);
+    
+    float    getAmplitude();    //inline
+    uint16_t getFrequency();    //inline
+    uint16_t getPulseWidth(); //inline
+    
+};
+
+
+inline float DSin::getAmplitude()
+{
+    return m_ampl;
+}
+
+inline uint16_t DSin::getFrequency()
+{
+    return m_freq;
+}
+
+inline uint16_t DSin::getPulseWidth()
+{
+    return m_pwth;
+}
+#endif
\ No newline at end of file