
/*
 *
 Copyright (c) Eicon Networks, 2002.
 *
 This source file is supplied for the use with
 Eicon Networks range of DIVA Server Adapters.
 *
 Eicon File Revision :    2.1
 *
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2, or (at your option)
 any later version.
 *
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY
 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 See the GNU General Public License for more details.
 *
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 */

/*#define DEBUG */











#define IMPLEMENT_DTMF 1
#define IMPLEMENT_LINE_INTERCONNECT2 1
#define IMPLEMENT_ECHO_CANCELLER 1
#define IMPLEMENT_RTP 1
#define IMPLEMENT_T38 1
#define IMPLEMENT_FAX_SUB_SEP_PWD 1
#define IMPLEMENT_V18 1
#define IMPLEMENT_DTMF_TONE 1
#define IMPLEMENT_PIAFS 1
#define IMPLEMENT_FAX_PAPER_FORMATS 1
#define IMPLEMENT_VOWN 1
#define IMPLEMENT_CAPIDTMF 1
#define IMPLEMENT_FAX_NONSTANDARD 1
#define VSWITCH_SUPPORT 1


#define IMPLEMENT_LINE_INTERCONNECT 0
#define IMPLEMENT_MARKED_OK_AFTER_FC 1

#include "capidtmf.h"

/*------------------------------------------------------------------*/
/* Common API internal definitions                                  */
/*------------------------------------------------------------------*/

#define MAX_APPL 240
#define MAX_NCCI           127

#define MSG_IN_QUEUE_SIZE  ((4096 + 3) & 0xfffc)  /* must be multiple of 4 */


#define MSG_IN_OVERHEAD    sizeof(APPL   *)

#define MAX_NL_CHANNEL     255
#define MAX_DATA_B3        8
#define MAX_DATA_ACK       MAX_DATA_B3
#define MAX_MULTI_IE       6
#define MAX_MSG_SIZE       256
#define MAX_MSG_PARMS      10
#define MAX_CPN_MASK_SIZE  16
#define MAX_MSN_CONFIG     10
#define EXT_CONTROLLER     0x80
#define CODEC              0x01
#define CODEC_PERMANENT    0x02
#define ADV_VOICE          0x03
#define MAX_CIP_TYPES      5  /* kind of CIP types for group optimization */
#define C_IND_MASK_DWORDS  ((MAX_APPL + 32) >> 5)


#define FAX_CONNECT_INFO_BUFFER_SIZE  256
#define NCPI_BUFFER_SIZE              256

#define MAX_CHANNELS_PER_PLCI         8
#define MAX_INTERNAL_COMMAND_LEVELS   4
#define INTERNAL_REQ_BUFFER_SIZE      272

#define INTERNAL_IND_BUFFER_SIZE      768

#define DTMF_PARAMETER_BUFFER_SIZE    12
#define ADV_VOICE_COEF_BUFFER_SIZE    50

#define LI_PLCI_B_QUEUE_ENTRIES       256



typedef struct _APPL APPL;
typedef struct _PLCI PLCI;
typedef struct _NCCI NCCI;
typedef struct _DIVA_CAPI_ADAPTER DIVA_CAPI_ADAPTER;
typedef struct _DATA_B3_DESC DATA_B3_DESC;
typedef struct _DATA_ACK_DESC DATA_ACK_DESC;
typedef struct manufacturer_profile_s MANUFACTURER_PROFILE;
typedef struct fax_ncpi_s FAX_NCPI;
typedef struct api_parse_s API_PARSE;
typedef struct api_save_s API_SAVE;
typedef struct msn_config_s MSN_CONFIG;
typedef struct msn_config_max_s MSN_CONFIG_MAX;
typedef struct msn_ld_s MSN_LD;

struct manufacturer_profile_s {
	dword private_options;
	dword rtp_primary_payloads;
	dword rtp_additional_payloads;
};

struct fax_ncpi_s {
	word options;
	word format;
};

struct msn_config_s {
	byte msn[MAX_CPN_MASK_SIZE];
};

struct msn_config_max_s {
	MSN_CONFIG    msn_conf[MAX_MSN_CONFIG];
};

struct msn_ld_s {
	dword low;
	dword high;
};

struct api_parse_s {
	word          length;
	byte *info;
};

struct api_save_s {
	API_PARSE     parms[MAX_MSG_PARMS + 1];
	byte          info[MAX_MSG_SIZE];
};

struct _DATA_B3_DESC {
	word          Handle;
	word          Number;
	word          Flags;
	word          Length;
	void *P;
};

struct _DATA_ACK_DESC {
	word          Handle;
	word          Number;
};

typedef void (*t_std_internal_command)(dword Id, PLCI *plci, byte Rc);

/************************************************************************/
/* Don't forget to adapt dos.asm after changing the _APPL structure!!!! */
struct _APPL {
	word          Id;
	word          NullCREnable;
	word          CDEnable;
	dword         S_Handle;






	LIST_ENTRY    s_function;
	dword         s_context;
	word          s_count;
	APPL *s_next;
	byte *xbuffer_used;
	void **xbuffer_internal;
	void **xbuffer_ptr;






	byte *queue;
	word          queue_size;
	word          queue_free;
	word          queue_read;
	word          queue_write;
	word          queue_signal;
	byte          msg_lost;
	byte          appl_flags;
	word          Number;

	word          MaxBuffer;
	byte          MaxNCCI;
	byte          MaxNCCIData;
	word          MaxDataLength;
	word          NCCIDataFlowCtrlTimer;
	byte *ReceiveBuffer;
	word *DataNCCI;
	word *DataFlags;
};


struct _PLCI {
	ENTITY        Sig;
	ENTITY        NL;
	word          RNum;
	word          RFlags;
	BUFFERS       RData[2];
	BUFFERS       XData[1];
	BUFFERS       NData[2];

	DIVA_CAPI_ADAPTER   *adapter;
	APPL      *appl;
	PLCI      *relatedPTYPLCI;
	byte          Id;
	byte          State;
	byte          sig_req;
	byte          nl_req;
	byte          SuppState;
	byte          channels;
	byte          tel;
	byte          B1_resource;
	byte          B2_prot;
	byte          B3_prot;

	word          command;
	word          m_command;
	word          internal_command;
	word          number;
	word          req_in_start;
	word          req_in;
	word          req_out;
	word          msg_in_write_pos;
	word          msg_in_read_pos;
	word          msg_in_wrap_pos;

	void *data_sent_ptr;
	byte          data_sent;
	byte          send_disc;
	byte          sig_global_req;
	byte          sig_remove_id;
	byte          nl_global_req;
	byte          nl_remove_id;
	byte          b_channel;
	byte          adv_nl;
	byte          manufacturer;
	byte          call_dir;
	byte          hook_state;
	byte          spoofed_msg;
	byte          ptyState;
	byte          cr_enquiry;
	word          hangup_flow_ctrl_timer;

	word          ncci_ring_list;
	byte          inc_dis_ncci_table[MAX_CHANNELS_PER_PLCI];
	t_std_internal_command internal_command_queue[MAX_INTERNAL_COMMAND_LEVELS];
	dword         c_ind_mask_table[C_IND_MASK_DWORDS];
	dword         group_optimization_mask_table[C_IND_MASK_DWORDS];
	byte          RBuffer[200];
	dword         msg_in_queue[MSG_IN_QUEUE_SIZE/sizeof(dword)];
	API_SAVE      saved_msg;
	API_SAVE      B_protocol;
	byte          fax_connect_info_length;
	byte          fax_connect_info_buffer[FAX_CONNECT_INFO_BUFFER_SIZE];
	byte          fax_edata_ack_length;
	word          nsf_control_bits;
	byte          ncpi_state;
	byte          ncpi_buffer[NCPI_BUFFER_SIZE];

	byte          internal_req_buffer[INTERNAL_REQ_BUFFER_SIZE];
	byte          internal_ind_buffer[INTERNAL_IND_BUFFER_SIZE + 3];
	dword         requested_options_conn;
	dword         requested_options;
	word          B1_facilities;
	API_SAVE   *adjust_b_parms_msg;
	word          adjust_b_facilities;
	word          adjust_b_command;
	word          adjust_b_ncci;
	word          adjust_b_mode;
	word          adjust_b_state;
	byte          adjust_b_restore;

	byte          dtmf_rec_active;
	word          dtmf_rec_pulse_ms;
	word          dtmf_rec_pause_ms;
	byte          dtmf_send_requests;
	word          dtmf_send_pulse_ms;
	word          dtmf_send_pause_ms;
	word          dtmf_cmd;
	word          dtmf_msg_number_queue[8];
	byte          dtmf_parameter_length;
	byte          dtmf_parameter_buffer[DTMF_PARAMETER_BUFFER_SIZE];


	t_capidtmf_state capidtmf_state;


	byte          li_bchannel_id;    /* BRI: 1..2, PRI: 1..32 */
	byte          li_channel_bits;
	byte          li_notify_update;
	word          li_cmd;
	word          li_write_command;
	word          li_write_channel;
	word          li_plci_b_write_pos;
	word          li_plci_b_read_pos;
	word          li_plci_b_req_pos;
	dword         li_plci_b_queue[LI_PLCI_B_QUEUE_ENTRIES];


	word          ec_cmd;
	word          ec_idi_options;
	word          ec_tail_length;


	byte          tone_last_indication_code;

	byte          vswitchstate;
	byte          vsprot;
	byte          vsprotdialect;
	byte          notifiedcall; /* Flag if it is a spoofed call */

	int           rx_dma_descriptor;
	dword         rx_dma_magic;
};


struct _NCCI {
	byte          data_out;
	byte          data_pending;
	byte          data_ack_out;
	byte          data_ack_pending;
	DATA_B3_DESC  DBuffer[MAX_DATA_B3];
	DATA_ACK_DESC DataAck[MAX_DATA_ACK];
};


struct _DIVA_CAPI_ADAPTER {
	IDI_CALL      request;
	byte          Id;
	byte          max_plci;
	byte          max_listen;
	byte          listen_active;
	PLCI      *plci;
	byte          ch_ncci[MAX_NL_CHANNEL + 1];
	byte          ncci_ch[MAX_NCCI + 1];
	byte          ncci_plci[MAX_NCCI + 1];
	byte          ncci_state[MAX_NCCI + 1];
	byte          ncci_next[MAX_NCCI + 1];
	NCCI          ncci[MAX_NCCI + 1];

	byte          ch_flow_control[MAX_NL_CHANNEL + 1];  /* Used by XON protocol */
	byte          ch_flow_control_pending;
	byte          ch_flow_plci[MAX_NL_CHANNEL + 1];
	int           last_flow_control_ch;

	dword         Info_Mask[MAX_APPL];
	dword         CIP_Mask[MAX_APPL];

	dword         Notification_Mask[MAX_APPL];
	PLCI      *codec_listen[MAX_APPL];
	dword         requested_options_table[MAX_APPL];
	API_PROFILE   profile;
	MANUFACTURER_PROFILE man_profile;
	dword         manufacturer_features;

	byte          AdvCodecFLAG;
	PLCI      *AdvCodecPLCI;
	PLCI      *AdvSignalPLCI;
	APPL      *AdvSignalAppl;
	byte          TelOAD[23];
	byte          TelOSA[23];
	byte          scom_appl_disable;
	PLCI      *automatic_lawPLCI;
	byte          automatic_law;
	byte          u_law;

	byte          adv_voice_coef_length;
	byte          adv_voice_coef_buffer[ADV_VOICE_COEF_BUFFER_SIZE];

	byte          li_pri;
	byte          li_channels;
	word          li_base;

	byte adapter_disabled;
	byte group_optimization_enabled; /* use application groups if enabled */
	dword sdram_bar;
	byte flag_dynamic_l1_down; /* for hunt groups:down layer 1 if no appl present*/
	byte FlowControlIdTable[256];
	byte FlowControlSkipTable[256];
	void *os_card; /* pointer to associated OS dependent adapter structure */
};


/*------------------------------------------------------------------*/
/* Application flags                                                */
/*------------------------------------------------------------------*/

#define APPL_FLAG_OLD_LI_SPEC           0x01
#define APPL_FLAG_PRIV_EC_SPEC          0x02


/*------------------------------------------------------------------*/
/* API parameter definitions                                        */
/*------------------------------------------------------------------*/

#define X75_TTX         1       /* x.75 for ttx                     */
#define TRF             2       /* transparent with hdlc framing    */
#define TRF_IN          3       /* transparent with hdlc fr. inc.   */
#define SDLC            4       /* sdlc, sna layer-2                */
#define X75_BTX         5       /* x.75 for btx                     */
#define LAPD            6       /* lapd (Q.921)                     */
#define X25_L2          7       /* x.25 layer-2                     */
#define V120_L2         8       /* V.120 layer-2 protocol           */
#define V42_IN          9       /* V.42 layer-2 protocol, incomming */
#define V42            10       /* V.42 layer-2 protocol            */
#define MDM_ATP        11       /* AT Parser built in the L2        */
#define X75_V42BIS     12       /* ISO7776 (X.75 SLP) modified to support V.42 bis compression */
#define RTPL2_IN       13       /* RTP layer-2 protocol, incomming  */
#define RTPL2          14       /* RTP layer-2 protocol             */
#define V120_V42BIS    15       /* V.120 layer-2 protocol supporting V.42 bis compression */

#define T70NL           1
#define X25PLP          2
#define T70NLX          3
#define TRANSPARENT_NL  4
#define ISO8208         5
#define T30             6


/*------------------------------------------------------------------*/
/* FAX interface to IDI                                             */
/*------------------------------------------------------------------*/

#define CAPI_MAX_HEAD_LINE_SPACE        89
#define CAPI_MAX_DATE_TIME_LENGTH       18

#define T30_MAX_STATION_ID_LENGTH       20
#define T30_MAX_SUBADDRESS_LENGTH       20
#define T30_MAX_PASSWORD_LENGTH         20

typedef struct t30_info_s T30_INFO;
struct t30_info_s {
	byte          code;
	byte          rate_div_2400;
	byte          resolution;
	byte          data_format;
	byte          pages_low;
	byte          pages_high;
	byte          operating_mode;
	byte          control_bits_low;
	byte          control_bits_high;
	byte          feature_bits_low;
	byte          feature_bits_high;
	byte          recording_properties;
	byte          universal_6;
	byte          universal_7;
	byte          station_id_len;
	byte          head_line_len;
	byte          station_id[T30_MAX_STATION_ID_LENGTH];
/* byte          head_line[];      */
/* byte          sub_sep_length;   */
/* byte          sub_sep_field[];  */
/* byte          pwd_length;       */
/* byte          pwd_field[];      */
/* byte          nsf_info_length;   */
/* byte          nsf_info_field[];  */
};


#define T30_RESOLUTION_R8_0385          0x00
#define T30_RESOLUTION_R8_0770_OR_200   0x01
#define T30_RESOLUTION_R8_1540          0x02
#define T30_RESOLUTION_R16_1540_OR_400  0x04
#define T30_RESOLUTION_R4_0385_OR_100   0x08
#define T30_RESOLUTION_300_300          0x10
#define T30_RESOLUTION_INCH_BASED       0x40
#define T30_RESOLUTION_METRIC_BASED     0x80

#define T30_RECORDING_WIDTH_ISO_A4      0
#define T30_RECORDING_WIDTH_ISO_B4      1
#define T30_RECORDING_WIDTH_ISO_A3      2
#define T30_RECORDING_WIDTH_COUNT       3

#define T30_RECORDING_LENGTH_ISO_A4     0
#define T30_RECORDING_LENGTH_ISO_B4     1
#define T30_RECORDING_LENGTH_UNLIMITED  2
#define T30_RECORDING_LENGTH_COUNT      3

#define T30_MIN_SCANLINE_TIME_00_00_00  0
#define T30_MIN_SCANLINE_TIME_05_05_05  1
#define T30_MIN_SCANLINE_TIME_10_05_05  2
#define T30_MIN_SCANLINE_TIME_10_10_10  3
#define T30_MIN_SCANLINE_TIME_20_10_10  4
#define T30_MIN_SCANLINE_TIME_20_20_20  5
#define T30_MIN_SCANLINE_TIME_40_20_20  6
#define T30_MIN_SCANLINE_TIME_40_40_40  7
#define T30_MIN_SCANLINE_TIME_RES_8     8
#define T30_MIN_SCANLINE_TIME_RES_9     9
#define T30_MIN_SCANLINE_TIME_RES_10    10
#define T30_MIN_SCANLINE_TIME_10_10_05  11
#define T30_MIN_SCANLINE_TIME_20_10_05  12
#define T30_MIN_SCANLINE_TIME_20_20_10  13
#define T30_MIN_SCANLINE_TIME_40_20_10  14
#define T30_MIN_SCANLINE_TIME_40_40_20  15
#define T30_MIN_SCANLINE_TIME_COUNT     16

#define T30_DATA_FORMAT_SFF             0
#define T30_DATA_FORMAT_ASCII           1
#define T30_DATA_FORMAT_NATIVE          2
#define T30_DATA_FORMAT_COUNT           3


#define T30_OPERATING_MODE_STANDARD     0
#define T30_OPERATING_MODE_CLASS2       1
#define T30_OPERATING_MODE_CLASS1       2
#define T30_OPERATING_MODE_CAPI         3
#define T30_OPERATING_MODE_CAPI_NEG     4
#define T30_OPERATING_MODE_COUNT        5

/* EDATA transmit messages */
#define EDATA_T30_DIS         0x01
#define EDATA_T30_FTT         0x02
#define EDATA_T30_MCF         0x03
#define EDATA_T30_PARAMETERS  0x04

/* EDATA receive messages */
#define EDATA_T30_DCS         0x81
#define EDATA_T30_TRAIN_OK    0x82
#define EDATA_T30_EOP         0x83
#define EDATA_T30_MPS         0x84
#define EDATA_T30_EOM         0x85
#define EDATA_T30_DTC         0x86
#define EDATA_T30_PAGE_END    0x87   /* Indicates end of page data. Reserved, but not implemented ! */
#define EDATA_T30_EOP_CAPI    0x88


#define T30_SUCCESS                        0
#define T30_ERR_NO_DIS_RECEIVED            1
#define T30_ERR_TIMEOUT_NO_RESPONSE        2
#define T30_ERR_RETRY_NO_RESPONSE          3
#define T30_ERR_TOO_MANY_REPEATS           4
#define T30_ERR_UNEXPECTED_MESSAGE         5
#define T30_ERR_UNEXPECTED_DCN             6
#define T30_ERR_DTC_UNSUPPORTED            7
#define T30_ERR_ALL_RATES_FAILED           8
#define T30_ERR_TOO_MANY_TRAINS            9
#define T30_ERR_RECEIVE_CORRUPTED          10
#define T30_ERR_UNEXPECTED_DISC            11
#define T30_ERR_APPLICATION_DISC           12
#define T30_ERR_INCOMPATIBLE_DIS           13
#define T30_ERR_INCOMPATIBLE_DCS           14
#define T30_ERR_TIMEOUT_NO_COMMAND         15
#define T30_ERR_RETRY_NO_COMMAND           16
#define T30_ERR_TIMEOUT_COMMAND_TOO_LONG   17
#define T30_ERR_TIMEOUT_RESPONSE_TOO_LONG  18
#define T30_ERR_NOT_IDENTIFIED             19
#define T30_ERR_SUPERVISORY_TIMEOUT        20
#define T30_ERR_TOO_LONG_SCAN_LINE         21
/* #define T30_ERR_RETRY_NO_PAGE_AFTER_MPS    22 */
#define T30_ERR_RETRY_NO_PAGE_RECEIVED     23
#define T30_ERR_RETRY_NO_DCS_AFTER_FTT     24
#define T30_ERR_RETRY_NO_DCS_AFTER_EOM     25
#define T30_ERR_RETRY_NO_DCS_AFTER_MPS     26
#define T30_ERR_RETRY_NO_DCN_AFTER_MCF     27
#define T30_ERR_RETRY_NO_DCN_AFTER_RTN     28
#define T30_ERR_RETRY_NO_CFR               29
#define T30_ERR_RETRY_NO_MCF_AFTER_EOP     30
#define T30_ERR_RETRY_NO_MCF_AFTER_EOM     31
#define T30_ERR_RETRY_NO_MCF_AFTER_MPS     32
#define T30_ERR_SUB_SEP_UNSUPPORTED        33
#define T30_ERR_PWD_UNSUPPORTED            34
#define T30_ERR_SUB_SEP_PWD_UNSUPPORTED    35
#define T30_ERR_INVALID_COMMAND_FRAME      36
#define T30_ERR_UNSUPPORTED_PAGE_CODING    37
#define T30_ERR_INVALID_PAGE_CODING        38
#define T30_ERR_INCOMPATIBLE_PAGE_CONFIG   39
#define T30_ERR_TIMEOUT_FROM_APPLICATION   40
#define T30_ERR_V34FAX_NO_REACTION_ON_MARK 41
#define T30_ERR_V34FAX_TRAINING_TIMEOUT    42
#define T30_ERR_V34FAX_UNEXPECTED_V21      43
#define T30_ERR_V34FAX_PRIMARY_CTS_ON      44
#define T30_ERR_V34FAX_TURNAROUND_POLLING  45
#define T30_ERR_V34FAX_V8_INCOMPATIBILITY  46


#define T30_CONTROL_BIT_DISABLE_FINE       0x0001
#define T30_CONTROL_BIT_ENABLE_ECM         0x0002
#define T30_CONTROL_BIT_ECM_64_BYTES       0x0004
#define T30_CONTROL_BIT_ENABLE_2D_CODING   0x0008
#define T30_CONTROL_BIT_ENABLE_T6_CODING   0x0010
#define T30_CONTROL_BIT_ENABLE_UNCOMPR     0x0020
#define T30_CONTROL_BIT_ACCEPT_POLLING     0x0040
#define T30_CONTROL_BIT_REQUEST_POLLING    0x0080
#define T30_CONTROL_BIT_MORE_DOCUMENTS     0x0100
#define T30_CONTROL_BIT_ACCEPT_SUBADDRESS  0x0200
#define T30_CONTROL_BIT_ACCEPT_SEL_POLLING 0x0400
#define T30_CONTROL_BIT_ACCEPT_PASSWORD    0x0800
#define T30_CONTROL_BIT_ENABLE_V34FAX      0x1000
#define T30_CONTROL_BIT_EARLY_CONNECT      0x2000

#define T30_CONTROL_BIT_ALL_FEATURES  (T30_CONTROL_BIT_ENABLE_ECM | T30_CONTROL_BIT_ENABLE_2D_CODING |   T30_CONTROL_BIT_ENABLE_T6_CODING | T30_CONTROL_BIT_ENABLE_UNCOMPR |   T30_CONTROL_BIT_ENABLE_V34FAX)

#define T30_FEATURE_BIT_FINE               0x0001
#define T30_FEATURE_BIT_ECM                0x0002
#define T30_FEATURE_BIT_ECM_64_BYTES       0x0004
#define T30_FEATURE_BIT_2D_CODING          0x0008
#define T30_FEATURE_BIT_T6_CODING          0x0010
#define T30_FEATURE_BIT_UNCOMPR_ENABLED    0x0020
#define T30_FEATURE_BIT_POLLING            0x0040
#define T30_FEATURE_BIT_MORE_DOCUMENTS     0x0100
#define T30_FEATURE_BIT_V34FAX             0x1000


#define T30_NSF_CONTROL_BIT_ENABLE_NSF     0x0001
#define T30_NSF_CONTROL_BIT_RAW_INFO       0x0002
#define T30_NSF_CONTROL_BIT_NEGOTIATE_IND  0x0004
#define T30_NSF_CONTROL_BIT_NEGOTIATE_RESP 0x0008

#define T30_NSF_ELEMENT_NSF_FIF            0x00
#define T30_NSF_ELEMENT_NSC_FIF            0x01
#define T30_NSF_ELEMENT_NSS_FIF            0x02
#define T30_NSF_ELEMENT_COMPANY_NAME       0x03


/*------------------------------------------------------------------*/
/* Analog modem definitions                                         */
/*------------------------------------------------------------------*/

typedef struct async_s ASYNC_FORMAT;
struct async_s {
	unsigned pe:1;
	unsigned parity:2;
	unsigned spare:2;
	unsigned stp:1;
	unsigned ch_len:2;   /* 3th octett in CAI */
};


/*------------------------------------------------------------------*/
/* PLCI/NCCI states                                                 */
/*------------------------------------------------------------------*/

#define IDLE                    0
#define OUTG_CON_PENDING        1
#define INC_CON_PENDING         2
#define INC_CON_ALERT           3
#define INC_CON_ACCEPT          4
#define INC_ACT_PENDING         5
#define LISTENING               6
#define CONNECTED               7
#define OUTG_DIS_PENDING        8
#define INC_DIS_PENDING         9
#define LOCAL_CONNECT           10
#define INC_RES_PENDING         11
#define OUTG_RES_PENDING        12
#define SUSPENDING              13
#define ADVANCED_VOICE_SIG      14
#define ADVANCED_VOICE_NOSIG    15
#define RESUMING                16
#define INC_CON_CONNECTED_ALERT 17
#define OUTG_REJ_PENDING        18


/*------------------------------------------------------------------*/
/* auxiliary states for supplementary services                     */
/*------------------------------------------------------------------*/

#define IDLE                0
#define HOLD_REQUEST        1
#define HOLD_INDICATE       2
#define CALL_HELD           3
#define RETRIEVE_REQUEST    4
#define RETRIEVE_INDICATION 5

/*------------------------------------------------------------------*/
/* Capi IE + Msg types                                              */
/*------------------------------------------------------------------*/
#define ESC_CAUSE        0x800 | CAU        /* Escape cause element */
#define ESC_MSGTYPE      0x800 | MSGTYPEIE  /* Escape message type  */
#define ESC_CHI          0x800 | CHI        /* Escape channel id    */
#define ESC_LAW          0x800 | BC         /* Escape law info      */
#define ESC_CR           0x800 | CRIE       /* Escape CallReference */
#define ESC_PROFILE      0x800 | PROFILEIE  /* Escape profile       */
#define ESC_SSEXT        0x800 | SSEXTIE    /* Escape Supplem. Serv.*/
#define ESC_VSWITCH      0x800 | VSWITCHIE  /* Escape VSwitch       */
#define CST              0x14               /* Call State i.e.      */
#define PI               0x1E               /* Progress Indicator   */
#define NI               0x27               /* Notification Ind     */
#define CONN_NR          0x4C               /* Connected Number     */
#define CONG_RNR         0xBF               /* Congestion RNR       */
#define CONG_RR          0xB0               /* Congestion RR        */
#define RESERVED         0xFF               /* Res. for future use  */
#define ON_BOARD_CODEC   0x02               /* external controller  */
#define HANDSET          0x04               /* Codec+Handset(Pro11) */
#define HOOK_SUPPORT     0x01               /* activate Hook signal */
#define SCR              0x7a               /* unscreened number    */

#define HOOK_OFF_REQ     0x9001             /* internal conn req    */
#define HOOK_ON_REQ      0x9002             /* internal disc req    */
#define SUSPEND_REQ      0x9003             /* internal susp req    */
#define RESUME_REQ       0x9004             /* internal resume req  */
#define USELAW_REQ       0x9005             /* internal law    req  */
#define LISTEN_SIG_ASSIGN_PEND  0x9006
#define PERM_LIST_REQ    0x900a             /* permanent conn DCE   */
#define C_HOLD_REQ       0x9011
#define C_RETRIEVE_REQ   0x9012
#define C_NCR_FAC_REQ    0x9013
#define PERM_COD_ASSIGN  0x9014
#define PERM_COD_CALL    0x9015
#define PERM_COD_HOOK    0x9016
#define PERM_COD_CONN_PEND 0x9017           /* wait for connect_con */
#define PTY_REQ_PEND     0x9018
#define CD_REQ_PEND      0x9019
#define CF_START_PEND    0x901a
#define CF_STOP_PEND     0x901b
#define ECT_REQ_PEND     0x901c
#define GETSERV_REQ_PEND 0x901d
#define BLOCK_PLCI       0x901e
#define INTERR_NUMBERS_REQ_PEND         0x901f
#define INTERR_DIVERSION_REQ_PEND       0x9020
#define MWI_ACTIVATE_REQ_PEND           0x9021
#define MWI_DEACTIVATE_REQ_PEND         0x9022
#define SSEXT_REQ_COMMAND               0x9023
#define SSEXT_NC_REQ_COMMAND            0x9024
#define START_L1_SIG_ASSIGN_PEND        0x9025
#define REM_L1_SIG_ASSIGN_PEND          0x9026
#define CONF_BEGIN_REQ_PEND             0x9027
#define CONF_ADD_REQ_PEND               0x9028
#define CONF_SPLIT_REQ_PEND             0x9029
#define CONF_DROP_REQ_PEND              0x902a
#define CONF_ISOLATE_REQ_PEND           0x902b
#define CONF_REATTACH_REQ_PEND          0x902c
#define VSWITCH_REQ_PEND                0x902d
#define GET_MWI_STATE                   0x902e
#define CCBS_REQUEST_REQ_PEND           0x902f
#define CCBS_DEACTIVATE_REQ_PEND        0x9030
#define CCBS_INTERROGATE_REQ_PEND       0x9031

#define NO_INTERNAL_COMMAND             0
#define DTMF_COMMAND_1                  1
#define DTMF_COMMAND_2                  2
#define DTMF_COMMAND_3                  3
#define MIXER_COMMAND_1                 4
#define MIXER_COMMAND_2                 5
#define MIXER_COMMAND_3                 6
#define ADV_VOICE_COMMAND_CONNECT_1     7
#define ADV_VOICE_COMMAND_CONNECT_2     8
#define ADV_VOICE_COMMAND_CONNECT_3     9
#define ADV_VOICE_COMMAND_DISCONNECT_1  10
#define ADV_VOICE_COMMAND_DISCONNECT_2  11
#define ADV_VOICE_COMMAND_DISCONNECT_3  12
#define ADJUST_B_RESTORE_1              13
#define ADJUST_B_RESTORE_2              14
#define RESET_B3_COMMAND_1              15
#define SELECT_B_COMMAND_1              16
#define FAX_CONNECT_INFO_COMMAND_1      17
#define FAX_CONNECT_INFO_COMMAND_2      18
#define FAX_ADJUST_B23_COMMAND_1        19
#define FAX_ADJUST_B23_COMMAND_2        20
#define EC_COMMAND_1                    21
#define EC_COMMAND_2                    22
#define EC_COMMAND_3                    23
#define RTP_CONNECT_B3_REQ_COMMAND_1    24
#define RTP_CONNECT_B3_REQ_COMMAND_2    25
#define RTP_CONNECT_B3_REQ_COMMAND_3    26
#define RTP_CONNECT_B3_RES_COMMAND_1    27
#define RTP_CONNECT_B3_RES_COMMAND_2    28
#define RTP_CONNECT_B3_RES_COMMAND_3    29
#define HOLD_SAVE_COMMAND_1             30
#define RETRIEVE_RESTORE_COMMAND_1      31
#define FAX_DISCONNECT_COMMAND_1        32
#define FAX_DISCONNECT_COMMAND_2        33
#define FAX_DISCONNECT_COMMAND_3        34
#define FAX_EDATA_ACK_COMMAND_1         35
#define FAX_EDATA_ACK_COMMAND_2         36
#define FAX_CONNECT_ACK_COMMAND_1       37
#define FAX_CONNECT_ACK_COMMAND_2       38
#define STD_INTERNAL_COMMAND_COUNT      39

#define UID              0x2d               /* User Id for Mgmt      */

#define CALL_DIR_OUT             0x01       /* call direction of initial call */
#define CALL_DIR_IN              0x02
#define CALL_DIR_ORIGINATE       0x04       /* DTE/DCE direction according to */
#define CALL_DIR_ANSWER          0x08       /*   state of B-Channel Operation */
#define CALL_DIR_FORCE_OUTG_NL   0x10       /* for RESET_B3 reconnect, after DISC_B3... */

#define AWAITING_MANUF_CON 0x80             /* command spoofing flags */
#define SPOOFING_REQUIRED  0xff
#define AWAITING_SELECT_B  0xef

/*------------------------------------------------------------------*/
/* B_CTRL / DSP_CTRL                                                */
/*------------------------------------------------------------------*/

#define DSP_CTRL_OLD_SET_MIXER_COEFFICIENTS     0x01
#define DSP_CTRL_SET_BCHANNEL_PASSIVATION_BRI   0x02
#define DSP_CTRL_SET_DTMF_PARAMETERS            0x03

#define MANUFACTURER_FEATURE_SLAVE_CODEC          0x00000001L
#define MANUFACTURER_FEATURE_FAX_MORE_DOCUMENTS   0x00000002L
#define MANUFACTURER_FEATURE_HARDDTMF             0x00000004L
#define MANUFACTURER_FEATURE_SOFTDTMF_SEND        0x00000008L
#define MANUFACTURER_FEATURE_DTMF_PARAMETERS      0x00000010L
#define MANUFACTURER_FEATURE_SOFTDTMF_RECEIVE     0x00000020L
#define MANUFACTURER_FEATURE_FAX_SUB_SEP_PWD      0x00000040L
#define MANUFACTURER_FEATURE_V18                  0x00000080L
#define MANUFACTURER_FEATURE_MIXER_CH_CH          0x00000100L
#define MANUFACTURER_FEATURE_MIXER_CH_PC          0x00000200L
#define MANUFACTURER_FEATURE_MIXER_PC_CH          0x00000400L
#define MANUFACTURER_FEATURE_MIXER_PC_PC          0x00000800L
#define MANUFACTURER_FEATURE_ECHO_CANCELLER       0x00001000L
#define MANUFACTURER_FEATURE_RTP                  0x00002000L
#define MANUFACTURER_FEATURE_T38                  0x00004000L
#define MANUFACTURER_FEATURE_TRANSP_DELIVERY_CONF 0x00008000L
#define MANUFACTURER_FEATURE_XONOFF_FLOW_CONTROL  0x00010000L
#define MANUFACTURER_FEATURE_OOB_CHANNEL          0x00020000L
#define MANUFACTURER_FEATURE_IN_BAND_CHANNEL      0x00040000L
#define MANUFACTURER_FEATURE_IN_BAND_FEATURE      0x00080000L
#define MANUFACTURER_FEATURE_PIAFS                0x00100000L
#define MANUFACTURER_FEATURE_DTMF_TONE            0x00200000L
#define MANUFACTURER_FEATURE_FAX_PAPER_FORMATS    0x00400000L
#define MANUFACTURER_FEATURE_OK_FC_LABEL          0x00800000L
#define MANUFACTURER_FEATURE_VOWN                 0x01000000L
#define MANUFACTURER_FEATURE_XCONNECT             0x02000000L
#define MANUFACTURER_FEATURE_DMACONNECT           0x04000000L
#define MANUFACTURER_FEATURE_AUDIO_TAP            0x08000000L
#define MANUFACTURER_FEATURE_FAX_NONSTANDARD      0x10000000L

/*------------------------------------------------------------------*/
/* DTMF interface to IDI                                            */
/*------------------------------------------------------------------*/


#define DTMF_DIGIT_TONE_LOW_GROUP_697_HZ        0x00
#define DTMF_DIGIT_TONE_LOW_GROUP_770_HZ        0x01
#define DTMF_DIGIT_TONE_LOW_GROUP_852_HZ        0x02
#define DTMF_DIGIT_TONE_LOW_GROUP_941_HZ        0x03
#define DTMF_DIGIT_TONE_LOW_GROUP_MASK          0x03
#define DTMF_DIGIT_TONE_HIGH_GROUP_1209_HZ      0x00
#define DTMF_DIGIT_TONE_HIGH_GROUP_1336_HZ      0x04
#define DTMF_DIGIT_TONE_HIGH_GROUP_1477_HZ      0x08
#define DTMF_DIGIT_TONE_HIGH_GROUP_1633_HZ      0x0c
#define DTMF_DIGIT_TONE_HIGH_GROUP_MASK         0x0c
#define DTMF_DIGIT_TONE_CODE_0                  0x07
#define DTMF_DIGIT_TONE_CODE_1                  0x00
#define DTMF_DIGIT_TONE_CODE_2                  0x04
#define DTMF_DIGIT_TONE_CODE_3                  0x08
#define DTMF_DIGIT_TONE_CODE_4                  0x01
#define DTMF_DIGIT_TONE_CODE_5                  0x05
#define DTMF_DIGIT_TONE_CODE_6                  0x09
#define DTMF_DIGIT_TONE_CODE_7                  0x02
#define DTMF_DIGIT_TONE_CODE_8                  0x06
#define DTMF_DIGIT_TONE_CODE_9                  0x0a
#define DTMF_DIGIT_TONE_CODE_STAR               0x03
#define DTMF_DIGIT_TONE_CODE_HASHMARK           0x0b
#define DTMF_DIGIT_TONE_CODE_A                  0x0c
#define DTMF_DIGIT_TONE_CODE_B                  0x0d
#define DTMF_DIGIT_TONE_CODE_C                  0x0e
#define DTMF_DIGIT_TONE_CODE_D                  0x0f

#define DTMF_UDATA_REQUEST_SEND_DIGITS            16
#define DTMF_UDATA_REQUEST_ENABLE_RECEIVER        17
#define DTMF_UDATA_REQUEST_DISABLE_RECEIVER       18
#define DTMF_UDATA_INDICATION_DIGITS_SENT         16
#define DTMF_UDATA_INDICATION_DIGITS_RECEIVED     17
#define DTMF_UDATA_INDICATION_MODEM_CALLING_TONE  18
#define DTMF_UDATA_INDICATION_FAX_CALLING_TONE    19
#define DTMF_UDATA_INDICATION_ANSWER_TONE         20

#define UDATA_REQUEST_MIXER_TAP_DATA        27
#define UDATA_INDICATION_MIXER_TAP_DATA     27

#define DTMF_LISTEN_ACTIVE_FLAG        0x01
#define DTMF_SEND_DIGIT_FLAG           0x01


/*------------------------------------------------------------------*/
/* Mixer interface to IDI                                           */
/*------------------------------------------------------------------*/


#define LI2_FLAG_PCCONNECT_A_B 0x40000000
#define LI2_FLAG_PCCONNECT_B_A 0x80000000

#define MIXER_BCHANNELS_BRI    2
#define MIXER_IC_CHANNELS_BRI  MIXER_BCHANNELS_BRI
#define MIXER_IC_CHANNEL_BASE  MIXER_BCHANNELS_BRI
#define MIXER_CHANNELS_BRI     (MIXER_BCHANNELS_BRI + MIXER_IC_CHANNELS_BRI)
#define MIXER_CHANNELS_PRI     32

typedef struct li_config_s LI_CONFIG;

struct xconnect_card_address_s {
	dword low;
	dword high;
};

struct xconnect_transfer_address_s {
	struct xconnect_card_address_s card_address;
	dword offset;
};

struct li_config_s {
	DIVA_CAPI_ADAPTER   *adapter;
	PLCI   *plci;
	struct xconnect_transfer_address_s send_b;
	struct xconnect_transfer_address_s send_pc;
	byte   *flag_table;  /* dword aligned and sized */
	byte   *coef_table;  /* dword aligned and sized */
	byte channel;
	byte curchnl;
	byte chflags;
};

extern LI_CONFIG   *li_config_table;
extern word li_total_channels;

#define LI_CHANNEL_INVOLVED        0x01
#define LI_CHANNEL_ACTIVE          0x02
#define LI_CHANNEL_TX_DATA         0x04
#define LI_CHANNEL_RX_DATA         0x08
#define LI_CHANNEL_CONFERENCE      0x10
#define LI_CHANNEL_ADDRESSES_SET   0x80

#define LI_CHFLAG_MONITOR          0x01
#define LI_CHFLAG_MIX              0x02
#define LI_CHFLAG_LOOP             0x04

#define LI_FLAG_INTERCONNECT       0x01
#define LI_FLAG_MONITOR            0x02
#define LI_FLAG_MIX                0x04
#define LI_FLAG_PCCONNECT          0x08
#define LI_FLAG_CONFERENCE         0x10
#define LI_FLAG_ANNOUNCEMENT       0x20

#define LI_COEF_CH_CH              0x01
#define LI_COEF_CH_PC              0x02
#define LI_COEF_PC_CH              0x04
#define LI_COEF_PC_PC              0x08
#define LI_COEF_CH_CH_SET          0x10
#define LI_COEF_CH_PC_SET          0x20
#define LI_COEF_PC_CH_SET          0x40
#define LI_COEF_PC_PC_SET          0x80

#define LI_REQ_SILENT_UPDATE       0xffff

#define LI_PLCI_B_LAST_FLAG        ((dword) 0x80000000L)
#define LI_PLCI_B_DISC_FLAG        ((dword) 0x40000000L)
#define LI_PLCI_B_SKIP_FLAG        ((dword) 0x20000000L)
#define LI_PLCI_B_FLAG_MASK        ((dword) 0xe0000000L)

#define UDATA_REQUEST_SET_MIXER_COEFS_BRI       24
#define UDATA_REQUEST_SET_MIXER_COEFS_PRI_SYNC  25
#define UDATA_REQUEST_SET_MIXER_COEFS_PRI_ASYN  26
#define UDATA_INDICATION_MIXER_COEFS_SET        24

#define MIXER_FEATURE_ENABLE_TX_DATA        0x0001
#define MIXER_FEATURE_ENABLE_RX_DATA        0x0002

#define MIXER_COEF_LINE_CHANNEL_MASK        0x1f
#define MIXER_COEF_LINE_FROM_PC_FLAG        0x20
#define MIXER_COEF_LINE_TO_PC_FLAG          0x40
#define MIXER_COEF_LINE_ROW_FLAG            0x80

#define UDATA_REQUEST_XCONNECT_FROM         28
#define UDATA_INDICATION_XCONNECT_FROM      28
#define UDATA_REQUEST_XCONNECT_TO           29
#define UDATA_INDICATION_XCONNECT_TO        29

#define XCONNECT_CHANNEL_PORT_B             0x0000
#define XCONNECT_CHANNEL_PORT_PC            0x8000
#define XCONNECT_CHANNEL_PORT_MASK          0x8000
#define XCONNECT_CHANNEL_NUMBER_MASK        0x7fff
#define XCONNECT_CHANNEL_PORT_COUNT         2

#define XCONNECT_SUCCESS           0x0000
#define XCONNECT_ERROR             0x0001


/*------------------------------------------------------------------*/
/* Echo canceller interface to IDI                                  */
/*------------------------------------------------------------------*/


#define PRIVATE_ECHO_CANCELLER         0

#define PRIV_SELECTOR_ECHO_CANCELLER   255

#define EC_ENABLE_OPERATION            1
#define EC_DISABLE_OPERATION           2
#define EC_FREEZE_COEFFICIENTS         3
#define EC_RESUME_COEFFICIENT_UPDATE   4
#define EC_RESET_COEFFICIENTS          5

#define EC_DISABLE_NON_LINEAR_PROCESSING     0x0001
#define EC_DO_NOT_REQUIRE_REVERSALS          0x0002
#define EC_DETECT_DISABLE_TONE               0x0004

#define EC_SUCCESS                           0
#define EC_UNSUPPORTED_OPERATION             1

#define EC_BYPASS_DUE_TO_CONTINUOUS_2100HZ   1
#define EC_BYPASS_DUE_TO_REVERSED_2100HZ     2
#define EC_BYPASS_RELEASED                   3

#define DSP_CTRL_SET_LEC_PARAMETERS          0x05

#define LEC_ENABLE_ECHO_CANCELLER            0x0001
#define LEC_ENABLE_2100HZ_DETECTOR           0x0002
#define LEC_REQUIRE_2100HZ_REVERSALS         0x0004
#define LEC_MANUAL_DISABLE                   0x0008
#define LEC_ENABLE_NONLINEAR_PROCESSING      0x0010
#define LEC_FREEZE_COEFFICIENTS              0x0020
#define LEC_RESET_COEFFICIENTS               0x8000

#define LEC_MAX_SUPPORTED_TAIL_LENGTH        32

#define LEC_UDATA_INDICATION_DISABLE_DETECT  9

#define LEC_DISABLE_TYPE_CONTIGNUOUS_2100HZ  0x00
#define LEC_DISABLE_TYPE_REVERSED_2100HZ     0x01
#define LEC_DISABLE_RELEASED                 0x02


/*------------------------------------------------------------------*/
/* RTP interface to IDI                                             */
/*------------------------------------------------------------------*/


#define B1_RTP                  31
#define B2_RTP                  31
#define B3_RTP                  31

#define PRIVATE_RTP                    1

#define RTP_PRIM_PAYLOAD_PCMU_8000     0
#define RTP_PRIM_PAYLOAD_1016_8000     1
#define RTP_PRIM_PAYLOAD_G726_32_8000  2
#define RTP_PRIM_PAYLOAD_GSM_8000      3
#define RTP_PRIM_PAYLOAD_G723_8000     4
#define RTP_PRIM_PAYLOAD_DVI4_8000     5
#define RTP_PRIM_PAYLOAD_DVI4_16000    6
#define RTP_PRIM_PAYLOAD_LPC_8000      7
#define RTP_PRIM_PAYLOAD_PCMA_8000     8
#define RTP_PRIM_PAYLOAD_G722_16000    9
#define RTP_PRIM_PAYLOAD_QCELP_8000    12
#define RTP_PRIM_PAYLOAD_G728_8000     14
#define RTP_PRIM_PAYLOAD_G729_8000     18
#define RTP_PRIM_PAYLOAD_GSM_HR_8000   30
#define RTP_PRIM_PAYLOAD_GSM_EFR_8000  31

#define RTP_ADD_PAYLOAD_BASE           32
#define RTP_ADD_PAYLOAD_RED            32
#define RTP_ADD_PAYLOAD_CN_8000        33
#define RTP_ADD_PAYLOAD_DTMF           34

#define RTP_SUCCESS                         0
#define RTP_ERR_SSRC_OR_PAYLOAD_CHANGE      1

#define UDATA_REQUEST_RTP_RECONFIGURE       64
#define UDATA_INDICATION_RTP_CHANGE         65
#define BUDATA_REQUEST_QUERY_RTCP_REPORT    1
#define BUDATA_INDICATION_RTCP_REPORT       1

#define RTP_CONNECT_OPTION_DISC_ON_SSRC_CHANGE    0x00000001L
#define RTP_CONNECT_OPTION_DISC_ON_PT_CHANGE      0x00000002L
#define RTP_CONNECT_OPTION_DISC_ON_UNKNOWN_PT     0x00000004L
#define RTP_CONNECT_OPTION_NO_SILENCE_TRANSMIT    0x00010000L

#define RTP_PAYLOAD_OPTION_VOICE_ACTIVITY_DETECT  0x0001
#define RTP_PAYLOAD_OPTION_DISABLE_POST_FILTER    0x0002
#define RTP_PAYLOAD_OPTION_G723_LOW_CODING_RATE   0x0100

#define RTP_PACKET_FILTER_IGNORE_UNKNOWN_SSRC     0x00000001L

#define RTP_CHANGE_FLAG_SSRC_CHANGE               0x00000001L
#define RTP_CHANGE_FLAG_PAYLOAD_TYPE_CHANGE       0x00000002L
#define RTP_CHANGE_FLAG_UNKNOWN_PAYLOAD_TYPE      0x00000004L


/*------------------------------------------------------------------*/
/* T.38 interface to IDI                                            */
/*------------------------------------------------------------------*/


#define B1_T38                  30
#define B2_T38                  30
#define B3_T38                  30

#define PRIVATE_T38                    2


/*------------------------------------------------------------------*/
/* PIAFS interface to IDI                                            */
/*------------------------------------------------------------------*/


#define B1_PIAFS                29
#define B2_PIAFS                29

#define PRIVATE_PIAFS           29

/*
  B2 configuration for PIAFS:
  +---------------------+------+-----------------------------------------+
  | PIAFS Protocol      | byte | Bit 1 - Protocol Speed                  |
  | Speed configuration |      |         0 - 32K                         |
  |                     |      |         1 - 64K (default)               |
  |                     |      | Bit 2 - Variable Protocol Speed         |
  |                     |      |         0 - Speed is fix                |
  |                     |      |         1 - Speed is variable (default) |
  +---------------------+------+-----------------------------------------+
  | Direction           | word | Enable compression/decompression for    |
  |                     |      | 0: All direction                        |
  |                     |      | 1: disable outgoing data                |
  |                     |      | 2: disable incomming data               |
  |                     |      | 3: disable both direction (default)     |
  +---------------------+------+-----------------------------------------+
  | Number of code      | word | Parameter P1 of V.42bis in accordance   |
  | words               |      | with V.42bis                            |
  +---------------------+------+-----------------------------------------+
  | Maximum String      | word | Parameter P2 of V.42bis in accordance   |
  | Length              |      | with V.42bis                            |
  +---------------------+------+-----------------------------------------+
  | control (UDATA)     | byte | enable PIAFS control communication      |
  | abilities           |      |                                         |
  +---------------------+------+-----------------------------------------+
*/
#define PIAFS_UDATA_ABILITIES  0x80

/*------------------------------------------------------------------*/
/* FAX SUB/SEP/PWD extension                                        */
/*------------------------------------------------------------------*/


#define PRIVATE_FAX_SUB_SEP_PWD        3



/*------------------------------------------------------------------*/
/* V.18 extension                                                   */
/*------------------------------------------------------------------*/


#define PRIVATE_V18                    4



/*------------------------------------------------------------------*/
/* DTMF TONE extension                                              */
/*------------------------------------------------------------------*/


#define DTMF_GET_SUPPORTED_DETECT_CODES  0xf8
#define DTMF_GET_SUPPORTED_SEND_CODES    0xf9
#define DTMF_LISTEN_TONE_START           0xfa
#define DTMF_LISTEN_TONE_STOP            0xfb
#define DTMF_SEND_TONE                   0xfc
#define DTMF_LISTEN_MF_START             0xfd
#define DTMF_LISTEN_MF_STOP              0xfe
#define DTMF_SEND_MF                     0xff

#define DTMF_MF_DIGIT_TONE_CODE_1               0x10
#define DTMF_MF_DIGIT_TONE_CODE_2               0x11
#define DTMF_MF_DIGIT_TONE_CODE_3               0x12
#define DTMF_MF_DIGIT_TONE_CODE_4               0x13
#define DTMF_MF_DIGIT_TONE_CODE_5               0x14
#define DTMF_MF_DIGIT_TONE_CODE_6               0x15
#define DTMF_MF_DIGIT_TONE_CODE_7               0x16
#define DTMF_MF_DIGIT_TONE_CODE_8               0x17
#define DTMF_MF_DIGIT_TONE_CODE_9               0x18
#define DTMF_MF_DIGIT_TONE_CODE_0               0x19
#define DTMF_MF_DIGIT_TONE_CODE_K1              0x1a
#define DTMF_MF_DIGIT_TONE_CODE_K2              0x1b
#define DTMF_MF_DIGIT_TONE_CODE_KP              0x1c
#define DTMF_MF_DIGIT_TONE_CODE_S1              0x1d
#define DTMF_MF_DIGIT_TONE_CODE_ST              0x1e

#define DTMF_DIGIT_CODE_COUNT                   16
#define DTMF_MF_DIGIT_CODE_BASE                 DSP_DTMF_DIGIT_CODE_COUNT
#define DTMF_MF_DIGIT_CODE_COUNT                15
#define DTMF_TOTAL_DIGIT_CODE_COUNT             (DSP_MF_DIGIT_CODE_BASE + DSP_MF_DIGIT_CODE_COUNT)

#define DTMF_TONE_DIGIT_BASE                    0x80

#define DTMF_SIGNAL_NO_TONE                     (DTMF_TONE_DIGIT_BASE + 0)
#define DTMF_SIGNAL_UNIDENTIFIED_TONE           (DTMF_TONE_DIGIT_BASE + 1)

#define DTMF_SIGNAL_DIAL_TONE                   (DTMF_TONE_DIGIT_BASE + 2)
#define DTMF_SIGNAL_PABX_INTERNAL_DIAL_TONE     (DTMF_TONE_DIGIT_BASE + 3)
#define DTMF_SIGNAL_SPECIAL_DIAL_TONE           (DTMF_TONE_DIGIT_BASE + 4)   /* stutter dial tone */
#define DTMF_SIGNAL_SECOND_DIAL_TONE            (DTMF_TONE_DIGIT_BASE + 5)
#define DTMF_SIGNAL_RINGING_TONE                (DTMF_TONE_DIGIT_BASE + 6)
#define DTMF_SIGNAL_SPECIAL_RINGING_TONE        (DTMF_TONE_DIGIT_BASE + 7)
#define DTMF_SIGNAL_BUSY_TONE                   (DTMF_TONE_DIGIT_BASE + 8)
#define DTMF_SIGNAL_CONGESTION_TONE             (DTMF_TONE_DIGIT_BASE + 9)   /* reorder tone */
#define DTMF_SIGNAL_SPECIAL_INFORMATION_TONE    (DTMF_TONE_DIGIT_BASE + 10)
#define DTMF_SIGNAL_COMFORT_TONE                (DTMF_TONE_DIGIT_BASE + 11)
#define DTMF_SIGNAL_HOLD_TONE                   (DTMF_TONE_DIGIT_BASE + 12)
#define DTMF_SIGNAL_RECORD_TONE                 (DTMF_TONE_DIGIT_BASE + 13)
#define DTMF_SIGNAL_CALLER_WAITING_TONE         (DTMF_TONE_DIGIT_BASE + 14)
#define DTMF_SIGNAL_CALL_WAITING_TONE           (DTMF_TONE_DIGIT_BASE + 15)
#define DTMF_SIGNAL_PAY_TONE                    (DTMF_TONE_DIGIT_BASE + 16)
#define DTMF_SIGNAL_POSITIVE_INDICATION_TONE    (DTMF_TONE_DIGIT_BASE + 17)
#define DTMF_SIGNAL_NEGATIVE_INDICATION_TONE    (DTMF_TONE_DIGIT_BASE + 18)
#define DTMF_SIGNAL_WARNING_TONE                (DTMF_TONE_DIGIT_BASE + 19)
#define DTMF_SIGNAL_INTRUSION_TONE              (DTMF_TONE_DIGIT_BASE + 20)
#define DTMF_SIGNAL_CALLING_CARD_SERVICE_TONE   (DTMF_TONE_DIGIT_BASE + 21)
#define DTMF_SIGNAL_PAYPHONE_RECOGNITION_TONE   (DTMF_TONE_DIGIT_BASE + 22)
#define DTMF_SIGNAL_CPE_ALERTING_SIGNAL         (DTMF_TONE_DIGIT_BASE + 23)
#define DTMF_SIGNAL_OFF_HOOK_WARNING_TONE       (DTMF_TONE_DIGIT_BASE + 24)

#define DTMF_SIGNAL_INTERCEPT_TONE              (DTMF_TONE_DIGIT_BASE + 63)

#define DTMF_SIGNAL_MODEM_CALLING_TONE          (DTMF_TONE_DIGIT_BASE + 64)
#define DTMF_SIGNAL_FAX_CALLING_TONE            (DTMF_TONE_DIGIT_BASE + 65)
#define DTMF_SIGNAL_ANSWER_TONE                 (DTMF_TONE_DIGIT_BASE + 66)
#define DTMF_SIGNAL_REVERSED_ANSWER_TONE        (DTMF_TONE_DIGIT_BASE + 67)
#define DTMF_SIGNAL_ANSAM_TONE                  (DTMF_TONE_DIGIT_BASE + 68)
#define DTMF_SIGNAL_REVERSED_ANSAM_TONE         (DTMF_TONE_DIGIT_BASE + 69)
#define DTMF_SIGNAL_BELL103_ANSWER_TONE         (DTMF_TONE_DIGIT_BASE + 70)
#define DTMF_SIGNAL_FAX_FLAGS                   (DTMF_TONE_DIGIT_BASE + 71)
#define DTMF_SIGNAL_G2_FAX_GROUP_ID             (DTMF_TONE_DIGIT_BASE + 72)
#define DTMF_SIGNAL_HUMAN_SPEECH                (DTMF_TONE_DIGIT_BASE + 73)
#define DTMF_SIGNAL_ANSWERING_MACHINE_390       (DTMF_TONE_DIGIT_BASE + 74)

#define DTMF_MF_LISTEN_ACTIVE_FLAG     0x02
#define DTMF_SEND_MF_FLAG              0x02
#define DTMF_TONE_LISTEN_ACTIVE_FLAG   0x04
#define DTMF_SEND_TONE_FLAG            0x04

#define PRIVATE_DTMF_TONE              5


/*------------------------------------------------------------------*/
/* FAX paper format extension                                       */
/*------------------------------------------------------------------*/


#define PRIVATE_FAX_PAPER_FORMATS      6



/*------------------------------------------------------------------*/
/* V.OWN extension                                                  */
/*------------------------------------------------------------------*/


#define PRIVATE_VOWN                   7



/*------------------------------------------------------------------*/
/* FAX non-standard facilities extension                            */
/*------------------------------------------------------------------*/


#define PRIVATE_FAX_NONSTANDARD        8



/*------------------------------------------------------------------*/
/* Advanced voice                                                   */
/*------------------------------------------------------------------*/

#define ADV_VOICE_WRITE_ACTIVATION    0
#define ADV_VOICE_WRITE_DEACTIVATION  1
#define ADV_VOICE_WRITE_UPDATE        2

#define ADV_VOICE_OLD_COEF_COUNT    6
#define ADV_VOICE_NEW_COEF_BASE     (ADV_VOICE_OLD_COEF_COUNT * sizeof(word))

/*------------------------------------------------------------------*/
/* B1 resource switching                                            */
/*------------------------------------------------------------------*/

#define B1_FACILITY_LOCAL  0x01
#define B1_FACILITY_MIXER  0x02
#define B1_FACILITY_DTMFX  0x04
#define B1_FACILITY_DTMFR  0x08
#define B1_FACILITY_VOICE  0x10
#define B1_FACILITY_EC     0x20

#define ADJUST_B_MODE_SAVE          0x0001
#define ADJUST_B_MODE_REMOVE_L23    0x0002
#define ADJUST_B_MODE_SWITCH_L1     0x0004
#define ADJUST_B_MODE_NO_RESOURCE   0x0008
#define ADJUST_B_MODE_ASSIGN_L23    0x0010
#define ADJUST_B_MODE_USER_CONNECT  0x0020
#define ADJUST_B_MODE_CONNECT       0x0040
#define ADJUST_B_MODE_RESTORE       0x0080

#define ADJUST_B_START                     0
#define ADJUST_B_SAVE_MIXER_1              1
#define ADJUST_B_SAVE_DTMF_1               2
#define ADJUST_B_REMOVE_L23_1              3
#define ADJUST_B_REMOVE_L23_2              4
#define ADJUST_B_SAVE_EC_1                 5
#define ADJUST_B_SAVE_DTMF_PARAMETER_1     6
#define ADJUST_B_SAVE_VOICE_1              7
#define ADJUST_B_SWITCH_L1_1               8
#define ADJUST_B_SWITCH_L1_2               9
#define ADJUST_B_RESTORE_VOICE_1           10
#define ADJUST_B_RESTORE_VOICE_2           11
#define ADJUST_B_RESTORE_DTMF_PARAMETER_1  12
#define ADJUST_B_RESTORE_DTMF_PARAMETER_2  13
#define ADJUST_B_RESTORE_EC_1              14
#define ADJUST_B_RESTORE_EC_2              15
#define ADJUST_B_ASSIGN_L23_1              16
#define ADJUST_B_ASSIGN_L23_2              17
#define ADJUST_B_CONNECT_1                 18
#define ADJUST_B_CONNECT_2                 19
#define ADJUST_B_CONNECT_3                 20
#define ADJUST_B_CONNECT_4                 21
#define ADJUST_B_RESTORE_DTMF_1            22
#define ADJUST_B_RESTORE_DTMF_2            23
#define ADJUST_B_RESTORE_MIXER_1           24
#define ADJUST_B_RESTORE_MIXER_2           25
#define ADJUST_B_RESTORE_MIXER_3           26
#define ADJUST_B_RESTORE_MIXER_4           27
#define ADJUST_B_RESTORE_MIXER_5           28
#define ADJUST_B_RESTORE_MIXER_6           29
#define ADJUST_B_RESTORE_MIXER_7           30
#define ADJUST_B_END                       31

/*------------------------------------------------------------------*/
/* XON Protocol def's                                               */
/*------------------------------------------------------------------*/
#define N_CH_XOFF               0x01
#define N_XON_SENT              0x02
#define N_XON_REQ               0x04
#define N_XON_CONNECT_IND       0x08
#define N_RX_FLOW_CONTROL_MASK  0x3f
#define N_OK_FC_PENDING         0x80
#define N_TX_FLOW_CONTROL_MASK  0xc0

/*------------------------------------------------------------------*/
/* NCPI state                                                       */
/*------------------------------------------------------------------*/
#define NCPI_VALID_CONNECT_B3_IND  0x01
#define NCPI_VALID_CONNECT_B3_ACT  0x02
#define NCPI_VALID_DISC_B3_IND     0x04
#define NCPI_CONNECT_B3_ACT_SENT   0x08
#define NCPI_NEGOTIATE_B3_SENT     0x10
#define NCPI_MDM_CTS_ON_RECEIVED   0x40
#define NCPI_MDM_DCD_ON_RECEIVED   0x80

/*------------------------------------------------------------------*/
