1 /****************************************************************************** 2 3 FileName: Q931ie.h 4 5 Contents: Header and definition for the ITU-T Q.931 ie 6 structures and functions 7 8 License/Copyright: 9 10 Copyright (c) 2007, Jan Vidar Berger, Case Labs, Ltd. All rights reserved. 11 email:janvb@caselaboratories.com 12 13 Redistribution and use in source and binary forms, with or without 14 modification, are permitted provided that the following conditions are 15 met: 16 17 * Redistributions of source code must retain the above copyright notice, 18 this list of conditions and the following disclaimer. 19 * Redistributions in binary form must reproduce the above copyright notice, 20 this list of conditions and the following disclaimer in the documentation 21 and/or other materials provided with the distribution. 22 * Neither the name of the Case Labs, Ltd nor the names of its contributors 23 may be used to endorse or promote products derived from this software 24 without specific prior written permission. 25 26 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 27 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 28 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 29 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 30 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 31 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 32 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 33 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 34 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 35 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 36 POSSIBILITY OF SUCH DAMAGE. 37 ******************************************************************************/ 38 39 #ifndef _Q931IE_NL 40 #define _Q931IE_NL 41 42 /* Codesets */ 43 44 typedef enum { 45 46 Q931_CODESET_0 = ( 0 ), 47 Q931_CODESET_1 = ( 1 << 8 ), 48 Q931_CODESET_2 = ( 2 << 8 ), 49 Q931_CODESET_3 = ( 3 << 8 ), 50 Q931_CODESET_4 = ( 4 << 8 ), 51 Q931_CODESET_5 = ( 5 << 8 ), 52 Q931_CODESET_6 = ( 6 << 8 ), 53 Q931_CODESET_7 = ( 7 << 8 ) 54 55 } q931_codeset_t; 56 57 /* Single octet information elements */ 58 #define Q931ie_SHIFT 0x90 /* 1001 ---- */ 59 #define Q931ie_MORE_DATA 0xa0 /* 1010 ---- */ 60 #define Q931ie_SENDING_COMPLETE 0xa1 /* 1010 0001 */ 61 #define Q931ie_CONGESTION_LEVEL 0xb0 /* 1011 ---- */ 62 #define Q931ie_REPEAT_INDICATOR 0xd0 /* 1101 ---- */ 63 64 /* Variable Length Information Elements */ 65 #define Q931ie_SEGMENTED_MESSAGE 0x00 /* 0000 0000 */ 66 #define Q931ie_CHANGE_STATUS 0x01 /* 0000 0001 */ 67 #define Q931ie_BEARER_CAPABILITY 0x04 /* 0000 0100 */ 68 #define Q931ie_CAUSE 0x08 /* 0000 1000 */ 69 #define Q931ie_CALL_IDENTITY 0x10 /* 0001 0000 */ 70 #define Q931ie_CALL_STATE 0x14 /* 0001 0100 */ 71 #define Q931ie_CHANNEL_IDENTIFICATION 0x18 /* 0001 1000 */ 72 #define Q931ie_PROGRESS_INDICATOR 0x1e /* 0001 1110 */ 73 #define Q931ie_NETWORK_SPECIFIC_FACILITIES 0x20 /* 0010 0000 */ 74 #define Q931ie_NOTIFICATION_INDICATOR 0x27 /* 0010 0111 */ 75 #define Q931ie_DISPLAY 0x28 /* 0010 1000 */ 76 #define Q931ie_DATETIME 0x29 /* 0010 1001 */ 77 #define Q931ie_KEYPAD_FACILITY 0x2c /* 0010 1100 */ 78 #define Q931ie_SIGNAL 0x34 /* 0011 0100 */ 79 #define Q931ie_SWITCHOOK 0x36 /* 0011 0110 */ 80 #define Q931ie_FEATURE_ACTIVATION 0x38 /* 0011 1000 */ 81 #define Q931ie_FEATURE_INDICATION 0x39 /* 0011 1001 */ 82 #define Q931ie_INFORMATION_RATE 0x40 /* 0100 0000 */ 83 #define Q931ie_END_TO_END_TRANSIT_DELAY 0x42 /* 0100 0010 */ 84 #define Q931ie_TRANSIT_DELAY_SELECTION_AND_IND 0x43 /* 0100 0011 */ 85 #define Q931ie_PACKED_LAYER_BIMARY_PARAMETERS 0x44 /* 0100 0100 */ 86 #define Q931ie_PACKED_LAYER_WINDOW_SIZE 0x45 /* 0100 0101 */ 87 #define Q931ie_PACKED_SIZE 0x46 /* 0100 0110 */ 88 #define Q931ie_CALLING_PARTY_NUMBER 0x6c /* 0110 1100 */ 89 #define Q931ie_CALLING_PARTY_SUBADDRESS 0x6d /* 0110 1101 */ 90 #define Q931ie_CALLED_PARTY_NUMBER 0x70 /* 0111 0000 */ 91 #define Q931ie_CALLED_PARTY_SUBADDRESS 0x71 /* 0111 0001 */ 92 #define Q931ie_REDIRECTING_NUMBER 0x74 /* 0111 0100 */ 93 #define Q931ie_TRANSIT_NETWORK_SELECTION 0x78 /* 0111 1000 */ 94 #define Q931ie_RESTART_INDICATOR 0x79 /* 0111 1001 */ 95 #define Q931ie_LOW_LAYER_COMPATIBILITY 0x7c /* 0111 1100 */ 96 #define Q931ie_HIGH_LAYER_COMPATIBILITY 0x7d /* 0111 1101 */ 97 #define Q931ie_USER_USER 0x7e /* 0111 1110 */ 98 #define Q931ie_ESCAPE_FOR_EX 0x7f /* 0111 1111 */ 99 100 /* Variable Length Codeset 6 Information Elements */ 101 #define Q931ie_GENERIC_DIGITS 0x37 /* 0011 0111 */ 102 103 /* Variable Length Information Element to shut up BRI testing */ 104 #define Q931ie_CONNECTED_NUMBER 0x4c /* 0100 1101 */ 105 #define Q931ie_FACILITY 0x1c /* 0001 1101 */ 106 107 108 /***************************************************************************** 109 110 Struct: Q931ie_BearerCap 111 112 Description: Bearer Capability Information Element. 113 114 *****************************************************************************/ 115 116 typedef struct { 117 118 L3UCHAR IEId; /* 00000100 for Bearer Capability */ 119 L3UCHAR Size; /* Length of Information Element */ 120 121 L3UCHAR CodStand; /* Coding Standard. */ 122 /* 00 - ITU-T */ 123 /* 01 - ISO/IEC */ 124 /* 10 - National standard */ 125 /* 11 - Network side spesific */ 126 127 L3UCHAR ITC; /* Information Transfer Capability */ 128 /* 00000 - Speech */ 129 /* 01000 - Unrestricted digital info */ 130 /* 01001 - Restricted digital info */ 131 /* 10000 - 3.1 kHz audio */ 132 /* 10001 - Unrestricted with tones */ 133 /* 11000 - Video */ 134 135 L3UCHAR TransMode; /* Transfer Mode. */ 136 /* 00 - Circuit mode */ 137 /* 10 - Packet mode */ 138 139 L3UCHAR ITR; /* Information Transfer Rate. */ 140 /* 00000 - Packed mode */ 141 /* 10000 - 64 kbit/s */ 142 /* 10001 - 2 x 64 kbit/s */ 143 /* 10011 - 384 kbit/s */ 144 /* 10101 - 1536 kbit/s */ 145 /* 10111 - 1920 kbit/s */ 146 /* 11000 - Multirat (64 kbit/s base) */ 147 148 L3UCHAR RateMul; /* Rate Multiplier */ 149 150 L3UCHAR Layer1Ident; /* Layer 1 Ident. */ 151 152 L3UCHAR UIL1Prot; /* User Information Layer 1 Protocol */ 153 /* 00001 : ITU-T V.110, I.460 and X.30 */ 154 /* 00010 : G.711 my-law */ 155 /* 00011 : G.711 A-law */ 156 /* 00100 : G.721 */ 157 /* 00101 : H.221 and H.242 */ 158 /* 00110 : H.223 and H.245 */ 159 /* 00111 : Non ITU-T Standard */ 160 /* 01000 : ITU-T V.120 */ 161 /* 01001 : ITU-T X.31 HDLC flag stuff. */ 162 163 L3UCHAR SyncAsync; /* Sync/Async */ 164 /* 0 : Syncronous data */ 165 /* 1 : Asyncronous data */ 166 167 L3UCHAR Negot; /* Negotiation */ 168 /* 0 : In-band negotiation not possib. */ 169 /* 1 : In-band negotiation possible */ 170 171 L3UCHAR UserRate; /* User rate */ 172 /* 00000 : I.460, V.110, X,30 */ 173 /* 00001 : 0.6 kbit/s x.1 */ 174 /* 00010 : 1.2 kbit/s */ 175 /* 00011 : 2.4 kbit/s */ 176 /* 00100 : 3.6 kbit/s */ 177 /* 00101 : 4.8 kbit/s */ 178 /* 00110 : 7.2 kbit/s */ 179 /* 00111 : 8 kbit/s I.460 */ 180 /* 01000 : 9.6 kbit/s */ 181 /* 01001 : 14.4 kbit/s */ 182 /* 01010 : 16 kbit/s */ 183 /* 01011 : 19.2 kbit/s */ 184 /* 01100 : 32 kbit/s */ 185 /* 01101 : 38.4 kbit/s */ 186 /* 01110 : 48 kbit/s */ 187 /* 01111 : 56 kbit/s */ 188 /* 10000 : 57.6 kbit/s */ 189 /* 10010 : 28.8 kbit/s */ 190 /* 10100 : 24 kbit/s */ 191 /* 10101 : 0.1345 kbit/s */ 192 /* 10110 : 0.100 kbit/s */ 193 /* 10111 : 0.075/1.2 kbit/s */ 194 /* 11000 : 1.2/0.075/kbit/s */ 195 /* 11001 : 0.050 kbit/s */ 196 /* 11010 : 0.075 kbit/s */ 197 /* 11011 : 0.110 kbit/s */ 198 /* 11100 : 0.150 kbit/s */ 199 /* 11101 : 0.200 kbit/s */ 200 /* 11110 : 0.300 kbit/s */ 201 /* 11111 : 12 kbit/s */ 202 203 L3UCHAR InterRate; /* Intermediate Rate */ 204 /* 00 : Not used */ 205 /* 01 : 8 kbit/s */ 206 /* 10 : 16 kbit/s */ 207 /* 11 : 32 kbit/s */ 208 209 L3UCHAR NIConTx; /* Network Indepentend Clock on transmit*/ 210 /* 0 : Not required to send data clc */ 211 /* 1 : Send data w/NIC clc */ 212 213 L3UCHAR NIConRx; /* NIC on Rx */ 214 /* 0 : Cannot accept indep. clc */ 215 /* 1 : data with indep. clc accepted */ 216 217 L3UCHAR FlowCtlTx; /* Flow control on Tx */ 218 /* 0 : Send Flow ctrl not required */ 219 /* 1 : Send flow ctrl required */ 220 221 L3UCHAR FlowCtlRx; /* Flow control on Rx */ 222 /* 0 : cannot use receive flow ctrl */ 223 /* 1 : Receive flow ctrl accepted */ 224 L3UCHAR HDR; /* HDR/No HDR */ 225 L3UCHAR MultiFrame; /* Multi frame support */ 226 /* 0 : multiframe not supported */ 227 /* 1 : multiframe supported */ 228 229 L3UCHAR Mode; /* Mode of operation */ 230 /* 0 : bit transparent mode of operat. */ 231 /* 1 : protocol sesitive mode of op. */ 232 233 L3UCHAR LLInegot; /* Logical link id negotiation (oct. 5b)*/ 234 /* 0 : default LLI=256 only */ 235 /* 1 : Full protocol negotiation */ 236 237 L3UCHAR Assignor; /* Assignor/assignee */ 238 /* 0 : Default Asignee */ 239 /* 1 : Assignor only */ 240 241 L3UCHAR InBandNeg; /* In-band/out-band negot. */ 242 /* 0 : negot done w/ USER INFO mes */ 243 /* 1 : negot done in-band w/link zero */ 244 245 L3UCHAR NumStopBits; /* Number of stop bits */ 246 /* 00 : Not used */ 247 /* 01 : 1 bit */ 248 /* 10 : 1.5 bits */ 249 /* 11 : 2 bits */ 250 251 L3UCHAR NumDataBits; /* Number of data bits. */ 252 /* 00 : not used */ 253 /* 01 : 5 bits */ 254 /* 10 : 7 bits */ 255 /* 11 : 8 bits */ 256 257 L3UCHAR Parity; /* Parity Information */ 258 /* 000 : Odd */ 259 /* 010 : Even */ 260 /* 011 : None */ 261 /* 100 : Forced to 0 */ 262 /* 101 : Forced to 1 */ 263 264 L3UCHAR DuplexMode; /* Mode duplex */ 265 /* 0 : Half duplex */ 266 /* 1 : Full duplex */ 267 268 L3UCHAR ModemType; /* Modem type, see Q.931 p 64 */ 269 270 L3UCHAR Layer2Ident; /* Layer 2 Ident */ 271 272 L3UCHAR UIL2Prot; /* User Information Layer 2 Protocol */ 273 /* 00010 : Q.921/I.441 */ 274 /* 00110 : X.25 */ 275 /* 01100 : LAN logical link */ 276 277 L3UCHAR Layer3Ident; /* Layer 3 ident. */ 278 279 L3UCHAR UIL3Prot; /* User Information Layer 3 Protocol */ 280 /* 00010 : Q.931 */ 281 /* 00110 : X.25 */ 282 /* 01011 : ISO/IEC TR 9577 */ 283 284 L3UCHAR AL3Info1; /* additional layer 3 info 1 */ 285 286 L3UCHAR AL3Info2; /* additional layer 3 info 2 */ 287 288 } Q931ie_BearerCap; 289 290 /***************************************************************************** 291 292 Struct: Q931ie_CallID 293 294 295 *****************************************************************************/ 296 297 typedef struct { 298 299 L3UCHAR IEId; /* 00010000 */ 300 L3UCHAR Size; /* Length of Information Element */ 301 L3UCHAR CallId[1]; /* Call identity */ 302 303 } Q931ie_CallID; 304 305 /***************************************************************************** 306 307 Struct: Q931ie_CallState 308 309 310 *****************************************************************************/ 311 312 typedef struct { 313 314 L3UCHAR IEId; /* 00010100 */ 315 L3UCHAR Size; /* Length of Information Element */ 316 L3UCHAR CodStand; /* Coding Standard */ 317 L3UCHAR CallState; /* Call State Value */ 318 319 } Q931ie_CallState; 320 321 /***************************************************************************** 322 323 Struct: Q931ie_Cause 324 325 Description: Cause IE as described in Q.850 326 327 *****************************************************************************/ 328 typedef struct { 329 330 L3UCHAR IEId; /* 00010100 */ 331 L3UCHAR Size; /* Length of Information Element */ 332 L3UCHAR CodStand; /* Coding Standard */ 333 L3UCHAR Location; /* Location */ 334 L3UCHAR Recom; /* Recommendation */ 335 L3UCHAR Value; /* Cause Value */ 336 L3UCHAR Diag[1]; /* Optional Diagnostics Field */ 337 338 } Q931ie_Cause; 339 340 /***************************************************************************** 341 342 Struct: Q931ie_CalledNum 343 344 *****************************************************************************/ 345 typedef struct { 346 347 L3UCHAR IEId; /* 01110000 */ 348 L3UCHAR Size; /* Length of Information Element */ 349 L3UCHAR TypNum; /* Type of Number */ 350 L3UCHAR NumPlanID; /* Numbering plan identification */ 351 L3UCHAR Digit[1]; /* Digit (IA5) */ 352 353 } Q931ie_CalledNum; 354 355 /***************************************************************************** 356 357 Struct: Q931ie_CalledSub 358 359 Description: Called party subaddress 360 361 *****************************************************************************/ 362 363 typedef struct { 364 365 L3UCHAR IEId; /* 01110001 */ 366 L3UCHAR Size; /* Length of Information Element */ 367 L3UCHAR TypNum; /* Type of subaddress */ 368 L3UCHAR OddEvenInd; /* Odd/Even indicator */ 369 L3UCHAR Digit[1]; /* digits */ 370 371 } Q931ie_CalledSub; 372 373 /***************************************************************************** 374 375 Struct: Q931ie_CallingNum 376 377 Description: Calling party number 378 379 *****************************************************************************/ 380 381 typedef struct { 382 383 L3UCHAR IEId; /* 01101100 */ 384 L3UCHAR Size; /* Length of Information Element */ 385 L3UCHAR TypNum; /* Type of number */ 386 L3UCHAR NumPlanID; /* Numbering plan identification */ 387 L3UCHAR PresInd; /* Presentation indicator */ 388 L3UCHAR ScreenInd; /* Screening indicator */ 389 L3UCHAR Digit[1]; /* Number digits (IA5) */ 390 391 } Q931ie_CallingNum; 392 393 /***************************************************************************** 394 395 Struct: Q931ie_CallingSub 396 397 Description: Calling party subaddress 398 399 *****************************************************************************/ 400 401 typedef struct { 402 403 L3UCHAR IEId; /* 01101101 */ 404 L3UCHAR Size; /* Length of Information Element */ 405 L3UCHAR TypNum; /* Type of subaddress */ 406 L3UCHAR OddEvenInd; /* Odd/Even indicator */ 407 L3UCHAR Digit[1]; /* digits */ 408 409 } Q931ie_CallingSub; 410 411 /***************************************************************************** 412 413 Struct: Q931ie_ChanID 414 415 Description: Channel identification 416 417 Channel Identificationis one of the IE elements that differ 418 between BRI and PRI. IntType = 1 = BRI and ChanSlot is used 419 for channel number, while InfoChanSel is used for BRI. 420 421 ChanID is one of the most important IE as it is passed 422 either though SETUP or CALL PROCEEDING to select the channel 423 to be used. 424 425 *****************************************************************************/ 426 427 typedef struct { 428 429 L3UCHAR IEId; /* 00011000 */ 430 L3UCHAR Size; /* Length of Information Element */ 431 L3UCHAR IntIDPresent; /* Int. id. present */ 432 L3UCHAR IntType; /* Interface Type */ 433 /* 0 : Basic Interface (BRI) */ 434 /* 1 : Other interfaces, PRI etc. */ 435 436 L3UCHAR PrefExcl; /* Pref./Excl. */ 437 /* 0 : Indicated channel is preffered */ 438 /* 1 : Exclusive, no other accepted */ 439 440 L3UCHAR DChanInd; /* D-channel ind. */ 441 /* 0 : chan is NOT D chan. */ 442 /* 1 : chan is D chan */ 443 444 L3UCHAR InfoChanSel; /* Info. channel selection */ 445 /* 00 : No channel */ 446 /* 01 : B1 channel */ 447 /* 10 : B2 channel */ 448 /* 11 : Any channel */ 449 450 L3UCHAR InterfaceID; /* Interface identifier */ 451 452 L3UCHAR CodStand; /* Code standard */ 453 /* 00 : ITU-T standardization coding */ 454 /* 01 : ISO/IEC Standard */ 455 /* 10 : National Standard */ 456 /* 11 : Standard def. by network. */ 457 458 L3UCHAR NumMap; /* Number/Map */ 459 /* 0 : chan is in following octet */ 460 /* 1 : chan is indicated by slot map */ 461 462 L3UCHAR ChanMapType; /* Channel type/Map element type */ 463 /* 0011 : B Channel units */ 464 /* 0110 : H0 channel units */ 465 /* 1000 : H11 channel units */ 466 /* 1001 : H12 channel units */ 467 468 L3UCHAR ChanSlot; /* Channel number */ 469 470 } Q931ie_ChanID; 471 472 /***************************************************************************** 473 474 Struct: Q931ie_DateTime 475 476 Description: Date/time 477 478 *****************************************************************************/ 479 480 typedef struct { 481 482 L3UCHAR IEId; /* 00101001 */ 483 L3UCHAR Size; /* Length of Information Element */ 484 L3UCHAR Year; /* Year */ 485 L3UCHAR Month; /* Month */ 486 L3UCHAR Day; /* Day */ 487 L3UCHAR Hour; /* Hour */ 488 L3UCHAR Minute; /* Minute */ 489 L3UCHAR Second; /* Second */ 490 L3UCHAR Format; /* Indicate presense of Hour, Min & sec */ 491 /* 0 : Only Date */ 492 /* 1 : Hour present */ 493 /* 2 : Hour and Minute present */ 494 /* 3 : Hour, Minute and Second present */ 495 } Q931ie_DateTime; 496 497 /***************************************************************************** 498 499 Struct: Q931ie_Display 500 501 Description: Display 502 503 *****************************************************************************/ 504 505 typedef struct { 506 507 L3UCHAR IEId; /* 00101000 */ 508 L3UCHAR Size; /* Length of Information Element */ 509 L3UCHAR Display[1]; /* Display information (IA5) */ 510 511 } Q931ie_Display; 512 513 /***************************************************************************** 514 515 Struct: Q931ie_HLComp 516 517 Description: High layer compatibility 518 519 *****************************************************************************/ 520 521 typedef struct { 522 523 L3UCHAR IEId; /* 01111101 */ 524 L3UCHAR Size; /* Length of Information Element */ 525 L3UCHAR CodStand; /* Coding standard */ 526 L3UCHAR Interpret; /* Interpretation */ 527 L3UCHAR PresMeth; /* Presentation methor of prot. profile */ 528 L3UCHAR HLCharID; /* High layer characteristics id. */ 529 L3UCHAR EHLCharID; /* Extended high layer character. id. */ 530 L3UCHAR EVideoTlfCharID; /* Ext. videotelephony char. id. */ 531 532 } Q931ie_HLComp; 533 534 /***************************************************************************** 535 536 Struct: Q931ie_KeypadFac 537 538 Description: Keypad facility 539 540 *****************************************************************************/ 541 542 typedef struct { 543 L3UCHAR IEId; /* 00101100 */ 544 L3UCHAR Size; /* Length of Information Element */ 545 L3UCHAR KeypadFac[1]; /* dynamic buffer */ 546 547 } Q931ie_KeypadFac; 548 549 /***************************************************************************** 550 551 Struct: Q931ie_LLComp 552 553 Description: Low layer compatibility 554 555 *****************************************************************************/ 556 557 typedef struct { 558 559 L3UCHAR IEId; /* 01111100 */ 560 L3UCHAR Size; /* Length of Information Element */ 561 L3UCHAR CodStand; /* Coding standard */ 562 /* 00 - ITU-T */ 563 /* 01 - ISO/IEC */ 564 /* 10 - National standard */ 565 /* 11 - Network side spesific */ 566 567 L3UCHAR ITransCap; /* Information transfer capability */ 568 /* 00000 - Speech */ 569 /* 01000 - Unrestricted digital info */ 570 /* 01001 - Restricted digital info */ 571 /* 10000 - 3.1 kHz audio */ 572 /* 10001 - Unrestricted with tones */ 573 /* 11000 - Video */ 574 575 L3UCHAR NegotInd; /* Negot indic. */ 576 /* 0 : Out-band neg. not possib. */ 577 /* 1 : Out-band neg. possible */ 578 579 L3UCHAR TransMode; /* Transfer Mode */ 580 /* 00 : Circuit Mode */ 581 /* 10 : Packed Mode */ 582 583 L3UCHAR InfoRate; /* Information transfer rate */ 584 /* 00000 - Packed mode */ 585 /* 10000 - 64 kbit/s */ 586 /* 10001 - 2 x 64 kbit/s */ 587 /* 10011 - 384 kbit/s */ 588 /* 10101 - 1536 kbit/s */ 589 /* 10111 - 1920 kbit/s */ 590 /* 11000 - Multirat (64 kbit/s base) */ 591 592 L3UCHAR RateMul; /* Rate multiplier */ 593 L3UCHAR Layer1Ident; /* Layer 1 ident. */ 594 L3UCHAR UIL1Prot; /* User information layer 1 protocol */ 595 /* 00001 : ITU-T V.110, I.460 and X.30 */ 596 /* 00010 : G.711 my-law */ 597 /* 00011 : G.711 A-law */ 598 /* 00100 : G.721 */ 599 /* 00101 : H.221 and H.242 */ 600 /* 00110 : H.223 and H.245 */ 601 /* 00111 : Non ITU-T Standard */ 602 /* 01000 : ITU-T V.120 */ 603 /* 01001 : ITU-T X.31 HDLC flag stuff. */ 604 605 L3UCHAR SyncAsync; /* Synch/asynch */ 606 /* 0 : Syncronous data */ 607 /* 1 : Asyncronous data */ 608 609 L3UCHAR Negot; /* Negot */ 610 /* 0 : In-band negotiation not possib. */ 611 /* 1 : In-band negotiation possible */ 612 613 L3UCHAR UserRate; /* User rate */ 614 /* 00000 : I.460, V.110, X,30 */ 615 /* 00001 : 0.6 kbit/s x.1 */ 616 /* 00010 : 1.2 kbit/s */ 617 /* 00011 : 2.4 kbit/s */ 618 /* 00100 : 3.6 kbit/s */ 619 /* 00101 : 4.8 kbit/s */ 620 /* 00110 : 7.2 kbit/s */ 621 /* 00111 : 8 kbit/s I.460 */ 622 /* 01000 : 9.6 kbit/s */ 623 /* 01001 : 14.4 kbit/s */ 624 /* 01010 : 16 kbit/s */ 625 /* 01011 : 19.2 kbit/s */ 626 /* 01100 : 32 kbit/s */ 627 /* 01101 : 38.4 kbit/s */ 628 /* 01110 : 48 kbit/s */ 629 /* 01111 : 56 kbit/s */ 630 /* 10000 : 57.6 kbit/s */ 631 /* 10010 : 28.8 kbit/s */ 632 /* 10100 : 24 kbit/s */ 633 /* 10101 : 0.1345 kbit/s */ 634 /* 10110 : 0.100 kbit/s */ 635 /* 10111 : 0.075/1.2 kbit/s */ 636 /* 11000 : 1.2/0.075/kbit/s */ 637 /* 11001 : 0.050 kbit/s */ 638 /* 11010 : 0.075 kbit/s */ 639 /* 11011 : 0.110 kbit/s */ 640 /* 11100 : 0.150 kbit/s */ 641 /* 11101 : 0.200 kbit/s */ 642 /* 11110 : 0.300 kbit/s */ 643 /* 11111 : 12 kbit/s */ 644 645 L3UCHAR InterRate; /* Intermediate rate */ 646 /* 00 : Not used */ 647 /* 01 : 8 kbit/s */ 648 /* 10 : 16 kbit/s */ 649 /* 11 : 32 kbit/s */ 650 651 L3UCHAR NIConTx; /* Network Indepentend Clock on transmit*/ 652 /* 0 : Not required to send data clc */ 653 /* 1 : Send data w/NIC clc */ 654 655 L3UCHAR NIConRx; /* NIC on Rx */ 656 /* 0 : Cannot accept indep. clc */ 657 /* 1 : data with indep. clc accepted */ 658 659 L3UCHAR FlowCtlTx; /* Flow control on Tx */ 660 /* 0 : Send Flow ctrl not required */ 661 /* 1 : Send flow ctrl required */ 662 663 L3UCHAR FlowCtlRx; /* Flow control on Rx */ 664 /* 0 : cannot use receive flow ctrl */ 665 /* 1 : Receive flow ctrl accepted */ 666 L3UCHAR HDR; /* HDR/No HDR */ 667 L3UCHAR MultiFrame; /* Multi frame support */ 668 /* 0 : multiframe not supported */ 669 /* 1 : multiframe supported */ 670 671 L3UCHAR ModeL1; /* Mode L1 */ 672 /* 0 : bit transparent mode of operat. */ 673 /* 1 : protocol sesitive mode of op. */ 674 675 L3UCHAR NegotLLI; /* Negot. LLI */ 676 /* 0 : default LLI=256 only */ 677 /* 1 : Full protocol negotiation */ 678 679 L3UCHAR Assignor; /* Assignor/Assignor ee */ 680 /* 0 : Default Asignee */ 681 /* 1 : Assignor only */ 682 683 L3UCHAR InBandNeg; /* In-band negot. */ 684 /* 0 : negot done w/ USER INFO mes */ 685 /* 1 : negot done in-band w/link zero */ 686 687 L3UCHAR NumStopBits; /* Number of stop bits */ 688 /* 00 : Not used */ 689 /* 01 : 1 bit */ 690 /* 10 : 1.5 bits */ 691 /* 11 : 2 bits */ 692 693 L3UCHAR NumDataBits; /* Number of data bits. */ 694 /* 00 : not used */ 695 /* 01 : 5 bits */ 696 /* 10 : 7 bits */ 697 /* 11 : 8 bits */ 698 699 L3UCHAR Parity; /* Parity Information */ 700 /* 000 : Odd */ 701 /* 010 : Even */ 702 /* 011 : None */ 703 /* 100 : Forced to 0 */ 704 /* 101 : Forced to 1 */ 705 706 L3UCHAR DuplexMode; /* Mode duplex */ 707 /* 0 : Half duplex */ 708 /* 1 : Full duplex */ 709 710 L3UCHAR ModemType; /* Modem type, see Q.931 p 89 */ 711 712 L3UCHAR Layer2Ident; /* Layer 2 ident. */ 713 714 L3UCHAR UIL2Prot; /* User information layer 2 protocol */ 715 /* 00001 : Basic mode ISO 1745 */ 716 /* 00010 : Q.921/I.441 */ 717 /* 00110 : X.25 single link */ 718 /* 00111 : X.25 multilink */ 719 /* 01000 : Extended LAPB T.71 */ 720 /* 01001 : HDLC ARM */ 721 /* 01010 : HDLC NRM */ 722 /* 01011 : HDLC ABM */ 723 /* 01100 : LAN logical link */ 724 /* 01101 : X.75 SLP */ 725 /* 01110 : Q.922 */ 726 /* 01111 : Q.922 core aspect */ 727 /* 10000 : User specified */ 728 /* 10001 : ISO/IEC 7776 DTE-DCE */ 729 730 L3UCHAR ModeL2; /* Mode */ 731 /* 01 : Normal Mode of operation */ 732 /* 10 : Extended mode of operation */ 733 734 L3UCHAR Q933use; /* Q.9333 use */ 735 736 L3UCHAR UsrSpcL2Prot; /* User specified layer 2 protocol info */ 737 738 L3UCHAR WindowSize; /* Window size (k) */ 739 740 L3UCHAR Layer3Ident; /* Layer 3 ident */ 741 742 L3UCHAR UIL3Prot; /* User Information Layer 3 protocol */ 743 /* 00010 : Q.931 */ 744 /* 00110 : X.25 */ 745 /* 00111 : 8208 */ 746 /* 01000 : X.233 ... */ 747 /* 01001 : 6473 */ 748 /* 01010 : T.70 */ 749 /* 01011 : ISO/IEC TR 9577 */ 750 /* 10000 : User specified */ 751 L3UCHAR OptL3Info; /* Optional Leyer 3 info */ 752 753 L3UCHAR ModeL3; /* Mode of operation */ 754 /* 01 : Normal packed seq. numbering */ 755 /* 10 : Extended packed seq. numbering */ 756 757 L3UCHAR DefPackSize; /* Default packet size */ 758 759 L3UCHAR PackWinSize; /* Packet window size */ 760 761 L3UCHAR AddL3Info; /* Additional Layer 3 protocol info */ 762 763 } Q931ie_LLComp; 764 765 /***************************************************************************** 766 767 Struct: Q931ie_NetFac; 768 769 Description: Network-specific facilities 770 771 *****************************************************************************/ 772 773 typedef struct { 774 775 L3UCHAR IEId; /* 00100000 */ 776 L3UCHAR Size; /* Length of Information Element */ 777 L3UCHAR LenNetID; /* Length of network facilities id. */ 778 L3UCHAR TypeNetID; /* Type of network identification */ 779 L3UCHAR NetIDPlan; /* Network identification plan. */ 780 L3UCHAR NetFac; /* Network specific facility spec. */ 781 L3UCHAR NetID[1]; /* Network id. (IA5) */ 782 783 } Q931ie_NetFac; 784 785 /***************************************************************************** 786 787 Struct: Q931ie_NotifInd; 788 789 Description: Notification Indicator 790 791 *****************************************************************************/ 792 793 typedef struct { 794 795 L3UCHAR IEId; /* 00100000 */ 796 L3UCHAR Size; /* Length of Information Element */ 797 L3UCHAR Notification; /* Notification descriptor */ 798 799 } Q931ie_NotifInd; 800 801 /***************************************************************************** 802 803 Struct: Q931ie_ProgInd 804 805 Description: Progress indicator 806 807 *****************************************************************************/ 808 809 typedef struct { 810 811 L3UCHAR IEId; /* 00011110 */ 812 L3UCHAR Size; /* Length of Information Element */ 813 L3UCHAR CodStand; /* Coding standard */ 814 L3UCHAR Location; /* Location */ 815 L3UCHAR ProgDesc; /* Progress description */ 816 817 } Q931ie_ProgInd; 818 819 /***************************************************************************** 820 821 Struct; Q931ie_Segment 822 823 Description: Segmented message 824 825 *****************************************************************************/ 826 827 typedef struct { 828 829 L3UCHAR IEId; /* 00000000 */ 830 L3UCHAR Size; /* Length of Information Element */ 831 L3UCHAR FSI; /* First segment indicator */ 832 L3UCHAR NumSegRem; /* Number of segments remaining */ 833 L3UCHAR SegType; /* Segment message type */ 834 835 } Q931ie_Segment; 836 837 838 typedef struct { 839 840 L3UCHAR IEId; /* 00000000 */ 841 L3UCHAR Size; /* Length of Information Element */ 842 843 } Q931ie_SendComplete; 844 845 /***************************************************************************** 846 847 Struct: Q931ie_Signal 848 849 Description: Signal 850 851 *****************************************************************************/ 852 853 typedef struct { 854 855 L3UCHAR IEId; /* 00000000 */ 856 L3UCHAR Size; /* Length of Information Element */ 857 L3UCHAR Signal; /* Signal value */ 858 /* 00000000 Dial tone on */ 859 /* 00000001 Ring back tone on */ 860 /* 00000010 Intercept tone on */ 861 /* 00000011 Network congestion on */ 862 /* 00000100 Busy tone on */ 863 /* 00000101 Confirm tone on */ 864 /* 00000110 Answer tone on */ 865 /* 00000111 Call waiting tone */ 866 /* 00001000 Off-hook warning tone */ 867 /* 00001001 Pre-emption tone on */ 868 /* 00111111 Tones off */ 869 /* 01000000 Alerting on - pattern 0 */ 870 /* 01000001 Alerting on - pattern 1 */ 871 /* 01000010 Alerting on - pattern 2 */ 872 /* 01000011 Alerting on - pattern 3 */ 873 /* 01000100 Alerting on - pattern 4 */ 874 /* 01000101 Alerting on - pattern 5 */ 875 /* 01000110 Alerting on - pattern 6 */ 876 /* 01000111 Alerting on - pattern 7 */ 877 /* 01001111 Alerting off */ 878 } Q931ie_Signal; 879 880 /***************************************************************************** 881 882 Struct: Q931ie_TransDelSelInd 883 884 description: Transit delay selection and indication 885 886 *****************************************************************************/ 887 #ifdef Q931_X25_SUPPORT 888 typedef struct { 889 890 L3UCHAR IEId; /* 00000000 */ 891 L3UCHAR Size; /* Length of Information Element */ 892 L3ULONG TxDSIValue; /* Trans. delay sel. & ind. value */ 893 894 } Q931ie_TransDelSelInd; 895 #endif 896 897 /***************************************************************************** 898 899 Struct: Q931ie_TransNetSel 900 901 Description: Transit network selection 902 903 *****************************************************************************/ 904 905 typedef struct { 906 907 L3UCHAR IEId; /* 01111000 */ 908 L3UCHAR Size; /* Length of Information Element */ 909 L3UCHAR Type; /* Type of network identifier */ 910 L3UCHAR NetIDPlan; /* Network idetification plan */ 911 L3UCHAR NetID[1]; /* Network identification(IA5) */ 912 913 } Q931ie_TransNetSel; 914 915 /***************************************************************************** 916 917 Struct: Q931ie_UserUser 918 919 Description: User-user 920 921 *****************************************************************************/ 922 923 typedef struct { 924 925 L3UCHAR IEId; /* 01111110 */ 926 L3UCHAR Size; /* Length of Information Element */ 927 L3UCHAR ProtDisc; /* Protocol discriminator */ 928 L3UCHAR User[1]; /* User information */ 929 930 } Q931ie_UserUser; 931 932 /***************************************************************************** 933 934 Struct: Q931ie_ClosedUserGrp 935 936 Description: Closed user group 937 938 *****************************************************************************/ 939 #ifdef Q931_X25_SUPPORT 940 typedef struct { 941 942 L3UCHAR IEId; /* 01000111 */ 943 L3UCHAR Size; /* Length of Information Element */ 944 L3UCHAR CUGInd; /* CUG indication */ 945 L3UCHAR CUG[1]; /* CUG index code (IA5) */ 946 947 } Q931ie_ClosedUserGrp; 948 #endif 949 950 /***************************************************************************** 951 952 Struct: Q931ie_CongLevel 953 954 Description: Congestion Level 955 956 *****************************************************************************/ 957 typedef struct { 958 959 L3UCHAR IEId; /* 01000111 */ 960 L3UCHAR Size; /* Length of Information Element */ 961 L3UCHAR CongLevel; /* Conguestion Level */ 962 963 } Q931ie_CongLevel; 964 965 /***************************************************************************** 966 967 Struct: Q931ie_EndEndTxDelay 968 969 Description: End to end transit delay 970 971 *****************************************************************************/ 972 #ifdef Q931_X25_SUPPORT 973 typedef struct { 974 975 L3UCHAR IEId; /* 01000010 */ 976 L3UCHAR Size; /* Length of Information Element */ 977 L3ULONG CumTxDelay; /* Cumulative transit delay value */ 978 L3ULONG ReqTxDelay; /* Requested end to end transit delay */ 979 L3ULONG MaxTxDelay; /* Maximum transit delay */ 980 981 } Q931ie_EndEndTxDelay; 982 #endif 983 984 /***************************************************************************** 985 986 Struct: Q931ie_InfoRate 987 988 Description: Information Rate 989 990 *****************************************************************************/ 991 #ifdef Q931_X25_SUPPORT 992 typedef struct { 993 994 L3UCHAR IEId; /* 01100000 */ 995 L3UCHAR Size; /* Length of Information Element */ 996 L3UCHAR InInfoRate; /* Incoming information rate */ 997 L3UCHAR OutInfoRate; /* Outgoing information rate */ 998 L3UCHAR MinInInfoRate; /* Minimum incoming information rate */ 999 L3UCHAR MinOutInfoRate; /* Minimum outgoing information rate */ 1000 1001 } Q931ie_InfoRate; 1002 #endif 1003 1004 /***************************************************************************** 1005 1006 Struct: Q931ie_PackParam 1007 1008 Description: Packed layer binary parameters 1009 1010 *****************************************************************************/ 1011 #ifdef Q931_X25_SUPPORT 1012 typedef struct { 1013 1014 L3UCHAR IEId; /* 01000100 */ 1015 L3UCHAR Size; /* Length of Information Element */ 1016 L3UCHAR FastSel; /* Fast selected */ 1017 L3UCHAR ExpData; /* Exp. data */ 1018 L3UCHAR DelConf; /* Delivery conf */ 1019 L3UCHAR Modulus; /* Modulus */ 1020 1021 } Q931ie_PackParam; 1022 #endif 1023 1024 /***************************************************************************** 1025 1026 Struct: Q931ie_PackWinSize 1027 1028 Description: Packed window size 1029 1030 *****************************************************************************/ 1031 #ifdef Q931_X25_SUPPORT 1032 typedef struct { 1033 1034 L3UCHAR IEId; /* 01000101 */ 1035 L3UCHAR Size; /* Length of Information Element */ 1036 L3UCHAR ForwardValue; /* Forward value */ 1037 L3UCHAR BackwardValue; /* Backward value */ 1038 1039 } Q931ie_PackWinSize; 1040 #endif 1041 1042 /***************************************************************************** 1043 1044 Struct: Q931ie_PackSize 1045 1046 Description: Packet size 1047 1048 *****************************************************************************/ 1049 #ifdef Q931_X25_SUPPORT 1050 typedef struct { 1051 1052 L3UCHAR IEId; /* 01000110 */ 1053 L3UCHAR Size; /* Length of Information Element */ 1054 L3UCHAR ForwardValue; /* Forward value */ 1055 L3UCHAR BackwardValue; /* Backward value */ 1056 1057 } Q931ie_PackSize; 1058 #endif 1059 1060 /***************************************************************************** 1061 1062 Struct: Q931ie_RedirNum 1063 1064 Description: Redirecting number 1065 1066 *****************************************************************************/ 1067 #ifdef Q931_X25_SUPPORT 1068 typedef struct { 1069 1070 L3UCHAR IEId; /* 01110100 */ 1071 L3UCHAR Size; /* Length of Information Element */ 1072 L3UCHAR TypeNum; /* Type of number */ 1073 L3UCHAR NumPlanID; /* Number plan identification */ 1074 L3UCHAR PresInd; /* Presentation indicator */ 1075 L3UCHAR ScreenInd; /* Screening indicator */ 1076 L3UCHAR Reason; /* Reason for redirection */ 1077 L3UCHAR Digit[1]; /* Number digits (IA5) */ 1078 1079 } Q931ie_RedirNum; 1080 #endif 1081 1082 typedef struct { 1083 1084 L3UCHAR IEId; /* 01110100 */ 1085 L3UCHAR Size; /* Length of Information Element */ 1086 L3UCHAR RepeatInd; /* 0010 Prioritized list for selecting */ 1087 /* one possible. */ 1088 } Q931ie_RepeatInd; 1089 1090 typedef struct { 1091 1092 L3UCHAR IEId; /* 01110100 */ 1093 L3UCHAR Size; /* Length of Information Element */ 1094 L3UCHAR Spare; /* Spare */ 1095 L3UCHAR Class; /* Class */ 1096 /* 000 Indicate channels */ 1097 /* 110 Single interface */ 1098 /* 111 All interfaces */ 1099 } Q931ie_RestartInd; 1100 1101 typedef struct { 1102 1103 L3UCHAR IEId; /* 01110100 */ 1104 L3UCHAR Size; /* Length of Information Element */ 1105 L3UCHAR Preference; /* Preference 0 = reserved, 1 = channel */ 1106 L3UCHAR Spare; /* Spare */ 1107 L3UCHAR NewStatus; /* NewStatus */ 1108 /* 000 In service */ 1109 /* 001 Maintenance */ 1110 /* 010 Out of service */ 1111 } Q931ie_ChangeStatus; 1112 1113 /***************************************************************************** 1114 1115 Struct: Q931ie_GenericDigits 1116 1117 1118 *****************************************************************************/ 1119 1120 typedef struct { 1121 1122 L3UCHAR IEId; /* 00110111 */ 1123 L3UCHAR Size; /* Length of Information Element */ 1124 L3UCHAR Type; /* Type of number */ 1125 L3UCHAR Encoding; /* Encoding of number */ 1126 L3UCHAR Digit[1]; /* Number digits (IA5) */ 1127 1128 } Q931ie_GenericDigits; 1129 1130 1131 /***************************************************************************** 1132 1133 Q.931 Information Element Pack/Unpack functions. Implemented in Q931ie.c 1134 1135 *****************************************************************************/ 1136 q931pie_func_t Q931Pie_ChangeStatus; 1137 q931pie_func_t Q931Pie_BearerCap; 1138 q931pie_func_t Q931Pie_ChanID; 1139 q931pie_func_t Q931Pie_ProgInd; 1140 q931pie_func_t Q931Pie_Display; 1141 q931pie_func_t Q931Pie_Signal; 1142 q931pie_func_t Q931Pie_HLComp; 1143 q931pie_func_t Q931Pie_Segment; 1144 q931pie_func_t Q931Pie_DateTime; 1145 q931pie_func_t Q931Pie_Cause; 1146 q931pie_func_t Q931Pie_SendComplete; 1147 q931pie_func_t Q931Pie_KeypadFac; 1148 q931pie_func_t Q931Pie_NotifInd; 1149 q931pie_func_t Q931Pie_CallID; 1150 q931pie_func_t Q931Pie_RepeatInd; 1151 q931pie_func_t Q931Pie_NetFac; 1152 q931pie_func_t Q931Pie_CallingNum; 1153 q931pie_func_t Q931Pie_CallingSub; 1154 q931pie_func_t Q931Pie_CalledNum; 1155 q931pie_func_t Q931Pie_CalledSub; 1156 q931pie_func_t Q931Pie_CalledNum; 1157 q931pie_func_t Q931Pie_TransNetSel; 1158 q931pie_func_t Q931Pie_LLComp; 1159 q931pie_func_t Q931Pie_CallState; 1160 q931pie_func_t Q931Pie_RestartInd; 1161 q931pie_func_t Q931Pie_UserUser; 1162 1163 q931pie_func_t Q931Pie_GenericDigits; 1164 1165 L3USHORT Q931Uie_CRV(Q931_TrunkInfo_t *pTrunk,L3UCHAR * IBuf, L3UCHAR *OBuf, L3INT *IOff, L3INT *OOff); 1166 1167 q931uie_func_t Q931Uie_ChangeStatus; 1168 q931uie_func_t Q931Uie_BearerCap; 1169 q931uie_func_t Q931Uie_ChanID; 1170 q931uie_func_t Q931Uie_ProgInd; 1171 q931uie_func_t Q931Uie_Display; 1172 q931uie_func_t Q931Uie_Signal; 1173 q931uie_func_t Q931Uie_HLComp; 1174 q931uie_func_t Q931Uie_Segment; 1175 q931uie_func_t Q931Uie_DateTime; 1176 q931uie_func_t Q931Uie_Cause; 1177 q931uie_func_t Q931Uie_SendComplete; 1178 q931uie_func_t Q931Uie_KeypadFac; 1179 q931uie_func_t Q931Uie_NotifInd; 1180 q931uie_func_t Q931Uie_CallID; 1181 q931uie_func_t Q931Uie_RepeatInd; 1182 q931uie_func_t Q931Uie_NetFac; 1183 q931uie_func_t Q931Uie_CallingNum; 1184 q931uie_func_t Q931Uie_CallingSub; 1185 q931uie_func_t Q931Uie_CalledNum; 1186 q931uie_func_t Q931Uie_CalledSub; 1187 q931uie_func_t Q931Uie_TransNetSel; 1188 q931uie_func_t Q931Uie_LLComp; 1189 q931uie_func_t Q931Uie_CallState; 1190 q931uie_func_t Q931Uie_RestartInd; 1191 q931uie_func_t Q931Uie_UserUser; 1192 1193 q931uie_func_t Q931Uie_GenericDigits; 1194 1195 1196 L3INT Q931ReadExt(L3UCHAR * IBuf, L3INT Off); 1197 L3INT Q931Uie_CongLevel(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff); 1198 L3INT Q931Pie_CongLevel(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet); 1199 L3INT Q931Uie_RevChargeInd(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff); 1200 L3INT Q931Pie_RevChargeInd(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet); 1201 1202 L3INT Q931Uie_Generic(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *IOff, L3INT *OOff); 1203 L3INT Q931Pie_Generic(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet); 1204 1205 #endif /* _Q931IE_NL */ 1206