home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / C++ / FreeCommandLineTools.exe / Include / mcx.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-31  |  24.0 KB  |  725 lines

  1. /************************************************************************
  2. *                                                                       *
  3. *   mcx.h -- This module defines the 32-Bit Windows MCX APIs            *
  4. *                                                                       *
  5. *   Copyright (c) 1990-1999, Microsoft Corp. All rights reserved.       *
  6. *                                                                       *
  7. ************************************************************************/
  8.  
  9. #ifndef _MCX_H_
  10. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  11. #define _MCX_H_
  12.  
  13. #if _MSC_VER > 1000
  14. #pragma once
  15. #endif
  16.  
  17. typedef struct _MODEMDEVCAPS {
  18.     DWORD   dwActualSize;
  19.     DWORD   dwRequiredSize;
  20.     DWORD   dwDevSpecificOffset;
  21.     DWORD   dwDevSpecificSize;
  22.  
  23.     // product and version identification
  24.     DWORD   dwModemProviderVersion;
  25.     DWORD   dwModemManufacturerOffset;
  26.     DWORD   dwModemManufacturerSize;
  27.     DWORD   dwModemModelOffset;
  28.     DWORD   dwModemModelSize;
  29.     DWORD   dwModemVersionOffset;
  30.     DWORD   dwModemVersionSize;
  31.  
  32.     // local option capabilities
  33.     DWORD   dwDialOptions;          // bitmap of supported values
  34.     DWORD   dwCallSetupFailTimer;   // maximum in seconds
  35.     DWORD   dwInactivityTimeout;    // maximum in seconds
  36.     DWORD   dwSpeakerVolume;        // bitmap of supported values
  37.     DWORD   dwSpeakerMode;          // bitmap of supported values
  38.     DWORD   dwModemOptions;         // bitmap of supported values
  39.     DWORD   dwMaxDTERate;           // maximum value in bit/s
  40.     DWORD   dwMaxDCERate;           // maximum value in bit/s
  41.  
  42.     // Variable portion for proprietary expansion
  43.     BYTE    abVariablePortion [1];
  44. } MODEMDEVCAPS, *PMODEMDEVCAPS, *LPMODEMDEVCAPS;
  45.  
  46. typedef struct _MODEMSETTINGS {
  47.     DWORD   dwActualSize;
  48.     DWORD   dwRequiredSize;
  49.     DWORD   dwDevSpecificOffset;
  50.     DWORD   dwDevSpecificSize;
  51.  
  52.     // static local options (read/write)
  53.     DWORD   dwCallSetupFailTimer;       // seconds
  54.     DWORD   dwInactivityTimeout;        // seconds
  55.     DWORD   dwSpeakerVolume;            // level
  56.     DWORD   dwSpeakerMode;              // mode
  57.     DWORD   dwPreferredModemOptions;    // bitmap
  58.  
  59.     // negotiated options (read only) for current or last call
  60.     DWORD   dwNegotiatedModemOptions;   // bitmap
  61.     DWORD   dwNegotiatedDCERate;        // bit/s
  62.  
  63.     // Variable portion for proprietary expansion
  64.     BYTE    abVariablePortion [1];
  65. } MODEMSETTINGS, *PMODEMSETTINGS, *LPMODEMSETTINGS;
  66.  
  67. // Dial Options
  68. #define DIALOPTION_BILLING  0x00000040  // Supports wait for bong "$"
  69. #define DIALOPTION_QUIET    0x00000080  // Supports wait for quiet "@"
  70. #define DIALOPTION_DIALTONE 0x00000100  // Supports wait for dial tone "W"
  71.  
  72. // SpeakerVolume for MODEMDEVCAPS
  73. #define MDMVOLFLAG_LOW      0x00000001
  74. #define MDMVOLFLAG_MEDIUM   0x00000002
  75. #define MDMVOLFLAG_HIGH     0x00000004
  76.  
  77. // SpeakerVolume for MODEMSETTINGS
  78. #define MDMVOL_LOW          0x00000000
  79. #define MDMVOL_MEDIUM       0x00000001
  80. #define MDMVOL_HIGH         0x00000002
  81.  
  82. // SpeakerMode for MODEMDEVCAPS
  83. #define MDMSPKRFLAG_OFF         0x00000001
  84. #define MDMSPKRFLAG_DIAL        0x00000002
  85. #define MDMSPKRFLAG_ON          0x00000004
  86. #define MDMSPKRFLAG_CALLSETUP   0x00000008
  87.  
  88. // SpeakerMode for MODEMSETTINGS
  89. #define MDMSPKR_OFF         0x00000000
  90. #define MDMSPKR_DIAL        0x00000001
  91. #define MDMSPKR_ON          0x00000002
  92. #define MDMSPKR_CALLSETUP   0x00000003
  93.  
  94. // Modem Options
  95. #define MDM_COMPRESSION      0x00000001
  96. #define MDM_ERROR_CONTROL    0x00000002
  97. #define MDM_FORCED_EC        0x00000004
  98. #define MDM_CELLULAR         0x00000008
  99. #define MDM_FLOWCONTROL_HARD 0x00000010
  100. #define MDM_FLOWCONTROL_SOFT 0x00000020
  101. #define MDM_CCITT_OVERRIDE   0x00000040
  102. #define MDM_SPEED_ADJUST     0x00000080
  103. #define MDM_TONE_DIAL        0x00000100
  104. #define MDM_BLIND_DIAL       0x00000200
  105. #define MDM_V23_OVERRIDE     0x00000400
  106. #define MDM_DIAGNOSTICS      0x00000800
  107.  
  108.  
  109. //=========================================================================
  110. //
  111. //
  112. //      EXTENDED MODEM OPTIONS INFORMATION
  113. //
  114. //      THE following macros define additional bits in dwPreferredModemOptions.
  115. //
  116. //      These bits specify information relevant to making ISDN and GSM
  117. //      calls, such as which protocol to use.
  118. //
  119. //=========================================================================
  120.  
  121. #define MDM_MASK_BEARERMODE   0x0000f000
  122. #define MDM_SHIFT_BEARERMODE 12
  123.  
  124. #define MDM_MASK_PROTOCOLID   0x000f0000
  125. #define MDM_SHIFT_PROTOCOLID  16
  126.  
  127. #define MDM_MASK_PROTOCOLDATA 0x0ff00000
  128. #define MDM_SHIFT_PROTOCOLDATA  20
  129.  
  130. //
  131. // PROTOCOLINFO is the union of PROTOCOLID and PROTOCOLDATA ...
  132. //
  133. #define MDM_MASK_PROTOCOLINFO  (MDM_MASK_PROTOCOLID|MDM_MASK_PROTOCOLDATA)
  134. #define MDM_SHIFT_PROTOCOLINFO MDM_SHIFT_PROTOCOLID
  135.  
  136. //
  137. // EXTENDEDINFO is the union of BEARERMODE and PROTOCOLINFO
  138. //
  139. #define MDM_MASK_EXTENDEDINFO (MDM_MASK_BEARERMODE|MDM_MASK_PROTOCOLINFO)
  140. #define MDM_SHIFT_EXTENDEDINFO  MDM_SHIFT_BEARERMODE
  141.  
  142.  
  143. #define MDM_GET_BEARERMODE(_dwOptions) \
  144.                    (((_dwOptions)&MDM_MASK_BEARERMODE) >> MDM_SHIFT_BEARERMODE)
  145.  
  146. #define MDM_SET_BEARERMODE(_dwOptions,_bm)     \
  147.     (((_dwOptions) &= ~MDM_MASK_BEARERMODE), \
  148.     ((_dwOptions)  |= (((_bm)<<MDM_SHIFT_BEARERMODE)&MDM_MASK_BEARERMODE)))
  149.  
  150. #define MDM_GET_PROTOCOLID(_dwOptions) \
  151.                (((_dwOptions)&MDM_MASK_PROTOCOLID) >> MDM_SHIFT_PROTOCOLID)
  152.  
  153. #define MDM_SET_PROTOCOLID(_dwOptions,_prot)     \
  154.     (((_dwOptions) &= ~MDM_MASK_PROTOCOLID), \
  155.     ((_dwOptions)  |= (((_prot)<<MDM_SHIFT_PROTOCOLID)&MDM_MASK_PROTOCOLID)))
  156.  
  157. #define MDM_GET_PROTOCOLDATA(_dwOptions) \
  158.                (((_dwOptions)&MDM_MASK_PROTOCOLDATA) >> MDM_SHIFT_PROTOCOLDATA)
  159.  
  160. #define MDM_SET_PROTOCOLDATA(_dwOptions,_pd)     \
  161.    (((_dwOptions) &= ~MDM_MASK_PROTOCOLDATA), \
  162.    ((_dwOptions)  |= (((_pd)<<MDM_SHIFT_PROTOCOLDATA)&MDM_MASK_PROTOCOLDATA)))
  163.  
  164. //
  165. // MDM_GET_PROTOCOLINFO gets the protocol-id and info bits in
  166. // their IN-PLACE form (preserving their place in dwModemPreferredOptions)
  167. //
  168. #define MDM_GET_PROTOCOLINFO(_dwOptions) \
  169.                ((_dwOptions)&MDM_MASK_PROTOCOLINFO)
  170.  
  171. //
  172. // MDM_SET_PROTOCOLINFO takes as its argument the protocol-id and info bits in
  173. // their IN-PLACE form (final position within dwModemPreferredOptions)
  174. //
  175. #define MDM_SET_PROTOCOLINFO(_dwOptions,_pinfo)     \
  176.   (((_dwOptions) &= ~MDM_MASK_PROTOCOLINFO), \
  177.   ((_dwOptions)  |= ((_pinfo)&MDM_MASK_PROTOCOLINFO)))
  178.  
  179. //
  180. // MDM_GEN_PROTOCOLINFO generates the  the protocol-id and info bits in
  181. // their IN-PLACE form (final position  within dwModemPreferredOptions).
  182. //
  183. #define MDM_GEN_PROTOCOLINFO(_pid, _pdata) \
  184.         ((((_pid  )<<MDM_SHIFT_PROTOCOLID  )&MDM_MASK_PROTOCOLID  )   \
  185.         |(((_pdata)<<MDM_SHIFT_PROTOCOLDATA)&MDM_MASK_PROTOCOLDATA))
  186.  
  187. //
  188. // MDM_GET_EXTENDEDIONFO gets the bearermode and protocol information in
  189. // their IN-PLACE form (preserving their place in dwModemPreferredOptions)
  190. //
  191. #define MDM_GET_EXTENDEDINFO(_dwOptions) \
  192.                ((_dwOptions)&MDM_MASK_EXTENDEDINFO)
  193.  
  194. //
  195. // MDM_SET_PROTOCOLINFO takes as its argument the bearermode and
  196. // protocol bits in their IN-PLACE form (final position within
  197. // dwModemPreferredOptions)
  198. //
  199. #define MDM_SET_EXTENDEDINFO(_dwOptions,_extinfo)     \
  200.   (((_dwOptions) &= ~MDM_MASK_EXTENDEDINFO), \
  201.   ((_dwOptions)  |= ((_extinfo) & MDM_MASK_EXTENDEDINFO)))
  202.  
  203.  
  204. //
  205. // MDM_GEN_EXTENDEDINFO generates the bearermode and protocol information
  206. // in their IN-PLACE form (final position within dwModemPreferredOptions0.
  207. //
  208. #define MDM_GEN_EXTENDEDINFO(_bearermode, _pinfo)   \
  209.         (((_pinfo)&MDM_MASK_PROTOCOLINFO  )         \
  210.          |(((_bearermode)<<MDM_SHIFT_BEARERMODE)&MDM_MASK_BEARERMODE))
  211.  
  212.  
  213. //=========================================================================
  214. //  BEARER MODES
  215. //=========================================================================
  216. //
  217. #define MDM_BEARERMODE_ANALOG   0x0
  218. #define MDM_BEARERMODE_ISDN     0x1
  219. #define MDM_BEARERMODE_GSM      0x2
  220.  
  221.  
  222. //=========================================================================
  223. //  PROTOCOL IDs
  224. //=========================================================================
  225. //
  226. #define MDM_PROTOCOLID_DEFAULT  0x0
  227. #define MDM_PROTOCOLID_HDLCPPP  0x1
  228. #define MDM_PROTOCOLID_V128     0x2
  229. #define MDM_PROTOCOLID_X75      0x3
  230. #define MDM_PROTOCOLID_V110     0x4
  231. #define MDM_PROTOCOLID_V120     0x5
  232. #define MDM_PROTOCOLID_AUTO     0x6 // Auto protocol detection.
  233. #define MDM_PROTOCOLID_ANALOG   0x7 // Applicable only to GSM
  234. #define MDM_PROTOCOLID_GPRS     0x8
  235. #define MDM_PROTOCOLID_PIAFS    0x9
  236.  
  237.  
  238. //=========================================================================
  239. //  HDLC PPP PROTOCOL INFORMATION
  240. //=========================================================================
  241. //
  242. // Following are specific to the HDLC-PPP protocol.
  243. // The shifts are w.r.t. the start of the PROTOCOLDATA field.
  244.  
  245. #define MDM_SHIFT_HDLCPPP_SPEED    0x0
  246. #define MDM_MASK_HDLCPPP_SPEED     0x7  // 3 bits
  247.  
  248. #define MDM_HDLCPPP_SPEED_DEFAULT  0x0
  249. #define MDM_HDLCPPP_SPEED_64K      0x1
  250. #define MDM_HDLCPPP_SPEED_56K      0x2
  251.  
  252.  
  253. #define MDM_SHIFT_HDLCPPP_AUTH     0x3
  254. #define MDM_MASK_HDLCPPP_AUTH      (0x7<<3)  // 3 bits
  255.  
  256. #define MDM_HDLCPPP_AUTH_DEFAULT   0x0
  257. #define MDM_HDLCPPP_AUTH_NONE      0x1
  258. #define MDM_HDLCPPP_AUTH_PAP       0x2
  259. #define MDM_HDLCPPP_AUTH_CHAP      0x3
  260. #define MDM_HDLCPPP_AUTH_MSCHAP    0x4
  261.  
  262.  
  263. #define MDM_SHIFT_HDLCPPP_ML       0x6
  264. #define MDM_MASK_HDLCPPP_ML        (0x3<<6)  // 2 bits
  265.  
  266. #define MDM_HDLCPPP_ML_DEFAULT     0x0
  267. #define MDM_HDLCPPP_ML_NONE        0x1
  268. #define MDM_HDLCPPP_ML_2           0x2
  269.  
  270. #define MDM_GEN_HDLCPPP_PROTOCOL_DATA(_speed, _auth, _ml)           \
  271.     ((((_speed)<<MDM_SHIFT_HDLCPPP_SPEED)&MDM_MASK_HDLCPPP_SPEED)   \
  272.     |(((_auth )<<MDM_SHIFT_HDLCPPP_AUTH )&MDM_MASK_HDLCPPP_AUTH )   \
  273.     |(((_ml   )<<MDM_SHIFT_HDLCPPP_ML   )&MDM_MASK_HDLCPPP_ML   ))
  274.  
  275.  
  276. #define MDM_PROTOCOL_HDLCPPP_64K        \
  277.     MDM_GEN_PROTOCOLINFO(               \
  278.         MDM_PROTOCOLID_HDLCPPP,         \
  279.         MDM_GEN_HDLCPPP_PROTOCOL_DATA ( \
  280.             MDM_HDLCPPP_SPEED_64K,      \
  281.             MDM_HDLCPPP_AUTH_DEFAULT,   \
  282.             MDM_HDLCPPP_ML_DEFAULT      \
  283.             )                           \
  284.         )
  285.  
  286. #define MDM_PROTOCOL_HDLCPPP_56K        \
  287.     MDM_GEN_PROTOCOLINFO(               \
  288.         MDM_PROTOCOLID_HDLCPPP,         \
  289.         MDM_GEN_HDLCPPP_PROTOCOL_DATA ( \
  290.             MDM_HDLCPPP_SPEED_56K,      \
  291.             MDM_HDLCPPP_AUTH_DEFAULT,   \
  292.             MDM_HDLCPPP_ML_DEFAULT      \
  293.             )                           \
  294.         )
  295.  
  296. #define MDM_PROTOCOL_HDLCPPP_112K       \
  297.     MDM_GEN_PROTOCOLINFO(               \
  298.         MDM_PROTOCOLID_HDLCPPP,         \
  299.         MDM_GEN_HDLCPPP_PROTOCOL_DATA ( \
  300.             MDM_HDLCPPP_SPEED_56K,      \
  301.             MDM_HDLCPPP_AUTH_DEFAULT,   \
  302.             MDM_HDLCPPP_ML_2            \
  303.             )                           \
  304.         )
  305.  
  306. #define MDM_PROTOCOL_HDLCPPP_112K_PAP   \
  307.     MDM_GEN_PROTOCOLINFO(               \
  308.         MDM_PROTOCOLID_HDLCPPP,         \
  309.         MDM_GEN_HDLCPPP_PROTOCOL_DATA ( \
  310.             MDM_HDLCPPP_SPEED_56K,      \
  311.             MDM_HDLCPPP_AUTH_PAP,       \
  312.             MDM_HDLCPPP_ML_2            \
  313.             )                           \
  314.         )
  315.  
  316. #define MDM_PROTOCOL_HDLCPPP_112K_CHAP  \
  317.     MDM_GEN_PROTOCOLINFO(               \
  318.         MDM_PROTOCOLID_HDLCPPP,         \
  319.         MDM_GEN_HDLCPPP_PROTOCOL_DATA ( \
  320.             MDM_HDLCPPP_SPEED_56K,      \
  321.             MDM_HDLCPPP_AUTH_CHAP,      \
  322.             MDM_HDLCPPP_ML_2            \
  323.             )                           \
  324.         )
  325.  
  326. #define MDM_PROTOCOL_HDLCPPP_112K_MSCHAP\
  327.     MDM_GEN_PROTOCOLINFO(               \
  328.         MDM_PROTOCOLID_HDLCPPP,         \
  329.         MDM_GEN_HDLCPPP_PROTOCOL_DATA ( \
  330.             MDM_HDLCPPP_SPEED_56K,      \
  331.             MDM_HDLCPPP_AUTH_MSCHAP,    \
  332.             MDM_HDLCPPP_ML_2            \
  333.             )                           \
  334.         )
  335. #define MDM_PROTOCOL_HDLCPPP_128K       \
  336.     MDM_GEN_PROTOCOLINFO(               \
  337.         MDM_PROTOCOLID_HDLCPPP,         \
  338.         MDM_GEN_HDLCPPP_PROTOCOL_DATA ( \
  339.             MDM_HDLCPPP_SPEED_64K,      \
  340.             MDM_HDLCPPP_AUTH_DEFAULT,   \
  341.             MDM_HDLCPPP_ML_2            \
  342.             )                           \
  343.         )
  344.  
  345. #define MDM_PROTOCOL_HDLCPPP_128K_PAP   \
  346.     MDM_GEN_PROTOCOLINFO(               \
  347.         MDM_PROTOCOLID_HDLCPPP,         \
  348.         MDM_GEN_HDLCPPP_PROTOCOL_DATA ( \
  349.             MDM_HDLCPPP_SPEED_64K,      \
  350.             MDM_HDLCPPP_AUTH_PAP,       \
  351.             MDM_HDLCPPP_ML_2            \
  352.             )                           \
  353.         )
  354.  
  355. #define MDM_PROTOCOL_HDLCPPP_128K_CHAP  \
  356.     MDM_GEN_PROTOCOLINFO(               \
  357.         MDM_PROTOCOLID_HDLCPPP,         \
  358.         MDM_GEN_HDLCPPP_PROTOCOL_DATA ( \
  359.             MDM_HDLCPPP_SPEED_64K,      \
  360.             MDM_HDLCPPP_AUTH_CHAP,      \
  361.             MDM_HDLCPPP_ML_2            \
  362.             )                           \
  363.         )
  364.  
  365. #define MDM_PROTOCOL_HDLCPPP_128K_MSCHAP\
  366.     MDM_GEN_PROTOCOLINFO(               \
  367.         MDM_PROTOCOLID_HDLCPPP,         \
  368.         MDM_GEN_HDLCPPP_PROTOCOL_DATA ( \
  369.             MDM_HDLCPPP_SPEED_64K,      \
  370.             MDM_HDLCPPP_AUTH_MSCHAP,    \
  371.             MDM_HDLCPPP_ML_2            \
  372.             )                           \
  373.         )
  374.  
  375. //=========================================================================
  376. //  V120 PROTOCOL INFORMATION
  377. //
  378. // The shifts are w.r.t. the start of the PROTOCOLDATA field.
  379. //
  380. //=========================================================================
  381.  
  382. #define MDM_SHIFT_V120_SPEED    0x0
  383. #define MDM_MASK_V120_SPEED     0x7  // 3 bits
  384.  
  385. #define MDM_V120_SPEED_DEFAULT  0x0
  386. #define MDM_V120_SPEED_64K      0x1
  387. #define MDM_V120_SPEED_56K      0x2
  388.  
  389.  
  390. #define MDM_SHIFT_V120_ML       0x6
  391. #define MDM_MASK_V120_ML        (0x3<<6)  // 2 bits
  392.  
  393. #define MDM_V120_ML_DEFAULT     0x0
  394. #define MDM_V120_ML_NONE        0x1
  395. #define MDM_V120_ML_2           0x2
  396.  
  397.  
  398. #define MDM_GEN_V120_PROTOCOL_DATA(_speed, _ml)               \
  399.     ((((_speed)<<MDM_SHIFT_V120_SPEED)&MDM_MASK_V120_SPEED)   \
  400.     |(((_ml   )<<MDM_SHIFT_V120_ML   )&MDM_MASK_V120_ML   ))
  401.  
  402.  
  403. #define MDM_PROTOCOL_V120_64K       \
  404.     MDM_GEN_PROTOCOLINFO(           \
  405.         MDM_PROTOCOLID_V120,        \
  406.         MDM_GEN_V120_PROTOCOL_DATA (\
  407.             MDM_V120_SPEED_64K,     \
  408.             MDM_V120_ML_NONE        \
  409.             )                       \
  410.         )
  411.  
  412. #define MDM_PROTOCOL_V120_56K       \
  413.     MDM_GEN_PROTOCOLINFO(           \
  414.         MDM_PROTOCOLID_V120,        \
  415.         MDM_GEN_V120_PROTOCOL_DATA (\
  416.             MDM_V120_SPEED_56K,     \
  417.             MDM_V120_ML_NONE        \
  418.             )                       \
  419.         )
  420.  
  421. #define MDM_PROTOCOL_V120_112K      \
  422.     MDM_GEN_PROTOCOLINFO(           \
  423.         MDM_PROTOCOLID_V120,        \
  424.         MDM_GEN_V120_PROTOCOL_DATA (\
  425.             MDM_V120_SPEED_56K,     \
  426.             MDM_V120_ML_2           \
  427.             )                       \
  428.         )
  429.  
  430. #define MDM_PROTOCOL_V120_128K      \
  431.     MDM_GEN_PROTOCOLINFO(           \
  432.         MDM_PROTOCOLID_V120,        \
  433.         MDM_GEN_V120_PROTOCOL_DATA (\
  434.             MDM_V120_SPEED_64K,     \
  435.             MDM_V120_ML_2           \
  436.             )                       \
  437.         )
  438.  
  439.  
  440. //=========================================================================
  441. //  X75 PROTOCOL INFORMATION
  442. //
  443. // The shifts are w.r.t. the start of the PROTOCOLDATA field.
  444. //
  445. //=========================================================================
  446.  
  447.  
  448. #define MDM_SHIFT_X75_DATA    0x0
  449. #define MDM_MASK_X75_DATA     0x7  // 3 bits
  450.  
  451. #define MDM_X75_DATA_DEFAULT  0x0
  452. #define MDM_X75_DATA_64K      0x1
  453. #define MDM_X75_DATA_128K     0x2
  454. #define MDM_X75_DATA_T_70     0x3
  455. #define MDM_X75_DATA_BTX      0x4
  456.  
  457. #define MDM_GEN_X75_PROTOCOL_DATA(_data) \
  458.     (((_data)<<MDM_SHIFT_X75_DATA)&MDM_MASK_X75_DATA)
  459.  
  460.  
  461. #define MDM_PROTOCOL_X75_64K        \
  462.     MDM_GEN_PROTOCOLINFO(           \
  463.         MDM_PROTOCOLID_X75,         \
  464.         MDM_GEN_X75_PROTOCOL_DATA ( \
  465.             MDM_X75_DATA_64K        \
  466.             )                       \
  467.         )
  468.  
  469. #define MDM_PROTOCOL_X75_128K       \
  470.     MDM_GEN_PROTOCOLINFO(           \
  471.         MDM_PROTOCOLID_X75,         \
  472.         MDM_GEN_X75_PROTOCOL_DATA ( \
  473.             MDM_X75_DATA_128K       \
  474.             )                       \
  475.         )
  476.  
  477. #define MDM_PROTOCOL_X75_T_70       \
  478.     MDM_GEN_PROTOCOLINFO(           \
  479.         MDM_PROTOCOLID_X75,         \
  480.         MDM_GEN_X75_PROTOCOL_DATA ( \
  481.             MDM_X75_DATA_T_70       \
  482.             )                       \
  483.         )                           \
  484.  
  485. #define MDM_PROTOCOL_X75_BTX        \
  486.     MDM_GEN_PROTOCOLINFO(           \
  487.         MDM_PROTOCOLID_X75,         \
  488.         MDM_GEN_X75_PROTOCOL_DATA ( \
  489.             MDM_X75_DATA_BTX        \
  490.             )                       \
  491.         )
  492.  
  493.  
  494. //=========================================================================
  495. //  V110 PROTOCOL INFORMATION
  496. //
  497. // The shifts are w.r.t. the start of the PROTOCOLDATA field.
  498. //
  499. //=========================================================================
  500.  
  501.  
  502. #define MDM_SHIFT_V110_SPEED   0x0
  503. #define MDM_MASK_V110_SPEED    0xf  // 4 bits
  504.  
  505. #define MDM_V110_SPEED_DEFAULT 0x0
  506. #define MDM_V110_SPEED_1DOT2K  0x1
  507. #define MDM_V110_SPEED_2DOT4K  0x2
  508. #define MDM_V110_SPEED_4DOT8K  0x3
  509. #define MDM_V110_SPEED_9DOT6K  0x4
  510. #define MDM_V110_SPEED_12DOT0K 0x5
  511. #define MDM_V110_SPEED_14DOT4K 0x6
  512. #define MDM_V110_SPEED_19DOT2K 0x7
  513. #define MDM_V110_SPEED_28DOT8K 0x8
  514. #define MDM_V110_SPEED_38DOT4K 0x9
  515. #define MDM_V110_SPEED_57DOT6K 0xA
  516.  
  517. #define MDM_GEN_V110_PROTOCOL_DATA(_data) \
  518.     (((_data)<<MDM_SHIFT_V110_SPEED)&MDM_MASK_V110_SPEED)
  519.  
  520.  
  521. #define MDM_PROTOCOL_V110_1DOT2K    \
  522.     MDM_GEN_PROTOCOLINFO(           \
  523.         MDM_PROTOCOLID_V110,        \
  524.         MDM_GEN_V110_PROTOCOL_DATA (\
  525.             MDM_V110_SPEED_1DOT2K   \
  526.             )                       \
  527.         )
  528.  
  529. #define MDM_PROTOCOL_V110_2DOT4K    \
  530.     MDM_GEN_PROTOCOLINFO(           \
  531.         MDM_PROTOCOLID_V110,        \
  532.         MDM_GEN_V110_PROTOCOL_DATA (\
  533.             MDM_V110_SPEED_2DOT4K   \
  534.             )                       \
  535.         )
  536.  
  537. #define MDM_PROTOCOL_V110_4DOT8K    \
  538.     MDM_GEN_PROTOCOLINFO(           \
  539.         MDM_PROTOCOLID_V110,        \
  540.         MDM_GEN_V110_PROTOCOL_DATA (\
  541.             MDM_V110_SPEED_4DOT8K   \
  542.             )                       \
  543.         )
  544.  
  545. #define MDM_PROTOCOL_V110_9DOT6K    \
  546.     MDM_GEN_PROTOCOLINFO(           \
  547.         MDM_PROTOCOLID_V110,        \
  548.         MDM_GEN_V110_PROTOCOL_DATA (\
  549.             MDM_V110_SPEED_9DOT6K   \
  550.             )                       \
  551.         )
  552.  
  553. #define MDM_PROTOCOL_V110_12DOT0K   \
  554.     MDM_GEN_PROTOCOLINFO(           \
  555.         MDM_PROTOCOLID_V110,        \
  556.         MDM_GEN_V110_PROTOCOL_DATA (\
  557.             MDM_V110_SPEED_12DOT0K  \
  558.             )                       \
  559.         )
  560.  
  561. #define MDM_PROTOCOL_V110_14DOT4K   \
  562.     MDM_GEN_PROTOCOLINFO(           \
  563.         MDM_PROTOCOLID_V110,        \
  564.         MDM_GEN_V110_PROTOCOL_DATA (\
  565.             MDM_V110_SPEED_14DOT4K  \
  566.             )                       \
  567.         )
  568.  
  569. #define MDM_PROTOCOL_V110_19DOT2K   \
  570.     MDM_GEN_PROTOCOLINFO(           \
  571.         MDM_PROTOCOLID_V110,        \
  572.         MDM_GEN_V110_PROTOCOL_DATA (\
  573.             MDM_V110_SPEED_19DOT2K  \
  574.             )                       \
  575.         )
  576.  
  577. #define MDM_PROTOCOL_V110_28DOT8K   \
  578.     MDM_GEN_PROTOCOLINFO(           \
  579.         MDM_PROTOCOLID_V110,        \
  580.         MDM_GEN_V110_PROTOCOL_DATA (\
  581.             MDM_V110_SPEED_28DOT8K  \
  582.             )                       \
  583.         )
  584.  
  585. #define MDM_PROTOCOL_V110_38DOT4K   \
  586.     MDM_GEN_PROTOCOLINFO(           \
  587.         MDM_PROTOCOLID_V110,        \
  588.         MDM_GEN_V110_PROTOCOL_DATA (\
  589.             MDM_V110_SPEED_38DOT4K  \
  590.             )                       \
  591.         )
  592.  
  593. #define MDM_PROTOCOL_V110_57DOT6K   \
  594.     MDM_GEN_PROTOCOLINFO(           \
  595.         MDM_PROTOCOLID_V110,        \
  596.         MDM_GEN_V110_PROTOCOL_DATA (\
  597.             MDM_V110_SPEED_57DOT6K  \
  598.             )                       \
  599.         )
  600.  
  601. //=========================================================================
  602. //  AUTO PROTOCOL INFORMATION (ie, when the protocol is detected automatically)
  603. //
  604. // The shifts are w.r.t. the start of the PROTOCOLDATA field.
  605. //
  606. //=========================================================================
  607. //
  608. // Following are specific to the AUTO-protocol
  609. //
  610.  
  611. #define MDM_SHIFT_AUTO_SPEED    0x0
  612. #define MDM_MASK_AUTO_SPEED     0x7  // 3 bits
  613. #define MDM_AUTO_SPEED_DEFAULT  0x0
  614.  
  615. #define MDM_SHIFT_AUTO_ML       0x6
  616. #define MDM_MASK_AUTO_ML        (0x3<<6)  // 2 bits
  617. #define MDM_AUTO_ML_DEFAULT     0x0
  618. #define MDM_AUTO_ML_NONE        0x1
  619. #define MDM_AUTO_ML_2           0x2
  620.  
  621. #define MDM_GEN_AUTO_PROTOCOL_DATA(_speed, _ml)             \
  622.     ((((_speed)<<MDM_SHIFT_AUTO_SPEED)&MDM_MASK_AUTO_SPEED) \
  623.     |(((_ml   )<<MDM_SHIFT_AUTO_ML   )&MDM_MASK_AUTO_ML))
  624.  
  625.  
  626. #define MDM_PROTOCOL_AUTO_1CH       \
  627.     MDM_GEN_PROTOCOLINFO(           \
  628.         MDM_PROTOCOLID_AUTO,        \
  629.         MDM_GEN_AUTO_PROTOCOL_DATA (\
  630.             MDM_AUTO_SPEED_DEFAULT, \
  631.             MDM_AUTO_ML_NONE        \
  632.             )                       \
  633.         )
  634.  
  635. #define MDM_PROTOCOL_AUTO_2CH       \
  636.     MDM_GEN_PROTOCOLINFO(           \
  637.         MDM_PROTOCOLID_AUTO,        \
  638.         MDM_GEN_AUTO_PROTOCOL_DATA (\
  639.             MDM_AUTO_SPEED_DEFAULT, \
  640.             MDM_AUTO_ML_2           \
  641.             )                       \
  642.         )
  643.  
  644. //=========================================================================
  645. //  ANALOG PROTOCOL INFORMATION (Applicable only to GSM)
  646. //=========================================================================
  647. //
  648. // Following are specific to GSM Analog protocol
  649. //
  650.  
  651. #define MDM_ANALOG_RLP_ON       0x0
  652. #define MDM_ANALOG_RLP_OFF      0x1
  653. #define MDM_ANALOG_V34          0x2
  654.  
  655. #define MDM_GEN_ANALOG_PROTOCOL_DATA(_rlp) \
  656.     (_rlp)
  657.  
  658.  
  659. #define MDM_PROTOCOL_ANALOG_RLP         \
  660.     MDM_GEN_PROTOCOLINFO(               \
  661.         MDM_PROTOCOLID_ANALOG,          \
  662.         MDM_GEN_ANALOG_PROTOCOL_DATA (  \
  663.             MDM_ANALOG_RLP_ON           \
  664.             )                           \
  665.         )
  666.  
  667. #define MDM_PROTOCOL_ANALOG_NRLP        \
  668.     MDM_GEN_PROTOCOLINFO(               \
  669.         MDM_PROTOCOLID_ANALOG,          \
  670.         MDM_GEN_ANALOG_PROTOCOL_DATA (  \
  671.             MDM_ANALOG_RLP_OFF          \
  672.             )                           \
  673.         )
  674.  
  675. //
  676. //  v34 anolog for isdn
  677. //
  678. #define MDM_PROTOCOL_ANALOG_V34         \
  679.     MDM_GEN_PROTOCOLINFO(               \
  680.         MDM_PROTOCOLID_ANALOG,          \
  681.         MDM_GEN_ANALOG_PROTOCOL_DATA (  \
  682.             MDM_ANALOG_V34              \
  683.             )                           \
  684.         )
  685.  
  686.  
  687. //=========================================================================
  688. //  GPRS PROTOCOL INFORMATION (Applicable only to GSM)
  689. //=========================================================================
  690. //
  691. // Following are specific to GPRS protocol
  692. //
  693.  
  694. #define MDM_PROTOCOL_GPRS             \
  695.     MDM_GEN_PROTOCOLINFO(             \
  696.         MDM_PROTOCOLID_GPRS,          \
  697.         0                             \
  698.         )
  699.  
  700.  
  701. //=========================================================================
  702. //  PIAFS PROTOCOL INFORMATION
  703. //=========================================================================
  704. //
  705. // Following are specific to PIAFS protocol
  706. //
  707.  
  708. #define MDM_PIAFS_INCOMING            0
  709. #define MDM_PIAFS_OUTGOING            1
  710.  
  711. #define MDM_PROTOCOL_PIAFS_INCOMING   \
  712.     MDM_GEN_PROTOCOLINFO(             \
  713.         MDM_PROTOCOLID_PIAFS,         \
  714.         MDM_PIAFS_INCOMING            \
  715.         )
  716.  
  717. #define MDM_PROTOCOL_PIAFS_OUTGOING   \
  718.     MDM_GEN_PROTOCOLINFO(             \
  719.         MDM_PROTOCOLID_PIAFS,         \
  720.         MDM_PIAFS_OUTGOING           \
  721.         )
  722.  
  723. #pragma option pop /*P_O_Pop*/
  724. #endif /* _MCX_H_ */
  725.