| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 |  | 
|  | 2 | /* | 
|  | 3 | * | 
|  | 4 | Copyright (c) Eicon Networks, 2002. | 
|  | 5 | * | 
|  | 6 | This source file is supplied for the use with | 
|  | 7 | Eicon Networks range of DIVA Server Adapters. | 
|  | 8 | * | 
|  | 9 | Eicon File Revision :    2.1 | 
|  | 10 | * | 
|  | 11 | This program is free software; you can redistribute it and/or modify | 
|  | 12 | it under the terms of the GNU General Public License as published by | 
|  | 13 | the Free Software Foundation; either version 2, or (at your option) | 
|  | 14 | any later version. | 
|  | 15 | * | 
|  | 16 | This program is distributed in the hope that it will be useful, | 
|  | 17 | but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY | 
|  | 18 | implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 
|  | 19 | See the GNU General Public License for more details. | 
|  | 20 | * | 
|  | 21 | You should have received a copy of the GNU General Public License | 
|  | 22 | along with this program; if not, write to the Free Software | 
|  | 23 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
|  | 24 | * | 
|  | 25 | */ | 
|  | 26 |  | 
|  | 27 | /*#define DEBUG */ | 
|  | 28 |  | 
|  | 29 |  | 
|  | 30 |  | 
|  | 31 |  | 
|  | 32 |  | 
|  | 33 |  | 
|  | 34 |  | 
|  | 35 |  | 
|  | 36 |  | 
|  | 37 |  | 
|  | 38 |  | 
|  | 39 | #define IMPLEMENT_DTMF 1 | 
|  | 40 | #define IMPLEMENT_LINE_INTERCONNECT2 1 | 
|  | 41 | #define IMPLEMENT_ECHO_CANCELLER 1 | 
|  | 42 | #define IMPLEMENT_RTP 1 | 
|  | 43 | #define IMPLEMENT_T38 1 | 
|  | 44 | #define IMPLEMENT_FAX_SUB_SEP_PWD 1 | 
|  | 45 | #define IMPLEMENT_V18 1 | 
|  | 46 | #define IMPLEMENT_DTMF_TONE 1 | 
|  | 47 | #define IMPLEMENT_PIAFS 1 | 
|  | 48 | #define IMPLEMENT_FAX_PAPER_FORMATS 1 | 
|  | 49 | #define IMPLEMENT_VOWN 1 | 
|  | 50 | #define IMPLEMENT_CAPIDTMF 1 | 
|  | 51 | #define IMPLEMENT_FAX_NONSTANDARD 1 | 
|  | 52 | #define VSWITCH_SUPPORT 1 | 
|  | 53 |  | 
|  | 54 |  | 
|  | 55 | #define IMPLEMENT_LINE_INTERCONNECT 0 | 
|  | 56 | #define IMPLEMENT_MARKED_OK_AFTER_FC 1 | 
|  | 57 |  | 
|  | 58 | #include "capidtmf.h" | 
|  | 59 |  | 
|  | 60 | /*------------------------------------------------------------------*/ | 
|  | 61 | /* Common API internal definitions                                  */ | 
|  | 62 | /*------------------------------------------------------------------*/ | 
|  | 63 |  | 
|  | 64 | #define MAX_APPL 240 | 
|  | 65 | #define MAX_NCCI           127 | 
|  | 66 |  | 
|  | 67 | #define MSG_IN_QUEUE_SIZE  ((4096 + 3) & 0xfffc)  /* must be multiple of 4 */ | 
|  | 68 |  | 
|  | 69 |  | 
|  | 70 | #define MSG_IN_OVERHEAD    sizeof(APPL   *) | 
|  | 71 |  | 
|  | 72 | #define MAX_NL_CHANNEL     255 | 
|  | 73 | #define MAX_DATA_B3        8 | 
|  | 74 | #define MAX_DATA_ACK       MAX_DATA_B3 | 
|  | 75 | #define MAX_MULTI_IE       6 | 
|  | 76 | #define MAX_MSG_SIZE       256 | 
|  | 77 | #define MAX_MSG_PARMS      10 | 
|  | 78 | #define MAX_CPN_MASK_SIZE  16 | 
|  | 79 | #define MAX_MSN_CONFIG     10 | 
|  | 80 | #define EXT_CONTROLLER     0x80 | 
|  | 81 | #define CODEC              0x01 | 
|  | 82 | #define CODEC_PERMANENT    0x02 | 
|  | 83 | #define ADV_VOICE          0x03 | 
|  | 84 | #define MAX_CIP_TYPES      5  /* kind of CIP types for group optimization */ | 
|  | 85 | #define C_IND_MASK_DWORDS  ((MAX_APPL+32) >> 5) | 
|  | 86 |  | 
|  | 87 |  | 
|  | 88 | #define FAX_CONNECT_INFO_BUFFER_SIZE  256 | 
|  | 89 | #define NCPI_BUFFER_SIZE              256 | 
|  | 90 |  | 
|  | 91 | #define MAX_CHANNELS_PER_PLCI         8 | 
|  | 92 | #define MAX_INTERNAL_COMMAND_LEVELS   4 | 
|  | 93 | #define INTERNAL_REQ_BUFFER_SIZE      272 | 
|  | 94 |  | 
|  | 95 | #define INTERNAL_IND_BUFFER_SIZE      768 | 
|  | 96 |  | 
|  | 97 | #define DTMF_PARAMETER_BUFFER_SIZE    12 | 
|  | 98 | #define ADV_VOICE_COEF_BUFFER_SIZE    50 | 
|  | 99 |  | 
|  | 100 | #define LI_PLCI_B_QUEUE_ENTRIES       256 | 
|  | 101 |  | 
|  | 102 |  | 
|  | 103 |  | 
|  | 104 | typedef struct _APPL APPL; | 
|  | 105 | typedef struct _PLCI PLCI; | 
|  | 106 | typedef struct _NCCI NCCI; | 
|  | 107 | typedef struct _DIVA_CAPI_ADAPTER DIVA_CAPI_ADAPTER; | 
|  | 108 | typedef struct _DATA_B3_DESC DATA_B3_DESC; | 
|  | 109 | typedef struct _DATA_ACK_DESC DATA_ACK_DESC; | 
|  | 110 | typedef struct manufacturer_profile_s MANUFACTURER_PROFILE; | 
|  | 111 | typedef struct fax_ncpi_s FAX_NCPI; | 
|  | 112 | typedef struct api_parse_s API_PARSE; | 
|  | 113 | typedef struct api_save_s API_SAVE; | 
|  | 114 | typedef struct msn_config_s MSN_CONFIG; | 
|  | 115 | typedef struct msn_config_max_s MSN_CONFIG_MAX; | 
|  | 116 | typedef struct msn_ld_s MSN_LD; | 
|  | 117 |  | 
|  | 118 | struct manufacturer_profile_s { | 
|  | 119 | dword private_options; | 
|  | 120 | dword rtp_primary_payloads; | 
|  | 121 | dword rtp_additional_payloads; | 
|  | 122 | }; | 
|  | 123 |  | 
|  | 124 | struct fax_ncpi_s { | 
|  | 125 | word options; | 
|  | 126 | word format; | 
|  | 127 | }; | 
|  | 128 |  | 
|  | 129 | struct msn_config_s { | 
|  | 130 | byte msn[MAX_CPN_MASK_SIZE]; | 
|  | 131 | }; | 
|  | 132 |  | 
|  | 133 | struct msn_config_max_s { | 
|  | 134 | MSN_CONFIG    msn_conf[MAX_MSN_CONFIG]; | 
|  | 135 | }; | 
|  | 136 |  | 
|  | 137 | struct msn_ld_s { | 
|  | 138 | dword low; | 
|  | 139 | dword high; | 
|  | 140 | }; | 
|  | 141 |  | 
|  | 142 | struct api_parse_s { | 
|  | 143 | word          length; | 
|  | 144 | byte   *    info; | 
|  | 145 | }; | 
|  | 146 |  | 
|  | 147 | struct api_save_s { | 
|  | 148 | API_PARSE     parms[MAX_MSG_PARMS+1]; | 
|  | 149 | byte          info[MAX_MSG_SIZE]; | 
|  | 150 | }; | 
|  | 151 |  | 
|  | 152 | struct _DATA_B3_DESC { | 
|  | 153 | word          Handle; | 
|  | 154 | word          Number; | 
|  | 155 | word          Flags; | 
|  | 156 | word          Length; | 
|  | 157 | void   *    P; | 
|  | 158 | }; | 
|  | 159 |  | 
|  | 160 | struct _DATA_ACK_DESC { | 
|  | 161 | word          Handle; | 
|  | 162 | word          Number; | 
|  | 163 | }; | 
|  | 164 |  | 
|  | 165 | typedef void (* t_std_internal_command)(dword Id, PLCI   *plci, byte Rc); | 
|  | 166 |  | 
|  | 167 | /************************************************************************/ | 
|  | 168 | /* Don't forget to adapt dos.asm after changing the _APPL structure!!!! */ | 
|  | 169 | struct _APPL { | 
|  | 170 | word          Id; | 
|  | 171 | word          NullCREnable; | 
|  | 172 | word          CDEnable; | 
|  | 173 | dword         S_Handle; | 
|  | 174 |  | 
|  | 175 |  | 
|  | 176 |  | 
|  | 177 |  | 
|  | 178 |  | 
|  | 179 |  | 
|  | 180 | LIST_ENTRY    s_function; | 
|  | 181 | dword         s_context; | 
|  | 182 | word          s_count; | 
|  | 183 | APPL *        s_next; | 
|  | 184 | byte *        xbuffer_used; | 
|  | 185 | void **       xbuffer_internal; | 
|  | 186 | void **       xbuffer_ptr; | 
|  | 187 |  | 
|  | 188 |  | 
|  | 189 |  | 
|  | 190 |  | 
|  | 191 |  | 
|  | 192 |  | 
|  | 193 | byte   *    queue; | 
|  | 194 | word          queue_size; | 
|  | 195 | word          queue_free; | 
|  | 196 | word          queue_read; | 
|  | 197 | word          queue_write; | 
|  | 198 | word          queue_signal; | 
|  | 199 | byte          msg_lost; | 
|  | 200 | byte          appl_flags; | 
|  | 201 | word          Number; | 
|  | 202 |  | 
|  | 203 | word          MaxBuffer; | 
|  | 204 | byte          MaxNCCI; | 
|  | 205 | byte          MaxNCCIData; | 
|  | 206 | word          MaxDataLength; | 
|  | 207 | word          NCCIDataFlowCtrlTimer; | 
|  | 208 | byte   *    ReceiveBuffer; | 
|  | 209 | word   *    DataNCCI; | 
|  | 210 | word   *    DataFlags; | 
|  | 211 | }; | 
|  | 212 |  | 
|  | 213 |  | 
|  | 214 | struct _PLCI { | 
|  | 215 | ENTITY        Sig; | 
|  | 216 | ENTITY        NL; | 
|  | 217 | word          RNum; | 
|  | 218 | word          RFlags; | 
|  | 219 | BUFFERS       RData[2]; | 
|  | 220 | BUFFERS       XData[1]; | 
|  | 221 | BUFFERS       NData[2]; | 
|  | 222 |  | 
|  | 223 | DIVA_CAPI_ADAPTER   *adapter; | 
|  | 224 | APPL      *appl; | 
|  | 225 | PLCI      *relatedPTYPLCI; | 
|  | 226 | byte          Id; | 
|  | 227 | byte          State; | 
|  | 228 | byte          sig_req; | 
|  | 229 | byte          nl_req; | 
|  | 230 | byte          SuppState; | 
|  | 231 | byte          channels; | 
|  | 232 | byte          tel; | 
|  | 233 | byte          B1_resource; | 
|  | 234 | byte          B2_prot; | 
|  | 235 | byte          B3_prot; | 
|  | 236 |  | 
|  | 237 | word          command; | 
|  | 238 | word          m_command; | 
|  | 239 | word          internal_command; | 
|  | 240 | word          number; | 
|  | 241 | word          req_in_start; | 
|  | 242 | word          req_in; | 
|  | 243 | word          req_out; | 
|  | 244 | word          msg_in_write_pos; | 
|  | 245 | word          msg_in_read_pos; | 
|  | 246 | word          msg_in_wrap_pos; | 
|  | 247 |  | 
|  | 248 | void   *    data_sent_ptr; | 
|  | 249 | byte          data_sent; | 
|  | 250 | byte          send_disc; | 
|  | 251 | byte          sig_global_req; | 
|  | 252 | byte          sig_remove_id; | 
|  | 253 | byte          nl_global_req; | 
|  | 254 | byte          nl_remove_id; | 
|  | 255 | byte          b_channel; | 
|  | 256 | byte          adv_nl; | 
|  | 257 | byte          manufacturer; | 
|  | 258 | byte          call_dir; | 
|  | 259 | byte          hook_state; | 
|  | 260 | byte          spoofed_msg; | 
|  | 261 | byte          ptyState; | 
|  | 262 | byte          cr_enquiry; | 
|  | 263 | word          hangup_flow_ctrl_timer; | 
|  | 264 |  | 
|  | 265 | word          ncci_ring_list; | 
|  | 266 | byte          inc_dis_ncci_table[MAX_CHANNELS_PER_PLCI]; | 
|  | 267 | t_std_internal_command internal_command_queue[MAX_INTERNAL_COMMAND_LEVELS]; | 
|  | 268 | dword         c_ind_mask_table[C_IND_MASK_DWORDS]; | 
|  | 269 | dword         group_optimization_mask_table[C_IND_MASK_DWORDS]; | 
|  | 270 | byte          RBuffer[200]; | 
|  | 271 | dword         msg_in_queue[MSG_IN_QUEUE_SIZE/sizeof(dword)]; | 
|  | 272 | API_SAVE      saved_msg; | 
|  | 273 | API_SAVE      B_protocol; | 
|  | 274 | byte          fax_connect_info_length; | 
|  | 275 | byte          fax_connect_info_buffer[FAX_CONNECT_INFO_BUFFER_SIZE]; | 
|  | 276 | byte          fax_edata_ack_length; | 
|  | 277 | word          nsf_control_bits; | 
|  | 278 | byte          ncpi_state; | 
|  | 279 | byte          ncpi_buffer[NCPI_BUFFER_SIZE]; | 
|  | 280 |  | 
|  | 281 | byte          internal_req_buffer[INTERNAL_REQ_BUFFER_SIZE]; | 
|  | 282 | byte          internal_ind_buffer[INTERNAL_IND_BUFFER_SIZE + 3]; | 
|  | 283 | dword         requested_options_conn; | 
|  | 284 | dword         requested_options; | 
|  | 285 | word          B1_facilities; | 
|  | 286 | API_SAVE   *adjust_b_parms_msg; | 
|  | 287 | word          adjust_b_facilities; | 
|  | 288 | word          adjust_b_command; | 
|  | 289 | word          adjust_b_ncci; | 
|  | 290 | word          adjust_b_mode; | 
|  | 291 | word          adjust_b_state; | 
|  | 292 | byte          adjust_b_restore; | 
|  | 293 |  | 
|  | 294 | byte          dtmf_rec_active; | 
|  | 295 | word          dtmf_rec_pulse_ms; | 
|  | 296 | word          dtmf_rec_pause_ms; | 
|  | 297 | byte          dtmf_send_requests; | 
|  | 298 | word          dtmf_send_pulse_ms; | 
|  | 299 | word          dtmf_send_pause_ms; | 
|  | 300 | word          dtmf_cmd; | 
|  | 301 | word          dtmf_msg_number_queue[8]; | 
|  | 302 | byte          dtmf_parameter_length; | 
|  | 303 | byte          dtmf_parameter_buffer[DTMF_PARAMETER_BUFFER_SIZE]; | 
|  | 304 |  | 
|  | 305 |  | 
|  | 306 | t_capidtmf_state capidtmf_state; | 
|  | 307 |  | 
|  | 308 |  | 
|  | 309 | byte          li_bchannel_id;    /* BRI: 1..2, PRI: 1..32 */ | 
|  | 310 | byte          li_channel_bits; | 
|  | 311 | byte          li_notify_update; | 
|  | 312 | word          li_cmd; | 
|  | 313 | word          li_write_command; | 
|  | 314 | word          li_write_channel; | 
|  | 315 | word          li_plci_b_write_pos; | 
|  | 316 | word          li_plci_b_read_pos; | 
|  | 317 | word          li_plci_b_req_pos; | 
|  | 318 | dword         li_plci_b_queue[LI_PLCI_B_QUEUE_ENTRIES]; | 
|  | 319 |  | 
|  | 320 |  | 
|  | 321 | word          ec_cmd; | 
|  | 322 | word          ec_idi_options; | 
|  | 323 | word          ec_tail_length; | 
|  | 324 |  | 
|  | 325 |  | 
|  | 326 | byte          tone_last_indication_code; | 
|  | 327 |  | 
|  | 328 | byte          vswitchstate; | 
|  | 329 | byte          vsprot; | 
|  | 330 | byte          vsprotdialect; | 
|  | 331 | byte          notifiedcall; /* Flag if it is a spoofed call */ | 
|  | 332 |  | 
|  | 333 | int           rx_dma_descriptor; | 
|  | 334 | dword         rx_dma_magic; | 
|  | 335 | }; | 
|  | 336 |  | 
|  | 337 |  | 
|  | 338 | struct _NCCI { | 
|  | 339 | byte          data_out; | 
|  | 340 | byte          data_pending; | 
|  | 341 | byte          data_ack_out; | 
|  | 342 | byte          data_ack_pending; | 
|  | 343 | DATA_B3_DESC  DBuffer[MAX_DATA_B3]; | 
|  | 344 | DATA_ACK_DESC DataAck[MAX_DATA_ACK]; | 
|  | 345 | }; | 
|  | 346 |  | 
|  | 347 |  | 
|  | 348 | struct _DIVA_CAPI_ADAPTER { | 
|  | 349 | IDI_CALL      request; | 
|  | 350 | byte          Id; | 
|  | 351 | byte          max_plci; | 
|  | 352 | byte          max_listen; | 
|  | 353 | byte          listen_active; | 
|  | 354 | PLCI      *plci; | 
|  | 355 | byte          ch_ncci[MAX_NL_CHANNEL+1]; | 
|  | 356 | byte          ncci_ch[MAX_NCCI+1]; | 
|  | 357 | byte          ncci_plci[MAX_NCCI+1]; | 
|  | 358 | byte          ncci_state[MAX_NCCI+1]; | 
|  | 359 | byte          ncci_next[MAX_NCCI+1]; | 
|  | 360 | NCCI          ncci[MAX_NCCI+1]; | 
|  | 361 |  | 
|  | 362 | byte          ch_flow_control[MAX_NL_CHANNEL+1];  /* Used by XON protocol */ | 
|  | 363 | byte          ch_flow_control_pending; | 
|  | 364 | byte          ch_flow_plci[MAX_NL_CHANNEL+1]; | 
|  | 365 | int           last_flow_control_ch; | 
|  | 366 |  | 
|  | 367 | dword         Info_Mask[MAX_APPL]; | 
|  | 368 | dword         CIP_Mask[MAX_APPL]; | 
|  | 369 |  | 
|  | 370 | dword         Notification_Mask[MAX_APPL]; | 
|  | 371 | PLCI      *codec_listen[MAX_APPL]; | 
|  | 372 | dword         requested_options_table[MAX_APPL]; | 
|  | 373 | API_PROFILE   profile; | 
|  | 374 | MANUFACTURER_PROFILE man_profile; | 
|  | 375 | dword         manufacturer_features; | 
|  | 376 |  | 
|  | 377 | byte          AdvCodecFLAG; | 
|  | 378 | PLCI      *AdvCodecPLCI; | 
|  | 379 | PLCI      *AdvSignalPLCI; | 
|  | 380 | APPL      *AdvSignalAppl; | 
|  | 381 | byte          TelOAD[23]; | 
|  | 382 | byte          TelOSA[23]; | 
|  | 383 | byte          scom_appl_disable; | 
|  | 384 | PLCI      *automatic_lawPLCI; | 
|  | 385 | byte          automatic_law; | 
|  | 386 | byte          u_law; | 
|  | 387 |  | 
|  | 388 | byte          adv_voice_coef_length; | 
|  | 389 | byte          adv_voice_coef_buffer[ADV_VOICE_COEF_BUFFER_SIZE]; | 
|  | 390 |  | 
|  | 391 | byte          li_pri; | 
|  | 392 | byte          li_channels; | 
|  | 393 | word          li_base; | 
|  | 394 |  | 
|  | 395 | byte adapter_disabled; | 
|  | 396 | byte group_optimization_enabled; /* use application groups if enabled */ | 
|  | 397 | dword sdram_bar; | 
|  | 398 | byte flag_dynamic_l1_down; /* for hunt groups:down layer 1 if no appl present*/ | 
|  | 399 | byte FlowControlIdTable[256]; | 
|  | 400 | byte FlowControlSkipTable[256]; | 
|  | 401 | void* os_card; /* pointer to associated OS dependent adapter structure */ | 
|  | 402 | }; | 
|  | 403 |  | 
|  | 404 |  | 
|  | 405 | /*------------------------------------------------------------------*/ | 
|  | 406 | /* Application flags                                                */ | 
|  | 407 | /*------------------------------------------------------------------*/ | 
|  | 408 |  | 
|  | 409 | #define APPL_FLAG_OLD_LI_SPEC           0x01 | 
|  | 410 | #define APPL_FLAG_PRIV_EC_SPEC          0x02 | 
|  | 411 |  | 
|  | 412 |  | 
|  | 413 | /*------------------------------------------------------------------*/ | 
|  | 414 | /* API parameter definitions                                        */ | 
|  | 415 | /*------------------------------------------------------------------*/ | 
|  | 416 |  | 
|  | 417 | #define X75_TTX         1       /* x.75 for ttx                     */ | 
|  | 418 | #define TRF             2       /* transparent with hdlc framing    */ | 
|  | 419 | #define TRF_IN          3       /* transparent with hdlc fr. inc.   */ | 
|  | 420 | #define SDLC            4       /* sdlc, sna layer-2                */ | 
|  | 421 | #define X75_BTX         5       /* x.75 for btx                     */ | 
|  | 422 | #define LAPD            6       /* lapd (Q.921)                     */ | 
|  | 423 | #define X25_L2          7       /* x.25 layer-2                     */ | 
|  | 424 | #define V120_L2         8       /* V.120 layer-2 protocol           */ | 
|  | 425 | #define V42_IN          9       /* V.42 layer-2 protocol, incomming */ | 
|  | 426 | #define V42            10       /* V.42 layer-2 protocol            */ | 
|  | 427 | #define MDM_ATP        11       /* AT Parser built in the L2        */ | 
|  | 428 | #define X75_V42BIS     12       /* ISO7776 (X.75 SLP) modified to support V.42 bis compression */ | 
|  | 429 | #define RTPL2_IN       13       /* RTP layer-2 protocol, incomming  */ | 
|  | 430 | #define RTPL2          14       /* RTP layer-2 protocol             */ | 
|  | 431 | #define V120_V42BIS    15       /* V.120 layer-2 protocol supporting V.42 bis compression */ | 
|  | 432 |  | 
|  | 433 | #define T70NL           1 | 
|  | 434 | #define X25PLP          2 | 
|  | 435 | #define T70NLX          3 | 
|  | 436 | #define TRANSPARENT_NL  4 | 
|  | 437 | #define ISO8208         5 | 
|  | 438 | #define T30             6 | 
|  | 439 |  | 
|  | 440 |  | 
|  | 441 | /*------------------------------------------------------------------*/ | 
|  | 442 | /* FAX interface to IDI                                             */ | 
|  | 443 | /*------------------------------------------------------------------*/ | 
|  | 444 |  | 
|  | 445 | #define CAPI_MAX_HEAD_LINE_SPACE        89 | 
|  | 446 | #define CAPI_MAX_DATE_TIME_LENGTH       18 | 
|  | 447 |  | 
|  | 448 | #define T30_MAX_STATION_ID_LENGTH       20 | 
|  | 449 | #define T30_MAX_SUBADDRESS_LENGTH       20 | 
|  | 450 | #define T30_MAX_PASSWORD_LENGTH         20 | 
|  | 451 |  | 
|  | 452 | typedef struct t30_info_s T30_INFO; | 
|  | 453 | struct t30_info_s { | 
|  | 454 | byte          code; | 
|  | 455 | byte          rate_div_2400; | 
|  | 456 | byte          resolution; | 
|  | 457 | byte          data_format; | 
|  | 458 | byte          pages_low; | 
|  | 459 | byte          pages_high; | 
|  | 460 | byte          operating_mode; | 
|  | 461 | byte          control_bits_low; | 
|  | 462 | byte          control_bits_high; | 
|  | 463 | byte          feature_bits_low; | 
|  | 464 | byte          feature_bits_high; | 
|  | 465 | byte          recording_properties; | 
|  | 466 | byte          universal_6; | 
|  | 467 | byte          universal_7; | 
|  | 468 | byte          station_id_len; | 
|  | 469 | byte          head_line_len; | 
|  | 470 | byte          station_id[T30_MAX_STATION_ID_LENGTH]; | 
|  | 471 | /* byte          head_line[];      */ | 
|  | 472 | /* byte          sub_sep_length;   */ | 
|  | 473 | /* byte          sub_sep_field[];  */ | 
|  | 474 | /* byte          pwd_length;       */ | 
|  | 475 | /* byte          pwd_field[];      */ | 
|  | 476 | /* byte          nsf_info_length;   */ | 
|  | 477 | /* byte          nsf_info_field[];  */ | 
|  | 478 | }; | 
|  | 479 |  | 
|  | 480 |  | 
|  | 481 | #define T30_RESOLUTION_R8_0385          0x00 | 
|  | 482 | #define T30_RESOLUTION_R8_0770_OR_200   0x01 | 
|  | 483 | #define T30_RESOLUTION_R8_1540          0x02 | 
|  | 484 | #define T30_RESOLUTION_R16_1540_OR_400  0x04 | 
|  | 485 | #define T30_RESOLUTION_R4_0385_OR_100   0x08 | 
|  | 486 | #define T30_RESOLUTION_300_300          0x10 | 
|  | 487 | #define T30_RESOLUTION_INCH_BASED       0x40 | 
|  | 488 | #define T30_RESOLUTION_METRIC_BASED     0x80 | 
|  | 489 |  | 
|  | 490 | #define T30_RECORDING_WIDTH_ISO_A4      0 | 
|  | 491 | #define T30_RECORDING_WIDTH_ISO_B4      1 | 
|  | 492 | #define T30_RECORDING_WIDTH_ISO_A3      2 | 
|  | 493 | #define T30_RECORDING_WIDTH_COUNT       3 | 
|  | 494 |  | 
|  | 495 | #define T30_RECORDING_LENGTH_ISO_A4     0 | 
|  | 496 | #define T30_RECORDING_LENGTH_ISO_B4     1 | 
|  | 497 | #define T30_RECORDING_LENGTH_UNLIMITED  2 | 
|  | 498 | #define T30_RECORDING_LENGTH_COUNT      3 | 
|  | 499 |  | 
|  | 500 | #define T30_MIN_SCANLINE_TIME_00_00_00  0 | 
|  | 501 | #define T30_MIN_SCANLINE_TIME_05_05_05  1 | 
|  | 502 | #define T30_MIN_SCANLINE_TIME_10_05_05  2 | 
|  | 503 | #define T30_MIN_SCANLINE_TIME_10_10_10  3 | 
|  | 504 | #define T30_MIN_SCANLINE_TIME_20_10_10  4 | 
|  | 505 | #define T30_MIN_SCANLINE_TIME_20_20_20  5 | 
|  | 506 | #define T30_MIN_SCANLINE_TIME_40_20_20  6 | 
|  | 507 | #define T30_MIN_SCANLINE_TIME_40_40_40  7 | 
|  | 508 | #define T30_MIN_SCANLINE_TIME_RES_8     8 | 
|  | 509 | #define T30_MIN_SCANLINE_TIME_RES_9     9 | 
|  | 510 | #define T30_MIN_SCANLINE_TIME_RES_10    10 | 
|  | 511 | #define T30_MIN_SCANLINE_TIME_10_10_05  11 | 
|  | 512 | #define T30_MIN_SCANLINE_TIME_20_10_05  12 | 
|  | 513 | #define T30_MIN_SCANLINE_TIME_20_20_10  13 | 
|  | 514 | #define T30_MIN_SCANLINE_TIME_40_20_10  14 | 
|  | 515 | #define T30_MIN_SCANLINE_TIME_40_40_20  15 | 
|  | 516 | #define T30_MIN_SCANLINE_TIME_COUNT     16 | 
|  | 517 |  | 
|  | 518 | #define T30_DATA_FORMAT_SFF             0 | 
|  | 519 | #define T30_DATA_FORMAT_ASCII           1 | 
|  | 520 | #define T30_DATA_FORMAT_NATIVE          2 | 
|  | 521 | #define T30_DATA_FORMAT_COUNT           3 | 
|  | 522 |  | 
|  | 523 |  | 
|  | 524 | #define T30_OPERATING_MODE_STANDARD     0 | 
|  | 525 | #define T30_OPERATING_MODE_CLASS2       1 | 
|  | 526 | #define T30_OPERATING_MODE_CLASS1       2 | 
|  | 527 | #define T30_OPERATING_MODE_CAPI         3 | 
|  | 528 | #define T30_OPERATING_MODE_CAPI_NEG     4 | 
|  | 529 | #define T30_OPERATING_MODE_COUNT        5 | 
|  | 530 |  | 
|  | 531 | /* EDATA transmit messages */ | 
|  | 532 | #define EDATA_T30_DIS         0x01 | 
|  | 533 | #define EDATA_T30_FTT         0x02 | 
|  | 534 | #define EDATA_T30_MCF         0x03 | 
|  | 535 | #define EDATA_T30_PARAMETERS  0x04 | 
|  | 536 |  | 
|  | 537 | /* EDATA receive messages */ | 
|  | 538 | #define EDATA_T30_DCS         0x81 | 
|  | 539 | #define EDATA_T30_TRAIN_OK    0x82 | 
|  | 540 | #define EDATA_T30_EOP         0x83 | 
|  | 541 | #define EDATA_T30_MPS         0x84 | 
|  | 542 | #define EDATA_T30_EOM         0x85 | 
|  | 543 | #define EDATA_T30_DTC         0x86 | 
|  | 544 | #define EDATA_T30_PAGE_END    0x87   /* Indicates end of page data. Reserved, but not implemented ! */ | 
|  | 545 | #define EDATA_T30_EOP_CAPI    0x88 | 
|  | 546 |  | 
|  | 547 |  | 
|  | 548 | #define T30_SUCCESS                        0 | 
|  | 549 | #define T30_ERR_NO_DIS_RECEIVED            1 | 
|  | 550 | #define T30_ERR_TIMEOUT_NO_RESPONSE        2 | 
|  | 551 | #define T30_ERR_RETRY_NO_RESPONSE          3 | 
|  | 552 | #define T30_ERR_TOO_MANY_REPEATS           4 | 
|  | 553 | #define T30_ERR_UNEXPECTED_MESSAGE         5 | 
|  | 554 | #define T30_ERR_UNEXPECTED_DCN             6 | 
|  | 555 | #define T30_ERR_DTC_UNSUPPORTED            7 | 
|  | 556 | #define T30_ERR_ALL_RATES_FAILED           8 | 
|  | 557 | #define T30_ERR_TOO_MANY_TRAINS            9 | 
|  | 558 | #define T30_ERR_RECEIVE_CORRUPTED          10 | 
|  | 559 | #define T30_ERR_UNEXPECTED_DISC            11 | 
|  | 560 | #define T30_ERR_APPLICATION_DISC           12 | 
|  | 561 | #define T30_ERR_INCOMPATIBLE_DIS           13 | 
|  | 562 | #define T30_ERR_INCOMPATIBLE_DCS           14 | 
|  | 563 | #define T30_ERR_TIMEOUT_NO_COMMAND         15 | 
|  | 564 | #define T30_ERR_RETRY_NO_COMMAND           16 | 
|  | 565 | #define T30_ERR_TIMEOUT_COMMAND_TOO_LONG   17 | 
|  | 566 | #define T30_ERR_TIMEOUT_RESPONSE_TOO_LONG  18 | 
|  | 567 | #define T30_ERR_NOT_IDENTIFIED             19 | 
|  | 568 | #define T30_ERR_SUPERVISORY_TIMEOUT        20 | 
|  | 569 | #define T30_ERR_TOO_LONG_SCAN_LINE         21 | 
|  | 570 | /* #define T30_ERR_RETRY_NO_PAGE_AFTER_MPS    22 */ | 
|  | 571 | #define T30_ERR_RETRY_NO_PAGE_RECEIVED     23 | 
|  | 572 | #define T30_ERR_RETRY_NO_DCS_AFTER_FTT     24 | 
|  | 573 | #define T30_ERR_RETRY_NO_DCS_AFTER_EOM     25 | 
|  | 574 | #define T30_ERR_RETRY_NO_DCS_AFTER_MPS     26 | 
|  | 575 | #define T30_ERR_RETRY_NO_DCN_AFTER_MCF     27 | 
|  | 576 | #define T30_ERR_RETRY_NO_DCN_AFTER_RTN     28 | 
|  | 577 | #define T30_ERR_RETRY_NO_CFR               29 | 
|  | 578 | #define T30_ERR_RETRY_NO_MCF_AFTER_EOP     30 | 
|  | 579 | #define T30_ERR_RETRY_NO_MCF_AFTER_EOM     31 | 
|  | 580 | #define T30_ERR_RETRY_NO_MCF_AFTER_MPS     32 | 
|  | 581 | #define T30_ERR_SUB_SEP_UNSUPPORTED        33 | 
|  | 582 | #define T30_ERR_PWD_UNSUPPORTED            34 | 
|  | 583 | #define T30_ERR_SUB_SEP_PWD_UNSUPPORTED    35 | 
|  | 584 | #define T30_ERR_INVALID_COMMAND_FRAME      36 | 
|  | 585 | #define T30_ERR_UNSUPPORTED_PAGE_CODING    37 | 
|  | 586 | #define T30_ERR_INVALID_PAGE_CODING        38 | 
|  | 587 | #define T30_ERR_INCOMPATIBLE_PAGE_CONFIG   39 | 
|  | 588 | #define T30_ERR_TIMEOUT_FROM_APPLICATION   40 | 
|  | 589 | #define T30_ERR_V34FAX_NO_REACTION_ON_MARK 41 | 
|  | 590 | #define T30_ERR_V34FAX_TRAINING_TIMEOUT    42 | 
|  | 591 | #define T30_ERR_V34FAX_UNEXPECTED_V21      43 | 
|  | 592 | #define T30_ERR_V34FAX_PRIMARY_CTS_ON      44 | 
|  | 593 | #define T30_ERR_V34FAX_TURNAROUND_POLLING  45 | 
|  | 594 | #define T30_ERR_V34FAX_V8_INCOMPATIBILITY  46 | 
|  | 595 |  | 
|  | 596 |  | 
|  | 597 | #define T30_CONTROL_BIT_DISABLE_FINE       0x0001 | 
|  | 598 | #define T30_CONTROL_BIT_ENABLE_ECM         0x0002 | 
|  | 599 | #define T30_CONTROL_BIT_ECM_64_BYTES       0x0004 | 
|  | 600 | #define T30_CONTROL_BIT_ENABLE_2D_CODING   0x0008 | 
|  | 601 | #define T30_CONTROL_BIT_ENABLE_T6_CODING   0x0010 | 
|  | 602 | #define T30_CONTROL_BIT_ENABLE_UNCOMPR     0x0020 | 
|  | 603 | #define T30_CONTROL_BIT_ACCEPT_POLLING     0x0040 | 
|  | 604 | #define T30_CONTROL_BIT_REQUEST_POLLING    0x0080 | 
|  | 605 | #define T30_CONTROL_BIT_MORE_DOCUMENTS     0x0100 | 
|  | 606 | #define T30_CONTROL_BIT_ACCEPT_SUBADDRESS  0x0200 | 
|  | 607 | #define T30_CONTROL_BIT_ACCEPT_SEL_POLLING 0x0400 | 
|  | 608 | #define T30_CONTROL_BIT_ACCEPT_PASSWORD    0x0800 | 
|  | 609 | #define T30_CONTROL_BIT_ENABLE_V34FAX      0x1000 | 
|  | 610 | #define T30_CONTROL_BIT_EARLY_CONNECT      0x2000 | 
|  | 611 |  | 
|  | 612 | #define T30_CONTROL_BIT_ALL_FEATURES  (T30_CONTROL_BIT_ENABLE_ECM | T30_CONTROL_BIT_ENABLE_2D_CODING |   T30_CONTROL_BIT_ENABLE_T6_CODING | T30_CONTROL_BIT_ENABLE_UNCOMPR |   T30_CONTROL_BIT_ENABLE_V34FAX) | 
|  | 613 |  | 
|  | 614 | #define T30_FEATURE_BIT_FINE               0x0001 | 
|  | 615 | #define T30_FEATURE_BIT_ECM                0x0002 | 
|  | 616 | #define T30_FEATURE_BIT_ECM_64_BYTES       0x0004 | 
|  | 617 | #define T30_FEATURE_BIT_2D_CODING          0x0008 | 
|  | 618 | #define T30_FEATURE_BIT_T6_CODING          0x0010 | 
|  | 619 | #define T30_FEATURE_BIT_UNCOMPR_ENABLED    0x0020 | 
|  | 620 | #define T30_FEATURE_BIT_POLLING            0x0040 | 
|  | 621 | #define T30_FEATURE_BIT_MORE_DOCUMENTS     0x0100 | 
|  | 622 | #define T30_FEATURE_BIT_V34FAX             0x1000 | 
|  | 623 |  | 
|  | 624 |  | 
|  | 625 | #define T30_NSF_CONTROL_BIT_ENABLE_NSF     0x0001 | 
|  | 626 | #define T30_NSF_CONTROL_BIT_RAW_INFO       0x0002 | 
|  | 627 | #define T30_NSF_CONTROL_BIT_NEGOTIATE_IND  0x0004 | 
|  | 628 | #define T30_NSF_CONTROL_BIT_NEGOTIATE_RESP 0x0008 | 
|  | 629 |  | 
|  | 630 | #define T30_NSF_ELEMENT_NSF_FIF            0x00 | 
|  | 631 | #define T30_NSF_ELEMENT_NSC_FIF            0x01 | 
|  | 632 | #define T30_NSF_ELEMENT_NSS_FIF            0x02 | 
|  | 633 | #define T30_NSF_ELEMENT_COMPANY_NAME       0x03 | 
|  | 634 |  | 
|  | 635 |  | 
|  | 636 | /*------------------------------------------------------------------*/ | 
|  | 637 | /* Analog modem definitions                                         */ | 
|  | 638 | /*------------------------------------------------------------------*/ | 
|  | 639 |  | 
|  | 640 | typedef struct async_s ASYNC_FORMAT; | 
|  | 641 | struct async_s { | 
|  | 642 | unsigned pe:    1; | 
|  | 643 | unsigned parity:2; | 
|  | 644 | unsigned spare: 2; | 
|  | 645 | unsigned stp:   1; | 
|  | 646 | unsigned ch_len:2;   /* 3th octett in CAI */ | 
|  | 647 | }; | 
|  | 648 |  | 
|  | 649 |  | 
|  | 650 | /*------------------------------------------------------------------*/ | 
|  | 651 | /* PLCI/NCCI states                                                 */ | 
|  | 652 | /*------------------------------------------------------------------*/ | 
|  | 653 |  | 
|  | 654 | #define IDLE                    0 | 
|  | 655 | #define OUTG_CON_PENDING        1 | 
|  | 656 | #define INC_CON_PENDING         2 | 
|  | 657 | #define INC_CON_ALERT           3 | 
|  | 658 | #define INC_CON_ACCEPT          4 | 
|  | 659 | #define INC_ACT_PENDING         5 | 
|  | 660 | #define LISTENING               6 | 
|  | 661 | #define CONNECTED               7 | 
|  | 662 | #define OUTG_DIS_PENDING        8 | 
|  | 663 | #define INC_DIS_PENDING         9 | 
|  | 664 | #define LOCAL_CONNECT           10 | 
|  | 665 | #define INC_RES_PENDING         11 | 
|  | 666 | #define OUTG_RES_PENDING        12 | 
|  | 667 | #define SUSPENDING              13 | 
|  | 668 | #define ADVANCED_VOICE_SIG      14 | 
|  | 669 | #define ADVANCED_VOICE_NOSIG    15 | 
|  | 670 | #define RESUMING                16 | 
|  | 671 | #define INC_CON_CONNECTED_ALERT 17 | 
|  | 672 | #define OUTG_REJ_PENDING        18 | 
|  | 673 |  | 
|  | 674 |  | 
|  | 675 | /*------------------------------------------------------------------*/ | 
|  | 676 | /* auxilliary states for supplementary services                     */ | 
|  | 677 | /*------------------------------------------------------------------*/ | 
|  | 678 |  | 
|  | 679 | #define IDLE                0 | 
|  | 680 | #define HOLD_REQUEST        1 | 
|  | 681 | #define HOLD_INDICATE       2 | 
|  | 682 | #define CALL_HELD           3 | 
|  | 683 | #define RETRIEVE_REQUEST    4 | 
|  | 684 | #define RETRIEVE_INDICATION 5 | 
|  | 685 |  | 
|  | 686 | /*------------------------------------------------------------------*/ | 
|  | 687 | /* Capi IE + Msg types                                              */ | 
|  | 688 | /*------------------------------------------------------------------*/ | 
|  | 689 | #define ESC_CAUSE        0x800|CAU          /* Escape cause element */ | 
|  | 690 | #define ESC_MSGTYPE      0x800|MSGTYPEIE    /* Escape message type  */ | 
|  | 691 | #define ESC_CHI          0x800|CHI          /* Escape channel id    */ | 
|  | 692 | #define ESC_LAW          0x800|BC           /* Escape law info      */ | 
|  | 693 | #define ESC_CR           0x800|CRIE         /* Escape CallReference */ | 
|  | 694 | #define ESC_PROFILE      0x800|PROFILEIE    /* Escape profile       */ | 
|  | 695 | #define ESC_SSEXT        0x800|SSEXTIE      /* Escape Supplem. Serv.*/ | 
|  | 696 | #define ESC_VSWITCH      0x800|VSWITCHIE    /* Escape VSwitch       */ | 
|  | 697 | #define CST              0x14               /* Call State i.e.      */ | 
|  | 698 | #define PI               0x1E               /* Progress Indicator   */ | 
|  | 699 | #define NI               0x27               /* Notification Ind     */ | 
|  | 700 | #define CONN_NR          0x4C               /* Connected Number     */ | 
|  | 701 | #define CONG_RNR         0xBF               /* Congestion RNR       */ | 
|  | 702 | #define CONG_RR          0xB0               /* Congestion RR        */ | 
|  | 703 | #define RESERVED         0xFF               /* Res. for future use  */ | 
|  | 704 | #define ON_BOARD_CODEC   0x02               /* external controller  */ | 
|  | 705 | #define HANDSET          0x04               /* Codec+Handset(Pro11) */ | 
|  | 706 | #define HOOK_SUPPORT     0x01               /* activate Hook signal */ | 
|  | 707 | #define SCR              0x7a               /* unscreened number    */ | 
|  | 708 |  | 
|  | 709 | #define HOOK_OFF_REQ     0x9001             /* internal conn req    */ | 
|  | 710 | #define HOOK_ON_REQ      0x9002             /* internal disc req    */ | 
|  | 711 | #define SUSPEND_REQ      0x9003             /* internal susp req    */ | 
|  | 712 | #define RESUME_REQ       0x9004             /* internal resume req  */ | 
|  | 713 | #define USELAW_REQ       0x9005             /* internal law    req  */ | 
|  | 714 | #define LISTEN_SIG_ASSIGN_PEND  0x9006 | 
|  | 715 | #define PERM_LIST_REQ    0x900a             /* permanent conn DCE   */ | 
|  | 716 | #define C_HOLD_REQ       0x9011 | 
|  | 717 | #define C_RETRIEVE_REQ   0x9012 | 
|  | 718 | #define C_NCR_FAC_REQ    0x9013 | 
|  | 719 | #define PERM_COD_ASSIGN  0x9014 | 
|  | 720 | #define PERM_COD_CALL    0x9015 | 
|  | 721 | #define PERM_COD_HOOK    0x9016 | 
|  | 722 | #define PERM_COD_CONN_PEND 0x9017           /* wait for connect_con */ | 
|  | 723 | #define PTY_REQ_PEND     0x9018 | 
|  | 724 | #define CD_REQ_PEND      0x9019 | 
|  | 725 | #define CF_START_PEND    0x901a | 
|  | 726 | #define CF_STOP_PEND     0x901b | 
|  | 727 | #define ECT_REQ_PEND     0x901c | 
|  | 728 | #define GETSERV_REQ_PEND 0x901d | 
|  | 729 | #define BLOCK_PLCI       0x901e | 
|  | 730 | #define INTERR_NUMBERS_REQ_PEND         0x901f | 
|  | 731 | #define INTERR_DIVERSION_REQ_PEND       0x9020 | 
|  | 732 | #define MWI_ACTIVATE_REQ_PEND           0x9021 | 
|  | 733 | #define MWI_DEACTIVATE_REQ_PEND         0x9022 | 
|  | 734 | #define SSEXT_REQ_COMMAND               0x9023 | 
|  | 735 | #define SSEXT_NC_REQ_COMMAND            0x9024 | 
|  | 736 | #define START_L1_SIG_ASSIGN_PEND        0x9025 | 
|  | 737 | #define REM_L1_SIG_ASSIGN_PEND          0x9026 | 
|  | 738 | #define CONF_BEGIN_REQ_PEND             0x9027 | 
|  | 739 | #define CONF_ADD_REQ_PEND               0x9028 | 
|  | 740 | #define CONF_SPLIT_REQ_PEND             0x9029 | 
|  | 741 | #define CONF_DROP_REQ_PEND              0x902a | 
|  | 742 | #define CONF_ISOLATE_REQ_PEND           0x902b | 
|  | 743 | #define CONF_REATTACH_REQ_PEND          0x902c | 
|  | 744 | #define VSWITCH_REQ_PEND                0x902d | 
|  | 745 | #define GET_MWI_STATE                   0x902e | 
|  | 746 | #define CCBS_REQUEST_REQ_PEND           0x902f | 
|  | 747 | #define CCBS_DEACTIVATE_REQ_PEND        0x9030 | 
|  | 748 | #define CCBS_INTERROGATE_REQ_PEND       0x9031 | 
|  | 749 |  | 
|  | 750 | #define NO_INTERNAL_COMMAND             0 | 
|  | 751 | #define DTMF_COMMAND_1                  1 | 
|  | 752 | #define DTMF_COMMAND_2                  2 | 
|  | 753 | #define DTMF_COMMAND_3                  3 | 
|  | 754 | #define MIXER_COMMAND_1                 4 | 
|  | 755 | #define MIXER_COMMAND_2                 5 | 
|  | 756 | #define MIXER_COMMAND_3                 6 | 
|  | 757 | #define ADV_VOICE_COMMAND_CONNECT_1     7 | 
|  | 758 | #define ADV_VOICE_COMMAND_CONNECT_2     8 | 
|  | 759 | #define ADV_VOICE_COMMAND_CONNECT_3     9 | 
|  | 760 | #define ADV_VOICE_COMMAND_DISCONNECT_1  10 | 
|  | 761 | #define ADV_VOICE_COMMAND_DISCONNECT_2  11 | 
|  | 762 | #define ADV_VOICE_COMMAND_DISCONNECT_3  12 | 
|  | 763 | #define ADJUST_B_RESTORE_1              13 | 
|  | 764 | #define ADJUST_B_RESTORE_2              14 | 
|  | 765 | #define RESET_B3_COMMAND_1              15 | 
|  | 766 | #define SELECT_B_COMMAND_1              16 | 
|  | 767 | #define FAX_CONNECT_INFO_COMMAND_1      17 | 
|  | 768 | #define FAX_CONNECT_INFO_COMMAND_2      18 | 
|  | 769 | #define FAX_ADJUST_B23_COMMAND_1        19 | 
|  | 770 | #define FAX_ADJUST_B23_COMMAND_2        20 | 
|  | 771 | #define EC_COMMAND_1                    21 | 
|  | 772 | #define EC_COMMAND_2                    22 | 
|  | 773 | #define EC_COMMAND_3                    23 | 
|  | 774 | #define RTP_CONNECT_B3_REQ_COMMAND_1    24 | 
|  | 775 | #define RTP_CONNECT_B3_REQ_COMMAND_2    25 | 
|  | 776 | #define RTP_CONNECT_B3_REQ_COMMAND_3    26 | 
|  | 777 | #define RTP_CONNECT_B3_RES_COMMAND_1    27 | 
|  | 778 | #define RTP_CONNECT_B3_RES_COMMAND_2    28 | 
|  | 779 | #define RTP_CONNECT_B3_RES_COMMAND_3    29 | 
|  | 780 | #define HOLD_SAVE_COMMAND_1             30 | 
|  | 781 | #define RETRIEVE_RESTORE_COMMAND_1      31 | 
|  | 782 | #define FAX_DISCONNECT_COMMAND_1        32 | 
|  | 783 | #define FAX_DISCONNECT_COMMAND_2        33 | 
|  | 784 | #define FAX_DISCONNECT_COMMAND_3        34 | 
|  | 785 | #define FAX_EDATA_ACK_COMMAND_1         35 | 
|  | 786 | #define FAX_EDATA_ACK_COMMAND_2         36 | 
|  | 787 | #define FAX_CONNECT_ACK_COMMAND_1       37 | 
|  | 788 | #define FAX_CONNECT_ACK_COMMAND_2       38 | 
|  | 789 | #define STD_INTERNAL_COMMAND_COUNT      39 | 
|  | 790 |  | 
|  | 791 | #define UID              0x2d               /* User Id for Mgmt      */ | 
|  | 792 |  | 
|  | 793 | #define CALL_DIR_OUT             0x01       /* call direction of initial call */ | 
|  | 794 | #define CALL_DIR_IN              0x02 | 
|  | 795 | #define CALL_DIR_ORIGINATE       0x04       /* DTE/DCE direction according to */ | 
|  | 796 | #define CALL_DIR_ANSWER          0x08       /*   state of B-Channel Operation */ | 
|  | 797 | #define CALL_DIR_FORCE_OUTG_NL   0x10       /* for RESET_B3 reconnect, after DISC_B3... */ | 
|  | 798 |  | 
|  | 799 | #define AWAITING_MANUF_CON 0x80             /* command spoofing flags */ | 
|  | 800 | #define SPOOFING_REQUIRED  0xff | 
|  | 801 | #define AWAITING_SELECT_B  0xef | 
|  | 802 |  | 
|  | 803 | /*------------------------------------------------------------------*/ | 
|  | 804 | /* B_CTRL / DSP_CTRL                                                */ | 
|  | 805 | /*------------------------------------------------------------------*/ | 
|  | 806 |  | 
|  | 807 | #define DSP_CTRL_OLD_SET_MIXER_COEFFICIENTS     0x01 | 
|  | 808 | #define DSP_CTRL_SET_BCHANNEL_PASSIVATION_BRI   0x02 | 
|  | 809 | #define DSP_CTRL_SET_DTMF_PARAMETERS            0x03 | 
|  | 810 |  | 
|  | 811 | #define MANUFACTURER_FEATURE_SLAVE_CODEC          0x00000001L | 
|  | 812 | #define MANUFACTURER_FEATURE_FAX_MORE_DOCUMENTS   0x00000002L | 
|  | 813 | #define MANUFACTURER_FEATURE_HARDDTMF             0x00000004L | 
|  | 814 | #define MANUFACTURER_FEATURE_SOFTDTMF_SEND        0x00000008L | 
|  | 815 | #define MANUFACTURER_FEATURE_DTMF_PARAMETERS      0x00000010L | 
|  | 816 | #define MANUFACTURER_FEATURE_SOFTDTMF_RECEIVE     0x00000020L | 
|  | 817 | #define MANUFACTURER_FEATURE_FAX_SUB_SEP_PWD      0x00000040L | 
|  | 818 | #define MANUFACTURER_FEATURE_V18                  0x00000080L | 
|  | 819 | #define MANUFACTURER_FEATURE_MIXER_CH_CH          0x00000100L | 
|  | 820 | #define MANUFACTURER_FEATURE_MIXER_CH_PC          0x00000200L | 
|  | 821 | #define MANUFACTURER_FEATURE_MIXER_PC_CH          0x00000400L | 
|  | 822 | #define MANUFACTURER_FEATURE_MIXER_PC_PC          0x00000800L | 
|  | 823 | #define MANUFACTURER_FEATURE_ECHO_CANCELLER       0x00001000L | 
|  | 824 | #define MANUFACTURER_FEATURE_RTP                  0x00002000L | 
|  | 825 | #define MANUFACTURER_FEATURE_T38                  0x00004000L | 
|  | 826 | #define MANUFACTURER_FEATURE_TRANSP_DELIVERY_CONF 0x00008000L | 
|  | 827 | #define MANUFACTURER_FEATURE_XONOFF_FLOW_CONTROL  0x00010000L | 
|  | 828 | #define MANUFACTURER_FEATURE_OOB_CHANNEL          0x00020000L | 
|  | 829 | #define MANUFACTURER_FEATURE_IN_BAND_CHANNEL      0x00040000L | 
|  | 830 | #define MANUFACTURER_FEATURE_IN_BAND_FEATURE      0x00080000L | 
|  | 831 | #define MANUFACTURER_FEATURE_PIAFS                0x00100000L | 
|  | 832 | #define MANUFACTURER_FEATURE_DTMF_TONE            0x00200000L | 
|  | 833 | #define MANUFACTURER_FEATURE_FAX_PAPER_FORMATS    0x00400000L | 
|  | 834 | #define MANUFACTURER_FEATURE_OK_FC_LABEL          0x00800000L | 
|  | 835 | #define MANUFACTURER_FEATURE_VOWN                 0x01000000L | 
|  | 836 | #define MANUFACTURER_FEATURE_XCONNECT             0x02000000L | 
|  | 837 | #define MANUFACTURER_FEATURE_DMACONNECT           0x04000000L | 
|  | 838 | #define MANUFACTURER_FEATURE_AUDIO_TAP            0x08000000L | 
|  | 839 | #define MANUFACTURER_FEATURE_FAX_NONSTANDARD      0x10000000L | 
|  | 840 |  | 
|  | 841 | /*------------------------------------------------------------------*/ | 
|  | 842 | /* DTMF interface to IDI                                            */ | 
|  | 843 | /*------------------------------------------------------------------*/ | 
|  | 844 |  | 
|  | 845 |  | 
|  | 846 | #define DTMF_DIGIT_TONE_LOW_GROUP_697_HZ        0x00 | 
|  | 847 | #define DTMF_DIGIT_TONE_LOW_GROUP_770_HZ        0x01 | 
|  | 848 | #define DTMF_DIGIT_TONE_LOW_GROUP_852_HZ        0x02 | 
|  | 849 | #define DTMF_DIGIT_TONE_LOW_GROUP_941_HZ        0x03 | 
|  | 850 | #define DTMF_DIGIT_TONE_LOW_GROUP_MASK          0x03 | 
|  | 851 | #define DTMF_DIGIT_TONE_HIGH_GROUP_1209_HZ      0x00 | 
|  | 852 | #define DTMF_DIGIT_TONE_HIGH_GROUP_1336_HZ      0x04 | 
|  | 853 | #define DTMF_DIGIT_TONE_HIGH_GROUP_1477_HZ      0x08 | 
|  | 854 | #define DTMF_DIGIT_TONE_HIGH_GROUP_1633_HZ      0x0c | 
|  | 855 | #define DTMF_DIGIT_TONE_HIGH_GROUP_MASK         0x0c | 
|  | 856 | #define DTMF_DIGIT_TONE_CODE_0                  0x07 | 
|  | 857 | #define DTMF_DIGIT_TONE_CODE_1                  0x00 | 
|  | 858 | #define DTMF_DIGIT_TONE_CODE_2                  0x04 | 
|  | 859 | #define DTMF_DIGIT_TONE_CODE_3                  0x08 | 
|  | 860 | #define DTMF_DIGIT_TONE_CODE_4                  0x01 | 
|  | 861 | #define DTMF_DIGIT_TONE_CODE_5                  0x05 | 
|  | 862 | #define DTMF_DIGIT_TONE_CODE_6                  0x09 | 
|  | 863 | #define DTMF_DIGIT_TONE_CODE_7                  0x02 | 
|  | 864 | #define DTMF_DIGIT_TONE_CODE_8                  0x06 | 
|  | 865 | #define DTMF_DIGIT_TONE_CODE_9                  0x0a | 
|  | 866 | #define DTMF_DIGIT_TONE_CODE_STAR               0x03 | 
|  | 867 | #define DTMF_DIGIT_TONE_CODE_HASHMARK           0x0b | 
|  | 868 | #define DTMF_DIGIT_TONE_CODE_A                  0x0c | 
|  | 869 | #define DTMF_DIGIT_TONE_CODE_B                  0x0d | 
|  | 870 | #define DTMF_DIGIT_TONE_CODE_C                  0x0e | 
|  | 871 | #define DTMF_DIGIT_TONE_CODE_D                  0x0f | 
|  | 872 |  | 
|  | 873 | #define DTMF_UDATA_REQUEST_SEND_DIGITS            16 | 
|  | 874 | #define DTMF_UDATA_REQUEST_ENABLE_RECEIVER        17 | 
|  | 875 | #define DTMF_UDATA_REQUEST_DISABLE_RECEIVER       18 | 
|  | 876 | #define DTMF_UDATA_INDICATION_DIGITS_SENT         16 | 
|  | 877 | #define DTMF_UDATA_INDICATION_DIGITS_RECEIVED     17 | 
|  | 878 | #define DTMF_UDATA_INDICATION_MODEM_CALLING_TONE  18 | 
|  | 879 | #define DTMF_UDATA_INDICATION_FAX_CALLING_TONE    19 | 
|  | 880 | #define DTMF_UDATA_INDICATION_ANSWER_TONE         20 | 
|  | 881 |  | 
|  | 882 | #define UDATA_REQUEST_MIXER_TAP_DATA        27 | 
|  | 883 | #define UDATA_INDICATION_MIXER_TAP_DATA     27 | 
|  | 884 |  | 
|  | 885 | #define DTMF_LISTEN_ACTIVE_FLAG        0x01 | 
|  | 886 | #define DTMF_SEND_DIGIT_FLAG           0x01 | 
|  | 887 |  | 
|  | 888 |  | 
|  | 889 | /*------------------------------------------------------------------*/ | 
|  | 890 | /* Mixer interface to IDI                                           */ | 
|  | 891 | /*------------------------------------------------------------------*/ | 
|  | 892 |  | 
|  | 893 |  | 
|  | 894 | #define LI2_FLAG_PCCONNECT_A_B 0x40000000 | 
|  | 895 | #define LI2_FLAG_PCCONNECT_B_A 0x80000000 | 
|  | 896 |  | 
|  | 897 | #define MIXER_BCHANNELS_BRI    2 | 
|  | 898 | #define MIXER_IC_CHANNELS_BRI  MIXER_BCHANNELS_BRI | 
|  | 899 | #define MIXER_IC_CHANNEL_BASE  MIXER_BCHANNELS_BRI | 
|  | 900 | #define MIXER_CHANNELS_BRI     (MIXER_BCHANNELS_BRI + MIXER_IC_CHANNELS_BRI) | 
|  | 901 | #define MIXER_CHANNELS_PRI     32 | 
|  | 902 |  | 
|  | 903 | typedef struct li_config_s LI_CONFIG; | 
|  | 904 |  | 
|  | 905 | struct xconnect_card_address_s { | 
|  | 906 | dword low; | 
|  | 907 | dword high; | 
|  | 908 | }; | 
|  | 909 |  | 
|  | 910 | struct xconnect_transfer_address_s { | 
|  | 911 | struct xconnect_card_address_s card_address; | 
|  | 912 | dword offset; | 
|  | 913 | }; | 
|  | 914 |  | 
|  | 915 | struct li_config_s { | 
|  | 916 | DIVA_CAPI_ADAPTER   *adapter; | 
|  | 917 | PLCI   *plci; | 
|  | 918 | struct xconnect_transfer_address_s send_b; | 
|  | 919 | struct xconnect_transfer_address_s send_pc; | 
|  | 920 | byte   *flag_table;  /* dword aligned and sized */ | 
|  | 921 | byte   *coef_table;  /* dword aligned and sized */ | 
|  | 922 | byte channel; | 
|  | 923 | byte curchnl; | 
|  | 924 | byte chflags; | 
|  | 925 | }; | 
|  | 926 |  | 
|  | 927 | extern LI_CONFIG   *li_config_table; | 
|  | 928 | extern word li_total_channels; | 
|  | 929 |  | 
|  | 930 | #define LI_CHANNEL_INVOLVED        0x01 | 
|  | 931 | #define LI_CHANNEL_ACTIVE          0x02 | 
|  | 932 | #define LI_CHANNEL_TX_DATA         0x04 | 
|  | 933 | #define LI_CHANNEL_RX_DATA         0x08 | 
|  | 934 | #define LI_CHANNEL_CONFERENCE      0x10 | 
|  | 935 | #define LI_CHANNEL_ADDRESSES_SET   0x80 | 
|  | 936 |  | 
|  | 937 | #define LI_CHFLAG_MONITOR          0x01 | 
|  | 938 | #define LI_CHFLAG_MIX              0x02 | 
|  | 939 | #define LI_CHFLAG_LOOP             0x04 | 
|  | 940 |  | 
|  | 941 | #define LI_FLAG_INTERCONNECT       0x01 | 
|  | 942 | #define LI_FLAG_MONITOR            0x02 | 
|  | 943 | #define LI_FLAG_MIX                0x04 | 
|  | 944 | #define LI_FLAG_PCCONNECT          0x08 | 
|  | 945 | #define LI_FLAG_CONFERENCE         0x10 | 
|  | 946 | #define LI_FLAG_ANNOUNCEMENT       0x20 | 
|  | 947 |  | 
|  | 948 | #define LI_COEF_CH_CH              0x01 | 
|  | 949 | #define LI_COEF_CH_PC              0x02 | 
|  | 950 | #define LI_COEF_PC_CH              0x04 | 
|  | 951 | #define LI_COEF_PC_PC              0x08 | 
|  | 952 | #define LI_COEF_CH_CH_SET          0x10 | 
|  | 953 | #define LI_COEF_CH_PC_SET          0x20 | 
|  | 954 | #define LI_COEF_PC_CH_SET          0x40 | 
|  | 955 | #define LI_COEF_PC_PC_SET          0x80 | 
|  | 956 |  | 
|  | 957 | #define LI_REQ_SILENT_UPDATE       0xffff | 
|  | 958 |  | 
|  | 959 | #define LI_PLCI_B_LAST_FLAG        ((dword) 0x80000000L) | 
|  | 960 | #define LI_PLCI_B_DISC_FLAG        ((dword) 0x40000000L) | 
|  | 961 | #define LI_PLCI_B_SKIP_FLAG        ((dword) 0x20000000L) | 
|  | 962 | #define LI_PLCI_B_FLAG_MASK        ((dword) 0xe0000000L) | 
|  | 963 |  | 
|  | 964 | #define UDATA_REQUEST_SET_MIXER_COEFS_BRI       24 | 
|  | 965 | #define UDATA_REQUEST_SET_MIXER_COEFS_PRI_SYNC  25 | 
|  | 966 | #define UDATA_REQUEST_SET_MIXER_COEFS_PRI_ASYN  26 | 
|  | 967 | #define UDATA_INDICATION_MIXER_COEFS_SET        24 | 
|  | 968 |  | 
|  | 969 | #define MIXER_FEATURE_ENABLE_TX_DATA        0x0001 | 
|  | 970 | #define MIXER_FEATURE_ENABLE_RX_DATA        0x0002 | 
|  | 971 |  | 
|  | 972 | #define MIXER_COEF_LINE_CHANNEL_MASK        0x1f | 
|  | 973 | #define MIXER_COEF_LINE_FROM_PC_FLAG        0x20 | 
|  | 974 | #define MIXER_COEF_LINE_TO_PC_FLAG          0x40 | 
|  | 975 | #define MIXER_COEF_LINE_ROW_FLAG            0x80 | 
|  | 976 |  | 
|  | 977 | #define UDATA_REQUEST_XCONNECT_FROM         28 | 
|  | 978 | #define UDATA_INDICATION_XCONNECT_FROM      28 | 
|  | 979 | #define UDATA_REQUEST_XCONNECT_TO           29 | 
|  | 980 | #define UDATA_INDICATION_XCONNECT_TO        29 | 
|  | 981 |  | 
|  | 982 | #define XCONNECT_CHANNEL_PORT_B             0x0000 | 
|  | 983 | #define XCONNECT_CHANNEL_PORT_PC            0x8000 | 
|  | 984 | #define XCONNECT_CHANNEL_PORT_MASK          0x8000 | 
|  | 985 | #define XCONNECT_CHANNEL_NUMBER_MASK        0x7fff | 
|  | 986 | #define XCONNECT_CHANNEL_PORT_COUNT         2 | 
|  | 987 |  | 
|  | 988 | #define XCONNECT_SUCCESS           0x0000 | 
|  | 989 | #define XCONNECT_ERROR             0x0001 | 
|  | 990 |  | 
|  | 991 |  | 
|  | 992 | /*------------------------------------------------------------------*/ | 
|  | 993 | /* Echo canceller interface to IDI                                  */ | 
|  | 994 | /*------------------------------------------------------------------*/ | 
|  | 995 |  | 
|  | 996 |  | 
|  | 997 | #define PRIVATE_ECHO_CANCELLER         0 | 
|  | 998 |  | 
|  | 999 | #define PRIV_SELECTOR_ECHO_CANCELLER   255 | 
|  | 1000 |  | 
|  | 1001 | #define EC_ENABLE_OPERATION            1 | 
|  | 1002 | #define EC_DISABLE_OPERATION           2 | 
|  | 1003 | #define EC_FREEZE_COEFFICIENTS         3 | 
|  | 1004 | #define EC_RESUME_COEFFICIENT_UPDATE   4 | 
|  | 1005 | #define EC_RESET_COEFFICIENTS          5 | 
|  | 1006 |  | 
|  | 1007 | #define EC_DISABLE_NON_LINEAR_PROCESSING     0x0001 | 
|  | 1008 | #define EC_DO_NOT_REQUIRE_REVERSALS          0x0002 | 
|  | 1009 | #define EC_DETECT_DISABLE_TONE               0x0004 | 
|  | 1010 |  | 
|  | 1011 | #define EC_SUCCESS                           0 | 
|  | 1012 | #define EC_UNSUPPORTED_OPERATION             1 | 
|  | 1013 |  | 
|  | 1014 | #define EC_BYPASS_DUE_TO_CONTINUOUS_2100HZ   1 | 
|  | 1015 | #define EC_BYPASS_DUE_TO_REVERSED_2100HZ     2 | 
|  | 1016 | #define EC_BYPASS_RELEASED                   3 | 
|  | 1017 |  | 
|  | 1018 | #define DSP_CTRL_SET_LEC_PARAMETERS          0x05 | 
|  | 1019 |  | 
|  | 1020 | #define LEC_ENABLE_ECHO_CANCELLER            0x0001 | 
|  | 1021 | #define LEC_ENABLE_2100HZ_DETECTOR           0x0002 | 
|  | 1022 | #define LEC_REQUIRE_2100HZ_REVERSALS         0x0004 | 
|  | 1023 | #define LEC_MANUAL_DISABLE                   0x0008 | 
|  | 1024 | #define LEC_ENABLE_NONLINEAR_PROCESSING      0x0010 | 
|  | 1025 | #define LEC_FREEZE_COEFFICIENTS              0x0020 | 
|  | 1026 | #define LEC_RESET_COEFFICIENTS               0x8000 | 
|  | 1027 |  | 
|  | 1028 | #define LEC_MAX_SUPPORTED_TAIL_LENGTH        32 | 
|  | 1029 |  | 
|  | 1030 | #define LEC_UDATA_INDICATION_DISABLE_DETECT  9 | 
|  | 1031 |  | 
|  | 1032 | #define LEC_DISABLE_TYPE_CONTIGNUOUS_2100HZ  0x00 | 
|  | 1033 | #define LEC_DISABLE_TYPE_REVERSED_2100HZ     0x01 | 
|  | 1034 | #define LEC_DISABLE_RELEASED                 0x02 | 
|  | 1035 |  | 
|  | 1036 |  | 
|  | 1037 | /*------------------------------------------------------------------*/ | 
|  | 1038 | /* RTP interface to IDI                                             */ | 
|  | 1039 | /*------------------------------------------------------------------*/ | 
|  | 1040 |  | 
|  | 1041 |  | 
|  | 1042 | #define B1_RTP                  31 | 
|  | 1043 | #define B2_RTP                  31 | 
|  | 1044 | #define B3_RTP                  31 | 
|  | 1045 |  | 
|  | 1046 | #define PRIVATE_RTP                    1 | 
|  | 1047 |  | 
|  | 1048 | #define RTP_PRIM_PAYLOAD_PCMU_8000     0 | 
|  | 1049 | #define RTP_PRIM_PAYLOAD_1016_8000     1 | 
|  | 1050 | #define RTP_PRIM_PAYLOAD_G726_32_8000  2 | 
|  | 1051 | #define RTP_PRIM_PAYLOAD_GSM_8000      3 | 
|  | 1052 | #define RTP_PRIM_PAYLOAD_G723_8000     4 | 
|  | 1053 | #define RTP_PRIM_PAYLOAD_DVI4_8000     5 | 
|  | 1054 | #define RTP_PRIM_PAYLOAD_DVI4_16000    6 | 
|  | 1055 | #define RTP_PRIM_PAYLOAD_LPC_8000      7 | 
|  | 1056 | #define RTP_PRIM_PAYLOAD_PCMA_8000     8 | 
|  | 1057 | #define RTP_PRIM_PAYLOAD_G722_16000    9 | 
|  | 1058 | #define RTP_PRIM_PAYLOAD_QCELP_8000    12 | 
|  | 1059 | #define RTP_PRIM_PAYLOAD_G728_8000     14 | 
|  | 1060 | #define RTP_PRIM_PAYLOAD_G729_8000     18 | 
|  | 1061 | #define RTP_PRIM_PAYLOAD_GSM_HR_8000   30 | 
|  | 1062 | #define RTP_PRIM_PAYLOAD_GSM_EFR_8000  31 | 
|  | 1063 |  | 
|  | 1064 | #define RTP_ADD_PAYLOAD_BASE           32 | 
|  | 1065 | #define RTP_ADD_PAYLOAD_RED            32 | 
|  | 1066 | #define RTP_ADD_PAYLOAD_CN_8000        33 | 
|  | 1067 | #define RTP_ADD_PAYLOAD_DTMF           34 | 
|  | 1068 |  | 
|  | 1069 | #define RTP_SUCCESS                         0 | 
|  | 1070 | #define RTP_ERR_SSRC_OR_PAYLOAD_CHANGE      1 | 
|  | 1071 |  | 
|  | 1072 | #define UDATA_REQUEST_RTP_RECONFIGURE       64 | 
|  | 1073 | #define UDATA_INDICATION_RTP_CHANGE         65 | 
|  | 1074 | #define BUDATA_REQUEST_QUERY_RTCP_REPORT    1 | 
|  | 1075 | #define BUDATA_INDICATION_RTCP_REPORT       1 | 
|  | 1076 |  | 
|  | 1077 | #define RTP_CONNECT_OPTION_DISC_ON_SSRC_CHANGE    0x00000001L | 
|  | 1078 | #define RTP_CONNECT_OPTION_DISC_ON_PT_CHANGE      0x00000002L | 
|  | 1079 | #define RTP_CONNECT_OPTION_DISC_ON_UNKNOWN_PT     0x00000004L | 
|  | 1080 | #define RTP_CONNECT_OPTION_NO_SILENCE_TRANSMIT    0x00010000L | 
|  | 1081 |  | 
|  | 1082 | #define RTP_PAYLOAD_OPTION_VOICE_ACTIVITY_DETECT  0x0001 | 
|  | 1083 | #define RTP_PAYLOAD_OPTION_DISABLE_POST_FILTER    0x0002 | 
|  | 1084 | #define RTP_PAYLOAD_OPTION_G723_LOW_CODING_RATE   0x0100 | 
|  | 1085 |  | 
|  | 1086 | #define RTP_PACKET_FILTER_IGNORE_UNKNOWN_SSRC     0x00000001L | 
|  | 1087 |  | 
|  | 1088 | #define RTP_CHANGE_FLAG_SSRC_CHANGE               0x00000001L | 
|  | 1089 | #define RTP_CHANGE_FLAG_PAYLOAD_TYPE_CHANGE       0x00000002L | 
|  | 1090 | #define RTP_CHANGE_FLAG_UNKNOWN_PAYLOAD_TYPE      0x00000004L | 
|  | 1091 |  | 
|  | 1092 |  | 
|  | 1093 | /*------------------------------------------------------------------*/ | 
|  | 1094 | /* T.38 interface to IDI                                            */ | 
|  | 1095 | /*------------------------------------------------------------------*/ | 
|  | 1096 |  | 
|  | 1097 |  | 
|  | 1098 | #define B1_T38                  30 | 
|  | 1099 | #define B2_T38                  30 | 
|  | 1100 | #define B3_T38                  30 | 
|  | 1101 |  | 
|  | 1102 | #define PRIVATE_T38                    2 | 
|  | 1103 |  | 
|  | 1104 |  | 
|  | 1105 | /*------------------------------------------------------------------*/ | 
|  | 1106 | /* PIAFS interface to IDI                                            */ | 
|  | 1107 | /*------------------------------------------------------------------*/ | 
|  | 1108 |  | 
|  | 1109 |  | 
|  | 1110 | #define B1_PIAFS                29 | 
|  | 1111 | #define B2_PIAFS                29 | 
|  | 1112 |  | 
|  | 1113 | #define PRIVATE_PIAFS           29 | 
|  | 1114 |  | 
|  | 1115 | /* | 
|  | 1116 | B2 configuration for PIAFS: | 
|  | 1117 | +---------------------+------+-----------------------------------------+ | 
|  | 1118 | | PIAFS Protocol      | byte | Bit 1 - Protocol Speed                  | | 
|  | 1119 | | Speed configuration |      |         0 - 32K                         | | 
|  | 1120 | |                     |      |         1 - 64K (default)               | | 
|  | 1121 | |                     |      | Bit 2 - Variable Protocol Speed         | | 
|  | 1122 | |                     |      |         0 - Speed is fix                | | 
|  | 1123 | |                     |      |         1 - Speed is variable (default) | | 
|  | 1124 | +---------------------+------+-----------------------------------------+ | 
|  | 1125 | | Direction           | word | Enable compression/decompression for    | | 
|  | 1126 | |                     |      | 0: All direction                        | | 
|  | 1127 | |                     |      | 1: disable outgoing data                | | 
|  | 1128 | |                     |      | 2: disable incomming data               | | 
|  | 1129 | |                     |      | 3: disable both direction (default)     | | 
|  | 1130 | +---------------------+------+-----------------------------------------+ | 
|  | 1131 | | Number of code      | word | Parameter P1 of V.42bis in accordance   | | 
|  | 1132 | | words               |      | with V.42bis                            | | 
|  | 1133 | +---------------------+------+-----------------------------------------+ | 
|  | 1134 | | Maximum String      | word | Parameter P2 of V.42bis in accordance   | | 
|  | 1135 | | Length              |      | with V.42bis                            | | 
|  | 1136 | +---------------------+------+-----------------------------------------+ | 
|  | 1137 | | control (UDATA)     | byte | enable PIAFS control communication      | | 
|  | 1138 | | abilities           |      |                                         | | 
|  | 1139 | +---------------------+------+-----------------------------------------+ | 
|  | 1140 | */ | 
|  | 1141 | #define PIAFS_UDATA_ABILITIES  0x80 | 
|  | 1142 |  | 
|  | 1143 | /*------------------------------------------------------------------*/ | 
|  | 1144 | /* FAX SUB/SEP/PWD extension                                        */ | 
|  | 1145 | /*------------------------------------------------------------------*/ | 
|  | 1146 |  | 
|  | 1147 |  | 
|  | 1148 | #define PRIVATE_FAX_SUB_SEP_PWD        3 | 
|  | 1149 |  | 
|  | 1150 |  | 
|  | 1151 |  | 
|  | 1152 | /*------------------------------------------------------------------*/ | 
|  | 1153 | /* V.18 extension                                                   */ | 
|  | 1154 | /*------------------------------------------------------------------*/ | 
|  | 1155 |  | 
|  | 1156 |  | 
|  | 1157 | #define PRIVATE_V18                    4 | 
|  | 1158 |  | 
|  | 1159 |  | 
|  | 1160 |  | 
|  | 1161 | /*------------------------------------------------------------------*/ | 
|  | 1162 | /* DTMF TONE extension                                              */ | 
|  | 1163 | /*------------------------------------------------------------------*/ | 
|  | 1164 |  | 
|  | 1165 |  | 
|  | 1166 | #define DTMF_GET_SUPPORTED_DETECT_CODES  0xf8 | 
|  | 1167 | #define DTMF_GET_SUPPORTED_SEND_CODES    0xf9 | 
|  | 1168 | #define DTMF_LISTEN_TONE_START           0xfa | 
|  | 1169 | #define DTMF_LISTEN_TONE_STOP            0xfb | 
|  | 1170 | #define DTMF_SEND_TONE                   0xfc | 
|  | 1171 | #define DTMF_LISTEN_MF_START             0xfd | 
|  | 1172 | #define DTMF_LISTEN_MF_STOP              0xfe | 
|  | 1173 | #define DTMF_SEND_MF                     0xff | 
|  | 1174 |  | 
|  | 1175 | #define DTMF_MF_DIGIT_TONE_CODE_1               0x10 | 
|  | 1176 | #define DTMF_MF_DIGIT_TONE_CODE_2               0x11 | 
|  | 1177 | #define DTMF_MF_DIGIT_TONE_CODE_3               0x12 | 
|  | 1178 | #define DTMF_MF_DIGIT_TONE_CODE_4               0x13 | 
|  | 1179 | #define DTMF_MF_DIGIT_TONE_CODE_5               0x14 | 
|  | 1180 | #define DTMF_MF_DIGIT_TONE_CODE_6               0x15 | 
|  | 1181 | #define DTMF_MF_DIGIT_TONE_CODE_7               0x16 | 
|  | 1182 | #define DTMF_MF_DIGIT_TONE_CODE_8               0x17 | 
|  | 1183 | #define DTMF_MF_DIGIT_TONE_CODE_9               0x18 | 
|  | 1184 | #define DTMF_MF_DIGIT_TONE_CODE_0               0x19 | 
|  | 1185 | #define DTMF_MF_DIGIT_TONE_CODE_K1              0x1a | 
|  | 1186 | #define DTMF_MF_DIGIT_TONE_CODE_K2              0x1b | 
|  | 1187 | #define DTMF_MF_DIGIT_TONE_CODE_KP              0x1c | 
|  | 1188 | #define DTMF_MF_DIGIT_TONE_CODE_S1              0x1d | 
|  | 1189 | #define DTMF_MF_DIGIT_TONE_CODE_ST              0x1e | 
|  | 1190 |  | 
|  | 1191 | #define DTMF_DIGIT_CODE_COUNT                   16 | 
|  | 1192 | #define DTMF_MF_DIGIT_CODE_BASE                 DSP_DTMF_DIGIT_CODE_COUNT | 
|  | 1193 | #define DTMF_MF_DIGIT_CODE_COUNT                15 | 
|  | 1194 | #define DTMF_TOTAL_DIGIT_CODE_COUNT             (DSP_MF_DIGIT_CODE_BASE + DSP_MF_DIGIT_CODE_COUNT) | 
|  | 1195 |  | 
|  | 1196 | #define DTMF_TONE_DIGIT_BASE                    0x80 | 
|  | 1197 |  | 
|  | 1198 | #define DTMF_SIGNAL_NO_TONE                     (DTMF_TONE_DIGIT_BASE + 0) | 
|  | 1199 | #define DTMF_SIGNAL_UNIDENTIFIED_TONE           (DTMF_TONE_DIGIT_BASE + 1) | 
|  | 1200 |  | 
|  | 1201 | #define DTMF_SIGNAL_DIAL_TONE                   (DTMF_TONE_DIGIT_BASE + 2) | 
|  | 1202 | #define DTMF_SIGNAL_PABX_INTERNAL_DIAL_TONE     (DTMF_TONE_DIGIT_BASE + 3) | 
|  | 1203 | #define DTMF_SIGNAL_SPECIAL_DIAL_TONE           (DTMF_TONE_DIGIT_BASE + 4)   /* stutter dial tone */ | 
|  | 1204 | #define DTMF_SIGNAL_SECOND_DIAL_TONE            (DTMF_TONE_DIGIT_BASE + 5) | 
|  | 1205 | #define DTMF_SIGNAL_RINGING_TONE                (DTMF_TONE_DIGIT_BASE + 6) | 
|  | 1206 | #define DTMF_SIGNAL_SPECIAL_RINGING_TONE        (DTMF_TONE_DIGIT_BASE + 7) | 
|  | 1207 | #define DTMF_SIGNAL_BUSY_TONE                   (DTMF_TONE_DIGIT_BASE + 8) | 
|  | 1208 | #define DTMF_SIGNAL_CONGESTION_TONE             (DTMF_TONE_DIGIT_BASE + 9)   /* reorder tone */ | 
|  | 1209 | #define DTMF_SIGNAL_SPECIAL_INFORMATION_TONE    (DTMF_TONE_DIGIT_BASE + 10) | 
|  | 1210 | #define DTMF_SIGNAL_COMFORT_TONE                (DTMF_TONE_DIGIT_BASE + 11) | 
|  | 1211 | #define DTMF_SIGNAL_HOLD_TONE                   (DTMF_TONE_DIGIT_BASE + 12) | 
|  | 1212 | #define DTMF_SIGNAL_RECORD_TONE                 (DTMF_TONE_DIGIT_BASE + 13) | 
|  | 1213 | #define DTMF_SIGNAL_CALLER_WAITING_TONE         (DTMF_TONE_DIGIT_BASE + 14) | 
|  | 1214 | #define DTMF_SIGNAL_CALL_WAITING_TONE           (DTMF_TONE_DIGIT_BASE + 15) | 
|  | 1215 | #define DTMF_SIGNAL_PAY_TONE                    (DTMF_TONE_DIGIT_BASE + 16) | 
|  | 1216 | #define DTMF_SIGNAL_POSITIVE_INDICATION_TONE    (DTMF_TONE_DIGIT_BASE + 17) | 
|  | 1217 | #define DTMF_SIGNAL_NEGATIVE_INDICATION_TONE    (DTMF_TONE_DIGIT_BASE + 18) | 
|  | 1218 | #define DTMF_SIGNAL_WARNING_TONE                (DTMF_TONE_DIGIT_BASE + 19) | 
|  | 1219 | #define DTMF_SIGNAL_INTRUSION_TONE              (DTMF_TONE_DIGIT_BASE + 20) | 
|  | 1220 | #define DTMF_SIGNAL_CALLING_CARD_SERVICE_TONE   (DTMF_TONE_DIGIT_BASE + 21) | 
|  | 1221 | #define DTMF_SIGNAL_PAYPHONE_RECOGNITION_TONE   (DTMF_TONE_DIGIT_BASE + 22) | 
|  | 1222 | #define DTMF_SIGNAL_CPE_ALERTING_SIGNAL         (DTMF_TONE_DIGIT_BASE + 23) | 
|  | 1223 | #define DTMF_SIGNAL_OFF_HOOK_WARNING_TONE       (DTMF_TONE_DIGIT_BASE + 24) | 
|  | 1224 |  | 
|  | 1225 | #define DTMF_SIGNAL_INTERCEPT_TONE              (DTMF_TONE_DIGIT_BASE + 63) | 
|  | 1226 |  | 
|  | 1227 | #define DTMF_SIGNAL_MODEM_CALLING_TONE          (DTMF_TONE_DIGIT_BASE + 64) | 
|  | 1228 | #define DTMF_SIGNAL_FAX_CALLING_TONE            (DTMF_TONE_DIGIT_BASE + 65) | 
|  | 1229 | #define DTMF_SIGNAL_ANSWER_TONE                 (DTMF_TONE_DIGIT_BASE + 66) | 
|  | 1230 | #define DTMF_SIGNAL_REVERSED_ANSWER_TONE        (DTMF_TONE_DIGIT_BASE + 67) | 
|  | 1231 | #define DTMF_SIGNAL_ANSAM_TONE                  (DTMF_TONE_DIGIT_BASE + 68) | 
|  | 1232 | #define DTMF_SIGNAL_REVERSED_ANSAM_TONE         (DTMF_TONE_DIGIT_BASE + 69) | 
|  | 1233 | #define DTMF_SIGNAL_BELL103_ANSWER_TONE         (DTMF_TONE_DIGIT_BASE + 70) | 
|  | 1234 | #define DTMF_SIGNAL_FAX_FLAGS                   (DTMF_TONE_DIGIT_BASE + 71) | 
|  | 1235 | #define DTMF_SIGNAL_G2_FAX_GROUP_ID             (DTMF_TONE_DIGIT_BASE + 72) | 
|  | 1236 | #define DTMF_SIGNAL_HUMAN_SPEECH                (DTMF_TONE_DIGIT_BASE + 73) | 
|  | 1237 | #define DTMF_SIGNAL_ANSWERING_MACHINE_390       (DTMF_TONE_DIGIT_BASE + 74) | 
|  | 1238 |  | 
|  | 1239 | #define DTMF_MF_LISTEN_ACTIVE_FLAG     0x02 | 
|  | 1240 | #define DTMF_SEND_MF_FLAG              0x02 | 
|  | 1241 | #define DTMF_TONE_LISTEN_ACTIVE_FLAG   0x04 | 
|  | 1242 | #define DTMF_SEND_TONE_FLAG            0x04 | 
|  | 1243 |  | 
|  | 1244 | #define PRIVATE_DTMF_TONE              5 | 
|  | 1245 |  | 
|  | 1246 |  | 
|  | 1247 | /*------------------------------------------------------------------*/ | 
|  | 1248 | /* FAX paper format extension                                       */ | 
|  | 1249 | /*------------------------------------------------------------------*/ | 
|  | 1250 |  | 
|  | 1251 |  | 
|  | 1252 | #define PRIVATE_FAX_PAPER_FORMATS      6 | 
|  | 1253 |  | 
|  | 1254 |  | 
|  | 1255 |  | 
|  | 1256 | /*------------------------------------------------------------------*/ | 
|  | 1257 | /* V.OWN extension                                                  */ | 
|  | 1258 | /*------------------------------------------------------------------*/ | 
|  | 1259 |  | 
|  | 1260 |  | 
|  | 1261 | #define PRIVATE_VOWN                   7 | 
|  | 1262 |  | 
|  | 1263 |  | 
|  | 1264 |  | 
|  | 1265 | /*------------------------------------------------------------------*/ | 
|  | 1266 | /* FAX non-standard facilities extension                            */ | 
|  | 1267 | /*------------------------------------------------------------------*/ | 
|  | 1268 |  | 
|  | 1269 |  | 
|  | 1270 | #define PRIVATE_FAX_NONSTANDARD        8 | 
|  | 1271 |  | 
|  | 1272 |  | 
|  | 1273 |  | 
|  | 1274 | /*------------------------------------------------------------------*/ | 
|  | 1275 | /* Advanced voice                                                   */ | 
|  | 1276 | /*------------------------------------------------------------------*/ | 
|  | 1277 |  | 
|  | 1278 | #define ADV_VOICE_WRITE_ACTIVATION    0 | 
|  | 1279 | #define ADV_VOICE_WRITE_DEACTIVATION  1 | 
|  | 1280 | #define ADV_VOICE_WRITE_UPDATE        2 | 
|  | 1281 |  | 
|  | 1282 | #define ADV_VOICE_OLD_COEF_COUNT    6 | 
|  | 1283 | #define ADV_VOICE_NEW_COEF_BASE     (ADV_VOICE_OLD_COEF_COUNT * sizeof(word)) | 
|  | 1284 |  | 
|  | 1285 | /*------------------------------------------------------------------*/ | 
|  | 1286 | /* B1 resource switching                                            */ | 
|  | 1287 | /*------------------------------------------------------------------*/ | 
|  | 1288 |  | 
|  | 1289 | #define B1_FACILITY_LOCAL  0x01 | 
|  | 1290 | #define B1_FACILITY_MIXER  0x02 | 
|  | 1291 | #define B1_FACILITY_DTMFX  0x04 | 
|  | 1292 | #define B1_FACILITY_DTMFR  0x08 | 
|  | 1293 | #define B1_FACILITY_VOICE  0x10 | 
|  | 1294 | #define B1_FACILITY_EC     0x20 | 
|  | 1295 |  | 
|  | 1296 | #define ADJUST_B_MODE_SAVE          0x0001 | 
|  | 1297 | #define ADJUST_B_MODE_REMOVE_L23    0x0002 | 
|  | 1298 | #define ADJUST_B_MODE_SWITCH_L1     0x0004 | 
|  | 1299 | #define ADJUST_B_MODE_NO_RESOURCE   0x0008 | 
|  | 1300 | #define ADJUST_B_MODE_ASSIGN_L23    0x0010 | 
|  | 1301 | #define ADJUST_B_MODE_USER_CONNECT  0x0020 | 
|  | 1302 | #define ADJUST_B_MODE_CONNECT       0x0040 | 
|  | 1303 | #define ADJUST_B_MODE_RESTORE       0x0080 | 
|  | 1304 |  | 
|  | 1305 | #define ADJUST_B_START                     0 | 
|  | 1306 | #define ADJUST_B_SAVE_MIXER_1              1 | 
|  | 1307 | #define ADJUST_B_SAVE_DTMF_1               2 | 
|  | 1308 | #define ADJUST_B_REMOVE_L23_1              3 | 
|  | 1309 | #define ADJUST_B_REMOVE_L23_2              4 | 
|  | 1310 | #define ADJUST_B_SAVE_EC_1                 5 | 
|  | 1311 | #define ADJUST_B_SAVE_DTMF_PARAMETER_1     6 | 
|  | 1312 | #define ADJUST_B_SAVE_VOICE_1              7 | 
|  | 1313 | #define ADJUST_B_SWITCH_L1_1               8 | 
|  | 1314 | #define ADJUST_B_SWITCH_L1_2               9 | 
|  | 1315 | #define ADJUST_B_RESTORE_VOICE_1           10 | 
|  | 1316 | #define ADJUST_B_RESTORE_VOICE_2           11 | 
|  | 1317 | #define ADJUST_B_RESTORE_DTMF_PARAMETER_1  12 | 
|  | 1318 | #define ADJUST_B_RESTORE_DTMF_PARAMETER_2  13 | 
|  | 1319 | #define ADJUST_B_RESTORE_EC_1              14 | 
|  | 1320 | #define ADJUST_B_RESTORE_EC_2              15 | 
|  | 1321 | #define ADJUST_B_ASSIGN_L23_1              16 | 
|  | 1322 | #define ADJUST_B_ASSIGN_L23_2              17 | 
|  | 1323 | #define ADJUST_B_CONNECT_1                 18 | 
|  | 1324 | #define ADJUST_B_CONNECT_2                 19 | 
|  | 1325 | #define ADJUST_B_CONNECT_3                 20 | 
|  | 1326 | #define ADJUST_B_CONNECT_4                 21 | 
|  | 1327 | #define ADJUST_B_RESTORE_DTMF_1            22 | 
|  | 1328 | #define ADJUST_B_RESTORE_DTMF_2            23 | 
|  | 1329 | #define ADJUST_B_RESTORE_MIXER_1           24 | 
|  | 1330 | #define ADJUST_B_RESTORE_MIXER_2           25 | 
|  | 1331 | #define ADJUST_B_RESTORE_MIXER_3           26 | 
|  | 1332 | #define ADJUST_B_RESTORE_MIXER_4           27 | 
|  | 1333 | #define ADJUST_B_RESTORE_MIXER_5           28 | 
|  | 1334 | #define ADJUST_B_RESTORE_MIXER_6           29 | 
|  | 1335 | #define ADJUST_B_RESTORE_MIXER_7           30 | 
|  | 1336 | #define ADJUST_B_END                       31 | 
|  | 1337 |  | 
|  | 1338 | /*------------------------------------------------------------------*/ | 
|  | 1339 | /* XON Protocol def's                                               */ | 
|  | 1340 | /*------------------------------------------------------------------*/ | 
|  | 1341 | #define N_CH_XOFF               0x01 | 
|  | 1342 | #define N_XON_SENT              0x02 | 
|  | 1343 | #define N_XON_REQ               0x04 | 
|  | 1344 | #define N_XON_CONNECT_IND       0x08 | 
|  | 1345 | #define N_RX_FLOW_CONTROL_MASK  0x3f | 
|  | 1346 | #define N_OK_FC_PENDING         0x80 | 
|  | 1347 | #define N_TX_FLOW_CONTROL_MASK  0xc0 | 
|  | 1348 |  | 
|  | 1349 | /*------------------------------------------------------------------*/ | 
|  | 1350 | /* NCPI state                                                       */ | 
|  | 1351 | /*------------------------------------------------------------------*/ | 
|  | 1352 | #define NCPI_VALID_CONNECT_B3_IND  0x01 | 
|  | 1353 | #define NCPI_VALID_CONNECT_B3_ACT  0x02 | 
|  | 1354 | #define NCPI_VALID_DISC_B3_IND     0x04 | 
|  | 1355 | #define NCPI_CONNECT_B3_ACT_SENT   0x08 | 
|  | 1356 | #define NCPI_NEGOTIATE_B3_SENT     0x10 | 
|  | 1357 | #define NCPI_MDM_CTS_ON_RECEIVED   0x40 | 
|  | 1358 | #define NCPI_MDM_DCD_ON_RECEIVED   0x80 | 
|  | 1359 |  | 
|  | 1360 | /*------------------------------------------------------------------*/ |