diff src/cs/layer1/gtt_include/ctm/ctm_transmitter.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/ctm_transmitter.h	Sun Jul 15 04:39:26 2018 +0000
@@ -0,0 +1,159 @@
+/*
+*******************************************************************************
+*
+*      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             : ctm_transmitter.h
+*      Author           : EEDN/RV Matthias Doerbecker
+*      Tested Platforms : Sun Solaris, Windows NT 4.0
+*      Description      : header file for ctm_transmitter.c
+*
+*      Changes since October 13, 2000:
+*      - added reset function reset_ctm_transmitter()
+*
+*      $Log: $
+*
+*******************************************************************************
+*/
+#ifndef ctm_transmitter_h
+#define ctm_transmitter_h "$Id: $"
+
+/*
+*******************************************************************************
+*                         INCLUDE FILES
+*******************************************************************************
+*/
+
+#include "ctm_typedefs.h"
+#include "ctm_defines.h"
+#include "init_interleaver.h"
+#include "tonemod.h"
+#include "conv_poly.h"
+#include "fifo.h"
+
+/* ******************************************************************/
+/* Type definitions for variables that contain all states of the    */
+/* CTM Transmitter                                                  */
+/* ******************************************************************/
+
+typedef struct {
+  BOOL      burstActive;
+  WORD16    cntIdleSymbols;
+  WORD16    cntEncBitsInCurrentBlock;
+  WORD16    cntTXBitsInCurrentBlock;
+
+  /* vectors (not to be allocated) */
+  WORD16    resync_sequence[RESYNC_SEQ_LENGTH];
+  
+#if (NUM_MUTE_ROWS>0)
+  WORD16    mutePositions[intlvB*NUM_MUTE_ROWS];
+#else
+  WORD16    mutePositions[1];
+#endif
+  
+  fifo_state_t         fifo_state;
+  fifo_state_t         octet_fifo_state;
+  interleaver_state_t  diag_int_state;
+  conv_encoder_t       conv_enc_state;
+} tx_state_t;
+
+     
+
+/***********************************************************************/
+/* init_ctm_transmitter()                                              */
+/* **********************                                              */
+/* Initialization of the CTM Transmitter                               */
+/*                                                                     */
+/* output vaiables:                                                    */
+/* tx_state :   pointer to a variable of tx_state_t containing the     */
+/*              initialized states of the receiver                     */
+/***********************************************************************/
+
+void init_ctm_transmitter(tx_state_t* tx_state);
+/*
+ ***********************************************************************
+ * Shutdown_ctm_transmitter()                                          *
+ * **********************                                              *
+ * Shutdown of the Cellular Text Telephone Modem transmitter and       *
+ * deallocate memory used by the CTM Tx buffers.                       *
+ *                                                                     *
+ * Input variables:                                                    *
+ * tx_state :   pointer to a variable of tx_state_t containing the     *
+ *              initialized states of the transmitter.                 *
+ ***********************************************************************
+*/
+void Shutdown_ctm_transmitter(tx_state_t* tx_state);
+
+/*
+ ***********************************************************************
+ * reset_ctm_transmitter()                                             *
+ * **********************                                              *
+ * Reset of the Cellular Text Telephone Modem transmitter, state       *
+ * machines and buffer pointers.                                       *
+ *                                                                     *
+ * Input variables:                                                    *
+ * tx_state :   pointer to a variable of tx_state_t containing the     *
+ *              initialized states of the transmitter.                 *
+ ***********************************************************************
+*/
+void reset_ctm_transmitter(tx_state_t* tx_state);
+
+
+/***********************************************************************/
+/* ctm_transmitter()                                                   */
+/* *****************                                                   */
+/* Runs the Cellular Text Telephone Modem (CTM) Transmitter for a      */
+/* block of 160 output samples, representing 8 gross bits.             */
+/* The bits, which are modulated into tones, are taken from an         */
+/* internal fifo buffer. If the fifo buffer is empty, zero-valued      */
+/* samples are generated. The fifo buffer is filled with               */
+/* channel-encoded and interlaeved bits, which are generated           */
+/* internally by coding the actual input character.  With each call of */
+/* this function one or less input characters can be coded. If there   */
+/* is no character to for transmission, one of the following code has  */
+/* be used:                                                            */
+/* - 0xFFFF:  indicates that there is no character to transmit and     */
+/*            that the transmitter should stay in idle mode, if it is  */
+/*            currently already in idle mode. If the transmitter is    */
+/*            NOT in idle mode, it might generate <IDLE> symbols in    */
+/*            to keep an active burst running. The CTM burst is        */
+/*            terminated if five <IDLE> symbols have been generated    */
+/*            consecutevely.                                           */
+/*                                                                     */
+/* - 0xFFFE:  although there is no character to transmit, a CTM burst  */
+/*            is initiated in order to signalize to the far-end side   */
+/*            that CTM is supported. The burst starts with the <IDLE>  */
+/*            symbol and will be contiued with <IDLE> symbols if there */
+/*            are no regular characters handed over during the next    */
+/*            calls of this function. The CTM burst is terminated if   */
+/*            five <IDLE> symbols have been transmitted consecutevely. */
+/*                                                                     */
+/* In order to avoid an overflow of the internal fifo buffer, the      */
+/* variable *ptrNumBitsStillToModulate should be checked before        */
+/* calling this function.                                              */
+/*                                                                     */
+/* input variables:                                                    */
+/* ucsCode                    UCS code of the character                */
+/*                            or one of the codes 0xFFFF or 0xFFFE     */
+/* sineOutput                 must be false in regular mode; if true,  */
+/*                            a pure sine output signal is generated   */
+/* output variables:                                                   */
+/* txToneVec                  output signal (vector  of 160 samples)   */
+/* input/output variables:                                             */
+/* tx_state                   pointer to the variable containing the   */
+/*                            transmitter states                       */
+/***********************************************************************/
+
+void ctm_transmitter(UWORD16   ucsCode, 
+                     fifo_state_t*  ctmCodeOutputVec,
+                     tx_state_t* tx_state );
+
+#endif