
/*
 *
  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.
 *
 */
#ifndef _INC_CAPI20  
#define _INC_CAPI20
        /* operations on message queues                             */
        /* the common device type for CAPI20 drivers */
#define FILE_DEVICE_CAPI20 0x8001
        /* DEVICE_CONTROL codes for user and kernel mode applications */
#define CAPI20_CTL_REGISTER             0x0801
#define CAPI20_CTL_RELEASE              0x0802
#define CAPI20_CTL_GET_MANUFACTURER     0x0805
#define CAPI20_CTL_GET_VERSION          0x0806
#define CAPI20_CTL_GET_SERIAL           0x0807
#define CAPI20_CTL_GET_PROFILE          0x0808
        /* INTERNAL_DEVICE_CONTROL codes for kernel mode applicatios only */
#define CAPI20_CTL_PUT_MESSAGE          0x0803
#define CAPI20_CTL_GET_MESSAGE          0x0804
        /* the wrapped codes as required by the system */
#define CAPI_CTL_CODE(f,m)              CTL_CODE(FILE_DEVICE_CAPI20,f,m,FILE_ANY_ACCESS)
#define IOCTL_CAPI_REGISTER             CAPI_CTL_CODE(CAPI20_CTL_REGISTER,METHOD_BUFFERED)
#define IOCTL_CAPI_RELEASE              CAPI_CTL_CODE(CAPI20_CTL_RELEASE,METHOD_BUFFERED)
#define IOCTL_CAPI_GET_MANUFACTURER     CAPI_CTL_CODE(CAPI20_CTL_GET_MANUFACTURER,METHOD_BUFFERED)
#define IOCTL_CAPI_GET_VERSION          CAPI_CTL_CODE(CAPI20_CTL_GET_VERSION,METHOD_BUFFERED)
#define IOCTL_CAPI_GET_SERIAL           CAPI_CTL_CODE(CAPI20_CTL_GET_SERIAL,METHOD_BUFFERED)
#define IOCTL_CAPI_GET_PROFILE          CAPI_CTL_CODE(CAPI20_CTL_GET_PROFILE,METHOD_BUFFERED)
#define IOCTL_CAPI_PUT_MESSAGE          CAPI_CTL_CODE(CAPI20_CTL_PUT_MESSAGE,METHOD_BUFFERED)
#define IOCTL_CAPI_GET_MESSAGE          CAPI_CTL_CODE(CAPI20_CTL_GET_MESSAGE,METHOD_BUFFERED)
struct divas_capi_register_params  {
  word MessageBufferSize;
  word maxLogicalConnection;
  word maxBDataBlocks;
  word maxBDataLen;
};
struct divas_capi_version  {
  word CapiMajor;
  word CapiMinor;
  word ManuMajor;
  word ManuMinor;
};
typedef struct api_profile_s {
  word          Number;
  word          Channels;
  dword         Global_Options;
  dword         B1_Protocols;
  dword         B2_Protocols;
  dword         B3_Protocols;
} API_PROFILE;
        /* ISDN Common API message types                            */
#define _ALERT_R                        0x8001
#define _CONNECT_R                      0x8002
#define _CONNECT_I                      0x8202
#define _CONNECT_ACTIVE_I               0x8203
#define _DISCONNECT_R                   0x8004
#define _DISCONNECT_I                   0x8204
#define _LISTEN_R                       0x8005
#define _INFO_R                         0x8008
#define _INFO_I                         0x8208
#define _SELECT_B_REQ                   0x8041
#define _FACILITY_R                     0x8080
#define _FACILITY_I                     0x8280
#define _CONNECT_B3_R                   0x8082
#define _CONNECT_B3_I                   0x8282
#define _CONNECT_B3_ACTIVE_I            0x8283
#define _DISCONNECT_B3_R                0x8084
#define _DISCONNECT_B3_I                0x8284
#define _DATA_B3_R                      0x8086
#define _DATA_B3_I                      0x8286
#define _RESET_B3_R                     0x8087
#define _RESET_B3_I                     0x8287
#define _CONNECT_B3_T90_ACTIVE_I        0x8288
#define _MANUFACTURER_R                 0x80ff
#define _MANUFACTURER_I                 0x82ff
        /* OR this to convert a REQUEST to a CONFIRM                */
#define CONFIRM                 0x0100
        /* OR this to convert a INDICATION to a RESPONSE            */
#define RESPONSE                0x0100
/*------------------------------------------------------------------*/
/* diehl isdn private MANUFACTURER codes                            */
/*------------------------------------------------------------------*/
#define _DI_MANU_ID             0x44444944
#define _DI_ASSIGN_PLCI         0x0001
#define _DI_ADV_CODEC           0x0002
#define _DI_DSP_CTRL            0x0003
#define _DI_SIG_CTRL            0x0004
#define _DI_RXT_CTRL            0x0005
#define _DI_IDI_CTRL            0x0006
#define _DI_CFG_CTRL            0x0007
#define _DI_REMOVE_CODEC        0x0008
#define _DI_OPTIONS_REQUEST     0x0009
#define _DI_SSEXT_CTRL          0x000a
#define _DI_NEGOTIATE_B3        0x000b
/*------------------------------------------------------------------*/
/* parameter structures                                             */
/*------------------------------------------------------------------*/
        /* ALERT-REQUEST                                            */
typedef struct {
  byte structs[1];      /* Additional Info */
} _ALT_REQP;
        /* ALERT-CONFIRM                                            */
typedef struct {
  word Info;
} _ALT_CONP;
        /* CONNECT-REQUEST                                          */
typedef struct {
  word CIP_Value;
  byte structs[1];      /* Called party number,
                           Called party subaddress,
                           Calling party number,
                           Calling party subaddress,
                           B_protocol,
                           BC,
                           LLC,
                           HLC,
                           Additional Info */
} _CON_REQP;
        /* CONNECT-CONFIRM                                          */
typedef struct {
  word Info;
} _CON_CONP;
        /* CONNECT-INDICATION                                       */
typedef struct {
  word CIP_Value;
  byte structs[1];      /* Called party number,
                           Called party subaddress,
                           Calling party number,
                           Calling party subaddress,
                           BC,
                           LLC,
                           HLC,
                           Additional Info */
} _CON_INDP;
        /* CONNECT-RESPONSE                                         */
typedef struct {
  word Accept;
  byte structs[1];      /* B_protocol,
                           Connected party number,
                           Connected party subaddress,
                           LLC */
} _CON_RESP;
        /* CONNECT-ACTIVE-INDICATION                                */
typedef struct {
  byte structs[1];      /* Connected party number,
                           Connected party subaddress,
                           LLC */
} _CON_A_INDP;
        /* CONNECT-ACTIVE-RESPONSE                                  */
typedef struct {
  byte structs[1];      /* empty */
} _CON_A_RESP;
        /* DISCONNECT-REQUEST                                       */
typedef struct {
  byte structs[1];      /* Additional Info */
} _DIS_REQP;
        /* DISCONNECT-CONFIRM                                       */
typedef struct {
  word Info;
} _DIS_CONP;
        /* DISCONNECT-INDICATION                                    */
typedef struct {
  word Info;
} _DIS_INDP;
        /* DISCONNECT-RESPONSE                                      */
typedef struct {
  byte structs[1];      /* empty */
} _DIS_RESP;
        /* LISTEN-REQUEST                                           */
typedef struct {
  dword Info_Mask;
  dword CIP_Mask;
  byte structs[1];      /* Calling party number,
                           Calling party subaddress */
} _LIS_REQP;
        /* LISTEN-CONFIRM                                           */
typedef struct {
  word Info;
} _LIS_CONP;
        /* INFO-REQUEST                                             */
typedef struct {
  byte structs[1];      /* Called party number,
                           Additional Info */
} _INF_REQP;
        /* INFO-CONFIRM                                             */
typedef struct {
  word Info;
} _INF_CONP;
        /* INFO-INDICATION                                          */
typedef struct {
  word Number;
  byte structs[1];      /* Info element */
} _INF_INDP;
        /* INFO-RESPONSE                                            */
typedef struct {
  byte structs[1];      /* empty */
} _INF_RESP;
        /* SELECT-B-REQUEST                                         */
typedef struct {
  byte structs[1];      /* B-protocol */
} _SEL_B_REQP;
        /* SELECT-B-CONFIRM                                         */
typedef struct {
  word Info;
} _SEL_B_CONP;
        /* FACILITY-REQUEST */
typedef struct {
  word Selector;
  byte structs[1];      /* Facility parameters */
} _FAC_REQP;
        /* FACILITY-CONFIRM STRUCT FOR SUPPLEMENT. SERVICES */
typedef struct {
  byte  struct_length;
  word  function;
  byte  length;
  word  SupplementaryServiceInfo;
  dword SupportedServices;
} _FAC_CON_STRUCTS;
        /* FACILITY-CONFIRM */
typedef struct {
  word Info;
  word Selector;
  byte structs[1];      /* Facility parameters */
} _FAC_CONP;
        /* FACILITY-INDICATION */
typedef struct {
  word Selector;
  byte structs[1];      /* Facility parameters */
} _FAC_INDP;
        /* FACILITY-RESPONSE */
typedef struct {
  word Selector;
  byte structs[1];      /* Facility parameters */
} _FAC_RESP;
        /* CONNECT-B3-REQUEST                                       */
typedef struct {
  byte structs[1];      /* NCPI */
} _CON_B3_REQP;
        /* CONNECT-B3-CONFIRM                                       */
typedef struct {
  word Info;
} _CON_B3_CONP;
        /* CONNECT-B3-INDICATION                                    */
typedef struct {
  byte structs[1];      /* NCPI */
} _CON_B3_INDP;
        /* CONNECT-B3-RESPONSE                                      */
typedef struct {
  word Accept;
  byte structs[1];      /* NCPI */
} _CON_B3_RESP;
        /* CONNECT-B3-ACTIVE-INDICATION                             */
typedef struct {
  byte structs[1];      /* NCPI */
} _CON_B3_A_INDP;
        /* CONNECT-B3-ACTIVE-RESPONSE                               */
typedef struct {
  byte structs[1];      /* empty */
} _CON_B3_A_RESP;
        /* DISCONNECT-B3-REQUEST                                    */
typedef struct {
  byte structs[1];      /* NCPI */
} _DIS_B3_REQP;
        /* DISCONNECT-B3-CONFIRM                                    */
typedef struct {
  word Info;
} _DIS_B3_CONP;
        /* DISCONNECT-B3-INDICATION                                 */
typedef struct {
  word Info;
  byte structs[1];      /* NCPI */
} _DIS_B3_INDP;
        /* DISCONNECT-B3-RESPONSE                                   */
typedef struct {
  byte structs[1];      /* empty */
} _DIS_B3_RESP;
        /* DATA-B3-REQUEST                                          */
typedef struct {
  dword         Data;
  word          Data_Length;
  word          Number;
  word          Flags;
} _DAT_B3_REQP;
        /* DATA-B3-REQUEST 64 BIT Systems                           */
typedef struct {
  dword         Data;
  word          Data_Length;
  word          Number;
  word          Flags;
  void          *pData;
} _DAT_B3_REQ64P;
        /* DATA-B3-CONFIRM                                          */
typedef struct {
  word          Number;
  word          Info;
} _DAT_B3_CONP;
        /* DATA-B3-INDICATION                                       */
typedef struct {
  dword         Data;
  word          Data_Length;
  word          Number;
  word          Flags;
} _DAT_B3_INDP;
        /* DATA-B3-INDICATION  64 BIT Systems                       */
typedef struct {
  dword         Data;
  word          Data_Length;
  word          Number;
  word          Flags;
  void          *pData;
} _DAT_B3_IND64P;
        /* DATA-B3-RESPONSE                                         */
typedef struct {
  word          Number;
} _DAT_B3_RESP;
        /* RESET-B3-REQUEST                                         */
typedef struct {
  byte structs[1];      /* NCPI */
} _RES_B3_REQP;
        /* RESET-B3-CONFIRM                                         */
typedef struct {
  word Info;
} _RES_B3_CONP;
        /* RESET-B3-INDICATION                                      */
typedef struct {
  byte structs[1];      /* NCPI */
} _RES_B3_INDP;
        /* RESET-B3-RESPONSE                                        */
typedef struct {
  byte structs[1];      /* empty */
} _RES_B3_RESP;
        /* CONNECT-B3-T90-ACTIVE-INDICATION                         */
typedef struct {
  byte structs[1];      /* NCPI */
} _CON_B3_T90_A_INDP;
        /* CONNECT-B3-T90-ACTIVE-RESPONSE                           */
typedef struct {
  word Reject;
  byte structs[1];      /* NCPI */
} _CON_B3_T90_A_RESP;
/*------------------------------------------------------------------*/
/* message structure                                                */
/*------------------------------------------------------------------*/
typedef struct _API_MSG CAPI_MSG;
typedef struct _MSG_HEADER CAPI_MSG_HEADER;
struct _API_MSG {
  struct _MSG_HEADER {
    word        length;
    word        appl_id;
    word        command;
    word        number;
    byte        controller;
    byte        plci;
    word        ncci;
  } header;
  union {
    _ALT_REQP           alert_req;
    _ALT_CONP           alert_con;
    _CON_REQP           connect_req;
    _CON_CONP           connect_con;
    _CON_INDP           connect_ind;
    _CON_RESP           connect_res;
    _CON_A_INDP         connect_a_ind;
    _CON_A_RESP         connect_a_res;
    _DIS_REQP           disconnect_req;
    _DIS_CONP           disconnect_con;
    _DIS_INDP           disconnect_ind;
    _DIS_RESP           disconnect_res;
    _LIS_REQP           listen_req;
    _LIS_CONP           listen_con;
    _INF_REQP           info_req;
    _INF_CONP           info_con;
    _INF_INDP           info_ind;
    _INF_RESP           info_res;
    _SEL_B_REQP         select_b_req;
    _SEL_B_CONP         select_b_con;
    _FAC_REQP           facility_req;
    _FAC_CONP           facility_con;
    _FAC_INDP           facility_ind;
    _FAC_RESP           facility_res;
    _CON_B3_REQP        connect_b3_req;
    _CON_B3_CONP        connect_b3_con;
    _CON_B3_INDP        connect_b3_ind;
    _CON_B3_RESP        connect_b3_res;
    _CON_B3_A_INDP      connect_b3_a_ind;
    _CON_B3_A_RESP      connect_b3_a_res;
    _DIS_B3_REQP        disconnect_b3_req;
    _DIS_B3_CONP        disconnect_b3_con;
    _DIS_B3_INDP        disconnect_b3_ind;
    _DIS_B3_RESP        disconnect_b3_res;
    _DAT_B3_REQP        data_b3_req;
    _DAT_B3_REQ64P      data_b3_req64;
    _DAT_B3_CONP        data_b3_con;
    _DAT_B3_INDP        data_b3_ind;
    _DAT_B3_IND64P      data_b3_ind64;
    _DAT_B3_RESP        data_b3_res;
    _RES_B3_REQP        reset_b3_req;
    _RES_B3_CONP        reset_b3_con;
    _RES_B3_INDP        reset_b3_ind;
    _RES_B3_RESP        reset_b3_res;
    _CON_B3_T90_A_INDP  connect_b3_t90_a_ind;
    _CON_B3_T90_A_RESP  connect_b3_t90_a_res;
    byte                b[200];
  } info;
};
/*------------------------------------------------------------------*/
/* non-fatal errors                                                 */
/*------------------------------------------------------------------*/
#define _NCPI_IGNORED           0x0001
#define _FLAGS_IGNORED          0x0002
#define _ALERT_IGNORED          0x0003
/*------------------------------------------------------------------*/
/* API function error codes                                         */
/*------------------------------------------------------------------*/
#define GOOD                            0x0000
#define _TOO_MANY_APPLICATIONS          0x1001
#define _BLOCK_TOO_SMALL                0x1002
#define _BUFFER_TOO_BIG                 0x1003
#define _MSG_BUFFER_TOO_SMALL           0x1004
#define _TOO_MANY_CONNECTIONS           0x1005
#define _REG_CAPI_BUSY                  0x1007
#define _REG_RESOURCE_ERROR             0x1008
#define _REG_CAPI_NOT_INSTALLED         0x1009
#define _WRONG_APPL_ID                  0x1101
#define _BAD_MSG                        0x1102
#define _QUEUE_FULL                     0x1103
#define _GET_NO_MSG                     0x1104
#define _MSG_LOST                       0x1105
#define _WRONG_NOTIFY                   0x1106
#define _CAPI_BUSY                      0x1107
#define _RESOURCE_ERROR                 0x1108
#define _CAPI_NOT_INSTALLED             0x1109
#define _NO_EXTERNAL_EQUIPMENT          0x110a
#define _ONLY_EXTERNAL_EQUIPMENT        0x110b
/*------------------------------------------------------------------*/
/* addressing/coding error codes                                    */
/*------------------------------------------------------------------*/
#define _WRONG_STATE                    0x2001
#define _WRONG_IDENTIFIER               0x2002
#define _OUT_OF_PLCI                    0x2003
#define _OUT_OF_NCCI                    0x2004
#define _OUT_OF_LISTEN                  0x2005
#define _OUT_OF_FAX                     0x2006
#define _WRONG_MESSAGE_FORMAT           0x2007
#define _OUT_OF_INTERCONNECT_RESOURCES  0x2008
/*------------------------------------------------------------------*/
/* configuration error codes                                        */
/*------------------------------------------------------------------*/
#define _B1_NOT_SUPPORTED                    0x3001
#define _B2_NOT_SUPPORTED                    0x3002
#define _B3_NOT_SUPPORTED                    0x3003
#define _B1_PARM_NOT_SUPPORTED               0x3004
#define _B2_PARM_NOT_SUPPORTED               0x3005
#define _B3_PARM_NOT_SUPPORTED               0x3006
#define _B_STACK_NOT_SUPPORTED               0x3007
#define _NCPI_NOT_SUPPORTED                  0x3008
#define _CIP_NOT_SUPPORTED                   0x3009
#define _FLAGS_NOT_SUPPORTED                 0x300a
#define _FACILITY_NOT_SUPPORTED              0x300b
#define _DATA_LEN_NOT_SUPPORTED              0x300c
#define _RESET_NOT_SUPPORTED                 0x300d
#define _SUPPLEMENTARY_SERVICE_NOT_SUPPORTED 0x300e
#define _REQUEST_NOT_ALLOWED_IN_THIS_STATE   0x3010
#define _FACILITY_SPECIFIC_FUNCTION_NOT_SUPP 0x3011
/*------------------------------------------------------------------*/
/* reason codes                                                     */
/*------------------------------------------------------------------*/
#define _L1_ERROR                       0x3301
#define _L2_ERROR                       0x3302
#define _L3_ERROR                       0x3303
#define _OTHER_APPL_CONNECTED           0x3304
#define _CAPI_GUARD_ERROR               0x3305
#define _L3_CAUSE                       0x3400
/*------------------------------------------------------------------*/
/* b3 reason codes                                                  */
/*------------------------------------------------------------------*/
#define _B_CHANNEL_LOST                 0x3301
#define _B2_ERROR                       0x3302
#define _B3_ERROR                       0x3303
/*------------------------------------------------------------------*/
/* fax error codes                                                  */
/*------------------------------------------------------------------*/
#define _FAX_NO_CONNECTION              0x3311
#define _FAX_TRAINING_ERROR             0x3312
#define _FAX_REMOTE_REJECT              0x3313
#define _FAX_REMOTE_ABORT               0x3314
#define _FAX_PROTOCOL_ERROR             0x3315
#define _FAX_TX_UNDERRUN                0x3316
#define _FAX_RX_OVERFLOW                0x3317
#define _FAX_LOCAL_ABORT                0x3318
#define _FAX_PARAMETER_ERROR            0x3319
/*------------------------------------------------------------------*/
/* line interconnect error codes                                    */
/*------------------------------------------------------------------*/
#define _LI_USER_INITIATED               0x0000
#define _LI_LINE_NO_LONGER_AVAILABLE     0x3805
#define _LI_INTERCONNECT_NOT_ESTABLISHED 0x3806
#define _LI_LINES_NOT_COMPATIBLE         0x3807
#define _LI2_USER_INITIATED              0x0000
#define _LI2_PLCI_HAS_NO_BCHANNEL        0x3800
#define _LI2_LINES_NOT_COMPATIBLE        0x3801
#define _LI2_NOT_IN_SAME_INTERCONNECTION 0x3802
/*------------------------------------------------------------------*/
/* global options                                                   */
/*------------------------------------------------------------------*/
#define GL_INTERNAL_CONTROLLER_SUPPORTED     0x00000001L
#define GL_EXTERNAL_EQUIPMENT_SUPPORTED      0x00000002L
#define GL_HANDSET_SUPPORTED                 0x00000004L
#define GL_DTMF_SUPPORTED                    0x00000008L
#define GL_SUPPLEMENTARY_SERVICES_SUPPORTED  0x00000010L
#define GL_CHANNEL_ALLOCATION_SUPPORTED      0x00000020L
#define GL_BCHANNEL_OPERATION_SUPPORTED      0x00000040L
#define GL_LINE_INTERCONNECT_SUPPORTED       0x00000080L
#define GL_ECHO_CANCELLER_SUPPORTED          0x00000100L
/*------------------------------------------------------------------*/
/* protocol selection                                               */
/*------------------------------------------------------------------*/
#define B1_HDLC                 0
#define B1_TRANSPARENT          1
#define B1_V110_ASYNC           2
#define B1_V110_SYNC            3
#define B1_T30                  4
#define B1_HDLC_INVERTED        5
#define B1_TRANSPARENT_R        6
#define B1_MODEM_ALL_NEGOTIATE  7
#define B1_MODEM_ASYNC          8
#define B1_MODEM_SYNC_HDLC      9
#define B2_X75                  0
#define B2_TRANSPARENT          1
#define B2_SDLC                 2
#define B2_LAPD                 3
#define B2_T30                  4
#define B2_PPP                  5
#define B2_TRANSPARENT_NO_CRC   6
#define B2_MODEM_EC_COMPRESSION 7
#define B2_X75_V42BIS           8
#define B2_V120_ASYNC           9
#define B2_V120_ASYNC_V42BIS    10
#define B2_V120_BIT_TRANSPARENT 11
#define B2_LAPD_FREE_SAPI_SEL   12
#define B3_TRANSPARENT          0
#define B3_T90NL                1
#define B3_ISO8208              2
#define B3_X25_DCE              3
#define B3_T30                  4
#define B3_T30_WITH_EXTENSIONS  5
#define B3_RESERVED             6
#define B3_MODEM                7
/*------------------------------------------------------------------*/
/*  facility definitions                                            */
/*------------------------------------------------------------------*/
#define SELECTOR_HANDSET            0
#define SELECTOR_DTMF               1
#define SELECTOR_V42BIS             2
#define SELECTOR_SU_SERV            3
#define SELECTOR_POWER_MANAGEMENT   4
#define SELECTOR_LINE_INTERCONNECT  5
#define SELECTOR_ECHO_CANCELLER     6
/*------------------------------------------------------------------*/
/*  supplementary services definitions                              */
/*------------------------------------------------------------------*/
#define S_GET_SUPPORTED_SERVICES  0x0000
#define S_LISTEN                  0x0001
#define S_HOLD                    0x0002
#define S_RETRIEVE                0x0003
#define S_SUSPEND                 0x0004
#define S_RESUME                  0x0005
#define S_ECT                     0x0006
#define S_3PTY_BEGIN              0x0007
#define S_3PTY_END                0x0008
#define S_CALL_DEFLECTION         0x000d
#define S_CALL_FORWARDING_START   0x0009
#define S_CALL_FORWARDING_STOP    0x000a
#define S_INTERROGATE_DIVERSION   0x000b /* or interrogate parameters */
#define S_INTERROGATE_NUMBERS     0x000c
#define S_CCBS_REQUEST            0x000f
#define S_CCBS_DEACTIVATE         0x0010
#define S_CCBS_INTERROGATE        0x0011
#define S_CCBS_CALL               0x0012
#define S_MWI_ACTIVATE            0x0013
#define S_MWI_DEACTIVATE          0x0014
#define S_CONF_BEGIN           0x0017
#define S_CONF_ADD                0x0018
#define S_CONF_SPLIT           0x0019
#define S_CONF_DROP               0x001a
#define S_CONF_ISOLATE           0x001b
#define S_CONF_REATTACH           0x001c
#define S_CCBS_ERASECALLLINKAGEID 0x800d
#define S_CCBS_STOP_ALERTING      0x8012
#define S_CCBS_INFO_RETAIN        0x8013
#define S_MWI_INDICATE            0x8014
#define S_CONF_PARTYDISC          0x8016
#define S_CONF_NOTIFICATION       0x8017
/* Service Masks */
#define MASK_HOLD_RETRIEVE        0x00000001
#define MASK_TERMINAL_PORTABILITY 0x00000002
#define MASK_ECT                  0x00000004
#define MASK_3PTY                 0x00000008
#define MASK_CALL_FORWARDING      0x00000010
#define MASK_CALL_DEFLECTION      0x00000020
#define MASK_MWI                  0x00000100
#define MASK_CCNR                 0x00000200
#define MASK_CONF                 0x00000400
/*------------------------------------------------------------------*/
/*  dtmf definitions                                                */
/*------------------------------------------------------------------*/
#define DTMF_LISTEN_START     1
#define DTMF_LISTEN_STOP      2
#define DTMF_DIGITS_SEND      3
#define DTMF_SUCCESS          0
#define DTMF_INCORRECT_DIGIT  1
#define DTMF_UNKNOWN_REQUEST  2
/*------------------------------------------------------------------*/
/*  line interconnect definitions                                   */
/*------------------------------------------------------------------*/
#define LI_GET_SUPPORTED_SERVICES       0
#define LI_REQ_CONNECT                  1
#define LI_REQ_DISCONNECT               2
#define LI_IND_CONNECT_ACTIVE           1
#define LI_IND_DISCONNECT               2
#define LI_FLAG_CONFERENCE_A_B          ((dword) 0x00000001L)
#define LI_FLAG_CONFERENCE_B_A          ((dword) 0x00000002L)
#define LI_FLAG_MONITOR_A               ((dword) 0x00000004L)
#define LI_FLAG_MONITOR_B               ((dword) 0x00000008L)
#define LI_FLAG_ANNOUNCEMENT_A          ((dword) 0x00000010L)
#define LI_FLAG_ANNOUNCEMENT_B          ((dword) 0x00000020L)
#define LI_FLAG_MIX_A                   ((dword) 0x00000040L)
#define LI_FLAG_MIX_B                   ((dword) 0x00000080L)
#define LI_CONFERENCING_SUPPORTED       ((dword) 0x00000001L)
#define LI_MONITORING_SUPPORTED         ((dword) 0x00000002L)
#define LI_ANNOUNCEMENTS_SUPPORTED      ((dword) 0x00000004L)
#define LI_MIXING_SUPPORTED             ((dword) 0x00000008L)
#define LI_CROSS_CONTROLLER_SUPPORTED   ((dword) 0x00000010L)
#define LI2_GET_SUPPORTED_SERVICES      0
#define LI2_REQ_CONNECT                 1
#define LI2_REQ_DISCONNECT              2
#define LI2_IND_CONNECT_ACTIVE          1
#define LI2_IND_DISCONNECT              2
#define LI2_FLAG_INTERCONNECT_A_B       ((dword) 0x00000001L)
#define LI2_FLAG_INTERCONNECT_B_A       ((dword) 0x00000002L)
#define LI2_FLAG_MONITOR_B              ((dword) 0x00000004L)
#define LI2_FLAG_MIX_B                  ((dword) 0x00000008L)
#define LI2_FLAG_MONITOR_X              ((dword) 0x00000010L)
#define LI2_FLAG_MIX_X                  ((dword) 0x00000020L)
#define LI2_FLAG_LOOP_B                 ((dword) 0x00000040L)
#define LI2_FLAG_LOOP_PC                ((dword) 0x00000080L)
#define LI2_FLAG_LOOP_X                 ((dword) 0x00000100L)
#define LI2_CROSS_CONTROLLER_SUPPORTED  ((dword) 0x00000001L)
#define LI2_ASYMMETRIC_SUPPORTED        ((dword) 0x00000002L)
#define LI2_MONITORING_SUPPORTED        ((dword) 0x00000004L)
#define LI2_MIXING_SUPPORTED            ((dword) 0x00000008L)
#define LI2_REMOTE_MONITORING_SUPPORTED ((dword) 0x00000010L)
#define LI2_REMOTE_MIXING_SUPPORTED     ((dword) 0x00000020L)
#define LI2_B_LOOPING_SUPPORTED         ((dword) 0x00000040L)
#define LI2_PC_LOOPING_SUPPORTED        ((dword) 0x00000080L)
#define LI2_X_LOOPING_SUPPORTED         ((dword) 0x00000100L)
/*------------------------------------------------------------------*/
/* echo canceller definitions                                       */
/*------------------------------------------------------------------*/
#define EC_GET_SUPPORTED_SERVICES            0
#define EC_ENABLE_OPERATION                  1
#define EC_DISABLE_OPERATION                 2
#define EC_ENABLE_NON_LINEAR_PROCESSING      0x0001
#define EC_DO_NOT_REQUIRE_REVERSALS          0x0002
#define EC_DETECT_DISABLE_TONE               0x0004
#define EC_ENABLE_ADAPTIVE_PREDELAY          0x0008
#define EC_NON_LINEAR_PROCESSING_SUPPORTED   0x0001
#define EC_BYPASS_ON_ANY_2100HZ_SUPPORTED    0x0002
#define EC_BYPASS_ON_REV_2100HZ_SUPPORTED    0x0004
#define EC_ADAPTIVE_PREDELAY_SUPPORTED       0x0008
#define EC_BYPASS_INDICATION                 1
#define EC_BYPASS_DUE_TO_CONTINUOUS_2100HZ   1
#define EC_BYPASS_DUE_TO_REVERSED_2100HZ     2
#define EC_BYPASS_RELEASED                   3
/*------------------------------------------------------------------*/
/* function prototypes                                              */
/*------------------------------------------------------------------*/
/*------------------------------------------------------------------*/
#endif /* _INC_CAPI20 */  
