00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #if !defined(_SPANDSP_FAX_MODEMS_H_)
00029 #define _SPANDSP_FAX_MODEMS_H_
00030
00031 enum
00032 {
00033 FAX_MODEM_NONE = -1,
00034 FAX_MODEM_FLUSH = 0,
00035 FAX_MODEM_SILENCE_TX,
00036 FAX_MODEM_SILENCE_RX,
00037 FAX_MODEM_CED_TONE,
00038 FAX_MODEM_CNG_TONE,
00039 FAX_MODEM_NOCNG_TONE,
00040 FAX_MODEM_V21_TX,
00041 FAX_MODEM_V17_TX,
00042 FAX_MODEM_V27TER_TX,
00043 FAX_MODEM_V29_TX,
00044 FAX_MODEM_V21_RX,
00045 FAX_MODEM_V17_RX,
00046 FAX_MODEM_V27TER_RX,
00047 FAX_MODEM_V29_RX
00048 };
00049
00050
00051
00052
00053 typedef struct fax_modems_state_s fax_modems_state_t;
00054
00055 #if defined(__cplusplus)
00056 extern "C"
00057 {
00058 #endif
00059
00060
00061 SPAN_DECLARE_NONSTD(int) fax_modems_v17_v21_rx(void *user_data, const int16_t amp[], int len);
00062 SPAN_DECLARE_NONSTD(int) fax_modems_v27ter_v21_rx(void *user_data, const int16_t amp[], int len);
00063 SPAN_DECLARE_NONSTD(int) fax_modems_v29_v21_rx(void *user_data, const int16_t amp[], int len);
00064 SPAN_DECLARE_NONSTD(int) fax_modems_v17_v21_rx_fillin(void *user_data, int len);
00065 SPAN_DECLARE_NONSTD(int) fax_modems_v27ter_v21_rx_fillin(void *user_data, int len);
00066 SPAN_DECLARE_NONSTD(int) fax_modems_v29_v21_rx_fillin(void *user_data, int len);
00067
00068 SPAN_DECLARE_NONSTD(void) fax_modems_hdlc_tx_frame(void *user_data, const uint8_t *msg, int len);
00069
00070 SPAN_DECLARE(void) fax_modems_hdlc_tx_flags(fax_modems_state_t *s, int flags);
00071
00072 SPAN_DECLARE(void) fax_modems_start_fast_modem(fax_modems_state_t *s, int which, int bit_rate, int short_train, int hdlc_mode);
00073
00074 SPAN_DECLARE(void) fax_modems_start_slow_modem(fax_modems_state_t *s, int which);
00075
00076 SPAN_DECLARE(void) fax_modems_set_tep_mode(fax_modems_state_t *s, int use_tep);
00077
00078 SPAN_DECLARE(void) fax_modems_set_put_bit(fax_modems_state_t *s, put_bit_func_t put_bit, void *user_data);
00079
00080 SPAN_DECLARE(void) fax_modems_set_get_bit(fax_modems_state_t *s, get_bit_func_t get_bit, void *user_data);
00081
00082 SPAN_DECLARE(void) fax_modems_set_rx_handler(fax_modems_state_t *s,
00083 span_rx_handler_t rx_handler,
00084 void *rx_user_data,
00085 span_rx_fillin_handler_t rx_fillin_handler,
00086 void *rx_fillin_user_data);
00087
00088 SPAN_DECLARE(void) fax_modems_set_rx_active(fax_modems_state_t *s, int active);
00089
00090 SPAN_DECLARE(void) fax_modems_set_tx_handler(fax_modems_state_t *s, span_tx_handler_t handler, void *user_data);
00091
00092 SPAN_DECLARE(void) fax_modems_set_next_tx_handler(fax_modems_state_t *s, span_tx_handler_t handler, void *user_data);
00093
00094 SPAN_DECLARE(int) fax_modems_restart(fax_modems_state_t *s);
00095
00096
00097
00098
00099
00100
00101 SPAN_DECLARE(logging_state_t *) fax_modems_get_logging_state(fax_modems_state_t *s);
00102
00103 SPAN_DECLARE(fax_modems_state_t *) fax_modems_init(fax_modems_state_t *s,
00104 int use_tep,
00105 hdlc_frame_handler_t hdlc_accept,
00106 hdlc_underflow_handler_t hdlc_tx_underflow,
00107 put_bit_func_t non_ecm_put_bit,
00108 get_bit_func_t non_ecm_get_bit,
00109 tone_report_func_t tone_callback,
00110 void *user_data);
00111
00112 SPAN_DECLARE(int) fax_modems_release(fax_modems_state_t *s);
00113
00114 SPAN_DECLARE(int) fax_modems_free(fax_modems_state_t *s);
00115
00116 #if defined(__cplusplus)
00117 }
00118 #endif
00119
00120 #endif
00121