Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _MCX_H_
      7 #define _MCX_H_
      8 
      9 typedef struct _MODEMDEVCAPS {
     10   DWORD dwActualSize;
     11   DWORD dwRequiredSize;
     12   DWORD dwDevSpecificOffset;
     13   DWORD dwDevSpecificSize;
     14   DWORD dwModemProviderVersion;
     15   DWORD dwModemManufacturerOffset;
     16   DWORD dwModemManufacturerSize;
     17   DWORD dwModemModelOffset;
     18   DWORD dwModemModelSize;
     19   DWORD dwModemVersionOffset;
     20   DWORD dwModemVersionSize;
     21   DWORD dwDialOptions;
     22   DWORD dwCallSetupFailTimer;
     23   DWORD dwInactivityTimeout;
     24   DWORD dwSpeakerVolume;
     25   DWORD dwSpeakerMode;
     26   DWORD dwModemOptions;
     27   DWORD dwMaxDTERate;
     28   DWORD dwMaxDCERate;
     29   BYTE abVariablePortion[1];
     30 } MODEMDEVCAPS,*PMODEMDEVCAPS,*LPMODEMDEVCAPS;
     31 
     32 typedef struct _MODEMSETTINGS {
     33   DWORD dwActualSize;
     34   DWORD dwRequiredSize;
     35   DWORD dwDevSpecificOffset;
     36   DWORD dwDevSpecificSize;
     37   DWORD dwCallSetupFailTimer;
     38   DWORD dwInactivityTimeout;
     39   DWORD dwSpeakerVolume;
     40   DWORD dwSpeakerMode;
     41   DWORD dwPreferredModemOptions;
     42   DWORD dwNegotiatedModemOptions;
     43   DWORD dwNegotiatedDCERate;
     44   BYTE abVariablePortion [1];
     45 } MODEMSETTINGS,*PMODEMSETTINGS,*LPMODEMSETTINGS;
     46 
     47 #define DIALOPTION_BILLING 0x00000040
     48 #define DIALOPTION_QUIET 0x00000080
     49 #define DIALOPTION_DIALTONE 0x00000100
     50 
     51 #define MDMVOLFLAG_LOW 0x00000001
     52 #define MDMVOLFLAG_MEDIUM 0x00000002
     53 #define MDMVOLFLAG_HIGH 0x00000004
     54 
     55 #define MDMVOL_LOW 0x00000000
     56 #define MDMVOL_MEDIUM 0x00000001
     57 #define MDMVOL_HIGH 0x00000002
     58 
     59 #define MDMSPKRFLAG_OFF 0x00000001
     60 #define MDMSPKRFLAG_DIAL 0x00000002
     61 #define MDMSPKRFLAG_ON 0x00000004
     62 #define MDMSPKRFLAG_CALLSETUP 0x00000008
     63 
     64 #define MDMSPKR_OFF 0x00000000
     65 #define MDMSPKR_DIAL 0x00000001
     66 #define MDMSPKR_ON 0x00000002
     67 #define MDMSPKR_CALLSETUP 0x00000003
     68 
     69 #define MDM_COMPRESSION 0x00000001
     70 #define MDM_ERROR_CONTROL 0x00000002
     71 #define MDM_FORCED_EC 0x00000004
     72 #define MDM_CELLULAR 0x00000008
     73 #define MDM_FLOWCONTROL_HARD 0x00000010
     74 #define MDM_FLOWCONTROL_SOFT 0x00000020
     75 #define MDM_CCITT_OVERRIDE 0x00000040
     76 #define MDM_SPEED_ADJUST 0x00000080
     77 #define MDM_TONE_DIAL 0x00000100
     78 #define MDM_BLIND_DIAL 0x00000200
     79 #define MDM_V23_OVERRIDE 0x00000400
     80 #define MDM_DIAGNOSTICS 0x00000800
     81 
     82 #define MDM_MASK_BEARERMODE 0x0000f000
     83 #define MDM_SHIFT_BEARERMODE 12
     84 
     85 #define MDM_MASK_PROTOCOLID 0x000f0000
     86 #define MDM_SHIFT_PROTOCOLID 16
     87 
     88 #define MDM_MASK_PROTOCOLDATA 0x0ff00000
     89 #define MDM_SHIFT_PROTOCOLDATA 20
     90 
     91 #define MDM_MASK_PROTOCOLINFO (MDM_MASK_PROTOCOLID|MDM_MASK_PROTOCOLDATA)
     92 #define MDM_SHIFT_PROTOCOLINFO MDM_SHIFT_PROTOCOLID
     93 
     94 #define MDM_MASK_EXTENDEDINFO (MDM_MASK_BEARERMODE|MDM_MASK_PROTOCOLINFO)
     95 #define MDM_SHIFT_EXTENDEDINFO MDM_SHIFT_BEARERMODE
     96 
     97 #define MDM_GET_BEARERMODE(_dwOptions) (((_dwOptions)&MDM_MASK_BEARERMODE) >> MDM_SHIFT_BEARERMODE)
     98 #define MDM_SET_BEARERMODE(_dwOptions,_bm) (((_dwOptions) &= ~MDM_MASK_BEARERMODE),((_dwOptions) |= (((_bm)<<MDM_SHIFT_BEARERMODE)&MDM_MASK_BEARERMODE)))
     99 #define MDM_GET_PROTOCOLID(_dwOptions) (((_dwOptions)&MDM_MASK_PROTOCOLID) >> MDM_SHIFT_PROTOCOLID)
    100 #define MDM_SET_PROTOCOLID(_dwOptions,_prot) (((_dwOptions) &= ~MDM_MASK_PROTOCOLID),((_dwOptions) |= (((_prot)<<MDM_SHIFT_PROTOCOLID)&MDM_MASK_PROTOCOLID)))
    101 #define MDM_GET_PROTOCOLDATA(_dwOptions) (((_dwOptions)&MDM_MASK_PROTOCOLDATA) >> MDM_SHIFT_PROTOCOLDATA)
    102 #define MDM_SET_PROTOCOLDATA(_dwOptions,_pd) (((_dwOptions) &= ~MDM_MASK_PROTOCOLDATA),((_dwOptions) |= (((_pd)<<MDM_SHIFT_PROTOCOLDATA)&MDM_MASK_PROTOCOLDATA)))
    103 #define MDM_GET_PROTOCOLINFO(_dwOptions) ((_dwOptions)&MDM_MASK_PROTOCOLINFO)
    104 #define MDM_SET_PROTOCOLINFO(_dwOptions,_pinfo) (((_dwOptions) &= ~MDM_MASK_PROTOCOLINFO),((_dwOptions) |= ((_pinfo)&MDM_MASK_PROTOCOLINFO)))
    105 #define MDM_GEN_PROTOCOLINFO(_pid,_pdata) ((((_pid)<<MDM_SHIFT_PROTOCOLID)&MDM_MASK_PROTOCOLID) |(((_pdata)<<MDM_SHIFT_PROTOCOLDATA)&MDM_MASK_PROTOCOLDATA))
    106 #define MDM_GET_EXTENDEDINFO(_dwOptions) ((_dwOptions)&MDM_MASK_EXTENDEDINFO)
    107 #define MDM_SET_EXTENDEDINFO(_dwOptions,_extinfo) (((_dwOptions) &= ~MDM_MASK_EXTENDEDINFO),((_dwOptions) |= ((_extinfo) & MDM_MASK_EXTENDEDINFO)))
    108 #define MDM_GEN_EXTENDEDINFO(_bearermode,_pinfo) (((_pinfo)&MDM_MASK_PROTOCOLINFO) |(((_bearermode)<<MDM_SHIFT_BEARERMODE)&MDM_MASK_BEARERMODE))
    109 
    110 #define MDM_BEARERMODE_ANALOG 0x0
    111 #define MDM_BEARERMODE_ISDN 0x1
    112 #define MDM_BEARERMODE_GSM 0x2
    113 
    114 #define MDM_PROTOCOLID_DEFAULT 0x0
    115 #define MDM_PROTOCOLID_HDLCPPP 0x1
    116 #define MDM_PROTOCOLID_V128 0x2
    117 #define MDM_PROTOCOLID_X75 0x3
    118 #define MDM_PROTOCOLID_V110 0x4
    119 #define MDM_PROTOCOLID_V120 0x5
    120 #define MDM_PROTOCOLID_AUTO 0x6
    121 #define MDM_PROTOCOLID_ANALOG 0x7
    122 #define MDM_PROTOCOLID_GPRS 0x8
    123 #define MDM_PROTOCOLID_PIAFS 0x9
    124 
    125 #define MDM_SHIFT_HDLCPPP_SPEED 0x0
    126 #define MDM_MASK_HDLCPPP_SPEED 0x7
    127 
    128 #define MDM_HDLCPPP_SPEED_DEFAULT 0x0
    129 #define MDM_HDLCPPP_SPEED_64K 0x1
    130 #define MDM_HDLCPPP_SPEED_56K 0x2
    131 
    132 #define MDM_SHIFT_HDLCPPP_AUTH 0x3
    133 #define MDM_MASK_HDLCPPP_AUTH (0x7<<3)
    134 
    135 #define MDM_HDLCPPP_AUTH_DEFAULT 0x0
    136 #define MDM_HDLCPPP_AUTH_NONE 0x1
    137 #define MDM_HDLCPPP_AUTH_PAP 0x2
    138 #define MDM_HDLCPPP_AUTH_CHAP 0x3
    139 #define MDM_HDLCPPP_AUTH_MSCHAP 0x4
    140 
    141 #define MDM_SHIFT_HDLCPPP_ML 0x6
    142 #define MDM_MASK_HDLCPPP_ML (0x3<<6)
    143 
    144 #define MDM_HDLCPPP_ML_DEFAULT 0x0
    145 #define MDM_HDLCPPP_ML_NONE 0x1
    146 #define MDM_HDLCPPP_ML_2 0x2
    147 
    148 #define MDM_GEN_HDLCPPP_PROTOCOL_DATA(_speed,_auth,_ml) ((((_speed)<<MDM_SHIFT_HDLCPPP_SPEED)&MDM_MASK_HDLCPPP_SPEED) |(((_auth)<<MDM_SHIFT_HDLCPPP_AUTH)&MDM_MASK_HDLCPPP_AUTH) |(((_ml)<<MDM_SHIFT_HDLCPPP_ML)&MDM_MASK_HDLCPPP_ML))
    149 
    150 #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))
    151 #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))
    152 #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))
    153 #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))
    154 #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))
    155 #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))
    156 #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))
    157 #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))
    158 #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))
    159 #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))
    160 
    161 #define MDM_SHIFT_V120_SPEED 0x0
    162 #define MDM_MASK_V120_SPEED 0x7
    163 
    164 #define MDM_V120_SPEED_DEFAULT 0x0
    165 #define MDM_V120_SPEED_64K 0x1
    166 #define MDM_V120_SPEED_56K 0x2
    167 
    168 #define MDM_SHIFT_V120_ML 0x6
    169 #define MDM_MASK_V120_ML (0x3<<6)
    170 
    171 #define MDM_V120_ML_DEFAULT 0x0
    172 #define MDM_V120_ML_NONE 0x1
    173 #define MDM_V120_ML_2 0x2
    174 
    175 #define MDM_GEN_V120_PROTOCOL_DATA(_speed,_ml) ((((_speed)<<MDM_SHIFT_V120_SPEED)&MDM_MASK_V120_SPEED) |(((_ml)<<MDM_SHIFT_V120_ML)&MDM_MASK_V120_ML))
    176 
    177 #define MDM_PROTOCOL_V120_64K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V120,MDM_GEN_V120_PROTOCOL_DATA (MDM_V120_SPEED_64K,MDM_V120_ML_NONE))
    178 #define MDM_PROTOCOL_V120_56K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V120,MDM_GEN_V120_PROTOCOL_DATA (MDM_V120_SPEED_56K,MDM_V120_ML_NONE))
    179 #define MDM_PROTOCOL_V120_112K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V120,MDM_GEN_V120_PROTOCOL_DATA (MDM_V120_SPEED_56K,MDM_V120_ML_2))
    180 #define MDM_PROTOCOL_V120_128K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V120,MDM_GEN_V120_PROTOCOL_DATA (MDM_V120_SPEED_64K,MDM_V120_ML_2))
    181 
    182 #define MDM_SHIFT_X75_DATA 0x0
    183 #define MDM_MASK_X75_DATA 0x7
    184 
    185 #define MDM_X75_DATA_DEFAULT 0x0
    186 #define MDM_X75_DATA_64K 0x1
    187 #define MDM_X75_DATA_128K 0x2
    188 #define MDM_X75_DATA_T_70 0x3
    189 #define MDM_X75_DATA_BTX 0x4
    190 
    191 #define MDM_GEN_X75_PROTOCOL_DATA(_data) (((_data)<<MDM_SHIFT_X75_DATA)&MDM_MASK_X75_DATA)
    192 
    193 #define MDM_PROTOCOL_X75_64K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_X75,MDM_GEN_X75_PROTOCOL_DATA (MDM_X75_DATA_64K))
    194 #define MDM_PROTOCOL_X75_128K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_X75,MDM_GEN_X75_PROTOCOL_DATA (MDM_X75_DATA_128K))
    195 #define MDM_PROTOCOL_X75_T_70 MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_X75,MDM_GEN_X75_PROTOCOL_DATA (MDM_X75_DATA_T_70))
    196 #define MDM_PROTOCOL_X75_BTX MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_X75,MDM_GEN_X75_PROTOCOL_DATA (MDM_X75_DATA_BTX))
    197 
    198 #define MDM_SHIFT_V110_SPEED 0x0
    199 #define MDM_MASK_V110_SPEED 0xf
    200 
    201 #define MDM_V110_SPEED_DEFAULT 0x0
    202 #define MDM_V110_SPEED_1DOT2K 0x1
    203 #define MDM_V110_SPEED_2DOT4K 0x2
    204 #define MDM_V110_SPEED_4DOT8K 0x3
    205 #define MDM_V110_SPEED_9DOT6K 0x4
    206 #define MDM_V110_SPEED_12DOT0K 0x5
    207 #define MDM_V110_SPEED_14DOT4K 0x6
    208 #define MDM_V110_SPEED_19DOT2K 0x7
    209 #define MDM_V110_SPEED_28DOT8K 0x8
    210 #define MDM_V110_SPEED_38DOT4K 0x9
    211 #define MDM_V110_SPEED_57DOT6K 0xA
    212 
    213 #define MDM_GEN_V110_PROTOCOL_DATA(_data) (((_data)<<MDM_SHIFT_V110_SPEED)&MDM_MASK_V110_SPEED)
    214 
    215 #define MDM_PROTOCOL_V110_1DOT2K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_1DOT2K))
    216 #define MDM_PROTOCOL_V110_2DOT4K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_2DOT4K))
    217 #define MDM_PROTOCOL_V110_4DOT8K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_4DOT8K))
    218 #define MDM_PROTOCOL_V110_9DOT6K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_9DOT6K))
    219 #define MDM_PROTOCOL_V110_12DOT0K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_12DOT0K))
    220 #define MDM_PROTOCOL_V110_14DOT4K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_14DOT4K))
    221 #define MDM_PROTOCOL_V110_19DOT2K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_19DOT2K))
    222 #define MDM_PROTOCOL_V110_28DOT8K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_28DOT8K))
    223 #define MDM_PROTOCOL_V110_38DOT4K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_38DOT4K))
    224 #define MDM_PROTOCOL_V110_57DOT6K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_57DOT6K))
    225 
    226 #define MDM_SHIFT_AUTO_SPEED 0x0
    227 #define MDM_MASK_AUTO_SPEED 0x7
    228 #define MDM_AUTO_SPEED_DEFAULT 0x0
    229 
    230 #define MDM_SHIFT_AUTO_ML 0x6
    231 #define MDM_MASK_AUTO_ML (0x3<<6)
    232 #define MDM_AUTO_ML_DEFAULT 0x0
    233 #define MDM_AUTO_ML_NONE 0x1
    234 #define MDM_AUTO_ML_2 0x2
    235 
    236 #define MDM_GEN_AUTO_PROTOCOL_DATA(_speed,_ml) ((((_speed)<<MDM_SHIFT_AUTO_SPEED)&MDM_MASK_AUTO_SPEED) |(((_ml)<<MDM_SHIFT_AUTO_ML)&MDM_MASK_AUTO_ML))
    237 
    238 #define MDM_PROTOCOL_AUTO_1CH MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_AUTO,MDM_GEN_AUTO_PROTOCOL_DATA (MDM_AUTO_SPEED_DEFAULT,MDM_AUTO_ML_NONE))
    239 #define MDM_PROTOCOL_AUTO_2CH MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_AUTO,MDM_GEN_AUTO_PROTOCOL_DATA (MDM_AUTO_SPEED_DEFAULT,MDM_AUTO_ML_2))
    240 
    241 #define MDM_ANALOG_RLP_ON 0x0
    242 #define MDM_ANALOG_RLP_OFF 0x1
    243 #define MDM_ANALOG_V34 0x2
    244 
    245 #define MDM_GEN_ANALOG_PROTOCOL_DATA(_rlp) (_rlp)
    246 
    247 #define MDM_PROTOCOL_ANALOG_RLP MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_ANALOG,MDM_GEN_ANALOG_PROTOCOL_DATA (MDM_ANALOG_RLP_ON))
    248 #define MDM_PROTOCOL_ANALOG_NRLP MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_ANALOG,MDM_GEN_ANALOG_PROTOCOL_DATA (MDM_ANALOG_RLP_OFF))
    249 #define MDM_PROTOCOL_ANALOG_V34 MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_ANALOG,MDM_GEN_ANALOG_PROTOCOL_DATA (MDM_ANALOG_V34))
    250 #define MDM_PROTOCOL_GPRS MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_GPRS,0)
    251 
    252 #define MDM_PIAFS_INCOMING 0
    253 #define MDM_PIAFS_OUTGOING 1
    254 
    255 #define MDM_PROTOCOL_PIAFS_INCOMING MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_PIAFS,MDM_PIAFS_INCOMING)
    256 #define MDM_PROTOCOL_PIAFS_OUTGOING MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_PIAFS,MDM_PIAFS_OUTGOING)
    257 #endif
    258