/***********************************************************************\
*                                  mcx.d                                *
*                                                                       *
*                       Windows API header module                       *
*                                                                       *
*                 Translated from MinGW Windows headers                 *
*                           by Stewart Gordon                           *
*                                                                       *
*                       Placed into public domain                       *
\***********************************************************************/
module win32.mcx;

private import win32.windef;

const DWORD
	DIALOPTION_BILLING  =  64,
	DIALOPTION_QUIET    = 128,
	DIALOPTION_DIALTONE = 256;

const DWORD
	MDMVOLFLAG_LOW    = 1,
	MDMVOLFLAG_MEDIUM = 2,
	MDMVOLFLAG_HIGH   = 4;

enum : DWORD {
	MDMVOL_LOW    = 0,
	MDMVOL_MEDIUM = 1,
	MDMVOL_HIGH   = 2
}

const DWORD
	MDMSPKRFLAG_OFF       = 1,
	MDMSPKRFLAG_DIAL      = 2,
	MDMSPKRFLAG_ON        = 4,
	MDMSPKRFLAG_CALLSETUP = 8;

enum : DWORD {
	MDMSPKR_OFF,
	MDMSPKR_DIAL,
	MDMSPKR_ON,
	MDMSPKR_CALLSETUP
}

const DWORD
	MDM_COMPRESSION      = 0x0001,
	MDM_ERROR_CONTROL    = 0x0002,
	MDM_FORCED_EC        = 0x0004,
	MDM_CELLULAR         = 0x0008,
	MDM_FLOWCONTROL_HARD = 0x0010,
	MDM_FLOWCONTROL_SOFT = 0x0020,
	MDM_CCITT_OVERRIDE   = 0x0040,
	MDM_SPEED_ADJUST     = 0x0080,
	MDM_TONE_DIAL        = 0x0100,
	MDM_BLIND_DIAL       = 0x0200,
	MDM_V23_OVERRIDE     = 0x0400;

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;

	BYTE* abVariablePortion() { return &_abVariablePortion; }
}
alias MODEMDEVCAPS* PMODEMDEVCAPS, LPMODEMDEVCAPS;

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;

	BYTE* abVariablePortion() { return &_abVariablePortion; }
}
alias MODEMSETTINGS* PMODEMSETTINGS, LPMODEMSETTINGS;
