fax_modems.h

Go to the documentation of this file.
00001 /*
00002  * SpanDSP - a series of DSP components for telephony
00003  *
00004  * fax_modems.h - definitions for the analogue modem set for fax processing
00005  *
00006  * Written by Steve Underwood <steveu@coppice.org>
00007  *
00008  * Copyright (C) 2008 Steve Underwood
00009  *
00010  * All rights reserved.
00011  *
00012  * This program is free software; you can redistribute it and/or modify
00013  * it under the terms of the GNU Lesser General Public License version 2.1,
00014  * as published by the Free Software Foundation.
00015  *
00016  * This program is distributed in the hope that it will be useful,
00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019  * GNU Lesser General Public License for more details.
00020  *
00021  * You should have received a copy of the GNU Lesser General Public
00022  * License along with this program; if not, write to the Free Software
00023  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00024  *
00025  * $Id: fax_modems.h,v 1.11 2009/04/26 12:55:23 steveu Exp $
00026  */
00027 
00028 /*! \file */
00029 
00030 #if !defined(_SPANDSP_FAX_MODEMS_H_)
00031 #define _SPANDSP_FAX_MODEMS_H_
00032 
00033 enum
00034 {
00035     FAX_MODEM_NONE = -1,
00036     FAX_MODEM_FLUSH = 0,
00037     FAX_MODEM_SILENCE_TX,
00038     FAX_MODEM_SILENCE_RX,
00039     FAX_MODEM_CED_TONE,
00040     FAX_MODEM_CNG_TONE,
00041     FAX_MODEM_NOCNG_TONE,
00042     FAX_MODEM_V21_TX,
00043     FAX_MODEM_V17_TX,
00044     FAX_MODEM_V27TER_TX,
00045     FAX_MODEM_V29_TX,
00046     FAX_MODEM_V21_RX,
00047     FAX_MODEM_V17_RX,
00048     FAX_MODEM_V27TER_RX,
00049     FAX_MODEM_V29_RX
00050 };
00051 
00052 /*!
00053     The set of modems needed for FAX, plus the auxilliary stuff, like tone generation.
00054 */
00055 typedef struct fax_modems_state_s fax_modems_state_t;
00056 
00057 #if defined(__cplusplus)
00058 extern "C"
00059 {
00060 #endif
00061 
00062 /* N.B. the following are currently a work in progress */
00063 SPAN_DECLARE(int) fax_modems_v17_v21_rx(void *user_data, const int16_t amp[], int len);
00064 SPAN_DECLARE(int) fax_modems_v27ter_v21_rx(void *user_data, const int16_t amp[], int len);
00065 SPAN_DECLARE(int) fax_modems_v29_v21_rx(void *user_data, const int16_t amp[], int len);
00066 SPAN_DECLARE(int) fax_modems_v17_v21_rx_fillin(void *user_data, int len);
00067 SPAN_DECLARE(int) fax_modems_v27ter_v21_rx_fillin(void *user_data, int len);
00068 SPAN_DECLARE(int) fax_modems_v29_v21_rx_fillin(void *user_data, int len);
00069 SPAN_DECLARE(void) fax_modems_start_rx_modem(fax_modems_state_t *s, int which);
00070 
00071 SPAN_DECLARE(void) fax_modems_set_tep_mode(fax_modems_state_t *s, int use_tep);
00072 
00073 SPAN_DECLARE(fax_modems_state_t *) fax_modems_init(fax_modems_state_t *s,
00074                                                    int use_tep,
00075                                                    hdlc_frame_handler_t hdlc_accept,
00076                                                    hdlc_underflow_handler_t hdlc_tx_underflow,
00077                                                    put_bit_func_t non_ecm_put_bit,
00078                                                    get_bit_func_t non_ecm_get_bit,
00079                                                    tone_report_func_t tone_callback,
00080                                                    void *user_data);
00081 
00082 SPAN_DECLARE(int) fax_modems_release(fax_modems_state_t *s);
00083 
00084 SPAN_DECLARE(int) fax_modems_free(fax_modems_state_t *s);
00085 
00086 #if defined(__cplusplus)
00087 }
00088 #endif
00089 
00090 #endif
00091 /*- End of file ------------------------------------------------------------*/

Generated on Tue Aug 4 03:35:57 2009 for spandsp by  doxygen 1.5.9