diff src/cs/layer1/gtt_include/ctm/tonedemod.h @ 0:b6a5e36de839

src/cs: initial import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Jul 2018 04:39:26 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cs/layer1/gtt_include/ctm/tonedemod.h	Sun Jul 15 04:39:26 2018 +0000
@@ -0,0 +1,106 @@
+/*
+*******************************************************************************
+*
+*      COPYRIGHT (C) 2000 BY ERICSSON EUROLAB DEUTSCHLAND GmbH
+*      90411 NUERNBERG, GERMANY, Tel Int + 49 911 5217 100
+*
+*      The program(s) may be used and/or copied only with the
+*      written permission from Ericsson or in accordance
+*      with the terms and conditions stipulated in the agreement or
+*      contract under which the program(s) have been supplied.
+*
+*******************************************************************************
+*
+*      File             : tonedemod.h
+*      Purpose          : Demodulator for the Cellular Text Telephone Modem
+*                         1-out-of-4 tones (400, 600, 800, 1000 Hz)
+*                         for the coding of each pair of two adjacent bits
+*
+*                         Definition of the type demod_state_t and of the 
+*                         functions init_tonedemod() and tonedemod()
+*
+*******************************************************************************
+*/
+
+#ifndef tonedemod_h
+#define tonedemod_h "$Id: $"
+
+/*
+*******************************************************************************
+*                         INCLUDE FILES
+*******************************************************************************
+*/
+
+#include "ctm_defines.h"
+
+/*
+*******************************************************************************
+*                         DECLARATION OF PROTOTYPES
+*******************************************************************************
+*/
+
+typedef struct {
+  WORD16  buffer_tone_rx[3*SYMB_LEN];
+  WORD16  xcorr_t0[2*SYMB_LEN];
+  WORD16  xcorr_t1[2*SYMB_LEN];
+  WORD16  xcorr_t2[2*SYMB_LEN];
+  WORD16  xcorr_t3[2*SYMB_LEN];
+  WORD16  xcorr_wb[2*SYMB_LEN];
+  WORD16  lowpass[SYMB_LEN];
+  WORD16  waveform_t0[SYMB_LEN];
+  WORD16  waveform_t1[SYMB_LEN];
+  WORD16  waveform_t2[SYMB_LEN];
+  WORD16  waveform_t3[SYMB_LEN];
+  WORD16  diff_smooth[SYMB_LEN];
+} demod_state_t;
+
+
+/* ----------------------------------------------------------------------- */
+/* FUNCTION tonedemod()                                                    */
+/* ********************                                                    */
+/* Tone Demodulator for the Cellular Text Telephone Modem                  */
+/* using one out of four tones for coding two bits in parallel within a    */
+/* frame of 40 samples (5 ms).                                             */
+/*                                                                         */
+/* The function has to be called for every frame of 40 samples of the      */
+/* received tone sequence. However, in order to track a non-ideal          */
+/* of the transmitter's and the receiver's clock frequencies, one frame    */
+/* might be shorter (only 39 samples) or longer (41 samples). The          */
+/* of the following frame is indicated by the variable                     */
+/* *sampling_correction, which is calculated and returned by this function.*/
+/*                                                                         */
+/* input variables:                                                         */
+/* bits_out            contains the 39, 40 or 41 actual samples of the     */
+/*                     received tones; the bits are soft bits, i.e. they   */
+/*                     are in the range between -1.0 and 1.0, where the    */
+/*                     magnitude serves as reliability information         */
+/* num_in_samples      number of valid samples in bits_out                 */
+/*                                                                         */
+/* output variables:                                                        */
+/* bits_out            contains the two actual decoded soft bits           */
+/* sampling_correction is either -1, 0, or 1 and indicates whether the     */
+/*                     next frame shall contain 39, 40, or 41 samples      */
+/* demod_state         contains all the memory of tonedemod. Must be       */
+/*                     initialized using the function init_tonedemod()     */
+/* ----------------------------------------------------------------------- */
+
+void tonedemod(WORD16 *bits_out,
+               WORD16 *rx_tone_vec,
+               WORD16 num_in_samples,
+               WORD16 *ptr_sampling_correction,
+               demod_state_t *demod_state);
+
+
+/* ----------------------------------------------------------------------- */
+/* FUNCTION init_tonedemod()                                               */
+/* *************************                                               */
+/* Initialization of one instance of the Tone Demodulator. The argument    */
+/* must contain a pointer to a variable of type demod_state_t, which       */
+/* contains all the memory of the tone demodulator. Each instance of       */
+/* tonedemod must have its own variable.                                   */
+/* ----------------------------------------------------------------------- */
+
+void init_tonedemod(demod_state_t *demod_state);
+
+#endif
+