QRSS Rx Network receiver. A receiver to sample a segment of RF spectrum and send this data to a server for further processing and display. NXP mbed Design Challenge entry (Honorable Mention). Published in Circuit Cellar, Feb 2012

Dependencies:   NetServices mbed DNSResolver

Revision:
0:82ff15078322
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DSP.h	Wed Jan 25 20:32:53 2012 +0000
@@ -0,0 +1,84 @@
+/*---------------------------------------------------------------------------
+
+    QRSS Receiver Application
+        
+    by Clayton ZL3TKA/VK1TKA
+    clayton@isnotcrazy.com
+
+    Header File for DSP Processing class
+
+---------------------------------------------------------------------------*/
+#ifndef _DSP_H
+#define _DSP_H
+
+#include "mbed.h"
+#include "BufferSys.h"
+
+// Definitions
+
+// Macros
+
+//
+// Classes
+//
+
+//---------------------------------------------------------------------------
+//
+//  DSP Processor Class - based on a buffer handle. Processes the attached samples buffer
+//
+class TDSPProcessor : public TBufferHandle
+{
+
+    // parameters
+    public:
+        // Set NCO phase inc
+        //  Set inc directly
+        void NCOPhaseInc( uint32_t uiPhaseInc )
+            { uiMixerPhaseIncrement = uiPhaseInc; }
+        // Set inc from a frequency
+        void NCOFrequency( int32_t iFreq );
+
+    // results
+    public:
+        // get filtered output data
+        const TDataSample FilteredOutput( int iIndex ) const
+        {
+            if ( !HasBuffer() || (iIndex<0) || (iIndex>=LPF_OUTPUTS_SIZE) )
+                return NullSample;  // return empty sample
+            return asLPFOutputs[iIndex];
+        }
+
+    // processing operations
+    public:
+        // Reset processing
+        void Reset();
+
+        // Mix samples with LO
+        bool MixLO();
+        
+        // LPF processing
+        bool LPF();
+
+    // data
+    protected:
+        // NCO mixer
+        uint32_t        uiMixerPhaseAccumulator;
+        uint32_t        uiMixerPhaseIncrement;
+
+        // LPF outputs
+        TDataSample     asLPFOutputs[LPF_OUTPUTS_SIZE];
+        
+        // LPF partial results (ready to complete with the next buffer)
+        TLongDataSample asLPFPartials[LPF_OUTPUTS_SIZE];
+        
+        // LPF Partials valid flag
+        bool            bLPFPartailsValid;
+        
+};
+
+#endif
+
+//---------------------------------------------------------------------------
+//  END
+//---------------------------------------------------------------------------
+