FreeCalypso > hg > fc-selenite
diff src/cs/layer1/gtt_include/l1gtt_baudot_functions.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/l1gtt_baudot_functions.h Sun Jul 15 04:39:26 2018 +0000 @@ -0,0 +1,145 @@ +/*****************************************************************************/ +/* */ +/* ========================================================================= */ +/* */ +/* Copyright (c) 2002 */ +/* Matsushita Communication Industrial, MMCD USA */ +/* */ +/* ========================================================================= */ +/* */ +/* File Name: */ +/* l1gtt_baudot_functions.h */ +/* */ +/* Purpose: */ +/* This is the header file for "l1gtt_baudot_functions.c". */ +/* */ +/* */ +/* Warnings: */ +/* */ +/* */ +/*****************************************************************************/ + +/*** Maintenance *********************************************************/ +/* */ +/* */ +/* 02/11/2002 initial version created Laura Ning */ +/* */ +/*************************************************************************/ +#ifndef _BAUDOT_DECODE_H_ +#define BAUDOT_DECODE_H + +#include "ctm_typedefs.h" + +/* +******************************************************************************* +* DEFINITIONS +******************************************************************************* +*/ + +/* definitions (might be of global interest) */ +#define BAUDOT_NUM_INFO_BITS 5 /* number of info bits per TTY character */ +#define BAUDOT_SHIFT_FIGURES 27 /* code of shift to figures symbol */ +#define BAUDOT_SHIFT_LETTERS 31 /* code of shift to letters symbol */ + +#define BAUDOT_LOGICAL_1 1 +#define BAUDOT_LOGICAL_0 -1 +#define BAUDOT_NON_TTY 0 +#define BAUDOT_START_BIT -1 +#define BAUDOT_STOP_BIT 1 + +#define BAUDOT_STOP_OUTPUT 2 /* STOP bit as the output of baudot_encode() to DSP */ + +/* definations (be only of local interest) */ + +#define START_OF_STOP_BIT 26 + +#define DETECT_WINDOW_WIDTH 4 /* A sliding window is used to detect start,stop and data bits */ +#define BAUDOT_SAMPLE_DURATION 3 /* The duration to meet to determine a valid baudot bit */ + +/* A temporary assumption of the input buffer size, to be */ +/* replaced later when TI has the actual buffer size defined */ +#define MAX_WORDS_OF_BUFFER1 40 /* Number of the 5ms-bits it can contain */ +#define TIME_INTERVAL_OF_BUFFER1 200 /* in the unit of ms */ +#define MAX_WORDS_ONE_TTYCODE 36 /* Number of 5ms-bits a TTY character has */ + +#define NUM_STOP_BITS_TX 2 /* number of stop bits per character */ + +/* ******************************************************************/ +/* Type definitions for variables that contain all states of the */ +/* Baudot decoder */ +/* ******************************************************************/ + + +typedef struct +{ + WORD16 remainedSampleVec[MAX_WORDS_ONE_TTYCODE]; /* hold the samples for last unfinished detection */ + UWORD16 remainedSampleLen; /* length of the remaining samples for last unfinished detection */ + WORD16 ttyCode; + UWORD16 cntBitsActualChar; + UWORD16 samplesRemained; /* number of samples left from last detection */ + BOOL startBitDetected; + BOOL inFigureMode; + +} baudot_decode_state_t; + +/* ******************************************************************/ +/* Type definitions for variables that contain all states of the */ +/* Baudot encoder */ +/* ******************************************************************/ +typedef struct +{ + WORD16 cntCharsSinceLastShift; + BOOL inFigureMode; + BOOL tailBitsGenerated; +// fifo_state_t fifo_state; +} baudot_encode_state_t; + +/****************************************************************************/ +/* convertChar2ttyCode() */ +/* ********************* */ +/* Conversion from character into tty code */ +/* */ +/* input variables: */ +/* - inChar charcater that shall be converted */ +/* */ +/* return value: baudot code of the input character */ +/* or -1 in case that inChar is not valid (e.g. inChar=='\0')*/ +/* */ +/* Matthias Doerbecker, Ericsson Eurolab Deutschland (EED/N/RV), 2000/02/17 */ +/****************************************************************************/ + +WORD16 convertChar2ttyCode(char inChar); + + + +/****************************************************************************/ +/* convertTTYcode2char() */ +/* ********************* */ +/* Conversion from tty code into character */ +/* */ +/* input variables: */ +/* - ttyCode Baudot code (must be within the range 0...63) */ +/* or -1 if there is nothing to convert */ +/* */ +/* return value: character (or '\0' if ttyCode is not valid) */ +/* */ +/* Matthias Doerbecker, Ericsson Eurolab Deutschland (EED/N/RV), 2000/02/17 */ +/****************************************************************************/ + +char convertTTYcode2char(WORD16 ttyCode); + +/* prototype declarations */ +void init_baudot_decode(baudot_decode_state_t* state); + +void init_baudot_encode(baudot_encode_state_t* state); + +void reset_baudot_decode(baudot_decode_state_t* state); + +void baudot_decode(WORD16* sampleVec, WORD16 numSamples, + fifo_state_t* ptrOutFifoState, + baudot_decode_state_t* state); +void baudot_encode(WORD16 inputTTYcode, + fifo_state_t* ptrOutFifoState, + baudot_encode_state_t* state); + +#endif