www.pudn.com > layer1.rar > ctm_transmitter.h


/* 
******************************************************************************* 
* 
*      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  symbols in    */ 
/*            to keep an active burst running. The CTM burst is        */ 
/*            terminated if five  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   */ 
/*            symbol and will be contiued with  symbols if there */ 
/*            are no regular characters handed over during the next    */ 
/*            calls of this function. The CTM burst is terminated if   */ 
/*            five  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