From f559e9fbef98e16ebf4d72190322ca110f4940be Mon Sep 17 00:00:00 2001
From: Clyne Sullivan <clyne@bitgloo.com>
Date: Thu, 19 Nov 2020 10:36:52 -0500
Subject: differentiator is fir, also fixed it

---
 gui/templates/5_fir_differentiator.cpp | 30 ++++++++++++++++++++++++++++++
 gui/templates/5_iir_differentiator.cpp | 28 ----------------------------
 2 files changed, 30 insertions(+), 28 deletions(-)
 create mode 100644 gui/templates/5_fir_differentiator.cpp
 delete mode 100644 gui/templates/5_iir_differentiator.cpp

diff --git a/gui/templates/5_fir_differentiator.cpp b/gui/templates/5_fir_differentiator.cpp
new file mode 100644
index 0000000..a3a7d4f
--- /dev/null
+++ b/gui/templates/5_fir_differentiator.cpp
@@ -0,0 +1,30 @@
+/**
+ * 5_fir_differentiator.cpp
+ * Written by Clyne Sullivan.
+ *
+ * Does an FIR differentiation on the incoming signal, so that the output is representative of the
+ * rate of change of the input.
+ * A scaling factor is applied so that the output's form is more clearly visible.
+ */
+
+adcsample_t *process_data(adcsample_t *samples, unsigned int size)
+{
+    constexpr int scaling_factor = 4;
+	static adcsample_t output[SIZE];
+    static adcsample_t prev = 2048;
+
+    // Compute the first output value using the saved sample.
+    output[0] = 2048 + ((samples[0] - prev) * scaling_factor);
+
+	for (unsigned int i = 1; i < size; i++) {
+        // Take the rate of change and scale it.
+        // 2048 is added as the output should be centered in the voltage range.
+		output[i] = 2048 + ((samples[i] - samples[i - 1]) * scaling_factor);
+    }
+
+	// Save the last sample for the next iteration.
+    prev = samples[size - 1];
+
+    return output;
+}
+
diff --git a/gui/templates/5_iir_differentiator.cpp b/gui/templates/5_iir_differentiator.cpp
deleted file mode 100644
index f63bba9..0000000
--- a/gui/templates/5_iir_differentiator.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * 5_iir_differentiator.cpp
- * Written by Clyne Sullivan.
- *
- * Does an IIR differentiation on the incoming signal, so that the output is representative of the
- * rate of change of the input.
- * A scaling factor is applied so that the output's form is more clearly visible.
- */
-
-adcsample_t *process_data(adcsample_t *samples, unsigned int size)
-{
-    constexpr int scaling_factor = 4;
-    static adcsample_t prev = 2048;
-
-    // Compute the first output value using the saved sample.
-    samples[0] = 2048 + ((samples[0] - prev) * scaling_factor;
-    // Save the last sample for the next iteration.
-    prev = samples[size - 1];
-
-	for (unsigned int i = 1; i < size; i++) {
-        // Take the rate of change and scale it.
-        // 2048 is added as the output should be centered in the voltage range.
-		samples[i] = 2048 + ((samples[i] - samples[i - 1]) * scaling_factor);
-    }
-
-    return samples;
-}
-
-- 
cgit v1.2.3