FreeCalypso > hg > fc-tourmaline
comparison src/cs/layer1/gtt_include/ctm/ctm_transmitter.h @ 0:4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Fri, 16 Oct 2020 06:23:26 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:4e78acac3d88 |
|---|---|
| 1 /* | |
| 2 ******************************************************************************* | |
| 3 * | |
| 4 * COPYRIGHT (C) 2000 BY ERICSSON EUROLAB DEUTSCHLAND GmbH | |
| 5 * 90411 NUERNBERG, GERMANY, Tel Int + 49 911 5217 100 | |
| 6 * | |
| 7 * The program(s) may be used and/or copied only with the | |
| 8 * written permission from Ericsson or in accordance | |
| 9 * with the terms and conditions stipulated in the agreement or | |
| 10 * contract under which the program(s) have been supplied. | |
| 11 * | |
| 12 ******************************************************************************* | |
| 13 * | |
| 14 * File : ctm_transmitter.h | |
| 15 * Author : EEDN/RV Matthias Doerbecker | |
| 16 * Tested Platforms : Sun Solaris, Windows NT 4.0 | |
| 17 * Description : header file for ctm_transmitter.c | |
| 18 * | |
| 19 * Changes since October 13, 2000: | |
| 20 * - added reset function reset_ctm_transmitter() | |
| 21 * | |
| 22 * $Log: $ | |
| 23 * | |
| 24 ******************************************************************************* | |
| 25 */ | |
| 26 #ifndef ctm_transmitter_h | |
| 27 #define ctm_transmitter_h "$Id: $" | |
| 28 | |
| 29 /* | |
| 30 ******************************************************************************* | |
| 31 * INCLUDE FILES | |
| 32 ******************************************************************************* | |
| 33 */ | |
| 34 | |
| 35 #include "ctm_typedefs.h" | |
| 36 #include "ctm_defines.h" | |
| 37 #include "init_interleaver.h" | |
| 38 #include "tonemod.h" | |
| 39 #include "conv_poly.h" | |
| 40 #include "fifo.h" | |
| 41 | |
| 42 /* ******************************************************************/ | |
| 43 /* Type definitions for variables that contain all states of the */ | |
| 44 /* CTM Transmitter */ | |
| 45 /* ******************************************************************/ | |
| 46 | |
| 47 typedef struct { | |
| 48 BOOL burstActive; | |
| 49 WORD16 cntIdleSymbols; | |
| 50 WORD16 cntEncBitsInCurrentBlock; | |
| 51 WORD16 cntTXBitsInCurrentBlock; | |
| 52 | |
| 53 /* vectors (not to be allocated) */ | |
| 54 WORD16 resync_sequence[RESYNC_SEQ_LENGTH]; | |
| 55 | |
| 56 #if (NUM_MUTE_ROWS>0) | |
| 57 WORD16 mutePositions[intlvB*NUM_MUTE_ROWS]; | |
| 58 #else | |
| 59 WORD16 mutePositions[1]; | |
| 60 #endif | |
| 61 | |
| 62 fifo_state_t fifo_state; | |
| 63 fifo_state_t octet_fifo_state; | |
| 64 interleaver_state_t diag_int_state; | |
| 65 conv_encoder_t conv_enc_state; | |
| 66 } tx_state_t; | |
| 67 | |
| 68 | |
| 69 | |
| 70 /***********************************************************************/ | |
| 71 /* init_ctm_transmitter() */ | |
| 72 /* ********************** */ | |
| 73 /* Initialization of the CTM Transmitter */ | |
| 74 /* */ | |
| 75 /* output vaiables: */ | |
| 76 /* tx_state : pointer to a variable of tx_state_t containing the */ | |
| 77 /* initialized states of the receiver */ | |
| 78 /***********************************************************************/ | |
| 79 | |
| 80 void init_ctm_transmitter(tx_state_t* tx_state); | |
| 81 /* | |
| 82 *********************************************************************** | |
| 83 * Shutdown_ctm_transmitter() * | |
| 84 * ********************** * | |
| 85 * Shutdown of the Cellular Text Telephone Modem transmitter and * | |
| 86 * deallocate memory used by the CTM Tx buffers. * | |
| 87 * * | |
| 88 * Input variables: * | |
| 89 * tx_state : pointer to a variable of tx_state_t containing the * | |
| 90 * initialized states of the transmitter. * | |
| 91 *********************************************************************** | |
| 92 */ | |
| 93 void Shutdown_ctm_transmitter(tx_state_t* tx_state); | |
| 94 | |
| 95 /* | |
| 96 *********************************************************************** | |
| 97 * reset_ctm_transmitter() * | |
| 98 * ********************** * | |
| 99 * Reset of the Cellular Text Telephone Modem transmitter, state * | |
| 100 * machines and buffer pointers. * | |
| 101 * * | |
| 102 * Input variables: * | |
| 103 * tx_state : pointer to a variable of tx_state_t containing the * | |
| 104 * initialized states of the transmitter. * | |
| 105 *********************************************************************** | |
| 106 */ | |
| 107 void reset_ctm_transmitter(tx_state_t* tx_state); | |
| 108 | |
| 109 | |
| 110 /***********************************************************************/ | |
| 111 /* ctm_transmitter() */ | |
| 112 /* ***************** */ | |
| 113 /* Runs the Cellular Text Telephone Modem (CTM) Transmitter for a */ | |
| 114 /* block of 160 output samples, representing 8 gross bits. */ | |
| 115 /* The bits, which are modulated into tones, are taken from an */ | |
| 116 /* internal fifo buffer. If the fifo buffer is empty, zero-valued */ | |
| 117 /* samples are generated. The fifo buffer is filled with */ | |
| 118 /* channel-encoded and interlaeved bits, which are generated */ | |
| 119 /* internally by coding the actual input character. With each call of */ | |
| 120 /* this function one or less input characters can be coded. If there */ | |
| 121 /* is no character to for transmission, one of the following code has */ | |
| 122 /* be used: */ | |
| 123 /* - 0xFFFF: indicates that there is no character to transmit and */ | |
| 124 /* that the transmitter should stay in idle mode, if it is */ | |
| 125 /* currently already in idle mode. If the transmitter is */ | |
| 126 /* NOT in idle mode, it might generate <IDLE> symbols in */ | |
| 127 /* to keep an active burst running. The CTM burst is */ | |
| 128 /* terminated if five <IDLE> symbols have been generated */ | |
| 129 /* consecutevely. */ | |
| 130 /* */ | |
| 131 /* - 0xFFFE: although there is no character to transmit, a CTM burst */ | |
| 132 /* is initiated in order to signalize to the far-end side */ | |
| 133 /* that CTM is supported. The burst starts with the <IDLE> */ | |
| 134 /* symbol and will be contiued with <IDLE> symbols if there */ | |
| 135 /* are no regular characters handed over during the next */ | |
| 136 /* calls of this function. The CTM burst is terminated if */ | |
| 137 /* five <IDLE> symbols have been transmitted consecutevely. */ | |
| 138 /* */ | |
| 139 /* In order to avoid an overflow of the internal fifo buffer, the */ | |
| 140 /* variable *ptrNumBitsStillToModulate should be checked before */ | |
| 141 /* calling this function. */ | |
| 142 /* */ | |
| 143 /* input variables: */ | |
| 144 /* ucsCode UCS code of the character */ | |
| 145 /* or one of the codes 0xFFFF or 0xFFFE */ | |
| 146 /* sineOutput must be false in regular mode; if true, */ | |
| 147 /* a pure sine output signal is generated */ | |
| 148 /* output variables: */ | |
| 149 /* txToneVec output signal (vector of 160 samples) */ | |
| 150 /* input/output variables: */ | |
| 151 /* tx_state pointer to the variable containing the */ | |
| 152 /* transmitter states */ | |
| 153 /***********************************************************************/ | |
| 154 | |
| 155 void ctm_transmitter(UWORD16 ucsCode, | |
| 156 fifo_state_t* ctmCodeOutputVec, | |
| 157 tx_state_t* tx_state ); | |
| 158 | |
| 159 #endif |
