summaryrefslogtreecommitdiffstats
path: root/plugins/channel/tetra/tetrademod.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/channel/tetra/tetrademod.h')
-rw-r--r--plugins/channel/tetra/tetrademod.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/plugins/channel/tetra/tetrademod.h b/plugins/channel/tetra/tetrademod.h
new file mode 100644
index 0000000..a2a474b
--- /dev/null
+++ b/plugins/channel/tetra/tetrademod.h
@@ -0,0 +1,67 @@
+///////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2012 maintech GmbH, Otto-Hahn-Str. 15, 97204 Hoechberg, Germany //
+// written by Christian Daniel //
+// //
+// This program is free software; you can redistribute it and/or modify //
+// it under the terms of the GNU General Public License as published by //
+// the Free Software Foundation as version 3 of the License, or //
+// //
+// This program is distributed in the hope that it will be useful, //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of //
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
+// GNU General Public License V3 for more details. //
+// //
+// You should have received a copy of the GNU General Public License //
+// along with this program. If not, see <http://www.gnu.org/licenses/>. //
+///////////////////////////////////////////////////////////////////////////////////
+
+#ifndef INCLUDE_TETRADEMOD_H
+#define INCLUDE_TETRADEMOD_H
+
+#include "dsp/samplesink.h"
+#include "dsp/nco.h"
+#include "dsp/interpolator.h"
+#include "util/message.h"
+
+class MessageQueue;
+
+class TetraDemod : public SampleSink {
+public:
+ TetraDemod(SampleSink* sampleSink);
+ ~TetraDemod();
+
+ void configure(MessageQueue* messageQueue);
+
+ void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool firstOfBurst);
+ void start();
+ void stop();
+ bool handleMessage(Message* cmd);
+
+private:
+ class MsgConfigureTetraDemod : public Message {
+ public:
+ static MessageRegistrator ID;
+
+ static MsgConfigureTetraDemod* create()
+ {
+ return new MsgConfigureTetraDemod();
+ }
+
+ private:
+ MsgConfigureTetraDemod() :
+ Message(ID())
+ { }
+ };
+
+ int m_sampleRate;
+ int m_frequency;
+
+ NCO m_nco;
+ Interpolator m_interpolator;
+ Real m_sampleDistanceRemain;
+
+ SampleSink* m_sampleSink;
+ SampleVector m_sampleBuffer;
+};
+
+#endif // INCLUDE_TETRADEMOD_H