/*
 *  mcx.h       Modem control extensions
 *
 * =========================================================================
 *
 *                          Open Watcom Project
 *
 * Copyright (c) 2004-2026 The Open Watcom Contributors. All Rights Reserved.
 *
 *    This file is automatically generated. Do not edit directly.
 *
 * =========================================================================
 */

#ifndef _MCX_H_
#define _MCX_H_

#ifndef _ENABLE_AUTODEPEND
 #pragma read_only_file
#endif

#ifdef __cplusplus
extern "C" {
#endif

/* Dial options */
#define DIALOPTION_BILLING  0x00000040L
#define DIALOPTION_QUIET    0x00000080L
#define DIALOPTION_DIALTONE 0x00000100L

/* Modem volume flags */
#define MDMVOLFLAG_LOW      0x00000001L
#define MDMVOLFLAG_MEDIUM   0x00000002L
#define MDMVOLFLAG_HIGH     0x00000004L

/* Modem volume values */
#define MDMVOL_LOW      0x00000000L
#define MDMVOL_MEDIUM   0x00000001L
#define MDMVOL_HIGH     0x00000002L

/* Modem speaker flags */
#define MDMSPKRFLAG_OFF         0x00000001L
#define MDMSPKRFLAG_DIAL        0x00000002L
#define MDMSPKRFLAG_ON          0x00000004L
#define MDMSPKRFLAG_CALLSETUP   0x00000008L

/* Modem speaker values */
#define MDMSPKR_OFF         0x00000000L
#define MDMSPKR_DIAL        0x00000001L
#define MDMSPKR_ON          0x00000002L
#define MDMSPKR_CALLSETUP   0x00000003L

/* Modem flags */
#define MDM_COMPRESSION         0x00000001L
#define MDM_ERROR_CONTROL       0x00000002L
#define MDM_FORCED_EC           0x00000004L
#define MDM_CELLULAR            0x00000008L
#define MDM_FLOWCONTROL_HARD    0x00000010L
#define MDM_FLOWCONTROL_SOFT    0x00000020L
#define MDM_CCITT_OVERRIDE      0x00000040L
#define MDM_SPEED_ADJUST        0x00000080L
#define MDM_TONE_DIAL           0x00000100L
#define MDM_BLIND_DIAL          0x00000200L
#define MDM_V23_OVERRIDE        0x00000400L
#define MDM_DIAGNOSTICS         0x00000800L

/* Extended modem option masks */
#define MDM_MASK_BEARERMODE     0x0000F000L
#define MDM_MASK_PROTOCOLID     0x000F0000L
#define MDM_MASK_PROTOCOLDATA   0x0FF00000L
#define MDM_MASK_PROTOCOLINFO   (MDM_MASK_PROTOCOLID | MDM_MASK_PROTOCOLDATA)
#define MDM_MASK_EXTENDEDINFO   (MDM_MASK_BEARERMODE | MDM_MASK_PROTOCOLINFO)

/* Extended modem option shifts */
#define MDM_SHIFT_BEARERMODE    12
#define MDM_SHIFT_PROTOCOLID    16
#define MDM_SHIFT_PROTOCOLDATA  20
#define MDM_SHIFT_PROTOCOLINFO  MDM_SHIFT_PROTOCOLID
#define MDM_SHIFT_EXTENDEDINFO  MDM_SHIFT_BEARERMODE

/* Macros to manipulate extended modem options */
#define MDM_GET_BEARERMODE( x ) \
    (((x) & MDM_MASK_BEARERMODE) >> MDM_SHIFT_BEARERMODE)
#define MDM_SET_BEARERMODE( x, p ) \
    (((x) &= ~MDM_MASK_BEARERMODE), ((x) |= (((p) << MDM_SHIFT_BEARERMODE) & \
    MDM_MASK_BEARERMODE)))
#define MDM_GET_PROTOCOLID( x ) \
    (((x) & MDM_MASK_PROTOCOLID) >> MDM_SHIFT_PROTOCOLID)
#define MDM_SET_PROTOCOLID( x, p ) \
    (((x) &= ~MDM_MASK_PROTOCOLID), ((x) |= (((p) << MDM_SHIFT_PROTOCOLID) & \
    MDM_MASK_PROTOCOLID)))
#define MDM_GET_PROTOCOLDATA( x ) \
    (((x) & MDM_MASK_PROTOCOLDATA) >> MDM_SHIFT_PROTOCOLDATA)
#define MDM_SET_PROTOCOLDATA( x, p ) \
    (((x) &= ~MDM_MASK_PROTOCOLDATA), ((x) |= (((p) << MDM_SHIFT_PROTOCOLDATA) & \
    MDM_MASK_PROTOCOLDATA)))
#define MDM_GET_PROTOCOLINFO( x ) \
    (((x) & MDM_MASK_PROTOCOLINFO) >> MDM_SHIFT_PROTOCOLINFO)
#define MDM_SET_PROTOCOLINFO( x, p ) \
    (((x) &= ~MDM_MASK_PROTOCOLINFO), ((x) |= (((p) << MDM_SHIFT_PROTOCOLINFO) & \
    MDM_MASK_PROTOCOLINFO)))
#define MDM_GEN_PROTOCOLINFO( p1, p2 ) \
    ((((p1) << MDM_SHIFT_PROTOCOLID) & MDM_MASK_PROTOCOLID) | \
    (((p2) << MDM_SHIFT_PROTOCOLDATA) & MDM_MASK_PROTOCOLDATA))
#define MDM_GET_EXTENDEDINFO( x ) \
    ((x) & MDM_MASK_EXTENDEDINFO)
#define MDM_SET_EXTENDEDINFO( x, p ) \
    (((x) &= ~MDM_MASK_EXTENDEDINFO), ((x) |= ((p) & MDM_MASK_EXTENDEDINFO)))
#define MDM_GEN_EXTENDEDINFO( p1, p2 ) \
    (((p2) & MDM_MASK_PROTOCOLINFO) | (((p1) << MDM_SHIFT_BEARERMODE) & \
    MDM_MASK_BEARERMODE))

/* Modem bearer modes */
#define MDM_BEARERMODE_ANALOG   0x0
#define MDM_BEARERMODE_ISDN     0x1
#define MDM_BEARERMODE_GSM      0x2

/* Modem protocol identifiers */
#define MDM_PROTOCOLID_DEFAULT  0x0
#define MDM_PROTOCOLID_HDLCPPP  0x1
#define MDM_PROTOCOLID_V128     0x2
#define MDM_PROTOCOLID_X75      0x3
#define MDM_PROTOCOLID_V110     0x4
#define MDM_PROTOCOLID_V120     0x5
#define MDM_PROTOCOLID_AUTO     0x6
#define MDM_PROTOCOLID_ANALOG   0x7
#define MDM_PROTOCOLID_GPRS     0x8
#define MDM_PROTOCOLID_PIAFS    0x9

/* Modem HDLC PPP option masks */
#define MDM_MASK_HDLCPPP_SPEED  0x00000007L
#define MDM_MASK_HDLCPPP_AUTH   0x00007000L
#define MDM_MASK_HDLCPPP_ML     0x07000000L

/* Modem HDLC PPP option shifts */
#define MDM_SHIFT_HDLCPPP_SPEED 0
#define MDM_SHIFT_HDLCPPP_AUTH  1
#define MDM_SHIFT_HDLCPPP_ML    2

/* Macros to generate HDLC PPP protocol data */
#define MDM_GEN_HDLCPPP_PROTOCOL_DATA( p1, p2, p3 ) \
    ((((p1) << MDM_SHIFT_HDLCPPP_SPEED) & MDM_MASK_HDLCPPP_SPEED) | \
    (((p2) << MDM_SHIFT_HDLCPPP_AUTH) & MDM_MASK_HDLCPPP_AUTH) | \
    (((p3) << MDM_SHIFT_HDLCPPP_ML) & MDM_MASK_HDLCPPP_ML))

/* Modem HDLC PPP speeds */
#define MDM_HDLCPPP_SPEED_DEFAULT   0x0
#define MDM_HDLCPPP_SPEED_64K       0x1
#define MDM_HDLCPPP_SPEED_56K       0x2

/* Modem HDLC PPP authorization values */
#define MDM_HDLCPPP_AUTH_DEFAULT    0x0
#define MDM_HDLCPPP_AUTH_NONE       0x1
#define MDM_HDLCPPP_AUTH_PAP        0x2
#define MDM_HDLCPPP_AUTH_CHAP       0x3
#define MDM_HDLCPPP_AUTH_MSCHAP     0x4

/* Modem HDLC PPP ML values */
#define MDM_HDLCPPP_ML_DEFAULT  0x0
#define MDM_HDLCPPP_ML_NONE     0x1
#define MDM_HDLCPPP_ML_2        0x2

/* Predefined HDLC PPP protocol information values */
#define MDM_PROTOCOL_HDLCPPP_64K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_HDLCPPP, MDM_GEN_HDLCPPP_PROTOCOL_DATA( \
    MDM_HDLCPPP_SPEED_64K, MDM_HDLCPPP_AUTH_DEFAULT, MDM_HDLCPPP_ML_DEFAULT ) )
#define MDM_PROTOCOL_HDLCPPP_56K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_HDLCPPP, MDM_GEN_HDLCPPP_PROTOCOL_DATA( \
    MDM_HDLCPPP_SPEED_56K, MDM_HDLCPPP_AUTH_DEFAULT, MDM_HDLCPPP_ML_DEFAULT ) )
#define MDM_PROTOCOL_HDLCPPP_112K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_HDLCPPP, MDM_GEN_HDLCPPP_PROTOCOL_DATA( \
    MDM_HDLCPPP_SPEED_56K, MDM_HDLCPPP_AUTH_DEFAULT, MDM_HDLCPPP_ML_2 ) )
#define MDM_PROTOCOL_HDLCPPP_112K_PAP \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_HDLCPPP, MDM_GEN_HDLCPPP_PROTOCOL_DATA( \
    MDM_HDLCPPP_SPEED_56K, MDM_HDLCPPP_AUTH_PAP, MDM_HDLCPPP_ML_2 ) )
#define MDM_PROTOCOL_HDLCPPP_112K_CHAP \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_HDLCPPP, MDM_GEN_HDLCPPP_PROTOCOL_DATA( \
    MDM_HDLCPPP_SPEED_56K, MDM_HDLCPPP_AUTH_CHAP, MDM_HDLCPPP_ML_2 ) )
#define MDM_PROTOCOL_HDLCPPP_112K_MSCHAP \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_HDLCPPP, MDM_GEN_HDLCPPP_PROTOCOL_DATA( \
    MDM_HDLCPPP_SPEED_56K, MDM_HDLCPPP_AUTH_MSCHAP, MDM_HDLCPPP_ML_2 ) )
#define MDM_PROTOCOL_HDLCPPP_128K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_HDLCPPP, MDM_GEN_HDLCPPP_PROTOCOL_DATA( \
    MDM_HDLCPPP_SPEED_64K, MDM_HDLCPPP_AUTH_DEFAULT, MDM_HDLCPPP_ML_2 ) )
#define MDM_PROTOCOL_HDLCPPP_128K_PAP \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_HDLCPPP, MDM_GEN_HDLCPPP_PROTOCOL_DATA( \
    MDM_HDLCPPP_SPEED_64K, MDM_HDLCPPP_AUTH_PAP, MDM_HDLCPPP_ML_2 ) )
#define MDM_PROTOCOL_HDLCPPP_128K_CHAP \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_HDLCPPP, MDM_GEN_HDLCPPP_PROTOCOL_DATA( \
    MDM_HDLCPPP_SPEED_64K, MDM_HDLCPPP_AUTH_CHAP, MDM_HDLCPPP_ML_2 ) )
#define MDM_PROTOCOL_HDLCPPP_128K_MSCHAP \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_HDLCPPP, MDM_GEN_HDLCPPP_PROTOCOL_DATA( \
    MDM_HDLCPPP_SPEED_64K, MDM_HDLCPPP_AUTH_MSCHAP, MDM_HDLCPPP_ML_2 ) )

/* Modem V120 option masks */
#define MDM_MASK_V120_SPEED 0x00000007L
#define MDM_MASK_V120_ML    0x03000000L

/* Modem V120 option shifts */
#define MDM_SHIFT_V120_SPEED    0
#define MDM_SHIFT_V120_ML       6

/* Macro to generate V120 protocol data */
#define MDM_GEN_V120_PROTOCOL_DATA( p1, p2 ) \
    ((((p1) << MDM_SHIFT_V120_SPEED) & MDM_MASK_V120_SPEED) | \
    (((p2) << MDM_SHIFT_V120_ML) & MDM_MASK_V120_ML))

/* Modem V120 speeds */
#define MDM_V120_SPEED_DEFAULT  0x0
#define MDM_V120_SPEED_64K      0x1
#define MDM_V120_SPEED_56K      0x2

/* Modem V120 ML values */
#define MDM_V120_ML_DEFAULT 0x0
#define MDM_V120_ML_NONE    0x1
#define MDM_V120_ML_2       0x2

/* Predefined V120 protocol information values */
#define MDM_PROTOCOL_V120_64K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_V120, MDM_GEN_V120_PROTOCOL_DATA( \
    MDM_V120_SPEED_64K, MDM_V120_ML_NONE ) )
#define MDM_PROTOCOL_V120_56K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_V120, MDM_GEN_V120_PROTOCOL_DATA( \
    MDM_V120_SPEED_56K, MDM_V120_ML_NONE ) )
#define MDM_PROTOCOL_V120_112K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_V120, MDM_GEN_V120_PROTOCOL_DATA( \
    MDM_V120_SPEED_56K, MDM_V120_ML_2 ) )
#define MDM_PROTOCOL_V120_128K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_V120, MDM_GEN_V120_PROTOCOL_DATA( \
    MDM_V120_SPEED_64K, MDM_V120_ML_2 ) )

/* Modem X75 option masks */
#define MDM_MASK_X75_DATA   0x00000007L

/* Modem X75 option shifts */
#define MDM_SHIFT_X75_DATA  0

/* Macro to generate X75 protocol data */
#define MDM_GEN_X75_PROTOCOL_DATA( x ) \
    (((x) << MDM_SHIFT_X75_DATA) & MDM_MASK_X75_DATA)

/* Modem X75 data values */
#define MDM_X75_DATA_DEFAULT    0x0
#define MDM_X75_DATA_64K        0x1
#define MDM_X75_DATA_128K       0x2
#define MDM_X75_DATA_T_70       0x3
#define MDM_X75_DATA_BTX        0x4

/* Predefined V75 protocol information values */
#define MDM_PROTOCOL_X75_64K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_X75, MDM_GEN_X75_PROTOCOL_DATA( \
    MDM_X75_DATA_64K ) )
#define MDM_PROTOCOL_X75_128K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_X75, MDM_GEN_X75_PROTOCOL_DATA( \
    MDM_X75_DATA_128K ) )
#define MDM_PROTOCOL_X75_T_70 \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_X75, MDM_GEN_X75_PROTOCOL_DATA( \
    MDM_X75_DATA_T_70 ) )
#define MDM_PROTOCOL_X75_BTX \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_X75, MDM_GEN_X75_PROTOCOL_DATA( \
    MDM_X75_DATA_BTX ) )

/* Modem V110 option masks */
#define MDM_MASK_V110_SPEED 0xF

/* Modem V110 option shifts */
#define MDM_SHIFT_V110_SPEED    0

/* Modem V110 speeds */
#define MDM_V110_SPEED_DEFAULT  0x0
#define MDM_V110_SPEED_1DOT2K   0x1
#define MDM_V110_SPEED_2DOT4K   0x2
#define MDM_V110_SPEED_4DOT8K   0x3
#define MDM_V110_SPEED_9DOT6K   0x4
#define MDM_V110_SPEED_12DOT0K  0x5
#define MDM_V110_SPEED_14DOT4K  0x6
#define MDM_V110_SPEED_19DOT2K  0x7
#define MDM_V110_SPEED_28DOT8K  0x8
#define MDM_V110_SPEED_38DOT4K  0x9
#define MDM_V110_SPEED_57DOT6K  0xA

/* Macro to generate V110 protocol data */
#define MDM_GEN_V110_PROTOCOL_DATA( x ) \
    (((x) << MDM_SHIFT_V110_SPEED) & MDM_MASK_V110_SPEED)

/* Predefined V110 protocol information values */
#define MDM_PROTOCOL_V110_1DOT2K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_V110, MDM_GEN_V110_PROTOCOL_DATA( \
    MDM_V110_SPEED_1DOT2K ) )
#define MDM_PROTOCOL_V110_2DOT4K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_V110, MDM_GEN_V110_PROTOCOL_DATA( \
    MDM_V110_SPEED_2DOT4K ) )
#define MDM_PROTOCOL_V110_4DOT8K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_V110, MDM_GEN_V110_PROTOCOL_DATA( \
    MDM_V110_SPEED_4DOT8K ) )
#define MDM_PROTOCOL_V110_9DOT6K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_V110, MDM_GEN_V110_PROTOCOL_DATA( \
    MDM_V110_SPEED_9DOT9K ) )
#define MDM_PROTOCOL_V110_12DOT0K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_V110, MDM_GEN_V110_PROTOCOL_DATA( \
    MDM_V110_SPEED_12DOT0K ) )
#define MDM_PROTOCOL_V110_14DOT4K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_V110, MDM_GEN_V110_PROTOCOL_DATA( \
    MDM_V110_SPEED_14DOT4K ) )
#define MDM_PROTOCOL_V110_19DOT2K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_V110, MDM_GEN_V110_PROTOCOL_DATA( \
    MDM_V110_SPEED_19DOT2K ) )
#define MDM_PROTOCOL_V110_28DOT8K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_V110, MDM_GEN_V110_PROTOCOL_DATA( \
    MDM_V110_SPEED_28DOT8K ) )
#define MDM_PROTOCOL_V110_38DOT4K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_V110, MDM_GEN_V110_PROTOCOL_DATA( \
    MDM_V110_SPEED_38DOT4K ) )
#define MDM_PROTOCOL_V110_57DOT6K \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_V110, MDM_GEN_V110_PROTOCOL_DATA( \
    MDM_V110_SPEED_57DOT6K ) )

/* Modem automatic option masks */
#define MDM_MASK_AUTO_SPEED 0x00000007L
#define MDM_MASK_AUTO_ML    0x03000000L

/* Modem automatic option shifts */
#define MDM_SHIFT_AUTO_SPEED    0
#define MDM_SHIFT_AUTO_ML       6

/* Modem automatic speeds */
#define MDM_AUTO_SPEED_DEFAULT  0x0

/* Modem automatic ML values */
#define MDM_AUTO_ML_DEFAULT 0x0
#define MDM_AUTO_ML_NONE    0x1
#define MDM_AUTO_ML_2       0x2

/* Macro to generate automatic protocol data */
#define MDM_GEN_AUTO_PROTOCOL_DATA( p1, p2 ) \
    ((((p1) << MDM_SHIFT_AUTO_SPEED) & MDM_MASK_AUTO_SPEED) | \
    (((p2) << MDM_SHIFT_AUTO_ML) & MDM_MASK_AUTO_ML))

/* Predefined automatic protocol information values */
#define MDM_PROTOCOL_AUTO_1CH \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_AUTO, MDM_GEN_AUTO_PROTOCOL_DATA( \
    MDM_AUTO_SPEED_DEFAULT, MDM_AUTO_ML_NONE ) )
#define MDM_PROTOCOL_AUTO_2CH \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_AUTO, MDM_GEN_AUTO_PROTOCOL_DATA( \
    MDM_AUTO_SPEED_DEFAULT, MDM_AUTO_ML_2 ) )

/* Modem analog RLP values */
#define MDM_ANALOG_RLP_ON   0x0
#define MDM_ANALOG_RLP_OFF  0x1
#define MDM_ANALOG_V34      0x2

/* Macro to generate analog protocol data */
#define MDM_GEN_ANALOG_PROTOCOL_DATA( x )   (x)

/* Predefined analog protocol information values */
#define MDM_PROTOCOL_ANALOG_RLP \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_ANALOG, MDM_GEN_ANALOG_PROTOCOL_DATA( \
    MDM_ANALOG_RLP_ON ) )
#define MDM_PROTOCOL_ANALOG_NRLP \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_ANALOG, MDM_GEN_ANALOG_PROTOCOL_DATA( \
    MDM_ANALOG_RLP_OFF ) )
#define MDM_PROTOCOL_ANALOG_V34 \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_ANALOG, MDM_GEN_ANALOG_PROTOCOL_DATA( \
    MDM_ANALOG_V34 ) )

/* Predefined GPRS protocol information values */
#define MDM_PROTOCOL_GPRS   MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_GPRS, 0 )

/* Modem PIAFS protocol data values */
#define MDM_PIAFS_INCOMING  0
#define MDM_PIAFS_OUTGOING  1

/* Predefined PIAFS protocol information values */
#define MDM_PROTOCOL_PIAFS_INCOMING \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_PIAFS, MDM_PIAFS_INCOMING )
#define MDM_PROTOCOL_PIAFS_OUTGOING \
    MDM_GEN_PROTOCOLINFO( MDM_PROTOCOLID_PIAFS, MDM_PIAFS_OUTGOING )

/* Modem device capabilities */
typedef struct _MODEMDEVCAPS {
    DWORD   dwActualSize;
    DWORD   dwRequiredSize;
    DWORD   dwDevSpecificOffset;
    DWORD   dwDevSpecificSize;
    DWORD   dwModemProviderVersion;
    DWORD   dwModemManufacturerOffset;
    DWORD   dwModemManufacturerSize;
    DWORD   dwModemModelOffset;
    DWORD   dwModemModelSize;
    DWORD   dwModemVersionOffset;
    DWORD   dwModemVersionSize;
    DWORD   dwDialOptions;
    DWORD   dwCallSetupFailTimer;
    DWORD   dwInactivityTimeout;
    DWORD   dwSpeakerVolume;
    DWORD   dwSpeakerMode;
    DWORD   dwModemOptions;
    DWORD   dwMaxDTERate;
    DWORD   dwMaxDCERate;
    BYTE    abVariablePortion[1];
} MODEMDEVCAPS;
typedef MODEMDEVCAPS    *PMODEMDEVCAPS;
typedef MODEMDEVCAPS    *LPMODEMDEVCAPS;

/* Modem settings */
typedef struct _MODEMSETTINGS {
    DWORD   dwActualSize;
    DWORD   dwRequiredSize;
    DWORD   dwDevSpecificOffset;
    DWORD   dwDevSpecificSize;
    DWORD   dwCallSetupFailTimer;
    DWORD   dwInactivityTimeout;
    DWORD   dwSpeakerVolume;
    DWORD   dwSpeakerMode;
    DWORD   dwPreferredModemOptions;
    DWORD   dwNegotiatedModemOptions;
    DWORD   dwNegotiatedDCERate;
    BYTE    abVariablePortion[1];
} MODEMSETTINGS;
typedef MODEMSETTINGS   *PMODEMSETTINGS;
typedef MODEMSETTINGS   *LPMODEMSETTINGS;

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* _MCX_H_ */
