home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / nics / root.2 / usr / include / sys / scoisdn.h / scoisdn
Text File  |  1998-08-19  |  52KB  |  1,736 lines

  1. /*
  2.  * Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  3.  *                                                                         
  4.  *        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  5.  *                   SANTA CRUZ OPERATION INC.                             
  6.  *                                                                         
  7.  *   The copyright notice above does not evidence any actual or intended   
  8.  *   publication of such source code.                                      
  9.  */
  10.  
  11. #ifndef _IO_ND_SYS_SCOISDN_H  /* wrapper symbol for kernel use */
  12. #define _IO_ND_SYS_SCOISDN_H  /* subject to change without notice */
  13.  
  14. #ident "@(#)scoisdn.h    29.2"
  15. /*
  16.  * File scoisdn.h
  17.  *
  18.  *      Copyright (C) The Santa Cruz Operation, 1995-1997.
  19.  *      This Module contains Proprietary Information of
  20.  *      The Santa Cruz Operation and should be treated
  21.  *      as Confidential.
  22.  *
  23.  * This interface specification should be included by all
  24.  * applications and drivers supporting ISDN.
  25.  */
  26.  
  27.  
  28. /*
  29.  * Here we do a little, very little, for portability.  If the
  30.  * compiler does not act as we expect, we could at least hope
  31.  * for a fatal error.
  32.  *
  33.  * It is further assumed that:
  34.  *    o All values are least significant octet first (little endian).
  35.  *    o Bit fields assign the low bits first.
  36.  *        u_int    foo :1,        This should be bit 0
  37.  *            bar :1,        This should be bit 1
  38.  *                :0;        The high bits are unused
  39.  *
  40.  * The structures here will use our own defined types so that references
  41.  * to the CAPI spec are easier and so that if conversion is necessary,
  42.  * all instances can easily be found.
  43.  */
  44.  
  45.     typedef unsigned char    isdnU8_t;
  46.     typedef unsigned char    isdnBfU8_t;    /* Must support bit fields */
  47.     typedef unsigned char    isdnByte_t;
  48.     typedef unsigned char    isdnOctet_t;
  49.  
  50.     typedef unsigned short    isdnU16_t;
  51.     typedef unsigned short    isdnWord_t;
  52.  
  53.     typedef unsigned int    isdnU32_t;
  54.     typedef unsigned int    isdnBfU32_t;    /* Must support bit fields */
  55.  
  56.     typedef unsigned long    isdnDword_t;
  57.  
  58. /*
  59.  * The ISDN message header
  60.  * 
  61.  * Drivers and applications must use this header containing the CAPI
  62.  * message header prepended with the SCO DLPI primitive.  The DLPI
  63.  * primitive for ISDN is always set to DL_ISDN_MSG.
  64.  * 
  65.  */
  66.  
  67. typedef struct isdn_msg_hdr
  68. {
  69.     isdnDword_t    DL_prim;
  70.     isdnWord_t    Length;
  71.     isdnWord_t    AppID;
  72.     isdnByte_t    Cmd;
  73.     isdnByte_t    SubCmd;
  74.     isdnWord_t    MsgNum;
  75. } isdn_msg_hdr_t;
  76.  
  77.  
  78.  
  79. /*
  80.  * # # # # # # # # # # # # # # The ISDN ioctls # # # # # # # # # # # # # #
  81.  */
  82.  
  83. #define ISDN_IOC        ('C' << 8)
  84.  
  85. /*
  86.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  87.  *
  88.  * ISDN_REGISTER        ioctl()
  89.  *
  90.  * An application can register at SCO-ISDN by opening the device
  91.  * (/dev/netx) and issuing the relevant parameters via the system
  92.  * call ioctl() to the opened device.  Note that the result of this
  93.  * operation is a file handle, not an application ID.  So in UNIX
  94.  * environment the application ID included in CAPI messages will
  95.  * not be used to identify ISDN applications.  The only valid
  96.  * handle between the SCO-ISDN kernel driver and the application
  97.  * based on a system call level interface is a UNIX file handle.
  98.  * To release from SCO-ISDN, an application just has to close the
  99.  * opened device.
  100.  *
  101.  * MDI ISDN drivers maintain application IDs internally within
  102.  * the kernel, but this is transparent to applications.
  103.  *
  104.  * This operation is realized using ioctl().  The caller must supply
  105.  * a struct isdn_register_params in struct strioctl ic_dp and ic_len.
  106.  *
  107.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  108.  */
  109.  
  110. #define ISDN_REGISTER        (ISDN_IOC | 0x01)
  111.  
  112. typedef struct isdn_register_params
  113. {
  114.     isdnU16_t    ApplId;        /* application identifier    */
  115.     isdnU32_t    level3cnt;    /* No. of simultaneous user data connections */
  116.     isdnU32_t    datablkcnt;    /* No. of buffered data messages */
  117.     isdnU32_t    datablklen;    /* Size of buffered data messages */
  118. } isdn_register_params_t;
  119.  
  120. /*
  121.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  122.  *
  123.  * ISDN_RELEASE        ioctl()
  124.  *
  125.  * This operation is only for an MDI ISDN driver.  Applications do not
  126.  * use it.
  127.  *
  128.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  129.  */
  130.  
  131. #define ISDN_RELEASE        (ISDN_IOC | 0x02)
  132.  
  133. typedef struct isdn_release
  134. {
  135.     isdnU16_t    ApplId;        /* application identifier    */
  136. } isdn_release_t;
  137.  
  138. /*
  139.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  140.  *
  141.  * ISDN_GET_MANUFACTURER    ioctl()
  142.  *
  143.  * With this operation the application determines the manufacturer
  144.  * identification of SCO-ISDN.  The offered buffer must have a size
  145.  * of at least 64 bytes.  SCO-ISDN copies the identification string,
  146.  * coded as a zero terminated ASCII string, to this buffer.
  147.  *
  148.  * This operation is realized using ioctl().  The caller must supply
  149.  * a buffer in struct strioctl ic_dp and ic_len.  The manufacturer
  150.  * identification is transferred to the given buffer.  The string is
  151.  * always zero-terminated.
  152.  *
  153.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  154.  */
  155.  
  156. #define ISDN_GET_MANUFACTURER    (ISDN_IOC | 0x06)
  157.  
  158. #define ISDN_MIN_MFGR_BUF    64
  159.  
  160. /*
  161.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  162.  *
  163.  * ISDN_GET_VERSION        ioctl()
  164.  *
  165.  * With this function the application determines the version of
  166.  * SCO-ISDN as well as an internal revision number.  The offered
  167.  * buffer must have a size of sizeof(isdn_version_t).
  168.  *
  169.  * This operation is realized using ioctl().  The caller must supply
  170.  * a struct isdn_version in struct strioctl ic_dp and ic_len.
  171.  *
  172.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  173.  */
  174.  
  175. #define ISDN_GET_VERSION    (ISDN_IOC | 0x07)
  176.  
  177. typedef struct isdn_version
  178. {
  179.     isdnU32_t    isdnmajorver;    /* SCO-ISDN major version */
  180.     isdnU32_t    isdnminorver;    /* SCO-ISDN minor version */
  181.     isdnU32_t    mfgrmajorver;    /* manufacturer-specific major number */
  182.     isdnU32_t    mfgrminorver;    /* manufacturer-specific minor number */
  183. } isdn_version_t;
  184.  
  185. #define ISDN_MAJOR_VERSION    0x02
  186. #define ISDN_MINOR_VERSION    0x00
  187.  
  188. /*
  189.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  190.  *
  191.  * ISDN_GET_SERIAL_NUMBER    ioctl()
  192.  *
  193.  * With this operation the application determines the (optional)
  194.  * serial number of SCO-ISDN.  The offered buffer must have a size
  195.  * of sizeof(isdn_serial_t).  SCO-ISDN copies the serial number
  196.  * string to this buffer.  The serial number, coded as a zero
  197.  * terminated ASCII string, represents seven digit number after
  198.  * the function has returned.
  199.  *
  200.  * This operation is realized using ioctl().  The caller must
  201.  * supply a buffer in struct strioctl ic_dp and ic_len.  The
  202.  * serial number consists of up to seven decimal-digit ASCII
  203.  * characters.  It is always zero-terminated.
  204.  *
  205.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  206.  */
  207.  
  208. #define ISDN_GET_SERIAL_NUMBER    (ISDN_IOC | 0x08)
  209. #define ISDN_SERIAL_BUF_LEN    8
  210.  
  211. typedef struct isdn_serial
  212. {
  213.     char    SerialNo[ISDN_SERIAL_BUF_LEN];
  214. } isdn_serial_t;
  215.  
  216. /*
  217.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  218.  *
  219.  * ISDN_GET_PROFILE        ioctl()
  220.  *
  221.  * The application uses this function to get the capabilities from
  222.  * SCO-ISDN.  In the allocated buffer SCO-ISDN copies information
  223.  * about implemented features, number of controllers and supported
  224.  * protocols.  CtrlNr contains the controller number for which this
  225.  * information is requested.
  226.  *
  227.  * This operation is realized using ioctl().  The caller must supply
  228.  * a union isdn_profile in struct strioctl ic_dp and ic_len.
  229.  *
  230.  * This function can be extended, so an application has to ignore
  231.  * unknown bits.  SCO-ISDN will set every reserved field to 0.
  232.  *
  233.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  234.  */
  235.  
  236. #define ISDN_GET_PROFILE    (ISDN_IOC | 0x09)
  237.  
  238. typedef union isdn_profile
  239. {
  240.     struct
  241.     {
  242.     isdnBfU8_t    CtrlNr;        /* Controller number */
  243.     } request;
  244.  
  245.     struct
  246.     {
  247.     isdnU16_t    CtlrCnt;    /* number of installed controllers */
  248.     isdnU16_t    BchanCnt;    /* number of supported B-channels */
  249.  
  250.     /* Global Options */
  251.     isdnBfU32_t    g_IntCtlr   :1,    /* internal controller supported */
  252.             g_ExtEqpt   :1,    /* external equipment supported */
  253.             g_Handset   :1,    /* Handset supported */
  254.             g_DTMF      :1,    /* DTMF supported */
  255.                     :0;    /* Reserved */
  256.  
  257.     /* B1 protocols support; Physical layer and framing */
  258.     isdnBfU32_t    b1_HDLC64   :1,    /* 64 kBit/s with HDLC framing */
  259.             b1_Trans64  :1,    /* 64 kBit/s bit transparent */
  260.             b1_V110asy  :1,    /* V.110 asynchronous start/stop */
  261.             b1_V110sync :1,    /* V.110 synchronous HDLC */
  262.             b1_T30      :1,    /* T.30 modem for fax group 3 */
  263.             b1_HDLCi64  :1,    /* 64 kBit/s inverted HDLC */
  264.             b1_Trans56  :1,    /* 56 kBit/s bit transparent */
  265.                     :0;    /* Reserved */
  266.  
  267.     /* B2 protocol support; Data link layer protocol */
  268.     isdnBfU32_t    b2_ISO7776  :1,    /* ISO 7776 (X.75 SLP) */
  269.             b2_Trans    :1,    /* Transparent */
  270.             b2_SDLC     :1,    /* SDLC */
  271.             b2_LAPD     :1,    /* LAPD Q.921 for D channel X.25 */
  272.             b2_T30      :1,    /* T.30 for fax group 3 */
  273.             b2_PPP      :1,    /* Point to Point Protocol */
  274.             b2_TransNE  :1,    /* Transparent ignoring errors */
  275.                     :0;    /* Reserved */
  276.  
  277.     /* B3 protocol support; Network layer protocol */
  278.     isdnBfU32_t    b3_Trans    :1,    /* Transparent */
  279.             b3_T90NL    :1,    /* T.90NL w/ compatibility to T.70NL */
  280.             b3_ISO8208  :1,    /* ISO 8208 (X.25 DTE-DTE) */
  281.             b3_X25DCE   :1,    /* X.25 DCE */
  282.             b3_T30      :1,    /* T.30 for fax group 3 */
  283.                     :0;    /* Reserved */
  284.  
  285.     isdnU32_t    isdn_reserved[6];
  286.     isdnU32_t    mfgr_specific[5];
  287.     } reply;
  288.     unsigned char    buf[64];
  289.  
  290. } isdn_profile_t;
  291.  
  292. /*
  293.  * # # # # # # # # # # # # # # The ISDN Messages # # # # # # # # # # # # #
  294.  */
  295.  
  296. /*
  297.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  298.  *
  299.  * ISDN_PUT_MESSAGE        putmsg()
  300.  *
  301.  * With this operation the application transfers a message to
  302.  * SCO-ISDN.  The application identifies itself with an
  303.  * application identification number.
  304.  *
  305.  * To transfer a message from an application to SCO-ISDN
  306.  * driver and the controller behind, the system call putmsg() is
  307.  * used.  The application puts SCO-ISDN message and parameter data
  308.  * into the ctl part of the putmsg() call. The data portion
  309.  * of the message ISDN_DATA_B3.ISDN_REQ have to be stored in the
  310.  * data part of putmsg().
  311.  *
  312.  * In order to facilitate future extensions of this standard, messages
  313.  * containing additional parameters shall be treated as valid messages.
  314.  * SCO-ISDN implementations and applications shall ignore all
  315.  * additional parameters.
  316.  *
  317.  *
  318.  * ISDN_GET_MESSAGE        getmsg()
  319.  *
  320.  * With this operation the application retrieves a message from
  321.  * SCO-ISDN.  The application retrieves all messages associated
  322.  * with the corresponding file descriptor from operation ISDN_REGISTER.
  323.  *
  324.  * To receive a message from SCO-ISDN the application uses
  325.  * the system call getmsg().  The application has to supply sufficient
  326.  * buffers for receiving the ctl and data parts of the message.
  327.  *
  328.  * To receive a message from SCO-ISDN the application uses
  329.  * the system call getmsg().
  330.  *
  331.  *
  332.  * NOTE:
  333.  *
  334.  * The CAPI 2.0 specification defines many of the message parameters
  335.  * as variable length structures.
  336.  *
  337.  * WARNING: 
  338.  *
  339.  * CAPI 2.0 parameters defined as structures are variable length with
  340.  * a length byte preceeding the contents of the structure.  When the
  341.  * length field is zero, the structure is empty.
  342.  *
  343.  * CAPI 2.0 parameters defined as scaler types do not have a length
  344.  * field.
  345.  *
  346.  * The parameters described below in C do not declare the byte length
  347.  * field for structures.  Therefore, they cannot be used as exact
  348.  * templates for real CAPI parameters when it is a structure.  Please
  349.  * use the declarations as a guide, not as an implementation.
  350.  *
  351.  * Scaler parameter declarations can be used in an implementation.
  352.  *
  353.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  354.  */
  355.  
  356. /*
  357.  * Subcommands
  358.  *
  359.  *              Application
  360.  *  ------------------------------------
  361.  *     |      ^            ^      |
  362.  *     |      |            |      |
  363.  *     | REQ  | CONF       | IND  | RESP
  364.  *     |      |            |      |
  365.  *     V      |            |      V
  366.  *  ------------------------------------
  367.  *                Driver
  368.  */
  369.  
  370. #define ISDN_REQ    0x80    /* Request initiation */
  371. #define ISDN_CONF    0x81    /* Local confirmation of request */
  372.  
  373. #define ISDN_IND    0x82    /* Indication of request */
  374. #define ISDN_RESP    0x83    /* Response to indication */
  375.  
  376. /*
  377.  * Some types of messages are not supported.  We define a
  378.  * dummy structure of the expected name to detect a definition
  379.  * of these unsupported types.
  380.  */
  381.  
  382. #define UNUSED_MSG_TYPE(x)    typedef struct { char dummy; } x
  383.  
  384. /*
  385.  * Additional info
  386.  * This type is used by:
  387.  *    ISDN_ALERT.ISDN_REQ
  388.  *    ISDN_CONNECT.ISDN_REQ
  389.  *    ISDN_CONNECT.ISDN_IND
  390.  *    ISDN_CONNECT.ISDN_RESP
  391.  *    ISDN_DISCONNECT.ISDN_REQ
  392.  *    ISDN_INFO.ISDN_REQ
  393.  */
  394.  
  395. typedef struct isdnAddInfo
  396. {
  397.     struct
  398.     {
  399.     isdnWord_t    channel;
  400.     } BchanInfo;
  401.  
  402.     struct
  403.     {
  404.     void    *dummy;    /* ## Q.931 */
  405.     } keypadFacility;
  406.  
  407.     struct        /* Per Q.931 4.5.27 */
  408.     {
  409.     void    *dummy;    /* ## Q.931 */
  410.     } userUserData;
  411.  
  412.     struct
  413.     {
  414.     void    *dummy;    /* ## Q.931 */
  415.     } facilityData;
  416. } isdnAddInfo_t;
  417.  
  418. /*
  419.  * Physical layer and framing protocol
  420.  * This type is used by:
  421.  *    isdnBproto_t
  422.  */
  423.  
  424. typedef isdnWord_t isdnB1proto_t;
  425.  
  426.     /* Values for isdnB1proto_t */
  427. #define B1PROTO_HDLC    0x0000    /* 64 kBit/s with HDLC framing */
  428. #define B1PROTO_TRANS    0x0001    /* 64 kBit/s transparent byte framing */
  429. #define B1PROTO_V110ASY    0x0002    /* V.110 async start/stop framing */
  430. #define B1PROTO_V110SY    0x0003    /* v.110 sync with HDLC framing */
  431. #define B1PROTO_T30    0x0004    /* T.30 modem for fax group 3 */
  432. #define B1PROTO_HDLCINV    0x0005    /* 64 kBit/s with inverted HDLC framing */
  433. #define B1PROTO_56TRANS    0x0006    /* 56 kBits/s transparent byte framing */
  434.  
  435. /*
  436.  * Data link layer protocol
  437.  * This type is used by:
  438.  *    isdnBproto_t
  439.  */
  440.  
  441. typedef isdnWord_t isdnB2proto_t;
  442.  
  443.     /* Values for isdnB2proto_t */
  444. #define B2PROTO_X75SLP    0x0000    /* ISO 7776 (X.25 SLP) */
  445. #define B2PROTO_TRANS    0x0001    /* Transparent */
  446. #define B2PROTO_SDLC    0x0002    /* SDLC */
  447. #define B2PROTO_LAPD    0x0003    /* LAPD (Q.921) for D channel X.25 */
  448. #define B2PROTO_T30    0x0004    /* T.30 for fax group 3 */
  449. #define B2PROTO_PPP    0x0005    /* Point to Point Protocol (PPP) */
  450. #define B2PROTO_ERTRANS    0x0006    /* Transparent ignoring B1 framing errors */
  451.  
  452. /*
  453.  * Network layer protocol
  454.  * This type is used by:
  455.  *    isdnBproto_t
  456.  */
  457.  
  458. typedef isdnWord_t isdnB3proto_t;
  459.  
  460.     /* Values for isdnB3proto_t */
  461. #define B3PROTO_TRANS    0x0000    /* Transparent */
  462. #define B3PROTO_T90NL    0x0001    /* T.90NL with T.70NL compatibility */
  463. #define B3PROTO_X25DTE    0x0002    /* ISO 8208 (X.25 DTE-DTE) */
  464. #define B3PROTO_X25DCE    0x0003    /* X.25 DCE */
  465. #define B3PROTO_T30    0x0004    /* T30 for fax group 3 */
  466.  
  467. /*
  468.  * B2 protocol mode of operation
  469.  * This type is used by:
  470.  *    isdnBproto_t
  471.  */
  472.  
  473. typedef isdnByte_t isdnModMode_t;
  474.  
  475.     /* Values for isdnModMode_t */
  476. #define BPROTO_MODE_NORM    8    /* Normal operation */
  477. #define BPROTO_MODE_EXTENDED    128    /* Extended operation */
  478.  
  479. /*
  480.  * B protocol selection and configuration.
  481.  *
  482.  * This type is used by:
  483.  *    ISDN_CONNECT.ISDN_REQ
  484.  *    ISDN_CONNECT.ISDN_RESP
  485.  *    ISDN_SELECT_B_PROTOCOL.ISDN_REQ
  486.  */
  487.  
  488. typedef struct isdnBproto
  489. {
  490.     isdnB1proto_t    B1proto;    /* Physical layer and framing proto */
  491.     isdnB2proto_t    B2proto;    /* Data link layer protocol */
  492.     isdnB3proto_t    B3proto;    /* Network layer protocol */
  493.  
  494.     struct isdnB1config        /* Physical layer and framing parameters */
  495.     {
  496.     isdnWord_t    rate;
  497.     isdnWord_t    dataBits;
  498.     isdnWord_t    parity;
  499.     isdnWord_t    stopBits;
  500.     } B1config;
  501.  
  502.     struct isdnB2config        /* Data link layer parameters */
  503.     {
  504.     isdnByte_t    addrA;
  505.     isdnByte_t    addrB;
  506.     isdnModMode_t    moduloMode;    /* Mode of operation */
  507.     isdnByte_t    windowSize;
  508.  
  509.     struct
  510.     {
  511.         void    *dummy;    /* only with protocol 2, XID response */
  512.     } xid;
  513.     } B2config;
  514.  
  515.     union isdnB3config        /* Network layer parameters */
  516.     {
  517.     struct            /* Used for protocols 1, 2, 3 */
  518.     {
  519.         isdnWord_t    lic;        /* Lowest incoming channel */
  520.         isdnWord_t    hic;        /* Highest incoming channel */
  521.         isdnWord_t    ltc;        /* Lowest two-way channel */
  522.         isdnWord_t    htc;        /* Highest two-way channel */
  523.         isdnWord_t    loc;        /* Lowest outgoing channel */
  524.         isdnWord_t    hoc;        /* highest outgoing channel */
  525.         isdnWord_t    moduloMode;    /* Mode of operation */
  526.         isdnWord_t    windowSize;
  527.     } P123;
  528.  
  529.     struct            /* Used for protocol 4 */
  530.     {
  531.         isdnWord_t    resolution;
  532.         isdnWord_t    format;
  533.         struct
  534.         {
  535.             void    *dummy;    /* ID of the calling station */
  536.         } station_id;
  537.         struct
  538.         {
  539.             void    *dummy;    /* headline sent on each fax page */
  540.         } headline;
  541.     } FAX;
  542.     } B3config;
  543.  
  544. } isdnBproto_t;
  545.  
  546. typedef struct isdnB1config isdnB1config_t;
  547. typedef struct isdnB2config isdnB2config_t;
  548. typedef union isdnB3config isdnB3config_t;
  549.  
  550. /*
  551.  * Bearer Capability
  552.  * This type is used by:
  553.  *    ISDN_CONNECT.ISDN_REQ
  554.  *    ISDN_CONNECT.ISDN_IND
  555.  * This type is described by Q.931 4.5.5
  556.  */
  557.  
  558. typedef struct isdnBC
  559. {
  560.     void    *dummy;    /* ## Q.931 */
  561. } isdnBC_t;
  562.  
  563. /*
  564.  * Called Party Number
  565.  * This type is used by:
  566.  *    ISDN_CONNECT.ISDN_REQ
  567.  *    ISDN_CONNECT.ISDN_IND
  568.  *    ## ISDN_INFO.ISDN_REQ
  569.  */
  570.  
  571. #define MAX_NUMBER_DIGITS    32    /* should be big enough */
  572.  
  573. typedef struct isdnCalledNbr
  574. {
  575.     isdnByte_t    type;                /* Num type and num plan id */
  576.     isdnByte_t    number[MAX_NUMBER_DIGITS];    /* Number digits */
  577. } isdnCalledNbr_t;
  578.  
  579. /*
  580.  * Called Party SubAddress
  581.  * This type is used by:
  582.  *    ISDN_CONNECT.ISDN_REQ
  583.  *    ISDN_CONNECT.ISDN_IND
  584.  */
  585.  
  586. typedef struct isdnCalledAdr
  587. {
  588.     isdnByte_t    type;                /* Type of subaddress */
  589.     isdnByte_t    number[MAX_NUMBER_DIGITS];    /* Number digits */
  590. } isdnCalledAdr_t;
  591.  
  592. /*
  593.  * Calling Party Number
  594.  * This type is used by:
  595.  *    ISDN_CONNECT.ISDN_REQ
  596.  *    ISDN_CONNECT.ISDN_IND
  597.  *    ISDN_LISTEN.ISDN_REQ
  598.  */
  599.  
  600. typedef struct isdnCallingNbr
  601. {
  602.     isdnByte_t    type;                /* Num type and num plan id */
  603.     isdnByte_t    pres;        /* Presentation and screening indicator */
  604.     isdnByte_t    number[MAX_NUMBER_DIGITS];    /* Number digits */
  605. } isdnCallingNbr_t;
  606.  
  607. /*
  608.  * Calling Party SubAddress
  609.  * This type is used by:
  610.  *    ISDN_CONNECT.ISDN_REQ
  611.  *    ISDN_CONNECT.ISDN_IND
  612.  *    ISDN_LISTEN.ISDN_REQ
  613.  */
  614.  
  615. typedef struct isdnCallingAdr
  616. {
  617.     isdnByte_t    type;                /* Type of subaddress */
  618.     isdnByte_t    number[MAX_NUMBER_DIGITS];    /* Number digits */
  619. } isdnCallingAdr_t;
  620.  
  621. /*
  622.  * Compatibility Information Profile Value
  623.  * This type is used by:
  624.  *    ISDN_CONNECT.ISDN_REQ
  625.  *    ISDN_CONNECT.ISDN_IND
  626.  */
  627.  
  628. typedef isdnWord_t isdnCIPvalue_t;
  629.  
  630.     /* Values for isdnCIPvalue_t */
  631. #define ISDN_CIPVAL_NONE     0    /* No predefined profile */
  632. #define ISDN_CIPVAL_SPEECH     1    /* Speech */
  633. #define ISDN_CIPVAL_UNRESTRICTED 2    /* Unrestricted digital information */
  634. #define ISDN_CIPVAL_RESTRICTED     3    /* restricted digital information */
  635. #define ISDN_CIPVAL_3KHZAUDIO     4    /* 3.1kHz audio */
  636. #define ISDN_CIPVAL_7KHZAUDIO     5    /* 7.0 kHz audio */
  637. #define ISDN_CIPVAL_VIDEO     6    /* video */
  638. #define ISDN_CIPVAL_PACKET     7    /* packet mode */
  639. #define ISDN_CIPVAL_56KRATEADAPT 8    /* 56 kBit/s rate adaptation */
  640. #define ISDN_CIPVAL_UNRESWANN     9    /* unrestricted digital w/ann */
  641. #define ISDN_CIPVAL_TELEPHONY    16    /* telephony */
  642. #define ISDN_CIPVAL_FAXGROUP23    17    /* fax group 2/3 */
  643. #define ISDN_CIPVAL_FAXGROUP4    18    /* fax group 4 class 1 */
  644. #define ISDN_CIPVAL_TELTXMIXED    19    /* Teletex (basic & mixed) */
  645. #define ISDN_CIPVAL_TELTXPROC    20    /* Teletex (basic & proc) */
  646. #define ISDN_CIPVAL_TELTXBASIC    21    /* Teletex (basic) */
  647. #define ISDN_CIPVAL_VIDEOTEX    22    /* Videotex */
  648. #define ISDN_CIPVAL_TELEX    23    /* Telex */
  649. #define ISDN_CIPVAL_X400    24    /* X.400 message handling*/
  650. #define ISDN_CIPVAL_X200    25    /* X.200 OSI applications */
  651. #define ISDN_CIPVAL_7KTELEPHONY 26    /* 7 kHz Telephony */
  652. #define ISDN_CIPVAL_VIDTELFIRST    27    /* Video Tel F.721, first */
  653. #define ISDN_CIPVAL_VIDTELSEC    28    /* Video Tel F.721, second */
  654.  
  655. /*
  656.  * Compatibility Information Profile Mask
  657.  * This type is used by:
  658.  *    ISDN_LISTEN.ISDN_REQ
  659.  */
  660.  
  661. typedef isdnDword_t isdnCIPmask_t;
  662.  
  663.     /* Bit fields for isdnCIPmask_t */
  664. #define ISDN_CIPMSK_NONE     0x00000000 /* No connect indicatations */
  665. #define ISDN_CIPMSK_ANY         0x00000001 /*  [0] any match */
  666. #define ISDN_CIPMSK_SPEECH     0x00000002 /*  [1] speech */
  667. #define ISDN_CIPMSK_UNRESTRICTED 0x00000004 /*  [2] unrestricted digital */
  668.                         /*      information         */
  669. #define ISDN_CIPMSK_RESTRICTED     0x00000008 /*  [3] restricted digital info */
  670. #define ISDN_CIPMSK_3KHZAUDIO     0x00000010 /*  [4] 3.1 kHz audio */
  671. #define ISDN_CIPMSK_7KHZAUDIO     0x00000020 /*  [5] 7.0 kHz audio */
  672. #define ISDN_CIPMSK_VIDEO     0x00000040 /*  [6] video */
  673. #define ISDN_CIPMSK_PACKET     0x00000080 /*  [7] packet mode */
  674. #define ISDN_CIPMSK_56KRATEADAPT 0x00000100 /*  [8] 56 kBit/s rate adapt */
  675. #define ISDN_CIPMSK_UNRESWANN     0x00000200 /*  [9] unrestricted digital */
  676.                         /*      with announcments    */
  677. #define ISDN_CIPMSK_TELEPHONY     0x00010000 /* [16] telephony */
  678. #define ISDN_CIPMSK_FAXGROUP23     0x00020000 /* [17] fax group 2/3 */
  679. #define ISDN_CIPMSK_FAXGROUP4     0x00040000 /* [18] fax group 4 class 1 */
  680. #define ISDN_CIPMSK_TELTXMIXED     0x00080000 /* [19] Teletex (basic & mixed) */
  681. #define ISDN_CIPMSK_TELTXPROC     0x00100000 /* [20] Teletex (basic & proc) */
  682. #define ISDN_CIPMSK_TELTXBASIC     0x00200000 /* [21] Teletex (basic) */
  683. #define ISDN_CIPMSK_VIDEOTEX     0x00400000 /* [22] Videotex */
  684. #define ISDN_CIPMSK_TELEX     0x00800000 /* [23] Telex */
  685. #define ISDN_CIPMSK_X400     0x01000000 /* [24] X.400 message handling */
  686. #define ISDN_CIPMSK_X200     0x02000000 /* [25] X.200 OSI applications */
  687. #define ISDN_CIPMSK_7KTELEPHONY     0x04000000 /* [26] 7 kHz Telephony */
  688. #define ISDN_CIPMSK_VIDTELFIRST     0x08000000 /* [27] Video Tel F.721, first */
  689. #define ISDN_CIPMSK_VIDTELSEC     0x10000000 /* [28] Video Tel F.721, second */
  690.  
  691. /*
  692.  * Connected Number
  693.  * This type is used by:
  694.  *    ISDN_CONNECT.ISDN_RESP
  695.  *    ISDN_CONNECT_ACTIVE.ISDN_IND
  696.  */
  697.  
  698. typedef struct isdnConnNbr
  699. {
  700.     isdnByte_t    type;                /* Num type and num plan id */
  701.     isdnByte_t    pres;        /* Presentation and screening indicator */
  702.     isdnByte_t    number[MAX_NUMBER_DIGITS];    /* Number digits */
  703. } isdnConnNbr_t;
  704.  
  705. /*
  706.  * Connected SubAddress
  707.  * This type is used by:
  708.  *    ISDN_CONNECT.ISDN_RESP
  709.  *    ISDN_CONNECT_ACTIVE.ISDN_IND
  710.  */
  711.  
  712. typedef struct isdnConnAdr
  713. {
  714.     isdnByte_t    type;                /* Type of subaddress */
  715.     isdnByte_t    number[MAX_NUMBER_DIGITS];    /* Number digits */
  716. } isdnConnAdr_t;
  717.  
  718. /*
  719.  * Controller
  720.  * This type is used by:
  721.  *    ISDN_CONNECT.ISDN_REQ
  722.  *    ISDN_LISTEN.ISDN_REQ
  723.  *    ISDN_LISTEN.ISDN_CONF
  724.  *    ISDN_MANUFACTURER.ISDN_REQ
  725.  *    ISDN_MANUFACTURER.ISDN_CONF
  726.  *    ISDN_MANUFACTURER.ISDN_IND
  727.  *    ISDN_MANUFACTURER.ISDN_RESP
  728.  *    ISDN_FACILITY.ISDN_REQ
  729.  *    ISDN_FACILITY.ISDN_CONF
  730.  *    ISDN_FACILITY.ISDN_IND
  731.  *    ISDN_FACILITY.ISDN_RESP
  732.  */
  733.  
  734. typedef isdnDword_t isdnCtrlr_t;
  735.  
  736.     /* Bit masks for isdnCtrlr_t */
  737. #define ISDN_CTLRMSK_UNUSED    0xffffff00    /* Reserved, set to zero */
  738. #define ISDN_CTLRMSK_EXT    0x00000080    /* 1=External, 0=Internal */
  739. #define ISDN_CTLRMSK_CTLR    0x0000007f    /* Controller */
  740.  
  741. /*
  742.  * Data
  743.  * This type is used by:
  744.  *    ISDN_DATA_B3.ISDN_REQ
  745.  *    ISDN_DATA_B3.ISDN_IND
  746.  */
  747.  
  748. typedef isdnDword_t isdnData_t;
  749.  
  750. /*
  751.  * Data Length
  752.  * This type is used by:
  753.  *    ISDN_DATA_B3.ISDN_REQ
  754.  *    ISDN_DATA_B3.ISDN_IND
  755.  */
  756.  
  757. typedef isdnWord_t isdnDataLen_t;
  758.  
  759. /*
  760.  * Data Handle
  761.  * This type is used by:
  762.  *    ISDN_DATA_B3.ISDN_REQ
  763.  *    ISDN_DATA_B3.ISDN_IND
  764.  */
  765.  
  766. typedef isdnWord_t isdnHandle_t;    /* ## Used? file handle?? */
  767.  
  768. /*
  769.  * Facility Selector
  770.  * This type is used by:
  771.  *    ISDN_FACILITY.ISDN_REQ
  772.  *    ISDN_FACILITY.ISDN_CONF
  773.  *    ISDN_FACILITY.ISDN_IND
  774.  *    ISDN_FACILITY.ISDN_RESP
  775.  */
  776.  
  777. typedef isdnWord_t isdnFacility_t;
  778.  
  779.     /* Values for isdnFacility_t */
  780. #define ISDN_FACILITY_HANDSET    0x0000    /* Handset Support */
  781. #define ISDN_FACILITY_DTMF    0x0001    /* DTMF */
  782.  
  783. /*
  784.  * Facility Request Parameter
  785.  * This type is used by:
  786.  *    ISDN_FACILITY.ISDN_REQ
  787.  */
  788.  
  789. typedef struct isdnFRP
  790. {
  791.     isdnWord_t    function;
  792.     isdnWord_t    toneDuration;
  793.     isdnWord_t    gapDuration;
  794.     struct
  795.     {
  796.         isdnByte_t    digits[MAX_NUMBER_DIGITS];
  797.     } DTMFdigits;
  798. } isdnFRP_t;
  799.  
  800. /*
  801.  * Facility Confirmation Parameter
  802.  * This type is used by:
  803.  *    ISDN_FACILITY.ISDN_CONF
  804.  */
  805.  
  806. typedef struct isdnFCP
  807. {
  808.     isdnWord_t    info;    /* DTMF information */
  809. } isdnFCP_t;
  810.  
  811. /*
  812.  * Facility Indication Parameter
  813.  * This type is used by:
  814.  *    ISDN_FACILITY.ISDN_IND
  815.  */
  816.  
  817. typedef struct isdnFIP
  818. {
  819.     isdnByte_t    digits[MAX_NUMBER_DIGITS];    /* Handset or DTMF digits */
  820. } isdnFIP_t;
  821.  
  822. /*
  823.  * Flags
  824.  * This type is used by:
  825.  *    ISDN_DATA_B3.ISDN_REQ
  826.  *    ISDN_DATA_B3.ISDN_IND
  827.  */
  828.  
  829. typedef isdnWord_t isdnFlags_t;
  830.  
  831.     /* Bit masks for isdnFlags_t */
  832. #define ISDN_DATAFLAG_QUALIFIERBIT    0x0001    /* Qualifier bit */
  833. #define ISDN_DATAFLAG_MOREDATA        0x0002    /* More data bit */
  834. #define ISDN_DATAFLAG_DELIVERYCONF    0x0004    /* Delivery confirmation bit */
  835. #define ISDN_DATAFLAG_EXPEDITEDDATA    0x0008    /* Expedited data */
  836. #define ISDN_DATAFLAG_FRAMINGERROR    0x8000    /* Framing error */
  837.  
  838. /*
  839.  * High Layer Compatibility
  840.  * This type is used by:
  841.  *    ISDN_CONNECT.ISDN_REQ
  842.  *    ISDN_CONNECT.ISDN_IND
  843.  */
  844.  
  845. typedef struct isdnHLC
  846. {
  847.     void    *dummy;        /* ## Q.931 */
  848. } isdnHLC_t;
  849.  
  850. /*
  851.  * Info - Information status code
  852.  * This type is used by:
  853.  *    ISDN_CONNECT.ISDN_CONF
  854.  *    ISDN_DISCONNECT.ISDN_CONF
  855.  *    ISDN_ALERT.ISDN_CONF
  856.  *    ISDN_INFO.ISDN_CONF
  857.  *    ISDN_CONNECT_B3.ISDN_CONF
  858.  *    ISDN_DISCONNECT_B3.ISDN_CONF
  859.  *    ISDN_DATA_B3.ISDN_CONF
  860.  *    ISDN_RESET_B3.ISDN_CONF
  861.  *    ISDN_LISTEN.ISDN_CONF
  862.  *    ISDN_FACILITY.ISDN_CONF
  863.  *    ISDN_SELECT_B_PROTOCOL.ISDN_CONF
  864.  */
  865.  
  866. typedef isdnWord_t    isdnInfo_t;
  867.  
  868.     /* Values for class 0x00xx:    Informative values (message was processed) */
  869. #define ISDN_INFOCODE00_OK    0x0000    /* Request accepted */
  870. #define ISDN_INFOCODE00_BADNCPI    0x0001    /* NCPI not supported, ignored */
  871. #define ISDN_INFOCODE00_NOSYS    0x0002    /* flags not supported, ignored */
  872. #define ISDN_INFOCODE00_EXIST    0x0003    /* Alert already sent by another */
  873.  
  874.     /* Values for class 0x10xx:    ISDN_REGISTER errors */
  875. #define ISDN_INFOCODE10_TMAPPS    0x1001    /* Too many applications */
  876. #define ISDN_INFOCODE10_SBSIZE    0x1002    /* Logical block size too small */
  877. #define ISDN_INFOCODE10_BTLARGE 0x1003    /* Buffer too large */
  878. #define ISDN_INFOCODE10_BTSMALL    0x1004    /* Message buffer too small */
  879. #define ISDN_INFOCODE10_INVALLC 0x1005    /* Invalid max logical connections */
  880. #define ISDN_INFOCODE10_RSVD    0x1006    /* Reserved */
  881. #define ISDN_INFOCODE10_BUSY    0x1007    /* Internal busy */
  882. #define ISDN_INFOCODE10_RESERR    0x1008    /* OS resource error */
  883. #define ISDN_INFOCODE10_NOCAPI    0x1009    /* ISDN not installed */
  884. #define ISDN_INFOCODE10_NOEXT    0x100a    /* Ctlr does not support external */
  885. #define ISDN_INFOCODE10_ONLYEXT    0x100b    /* Ctlr does not support internal */
  886.  
  887.     /* Values for class 0x11xx:    Message exchange function errors */
  888. #define ISDN_INFOCODE11_BADAPP    0x1101    /* Illegal application */
  889. #define ISDN_INFOCODE11_BADCMD    0x1102    /* Illegal cmd/subcmd/length */
  890. #define ISDN_INFOCODE11_FULL    0x1103    /* queue full */
  891. #define ISDN_INFOCODE11_EMPTY    0x1104    /* queue is empty */
  892. #define ISDN_INFOCODE11_OVFL    0x1105    /* queue overflow */
  893. #define ISDN_INFOCODE11_INVAL    0x1106    /* unknown notification param */
  894. #define ISDN_INFOCODE11_BUSY    0x1107    /* Internal busy */
  895. #define ISDN_INFOCODE11_RESERR    0x1108    /* OS resource error */
  896. #define ISDN_INFOCODE11_NOCAPI    0x1109    /* ISDN not installed */
  897. #define ISDN_INFOCODE11_NOEXT    0x110a    /* Ctlr does not support external */
  898. #define ISDN_INFOCODE11_ONLYEXT    0x110b    /* Ctlr does not support internal */
  899.  
  900.     /* Values for class 0x20xx:    Resource/coding problems */
  901. #define ISDN_INFOCODE20_ESTATE    0x2001    /* Message not supported in state */
  902. #define ISDN_INFOCODE20_EPLCI    0x2002    /* Illegal Ctlr/PLCI/NCCI */
  903. #define ISDN_INFOCODE20_NOPLCI    0x2003    /* Out of PLCI resources */
  904. #define ISDN_INFOCODE20_NONCCI    0x2004    /* Out of NCCI resources */
  905. #define ISDN_INFOCODE20_NOLIS    0x2005    /* Out of LISTEN resources */
  906. #define ISDN_INFOCODE20_NOFAX    0x2006    /* Out of FAX resources */
  907. #define ISDN_INFOCODE20_EPARAM    0x2007    /* illegal message parameter coding */
  908.  
  909.     /* Values for class 0x30xx:    Requested services not supported errors */
  910. #define ISDN_INFOCODE30_B1PROT    0x3001    /* B1 protocol not supported */
  911. #define ISDN_INFOCODE30_B2PROT    0x3002    /* B2 protocol not supported */
  912. #define ISDN_INFOCODE30_B3PROT    0x3003    /* B3 protocol not supported */
  913. #define ISDN_INFOCODE30_B1PARAM    0x3004    /* B1 proto parameter not supported */
  914. #define ISDN_INFOCODE30_B2PARAM    0x3005    /* B2 proto parameter not supported */
  915. #define ISDN_INFOCODE30_B3PARAM    0x3006    /* B3 proto parameter not supported */
  916. #define ISDN_INFOCODE30_BPROTC    0x3007    /* B proto combination not supported */
  917. #define ISDN_INFOCODE30_NCPI    0x3008    /* NCPI not supported */
  918. #define ISDN_INFOCODE30_CIP    0x3009    /* CIP not supported */
  919. #define ISDN_INFOCODE30_FLAGS    0x300a    /* flags not supported */
  920. #define ISDN_INFOCODE30_FACILTY    0x300b    /* facility not supported */
  921. #define ISDN_INFOCODE30_DATALEN    0x300c    /* data len not supported in protocol */
  922. #define ISDN_INFOCODE30_RESET    0x300d    /* reset not supported in proto */
  923.  
  924. /*
  925.  * Info Element
  926.  * This type is used by:
  927.  *    ISDN_INFO.ISDN_IND
  928.  */
  929.  
  930. typedef union isdnInfoEl
  931. {
  932.     void    *dummy;        /* ## Q.931 */
  933.     isdnDword_t    sum;
  934. } isdnInfoEl_t;
  935.  
  936. /*
  937.  * Information Mask
  938.  * This type is used by:
  939.  *    ISDN_LISTEN.ISDN_REQ
  940.  */
  941.  
  942. typedef isdnDword_t    isdnInfoMsk_t;
  943.  
  944.     /* Bit masks for isdnInfoMsk_t */
  945. #define ISDN_INFOMSK_CAUSE    0x00000001    /* [0] cause */
  946. #define ISDN_INFOMSK_DATETIME    0x00000002    /* [1] date/Time */
  947. #define ISDN_INFOMSK_DISPLAY    0x00000004    /* [2] display */
  948. #define ISDN_INFOMSK_USERINFO    0x00000008    /* [3] user-user info */
  949. #define ISDN_INFOMSK_CALLPROG    0x00000010    /* [4] call progression */
  950. #define ISDN_INFOMSK_FACILITY    0x00000020    /* [5] facility */
  951. #define ISDN_INFOMSK_CHARGING    0x00000040    /* [6] charging */
  952.  
  953. /*
  954.  * Information Number
  955.  * This type is used by:
  956.  *    ISDN_INFO.ISDN_IND
  957.  */
  958.  
  959. typedef isdnWord_t    isdnInfoNbr_t;
  960.  
  961.     /* Bit values for isdnInfoNbr_t */
  962. #define ISDN_INFONBRMSK_ELEMPTY    0x8000    /* [15] Info element empty */
  963. #define ISDN_INFONBRMSK_SUPINFO    0x4000    /* [14] supplementary info */
  964.  
  965. /*
  966.  * Low Layer Compatibility
  967.  * This type is used by:
  968.  *    ISDN_CONNECT.ISDN_REQ
  969.  *    ISDN_CONNECT.ISDN_IND
  970.  *    ISDN_CONNECT.ISDN_RESP
  971.  *    ISDN_CONNECT_ACTIVE.ISDN_IND
  972.  */
  973.  
  974. typedef struct isdnLLC
  975. {
  976.     void    *dummy;        /* ## Q.931 */
  977. } isdnLLC_t;
  978.  
  979. /*
  980.  * Manufacturers ID
  981.  * This type is used by:
  982.  *    ISDN_MANUFACTURER.ISDN_REQ
  983.  *    ISDN_MANUFACTURER.ISDN_CONF
  984.  *    ISDN_MANUFACTURER.ISDN_IND
  985.  *    ISDN_MANUFACTURER.ISDN_RESP
  986.  */
  987.  
  988. typedef isdnDword_t    isdnManuID_t;
  989.  
  990. /*
  991.  * Network Control Connection Identifier
  992.  * This type is used by:
  993.  *    ISDN_CONNECT_B3.ISDN_IND
  994.  *    ISDN_CONNECT_B3.ISDN_RESP
  995.  *    ISDN_CONNECT_B3_ACTIVE.ISDN_IND
  996.  *    ISDN_CONNECT_B3_ACTIVE.ISDN_RESP
  997.  *    ISDN_CONNECT_B3_T90_ACTIVE.ISDN_IND
  998.  *    ISDN_CONNECT_B3_T90_ACTIVE.ISDN_RESP
  999.  *    ISDN_DISCONNECT_B3.ISDN_REQ
  1000.  *    ISDN_DISCONNECT_B3.ISDN_CONF
  1001.  *    ISDN_DISCONNECT_B3.ISDN_IND
  1002.  *    ISDN_DISCONNECT_B3.ISDN_RESP
  1003.  *    ISDN_DATA_B3.ISDN_REQ
  1004.  *    ISDN_DATA_B3.ISDN_CONF
  1005.  *    ISDN_DATA_B3.ISDN_IND
  1006.  *    ISDN_DATA_B3.ISDN_RESP
  1007.  *    ISDN_RESET_B3.ISDN_REQ
  1008.  *    ISDN_RESET_B3.ISDN_CONF
  1009.  *    ISDN_RESET_B3.ISDN_IND
  1010.  *    ISDN_RESET_B3.ISDN_RESP
  1011.  */
  1012.  
  1013. typedef isdnDword_t     isdnNCCI_t;
  1014.  
  1015.     /* Bit fields for isdnNCCI_t */
  1016. #define ISDN_NCCIMSK_NCCI    0xffff0000    /* NCCI */
  1017. #define ISDN_NCCIMSK_PLCI    0x0000ff00    /* PLCI */
  1018. #define ISDN_NCCIMSK_EXT    0x00000080    /* 1=External, 0=Internal */
  1019. #define ISDN_NCCIMSK_CTLR    0x0000007f    /* Controller */
  1020.  
  1021. /*
  1022.  * Network Control Protocol Information
  1023.  * This type is used by:
  1024.  *    ISDN_CONNECT_B3.ISDN_REQ
  1025.  *    ISDN_CONNECT_B3.ISDN_IND
  1026.  *    ISDN_CONNECT_B3.ISDN_RESP
  1027.  *    ISDN_CONNECT_B3_ACTIVE.ISDN_IND
  1028.  *    ISDN_CONNECT_B3_T90_ACTIVE.ISDN_IND
  1029.  *    ISDN_DISCONNECT_B3.ISDN_REQ
  1030.  *    ISDN_DISCONNECT_B3.ISDN_IND
  1031.  *    ISDN_RESET_B3.ISDN_REQ
  1032.  *    ISDN_RESET_B3.ISDN_IND
  1033.  */
  1034.  
  1035. #define    MAX_PACKET_BYTES    16    /* may be enough */
  1036.  
  1037. typedef struct isdnNCPI
  1038. {
  1039.     struct
  1040.     {
  1041.     isdnByte_t    conf;
  1042.     isdnByte_t    chanGroup;
  1043.     isdnByte_t    chanNumb;
  1044.     isdnByte_t    packet_bytes[MAX_PACKET_BYTES]; /* X.25 PLP packet */
  1045.     } P123;                        /* bytes after type */
  1046.     struct
  1047.     {
  1048.     isdnWord_t    rate;
  1049.     isdnWord_t    resolution;
  1050.     isdnWord_t    format;
  1051.     isdnWord_t    pages;
  1052.     struct
  1053.     {
  1054.         void    *dummy;
  1055.     } recvdID;    /* ID of remote side */
  1056.     } FAX;
  1057. } isdnNCPI_t;
  1058.  
  1059. /*
  1060.  * Physical Link Connection Identification
  1061.  * This type is used by:
  1062.  *    ISDN_CONNECT.ISDN_CONF
  1063.  *    ISDN_CONNECT.ISDN_IND
  1064.  *    ISDN_CONNECT.ISDN_RESP
  1065.  *    ISDN_CONNECT_ACTIVE.ISDN_IND
  1066.  *    ISDN_CONNECT_ACTIVE.ISDN_RESP
  1067.  *    ISDN_DISCONNECT.ISDN_REQ
  1068.  *    ISDN_DISCONNECT.ISDN_CONF
  1069.  *    ISDN_DISCONNECT.ISDN_IND
  1070.  *    ISDN_DISCONNECT.ISDN_RESP
  1071.  *    ISDN_ALERT.ISDN_REQ
  1072.  *    ISDN_ALERT.ISDN_CONF
  1073.  *    ISDN_INFO.ISDN_REQ
  1074.  *    ISDN_INFO.ISDN_CONF
  1075.  *    ISDN_INFO.ISDN_IND
  1076.  *    ISDN_INFO.ISDN_RESP
  1077.  *    ISDN_CONNECT_B3.ISDN_REQ
  1078.  *    ISDN_CONNECT_B3.ISDN_CONF
  1079.  *    ISDN_SELECT_B_PROTOCOL.ISDN_REQ
  1080.  *    ISDN_SELECT_B_PROTOCOL.ISDN_CONF
  1081.  */
  1082.  
  1083. typedef isdnDword_t    isdnPLCI_t;
  1084.  
  1085.     /* Bit fields for isdnPLCI_t */
  1086. #define ISDN_PLCIMSK_PLCI    0x0000ff00    /* PLCI */
  1087. #define ISDN_PLCIMSK_EXT    0x00000080    /* 1=External, 0=Internal */
  1088. #define ISDN_PLCIMSK_CTLR    0x0000007f    /* Controller */
  1089.  
  1090. /*
  1091.  * Disconnect reason codes
  1092.  * This type is used by:
  1093.  *    ISDN_DISCONNECT_B3.ISDN_IND
  1094.  */
  1095.  
  1096. typedef isdnWord_t    isdnReason_t;
  1097.  
  1098.     /* Values for isdnReason_t */
  1099. #define ISDN_REASON_OK        0x0000    /* Normal clearing, no cause */
  1100. #define ISDN_REASON_L1PERR    0x3301    /* protocol error layer 1 */
  1101. #define ISDN_REASON_L2PERR    0x3302    /* protocol error layer 2 */
  1102. #define ISDN_REASON_L3PERR    0x3303    /* protocol error layer 3 */
  1103. #define ISDN_REASON_APPANS    0x3304    /* another application got that call */
  1104. #define ISDN_REASON_NET        0x3400    /* Disconnect caused by network */
  1105. #define ISDN_REASON_NETMASK    0x00ff    /* Cause info element from network */
  1106.  
  1107. /*
  1108.  * Disconnect_B3 reason codes
  1109.  * This type is used by:
  1110.  *    ISDN_DISCONNECT_B3.ISDN_IND
  1111.  */
  1112.  
  1113. typedef isdnWord_t    isdnReason_B3_t;
  1114.  
  1115.     /* Values for isdnReason_t */
  1116. #define ISDN_REASONB3_OK       0x0000    /* clearing according to protocol */
  1117. #define ISDN_REASONB3_L1PERR    0x3301    /* protocol error layer 1 */
  1118. #define ISDN_REASONB3_L2PERR    0x3302    /* protocol error layer 2 */
  1119. #define ISDN_REASONB3_L3PERR    0x3303    /* protocol error layer 3 */
  1120.                     /* T.30 specific reasons */
  1121. #define ISDN_REASONB3_CONNECT    0x3311    /* connect not sucessful */
  1122. #define ISDN_REASONB3_TRAINING    0x3312    /* no connect, training error */
  1123. #define ISDN_REASONB3_PRETRANS    0x3313    /* xfer mode supported be remote */
  1124. #define ISDN_REASONB3_RABORT    0x3314    /* remote abort */
  1125. #define ISDN_REASONB3_RPROCERR    0x3315    /* remote procedure error */
  1126. #define ISDN_REASONB3_LUNDERRUN    0x3316    /* local tx data underrun */
  1127. #define ISDN_REASONB3_LOVERFLOW 0x3317    /* local rx data overflow */
  1128. #define ISDN_REASONB3_LABORT    0x3318    /* local abort */
  1129. #define ISDN_REASONB3_PARAM    0x3319    /* illegal parameter coding */
  1130.  
  1131. /*
  1132.  * Reject
  1133.  * This type is used by:
  1134.  *    ISDN_CONNECT.ISDN_RESP
  1135.  *    ISDN_CONNECT_B3.ISDN_RESP
  1136.  */
  1137.  
  1138. typedef isdnWord_t    isdnReject_t;
  1139.  
  1140.     /* Values for isdnReject_t */
  1141. #define ISDN_REJECT_OK        0    /* Accept the call */
  1142. #define ISDN_REJECT_IGNORE    1    /* Ignore the call */
  1143. #define ISDN_REJECT_NORMAL    2    /* Reject, normal call clearing */
  1144. #define ISDN_REJECT_BUSY    3    /* Reject, user busy */
  1145. #define ISDN_REJECT_NOCIRCUIT    4    /* Reject, available circuit/channel */
  1146. #define ISDN_REJECT_FACILITY    5    /* Reject, facility rejected */
  1147. #define ISDN_REJECT_CHANNEL    6    /* Reject, channel unacceptable */
  1148. #define ISDN_REJECT_DESTINATION    7    /* Reject, incompatible destination */
  1149. #define ISDN_REJECT_OUTOFORDER    8    /* Reject, destination out of order */
  1150.  
  1151. /*
  1152.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  1153.  *                                     *
  1154.  *                                     *
  1155.  *        Command messages concerning signalling protocol         *
  1156.  *                                     *
  1157.  *                                     *
  1158.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  1159.  */
  1160.  
  1161. /*
  1162.  * ISDN_CONNECT
  1163.  *
  1164.  * ISDN_CONNECT.ISDN_REQ    Initiates an outgoing physical connection
  1165.  * ISDN_CONNECT.ISDN_CONF    Local confirmation of request
  1166.  * ISDN_CONNECT.ISDN_IND    Indicates an incoming physical connection
  1167.  * ISDN_CONNECT.ISDN_RESP    Response to indication
  1168.  */
  1169.  
  1170. #define ISDN_CONNECT        0x02
  1171.  
  1172. typedef struct isdn_connect_req
  1173. {
  1174.     isdnCtrlr_t        ctlr;        /* Controller */
  1175.     isdnCIPvalue_t    cip;        /* Compatibility Information Profile */
  1176.     isdnCalledNbr_t    calledNbr;    /* Called party number */
  1177.     isdnCallingNbr_t    callingNbr;    /* Calling party number */
  1178.     isdnCalledAdr_t    calledAddr;    /* Called party subaddress */
  1179.     isdnCallingAdr_t    callingAddr;    /* Calling party subaddress */
  1180.     isdnBproto_t    bProto;        /* B protocol to be used */
  1181.     isdnBC_t        bc;        /* Bearer Capability */
  1182.     isdnLLC_t        llc;        /* Low Layer Compatibility */
  1183.     isdnHLC_t        hlc;        /* High Layer Compatibility */
  1184.     isdnAddInfo_t    info;        /* Additional info elements */
  1185. } isdn_connect_req_t;
  1186.  
  1187. typedef struct isdn_connect_conf
  1188. {
  1189.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1190.     isdnInfo_t        info;        /* Information status code */
  1191. } isdn_connect_conf_t;
  1192.  
  1193. typedef struct isdn_connect_ind
  1194. {
  1195.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1196.     isdnCIPvalue_t    cip;        /* Compatibility Information Profile */
  1197.     isdnCalledNbr_t    calledNbr;    /* Called party number */
  1198.     isdnCallingNbr_t    callingNbr;    /* Calling party number */
  1199.     isdnCalledAdr_t    calledAddr;    /* Called party subaddress */
  1200.     isdnCallingAdr_t    callingAddr;    /* Calling party subaddress */
  1201.     isdnBC_t        bc;        /* Bearer Capability */
  1202.     isdnLLC_t        llc;        /* Low Layer Compatibility */
  1203.     isdnHLC_t        hlc;        /* High Layer Compatibility */
  1204.     isdnAddInfo_t    info;        /* Additional info elements */
  1205. } isdn_connect_ind_t;
  1206.  
  1207. typedef struct isdn_connect_resp
  1208. {
  1209.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1210.     isdnReject_t    reject;        /* Reject */
  1211.     isdnBproto_t    bProto;        /* B protocol to be used */
  1212.     isdnConnNbr_t    ConnNbr;    /* Connected number */
  1213.     isdnConnAdr_t    ConnAddr;    /* Connected subaddress */
  1214.     isdnLLC_t        llc;        /* Low Layer Compatibility */
  1215.     isdnAddInfo_t    info;        /* Additional info elements */
  1216. } isdn_connect_resp_t;
  1217.  
  1218. /*
  1219.  * ISDN_CONNECT_ACTIVE
  1220.  *
  1221.  * ISDN_CONNECT_ACTIVE.ISDN_IND  Indicates the activation of a physical conn
  1222.  * ISDN_CONNECT_ACTIVE.ISDN_RESP Response to indication
  1223.  */
  1224.  
  1225. #define ISDN_CONNECT_ACTIVE    0x03
  1226.  
  1227. UNUSED_MSG_TYPE(isdn_connect_active_req_t);
  1228. UNUSED_MSG_TYPE(isdn_connect_active_conf_t);
  1229.  
  1230. typedef struct isdn_connect_active_ind
  1231. {
  1232.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1233.     isdnConnNbr_t    ConnNbr;    /* Connected number */
  1234.     isdnConnAdr_t    ConnAddr;    /* Connected subaddress */
  1235.     isdnLLC_t        llc;        /* Low Layer Compatibility */
  1236. } isdn_connect_active_ind_t;
  1237.  
  1238. typedef struct isdn_connect_active_resp
  1239. {
  1240.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1241. } isdn_connect_active_resp_t;
  1242.  
  1243. /*
  1244.  * ISDN_DISCONNECT
  1245.  *
  1246.  * ISDN_DISCONNECT.ISDN_REQ    Initiates clearing of a physical connection
  1247.  * ISDN_DISCONNECT.ISDN_CONF    Local confirmation of request
  1248.  * ISDN_DISCONNECT.ISDN_IND    Indicates the clearing of a physical connection
  1249.  * ISDN_DISCONNECT.ISDN_RESP    Response to indication
  1250.  */
  1251.  
  1252. #define ISDN_DISCONNECT        0x04
  1253.  
  1254. typedef struct isdn_disconnect_req
  1255. {
  1256.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1257.     isdnAddInfo_t    info;        /* Additional info elements */
  1258. } isdn_disconnect_req_t;
  1259.  
  1260. typedef struct isdn_disconnect_conf
  1261. {
  1262.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1263.     isdnInfo_t        info;        /* Information status code */
  1264. } isdn_disconnect_conf_t;
  1265.  
  1266. typedef struct isdn_disconnect_ind
  1267. {
  1268.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1269.     isdnReason_t    reason;        /* Disconnect reason codes */
  1270. } isdn_disconnect_ind_t;
  1271.  
  1272. typedef struct isdn_disconnect_resp
  1273. {
  1274.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1275. } isdn_disconnect_resp_t;
  1276.  
  1277. /*
  1278.  * ISDN_ALERT
  1279.  *
  1280.  * ISDN_ALERT.ISDN_REQ        Initiates compatibility to call
  1281.  * ISDN_ALERT.ISDN_CONF        Local confirmation of request
  1282.  */
  1283.  
  1284. #define ISDN_ALERT        0x01
  1285.  
  1286. typedef struct isdn_alert_req
  1287. {
  1288.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1289.     isdnAddInfo_t    info;        /* Additional info elements */
  1290. } isdn_alert_req_t;
  1291.  
  1292. typedef struct isdn_alert_conf
  1293. {
  1294.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1295.     isdnInfo_t        info;        /* Information status code */
  1296. } isdn_alert_conf_t;
  1297.  
  1298. UNUSED_MSG_TYPE(isdn_alert_ind_t);
  1299. UNUSED_MSG_TYPE(isdn_alert_resp_t);
  1300.  
  1301. /*
  1302.  * ISDN_INFO
  1303.  *
  1304.  * ISDN_INFO.ISDN_REQ    Initiates sending of signalling
  1305.  * ISDN_INFO.ISDN_CONF    Local confirmation of request
  1306.  * ISDN_INFO.ISDN_IND    Indicates selected signalling info
  1307.  * ISDN_INFO.ISDN_RESP    Response to indication
  1308.  */
  1309.  
  1310. #define ISDN_INFO        0x08
  1311.  
  1312. typedef struct isdn_info_req
  1313. {
  1314.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1315.     isdnCalledNbr_t    calledNbr;    /* Called party number */
  1316.     isdnAddInfo_t    info;        /* Additional info elements */
  1317. } isdn_info_req_t;
  1318.  
  1319. typedef struct isdn_info_conf
  1320. {
  1321.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1322.     isdnInfo_t        info;        /* Information status code */
  1323. } isdn_info_conf_t;
  1324.  
  1325. typedef struct isdn_info_ind
  1326. {
  1327.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1328.     isdnInfoNbr_t    infoNumber;    /* Information element identifier */
  1329.     isdnInfoEl_t    infoElement;    /* Information element */
  1330. } isdn_info_ind_t;
  1331.  
  1332. typedef struct isdn_info_resp
  1333. {
  1334.     isdnPLCI_t        plci;        /* Controller/PLCI */
  1335. } isdn_info_resp_t;
  1336.  
  1337. /*
  1338.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  1339.  *                                     *
  1340.  *                                     *
  1341.  *        Command messages concerning logical connections         *
  1342.  *                                     *
  1343.  *                                     *
  1344.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  1345.  */
  1346.  
  1347. /*
  1348.  * ISDN_CONNECT_B3
  1349.  *
  1350.  * ISDN_CONNECT_B3.ISDN_REQ    Outgoing logical connection
  1351.  * ISDN_CONNECT_B3.ISDN_CONF    Local confirmation of request
  1352.  * ISDN_CONNECT_B3.ISDN_IND    Incoming logical connection
  1353.  * ISDN_CONNECT_B3.ISDN_RESP    Response to indication
  1354.  */
  1355.  
  1356. #define ISDN_CONNECT_B3        0x82
  1357.  
  1358. typedef struct isdn_connect_b3_req
  1359. {
  1360.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1361.     isdnNCPI_t        ncpi;        /* Network Control Protocol Info */
  1362. } isdn_connect_b3_req_t;
  1363.  
  1364. typedef struct isdn_connect_b3_conf
  1365. {
  1366.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1367.     isdnInfo_t        info;        /* Information status code */
  1368. } isdn_connect_b3_conf_t;
  1369.  
  1370. typedef struct isdn_connect_b3_ind
  1371. {
  1372.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1373.     isdnNCPI_t        ncpi;        /* Network Control Protocol Info */
  1374. } isdn_connect_b3_ind_t;
  1375.  
  1376. typedef struct isdn_connect_b3_resp
  1377. {
  1378.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1379.     isdnReject_t    reject;        /* Reject */
  1380.     isdnNCPI_t        ncpi;        /* Network Control Protocol Info */
  1381. } isdn_connect_b3_resp_t;
  1382.  
  1383. /*
  1384.  * ISDN_CONNECT_B3_ACTIVE
  1385.  *
  1386.  * ISDN_CONNECT_B3_ACTIVE.ISDN_IND    Activation of logical connection
  1387.  * ISDN_CONNECT_B3_ACTIVE.ISDN_RESP    Response to indication
  1388.  */
  1389.  
  1390. #define ISDN_CONNECT_B3_ACTIVE    0x83
  1391.  
  1392. UNUSED_MSG_TYPE(isdn_connect_b3_active_req_t);
  1393. UNUSED_MSG_TYPE(isdn_connect_b3_active_conf_t);
  1394.  
  1395. typedef struct isdn_connect_b3_active_ind
  1396. {
  1397.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1398.     isdnNCPI_t        ncpi;        /* Network Control Protocol Info */
  1399. } isdn_connect_b3_active_ind_t;
  1400.  
  1401. typedef struct isdn_connect_b3_active_resp
  1402. {
  1403.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1404. } isdn_connect_b3_active_resp_t;
  1405.  
  1406. /*
  1407.  * ISDN_CONNECT_B3_T90_ACTIVE
  1408.  *
  1409.  * ISDN_CONNECT_B3_T90_ACTIVE.ISDN_IND    Switching from T.70NL to T.90NL
  1410.  * ISDN_CONNECT_B3_T90_ACTIVE.ISDN_RESP    Response to indication
  1411.  */
  1412.  
  1413. #define ISDN_CONNECT_B3_T90_ACTIVE    0x88
  1414.  
  1415. UNUSED_MSG_TYPE(isdn_connect_b3_t90_active_req_t);
  1416. UNUSED_MSG_TYPE(isdn_connect_b3_t90_active_conf_t);
  1417.  
  1418. typedef struct isdn_connect_b3_t90_active_ind
  1419. {
  1420.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1421.     isdnNCPI_t        ncpi;        /* Network Control Protocol Info */
  1422. } isdn_connect_b3_t90_active_ind_t;
  1423.  
  1424. typedef struct isdn_connect_b3_t90_active_resp
  1425. {
  1426.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1427. } isdn_connect_b3_t90_active_resp_t;
  1428.  
  1429. /*
  1430.  * ISDN_DISCONNECT_B3
  1431.  *
  1432.  * ISDN_DISCONNECT_B3.ISDN_REQ    Clear a logical connection
  1433.  * ISDN_DISCONNECT_B3.ISDN_CONF    Local confirmation of request
  1434.  * ISDN_DISCONNECT_B3.ISDN_IND    Logical connection clear
  1435.  * ISDN_DISCONNECT_B3.ISDN_RESP    Response to indication
  1436.  */
  1437.  
  1438. #define ISDN_DISCONNECT_B3    0x84
  1439.  
  1440. typedef struct isdn_disconnect_b3_req
  1441. {
  1442.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1443.     isdnNCPI_t        ncpi;        /* Network Control Protocol Info */
  1444. } isdn_disconnect_b3_req_t;
  1445.  
  1446. typedef struct isdn_disconnect_b3_conf
  1447. {
  1448.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1449.     isdnInfo_t        info;        /* Information status code */
  1450. } isdn_disconnect_b3_conf_t;
  1451.  
  1452. typedef struct isdn_disconnect_b3_ind
  1453. {
  1454.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1455.     isdnReason_B3_t    reason;        /* Disconnect reason codes */
  1456.     isdnNCPI_t        ncpi;        /* Network Control Protocol Info */
  1457. } isdn_disconnect_b3_ind_t;
  1458.  
  1459. typedef struct isdn_disconnect_b3_resp
  1460. {
  1461.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1462. } isdn_disconnect_b3_resp_t;
  1463.  
  1464. /*
  1465.  * ISDN_DATA_B3
  1466.  *
  1467.  * ISDN_DATA_B3.ISDN_REQ    Sending data on logical
  1468.  * ISDN_DATA_B3.ISDN_CONF    Local confirmation of request
  1469.  * ISDN_DATA_B3.ISDN_IND    Incoming data on logical conn
  1470.  * ISDN_DATA_B3.ISDN_RESP    Response to indication
  1471.  */
  1472.  
  1473. #define ISDN_DATA_B3        0x86
  1474.  
  1475. typedef struct isdn_data_b3_req
  1476. {
  1477.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1478.     isdnData_t        data;        /* Data pointer, not used */
  1479.     isdnDataLen_t    dataLen;    /* Data length */
  1480.     isdnHandle_t    dataHandle;
  1481.     isdnFlags_t        flags;
  1482. } isdn_data_b3_req_t;
  1483.  
  1484. typedef struct isdn_data_b3_conf
  1485. {
  1486.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1487.     isdnWord_t        dataHandle;
  1488.     isdnInfo_t        info;        /* Information status code */
  1489. } isdn_data_b3_conf_t;
  1490.  
  1491. typedef struct isdn_data_b3_ind
  1492. {
  1493.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1494.     isdnData_t        data;        /* Data pointer, not used */
  1495.     isdnDataLen_t    dataLen;    /* Data length */
  1496.     isdnHandle_t    dataHandle;
  1497.     isdnFlags_t        flags;
  1498. } isdn_data_b3_ind_t;
  1499.  
  1500. typedef struct isdn_data_b3_resp
  1501. {
  1502.     isdnNCCI_t        ncci;    /* Network Control Connection ID */
  1503.     isdnWord_t        dataHandle;
  1504. } isdn_data_b3_resp_t;
  1505.  
  1506. /*
  1507.  * ISDN_RESET_B3
  1508.  *
  1509.  * ISDN_RESET_B3.ISDN_REQ    Reset of a logical connection
  1510.  * ISDN_RESET_B3.ISDN_CONF    Local confirmation of request
  1511.  * ISDN_RESET_B3.ISDN_IND    Reset of a logical connection
  1512.  * ISDN_RESET_B3.ISDN_RESP    Response to indication
  1513.  */
  1514.  
  1515. #define ISDN_RESET_B3        0x87
  1516.  
  1517. typedef struct isdn_reset_b3_req
  1518. {
  1519.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1520.     isdnNCPI_t        ncpi;        /* Network Control Protocol Info */
  1521. } isdn_reset_b3_req_t;
  1522.  
  1523. typedef struct isdn_reset_b3_conf
  1524. {
  1525.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1526.     isdnInfo_t        info;        /* Information status code */
  1527. } isdn_reset_b3_conf_t;
  1528.  
  1529. typedef struct isdn_reset_b3_ind
  1530. {
  1531.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1532.     isdnNCPI_t        ncpi;        /* Network Control Protocol Info */
  1533. } isdn_reset_b3_ind_t;
  1534.  
  1535. typedef struct isdn_reset_b3_resp
  1536. {
  1537.     isdnNCCI_t        ncci;        /* Network Control Connection ID */
  1538. } isdn_reset_b3_resp_t;
  1539.  
  1540. /*
  1541.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  1542.  *                                     *
  1543.  *                                     *
  1544.  *        Administrative and other command messages         *
  1545.  *                                     *
  1546.  *                                     *
  1547.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  1548.  */
  1549.  
  1550. /*
  1551.  * ISDN_LISTEN
  1552.  *
  1553.  * ISDN_LISTEN.ISDN_REQ        Activates call indications
  1554.  * ISDN_LISTEN.ISDN_CONF    Local confirmation of request
  1555.  */
  1556.  
  1557. #define ISDN_LISTEN        0x05
  1558.  
  1559. typedef struct isdn_listen_req
  1560. {
  1561.     isdnCtrlr_t        ctlr;        /* Controller */
  1562.     isdnInfoMsk_t    infoMask;    /* Information mask */
  1563.     isdnCIPmask_t    cipMask;
  1564.     isdnCIPmask_t    cipMask2;
  1565.     isdnCallingNbr_t    callingNbr;    /* Calling party number */
  1566.     isdnCallingAdr_t    callingAddr;    /* Calling party subaddress */
  1567. } isdn_listen_req_t;
  1568.  
  1569. typedef struct isdn_listen_conf
  1570. {
  1571.     isdnCtrlr_t        ctlr;        /* Controller */
  1572.     isdnInfo_t        info;        /* Information status code */
  1573. } isdn_listen_conf_t;
  1574.  
  1575. UNUSED_MSG_TYPE(isdn_listen_ind_t);
  1576. UNUSED_MSG_TYPE(isdn_listen_resp_t);
  1577.  
  1578. /*
  1579.  * ISDN_FACILITY
  1580.  *
  1581.  * ISDN_FACILITY.ISDN_REQ    Requests additional facilities
  1582.  * ISDN_FACILITY.ISDN_CONF    Local confirmation of request
  1583.  * ISDN_FACILITY.ISDN_IND    Indicates additional facilities
  1584.  * ISDN_FACILITY.ISDN_RESP    Response to indication
  1585.  */
  1586.  
  1587. #define ISDN_FACILITY        0x80
  1588.  
  1589. typedef struct isdn_facility_req
  1590. {
  1591.     isdnCtrlr_t        ctlr;        /* Controller/PLCI/NCCI */
  1592.     isdnFacility_t    selector;    /* Facility selector */
  1593.     isdnFRP_t        frp;        /* Facility request parameter */
  1594. } isdn_facility_req_t;
  1595.  
  1596. typedef struct isdn_facility_conf
  1597. {
  1598.     isdnCtrlr_t        ctlr;        /* Controller/PLCI/NCCI */
  1599.     isdnInfo_t        info;        /* Information status code */
  1600.     isdnFacility_t    selector;    /* Facility selector */
  1601.     isdnFCP_t        fcp;        /* Facility confirmation parameter */
  1602. } isdn_facility_conf_t;
  1603.  
  1604. typedef struct isdn_facility_ind
  1605. {
  1606.     isdnCtrlr_t        ctlr;        /* Controller/PLCI/NCCI */
  1607.     isdnFacility_t    selector;    /* Facility selector */
  1608.     isdnFIP_t        fip;        /* Facility indication parameter */
  1609. } isdn_facility_ind_t;
  1610.  
  1611. typedef struct isdn_facility_resp
  1612. {
  1613.     isdnCtrlr_t        ctlr;        /* Controller/PLCI/NCCI */
  1614.     isdnFacility_t    selector;    /* Facility selector */
  1615. } isdn_facility_resp_t;
  1616.  
  1617. /*
  1618.  * ISDN_SELECT_B_PROTOCOL
  1619.  *
  1620.  * ISDN_SELECT_B_PROTOCOL.ISDN_REQ    Selects current protocol stack
  1621.  * ISDN_SELECT_B_PROTOCOL.ISDN_CONF    Local confirmation of request
  1622.  */
  1623.  
  1624. #define ISDN_SELECT_B_PROTOCOL    0x41
  1625.  
  1626. typedef struct isdn_select_b_protocol_req
  1627. {
  1628.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1629.     isdnBproto_t    bProto;        /* B protocol to be used */
  1630. } isdn_select_b_protocol_req_t;
  1631.  
  1632. typedef struct isdn_select_b_protocol_conf
  1633. {
  1634.     isdnPLCI_t        plci;        /* Physical Link Connection Ident */
  1635.     isdnInfo_t        info;        /* Information status code */
  1636. } isdn_select_b_protocol_conf_t;
  1637.  
  1638. UNUSED_MSG_TYPE(isdn_select_b_protocol_ind_t);
  1639. UNUSED_MSG_TYPE(isdn_select_b_protocol_resp_t);
  1640.  
  1641. /*
  1642.  * ISDN_MANUFACTURER
  1643.  *
  1644.  * ISDN_MANUFACTURER.ISDN_REQ    Manufacturer specific operation
  1645.  * ISDN_MANUFACTURER.ISDN_CONF    Manufacturer specific operation
  1646.  * ISDN_MANUFACTURER.ISDN_IND    Manufacturer specific operation
  1647.  * ISDN_MANUFACTURER.ISDN_RESP    Manufacturer specific operation
  1648.  *
  1649.  * The structure passed in the data portion of these messages is
  1650.  * manufacturer implementation specific.  The first element of
  1651.  * each, however is a isdn_manufacturer_hdr_t.
  1652.  */
  1653.  
  1654. #define ISDN_MANUFACTURER    0xFF    /* Manufacturer specific operation */
  1655.  
  1656. typedef struct isdn_manufacturer_hdr
  1657. {
  1658.     isdnCtrlr_t        ctlr;        /* Controller */
  1659.     isdnManuID_t    manuID;        /* Manufacturers Identification */
  1660. } isdn_manufacturer_hdr_t;
  1661.  
  1662. #ifndef HAS_ISDN_MFGR_REQ
  1663.     typedef struct isdn_manufacturer_req
  1664.     {
  1665.     isdn_manufacturer_hdr_t    Head;
  1666.     isdnU8_t        data[1];
  1667.     } isdn_manufacturer_req_t;
  1668. #endif
  1669.  
  1670. #ifndef HAS_ISDN_MFGR_CONF
  1671.     typedef struct isdn_manufacturer_conf
  1672.     {
  1673.     isdn_manufacturer_hdr_t    Head;
  1674.     isdnU8_t        data[1];
  1675.     } isdn_manufacturer_conf_t;
  1676. #endif
  1677.  
  1678. #ifndef HAS_ISDN_MFGR_IND
  1679.     typedef struct isdn_manufacturer_ind
  1680.     {
  1681.     isdn_manufacturer_hdr_t    Head;
  1682.     isdnU8_t        data[1];
  1683.     } isdn_manufacturer_ind_t;
  1684. #endif
  1685.  
  1686. #ifndef HAS_ISDN_MFGR_RESP
  1687.     typedef struct isdn_manufacturer_resp
  1688.     {
  1689.     isdn_manufacturer_hdr_t    Head;
  1690.     isdnU8_t        data[1];
  1691.     } isdn_manufacturer_resp_t;
  1692. #endif
  1693.  
  1694. /*
  1695.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  1696.  *
  1697.  * Protocol information structure declarations
  1698.  *
  1699.  * These are pre-declared pinfo structures that can be used
  1700.  * in the dials(3N) routine to make a call of a particular type.
  1701.  *
  1702.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  1703.  */
  1704.  
  1705. typedef struct isdn_pinfo {
  1706. isdnNCCI_t    NCCI;        /* NCCI, connection identifier */
  1707. isdnCIPvalue_t    CIPvalue;    /* Compatibility Information Profile */
  1708. isdnByte_t    protocol_info[64]; /* protocol info variable length array */
  1709. } isdn_pinfo_t;
  1710.  
  1711. #define    PINFO_ISDN_SYNC    \
  1712.     /* Unrestricted digital information, HDLC framing */\
  1713. { 0, /* NCCI, connection identifier, returned by dialer */\
  1714. \
  1715.   2, /* Compatibility Information Profile, determines Bearer Capatibility */\
  1716.      /* and sometimes High Layer Compatibility in Q.931 SETUP message     */\
  1717. \
  1718.   9, /* size of B Protocol structure */\
  1719.   0, /* B1 Protocol, 0 = 64 kBits with HDLC framing */\
  1720.   0,\
  1721.   1, /* B2 Protocol, 1 = transparent                */\
  1722.   0,\
  1723.   0, /* B3 Protocol, 0 = transparent                */\
  1724.   0,\
  1725.   0, /* B1 Configuration structure size, 0, not used */\
  1726.   0, /* B2 Configuration structure size, 0, not used */\
  1727.   0, /* B3 Configuration structure size, 0, not used */\
  1728. \
  1729.   0, /* Q.931 SETUP message Bearer Capability, 0, not used */\
  1730.   0, /* Q.931 SETUP message Low Layer Capability, 0, not used */\
  1731.   0, /* Q.931 SETUP message High Layer Compatibility, 0, not used */\
  1732.   0  /* Additional information elements, 0, none */\
  1733. }\
  1734.  
  1735. #endif    /* _IO_ND_SYS_SCOISDN_H */
  1736.