diff src/cs/layer1/gtt_include/ctm/diag_deinterleaver.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/diag_deinterleaver.h	Sun Jul 15 04:39:26 2018 +0000
@@ -0,0 +1,155 @@
+/*
+
+*******************************************************************************
+
+*
+
+*      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             : diag_interleaver.h
+
+*      Purpose          : diagonal (chain) deinterleaver routine
+
+*
+
+*******************************************************************************
+
+*/
+
+#ifndef diag_deinterleaver_h
+
+#define diag_deinterleaver_h "$Id: $"
+
+#include "l1_confg.h"
+
+/*
+
+*******************************************************************************
+
+*                         INCLUDE FILES
+
+*******************************************************************************
+
+*/
+
+
+
+#include "init_interleaver.h"
+
+
+
+/*
+
+*******************************************************************************
+
+*                         DECLARATION OF PROTOTYPES
+
+*******************************************************************************
+
+*/
+
+
+
+/* ---------------------------------------------------------------------- */
+
+/* diag_deinterleaver:                                                    */
+
+/* Corresponding deinterleaver to diag_interleaver.                       */
+
+/* An arbitrary number of bits can be interleaved, depending of the       */
+
+/* length of the vector "in". The vector "out", which must have the same  */
+
+/* length than "in", contains the interleaved samples.                    */
+
+/* All states (memory etc.) of the interleaver are stored in the variable */
+
+/* *intl_state. Therefore, a pointer to this variable must be handled to  */
+
+/* this function. This variable initially has to be initialized by the    */
+
+/* function init_interleaver, which offers also the possibility to        */
+
+/* specify the dimensions of the deinterleaver matrix.                    */
+
+/* ---------------------------------------------------------------------- */
+
+
+
+void diag_deinterleaver(WORD16 *out,
+
+                        WORD16 *in,
+
+                        WORD16 num_valid_bits,
+
+                        interleaver_state_t *intl_state);
+
+
+
+/* ---------------------------------------------------------------------- */
+
+/* shift_deinterleaver:                                                   */
+
+/* Shift of the deinterleaver buffer by <shift> samples.                  */
+
+/* shift>0  -> shift to the right                                         */
+
+/* shift<0  -> shift to the left                                          */
+
+/* The elements from <insert_bits> are inserted into the resulting space. */
+
+/* The vector <insert_bits> must have at least abs(shift) elements.       */
+
+/* ---------------------------------------------------------------------- */
+
+
+
+void shift_deinterleaver(WORD16 shift,
+
+                         WORD16 *insert_bits,
+
+                         interleaver_state_t *ptr_state);
+
+
+#if(NEW_WKA_PATCH==1)
+  void just_shift(WORD16 shift, WORD16* in_bits, interleaver_state_t *intl_state);
+#endif
+
+#if (TTY_SYNC_MCU == 1)
+  void flush_and_shift_deinterleaver(WORD16 shift,WORD16 *insert_bits,interleaver_state_t *ptr_state);
+#endif
+
+#if(TTY_SYNC_MCU_2==1)
+  WORD16 flush_diag_deint(WORD16 *out, WORD16 *in, interleaver_state_t *intl_state);
+  void zero_pad_deint(interleaver_state_t *intl_state);
+#endif
+
+#if(OPTIMISED==1)
+void new_diag_deinterleaver(WORD16 *out,
+                        WORD16 jump,
+                        WORD16 *flush_vector,
+                        WORD16 *in,
+                        WORD16 num_valid_bits,
+                        interleaver_state_t *intl_state);
+#endif
+
+#endif
+