This makes Amplitude Modulated Pulse Train, which can be regarded as the discretized wave of the signal. Pulse Train can be defined by frequency and duty cycle, which can be temporarily changed, referring to PWM.

Dependents:   Interference_Simple

Revision:
1:19c3a52c80c3
Parent:
0:6400e338266f
Child:
8:1f88fb3a4c57
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AMPulseTrain.cpp	Mon Jan 06 20:26:53 2020 +0000
@@ -0,0 +1,84 @@
+#include "AMPulseTrain.h"
+
+AMPulseTrain::AMPulseTrain(
+    /// Carrier Pulse Train
+    PulseTrain  * const arg_carrier,
+    /// Initial AM Signal expression
+    AMSignal  * const arg_signal
+):
+    Carrier(arg_carrier),
+    Signal(arg_signal)
+{
+    setFrequency_Carrier(Carrier->getFrequency());
+}
+
+
+
+
+uint16_t
+AMPulseTrain::getClockperiod_us()
+{
+    return Carrier->getClockperiod_us();
+}
+
+void
+AMPulseTrain::incrementClock()
+{
+    Carrier->incrementClock();
+}
+
+
+
+
+void
+AMPulseTrain::attachCallback_asClock(
+    Callback<void(bool, AMPulseTrain*)> arg_callback
+)
+{
+    m_callback_asClock = arg_callback;
+    Carrier->attachCallback_asClock(callback(this, &AMPulseTrain::CallbackWrapper_asClock));
+}
+
+void
+AMPulseTrain::CallbackWrapper_asClock(bool arg_pulsestate)
+{
+    m_callback_asClock(arg_pulsestate, this);
+}
+
+
+
+
+void
+AMPulseTrain::attachCallback_asPulseEdge(
+    Callback<void(bool, AMPulseTrain*)> arg_callback
+)
+{
+    m_callback_asPulseEdge = arg_callback;
+    Carrier->attachCallback_asPulseEdge(callback(this, &AMPulseTrain::CallbackWrapper_asPulseEdge));
+}
+
+void
+AMPulseTrain::CallbackWrapper_asPulseEdge(bool arg_pulsestate)
+{
+    m_callback_asPulseEdge(arg_pulsestate, this);
+}
+
+
+
+
+void
+AMPulseTrain::attachAMSignalExpression(
+    Callback<uint16_t(AMPulseTrain*)> arg_callback
+)
+{
+    m_AMSignalExpression = arg_callback;
+    Signal->attachAMSignalExpression(
+        callback(this, &AMPulseTrain::CallbackWrapper_AMSignalExpression)
+    );
+}
+
+uint16_t
+AMPulseTrain::CallbackWrapper_AMSignalExpression(AMSignal* arg_signal)
+{
+    return m_AMSignalExpression(this);
+}
\ No newline at end of file