isdnio man page on OpenIndiana

Man page or keyword search:  
man Server   20441 pages
apropos Keyword Search (all sections)
Output format
OpenIndiana logo
[printable version]

isdnio(7I)			Ioctl Requests			    isdnio(7I)

NAME
       isdnio - ISDN interfaces

SYNOPSIS
       #include <sun/audioio.h>
       #include <sun/isdnio.h>

       int ioctl(int fd, int command, /* arg */ ...);

DESCRIPTION
       ISDN  ioctl  commands are a subset of  ioctl(2) commands that perform a
       variety of control functions on	Integrated  Services  Digital  Network
       (ISDN) STREAMS devices. The arguments command and arg are passed to the
       file designated by fd and are interpreted by the ISDN device driver.

       fd is an open file descriptor that refers to a stream.  command	deter‐
       mines  the  control function to be performed as described in the IOCTLS
       section of this document. arg represents additional information that is
       needed by command. The type of arg depends upon the command, but gener‐
       ally it is an integer or a pointer to a	command-specific  data	struc‐
       ture.

       Since  these ISDN commands are a subset of ioctl and streamio(7I), they
       are subject to errors as described in those interface descriptions.

       This set of generic ISDN ioctl commands is  meant  to  control  various
       types  of  ISDN	STREAMS	 device drivers. The following paragraphs give
       some background on various types of ISDN hardware interfaces  and  data
       formats, and other device characteristics.

   Controllers, Interfaces, and Channels
       This  manual  page  discusses operations on, and facilities provided by
       ISDN controllers, interfaces and channels. A controller	is  usually  a
       hardware	 peripheral  device  that provides one or more ISDN interfaces
       and zero or more auxiliary interfaces. In this context, the term inter‐
       face is synonymous with the term "port". Each interface can provide one
       or more channels.

   Time Division Multiplexed Serial Interfaces
       ISDN BRI-TE, BRI-NT, and PRI interfaces are all examples of Time	 Divi‐
       sion  Multiplexed  Serial  Interfaces. As an example, a Basic Rate ISDN
       (BRI) Terminal Equipment (TE) interface provides one D-channel and  two
       B-channels on the same set of signal wires. The BRI interface, at the S
       reference point, operates at a bit rate of 192,000 bits per second. The
       bits  are  encoded  using  a pseudoternary coding system that encodes a
       logic one as zero volts, and a logic zero as  a	positive  or  negative
       voltage. Encoding rules state that adjacent logic zeros must be encoded
       with opposite voltages. Violations of this rule are  used  to  indicate
       framing	information  such  that there are 4000 frames per second, each
       containing 48 bits. These  48  bits  are	 divided  into	channels.  Not
       including framing and synchronization bits, the frame is divided into 8
       bits for the B1-channel, 1 bit for the D-channel, 8 bits for B2, 1  bit
       for D, 8 bits for B1, 1 bit for D, and 8 bits for B2. This results in a
       64,000 bps B1-channel, a 64,000 bps B2-channel, and  a  16,000  bps  D-
       channel, all on the same serial interface.

   Basic Rate ISDN
       A  Basic	 Rate  ISDN (BRI) interface consists of a 16000 bit per second
       Delta Channel (D-channel) for signaling and X.25	 packet	 transmission,
       and two 64000 bit per second Bearer Channels (B-channels) for transmis‐
       sion of voice or data.

       The CCITT recommendations on ISDN Basic Rate interfaces,	 I.430,	 iden‐
       tify    several	  "reference   points"	 for   standardization.	  From
       (Stallings89): Reference point T (terminal) corresponds	to  a  minimal
       ISDN  network  termination at the customer's premises. It separates the
       network provider's equipment from the user's equipment. Reference point
       S  (system)  corresponds to the interface of individual ISDN terminals.
       It separates user terminal equipment  from  network-related  communica‐
       tions functions. Reference point R (rate) provides a non-ISDN interface
       between user equipment that is not ISDN-compatible and  adaptor	equip‐
       ment.  ...  The	final reference point ... is reference point U (user).
       This interface describes the full-duplex data signal on the  subscriber
       line.

       Some  older  technology	components  of some ISDN networks occasionally
       steal the low order bit of an ISDN B-channel octet in order to transmit
       in-band	signaling  information between switches or other components of
       the network. Even when out-of-band signaling has	 been  implemented  in
       these networks, and the in-band signaling is no longer needed, the bit-
       robbing mechanism may still be present. This bit robbing behavior  does
       not appreciably affect a voice call, but it will limit the usable band‐
       width of a data call to 56000 bits per second instead of 64000 bits per
       second. These older network components only seem to exist in the United
       States of America, Canada and Japan. ISDN  B-channel  data  calls  that
       have one end point in the United States, Canada or Japan may be limited
       to 56000 bps usable bandwidth instead of the normal  64000  bps.	 Some‐
       times  the  ISDN service provider may be able to supply 56kbps for some
       calls and 64kbps for other calls. On an international call,  the	 local
       ISDN service provider may advertise the call as 64kbps even though only
       56kbps are reliably delivered because of	 bit-robbing  in  the  foreign
       ISDN that is not reported to the local switch.

       A  Basic	 Rate  Interface  implements  either a Terminal Equipment (TE)
       interface or a Network Termination (NT) interface.  TE's	 can  be  ISDN
       telephones,  a Group 4 fax, or other ISDN terminal equipment. A TE con‐
       nects to an NT in order to gain access to a public or private ISDN net‐
       work.  A	 private  ISDN	network,  such as provided by a Private Branch
       Exchange (PBX), usually provides access to the public network.

       If multi-point configurations are allowed by an NT, it may be  possible
       to  connect  up to eight TE's to a single NT interface. All of the TE's
       in a multipoint configuration share the same  D	and  B-channels.  Con‐
       tention	for  B-Channels by multiple TEs is resolved by the ISDN switch
       (NT) through signaling protocols on the D-channel.

       Contention for access to the D-channel is managed by a collision detec‐
       tion  and  priority  mechanism.	D-channel  call	 control messages have
       higher priority than other packets. This media access function is  man‐
       aged at the physical layer.

       A BRI-TE interface may implement a "Q-channel", the Q-channel is a slow
       speed, 800 bps, data path from a TE to an NT. Although the structure of
       the  Q-channel is defined in the I.430 specification, the use of the Q-
       channel is for further study.

       A BRI-NT interface may implement an "S-channel",	 the  S-channel	 is  a
       slow  speed,  4000 bps, data path from a NT to an TE. The use of the S-
       channel is for further study.

   Primary Rate ISDN
       Primary Rate ISDN (PRI) interfaces are either 1.544Mbps	(T1  rate)  or
       2.048Mbps  (E1  rate)  and are typically organized as 23 B-channels and
       one D-Channel (23B+D) for T1 rates, and 30 B-Channels and one D-Channel
       (30B+D)	for  E1	 rates.	 The  D-channels on a PRI interface operate at
       64000 bits per second. T1 rate PRI interface is	the  standard  in  the
       United  States,	Canada	and  Japan  while E1 rate PRI interface is the
       standard in European countries. Some E1 rate PRI interface  implementa‐
       tions allow access to channel zero which is used for framing.

   Channel Types
       ISDN  channels  fall  into several categories; D-channels, bearer chan‐
       nels, and management pseudo channels. Each channel has a	 corresponding
       device  name  somewhere under the directory /dev/isdn/ as documented in
       the appropriate hardware specific manual page.

       D-channels		     There is at most one D-channel  per  ISDN
				     interface.	 The D-channel carries signal‐
				     ing information  for  the	management  of
				     ISDN calls and can also carry X.25 packet
				     data. In the case	of  a  PRI  interface,
				     there  may	 actually  be  no D-channel if
				     Non-Facility  Associated	Signaling   is
				     used.  D-channels carry data packets that
				     are framed and checked  for  transmission
				     errors  according	to the LAP-D protocol.
				     LAP-D uses	 framing  and  error  checking
				     identical	to  the	 High  Speed Data Link
				     (HDLC) protocol.

       B-channels		     BRI interfaces have  two  B-channels,  B1
				     and  B2.  On  a  BRI  interface, the only
				     other type of  channel  is	 an  H-channel
				     which is a concatenation of the B1 and B2
				     channels. An  H-channel  is  accessed  by
				     opening  the  "base"  channel, B1 in this
				     case, and using the ISDN_SET_FORMAT ioctl
				     to	 change	 the  configuration  of the B-
				     channel from  8-bit,  8  kHz  to  16-bit,
				     8kHz.

				     On	 a  primary rate interface, B channels
				     are numbered from 0 to 31 in Europe and 1
				     to	 23  in	 the United States, Canada and
				     Japan.

       H-Channels		     A BRI or PRI interface can offer multiple
				     B-channels	 concatenated  into  a single,
				     higher bandwidth channel. These  concate‐
				     nated  B-channels	are  referred to as an
				     "H-channels" on a BRI interface. The  PRI
				     interface	version	 of  an	 H-channel  is
				     referred to as an Hn-channels where n  is
				     a	number	indicating  how the B-channels
				     have been aggregated into a single	 chan‐
				     nel.

					 o	A  PRI interface H0 channel is
						384 kbps allowing 3H0+D	 on  a
						T1   rate  PRI	interface  and
						4H0+D channels on an  E1  rate
						PRI interface.

					 o	A T1 PRI interface H11 channel
						is  1536  kbps	(24~64000bps).
						This  will consume the channel
						normally reserved for  the  D-
						channel,  so signaling must be
						done with Non-Facility Associ‐
						ated   Signaling  (NFAS)  from
						another PRI interface.

					 o	An E1 PRI interface H12	 chan‐
						nel	 is	 1920	  kbps
						(30~64000bps). An  H12-channel
						leaves	room  for the framing-
						channel as well as the D-chan‐
						nel.

       Auxiliary channels	     Auxiliary	channels are non-ISDN hardware
				     interfaces that are closely tied  to  the
				     ISDN  interfaces.	An  example would be a
				     video or audio coder/decoder (codec). The
				     existence of an auxiliary channel usually
				     implies that one or more  B-channels  can
				     be	 "connected" to an auxiliary interface
				     in hardware.

       Management pseudo-channels    A management pseudo-channel is  used  for
				     the  management  of  a controller, inter‐
				     face,  or	hardware  channel.  Management
				     channels allow for out-of-band control of
				     hardware interfaces and  for  out-of-band
				     notification  of status changes. There is
				     at least one management device per	 hard‐
				     ware interface.

				     There  are	 three different types of man‐
				     agement  channels	implemented  by	  ISDN
				     hardware drivers:

					 o	A controller management device
						handles all ioctls that simul‐
						taneously    affect   hardware
						channels on  different	inter‐
						faces. Examples include reset‐
						ting a controller, mu-code (as
						in  the Greek letter mu) down‐
						loading of  a  controller,  or
						the  connection	 of an ISDN B-
						channel to an auxiliary	 chan‐
						nel  that  represents an audio
						coder/decoder	(codec).   The
						latter	case  would  be accom‐
						plished	      using	   the
						ISDN_SET_CHANNEL ioctl.

					 o	An interface management device
						handles all ioctls that affect
						multiple  channels on the same
						interface. Messages associated
						with  the activation and deac‐
						tivation   of	an   interface
						arrive	 on   the   management
						device associated with	the  D
						channel of an ISDN interface.

					 o	Auxiliary  interfaces may also
						have management	 devices.  See
						the   hardware	 specific  man
						pages for operations on auxil‐
						iary devices.

       Trace pseudo-channels	     A device driver may choose to implement a
				     trace device for  a  data	or  management
				     channel. Trace channels receive a special
				     M_PROTO header with  the  original	 chan‐
				     nel's  original M_PROTO or M_DATA message
				     appended  to  the	special	 header.   The
				     header is described by:

				       typedef	struct {
					 uint_t	  seq;	   /* Sequence number */
					 int	  type;	   /* device dependent */
					 struct	  timeval  timestamp;
					 char	  _f[8];   /* filler */
				       } audtrace_hdr_t;

   ISDN Channel types
       The  isdn_chan_t	 type enumerates the channels available on ISDN inter‐
       faces. If a particular controller  implements  any  auxiliary  channels
       then  those  auxiliary  channels will be described in a controller spe‐
       cific  manual  page.  The  defined  channels  are  described   by   the
       isdn_chan_t type as shown below:

	 /* ISDN channels */
	 typedef enum {
	      ISDN_CHAN_NONE = 0x0,  /* No channel given */
	      ISDN_CHAN_SELF,	     /* The channel performing the ioctl */
	      ISDN_CHAN_HOST,	     /* Unix STREAMS*/
	      ISDN_CHAN_CTRL_MGT,    /* Controller management */

	      /* TE channel defines */

	      ISDN_CHAN_TE_MGT,	     /* Receives activation/deactivation */
	      ISDN_CHAN_TE_D_TRACE,  /* Trace device for protocol analysis apps */
	      ISDN_CHAN_TE_D,
	      ISDN_CHAN_TE_B1,
	      ISDN_CHAN_TE_B2,

	      /* NT channel defines */

	      ISDN_CHAN_NT_MGT,	     /* Receives activation/deactivation */
	      ISDN_CHAN_NT_D_TRACE,  /* Trace device for protocol analysis apps */
	      ISDN_CHAN_NT_D,
	      ISDN_CHAN_NT_B1,
	      ISDN_CHAN_NT_B2,

	      /* Primary rate ISDN */

	      ISDN_CHAN_PRI_MGT,
	      ISDN_CHAN_PRI_D,
	      ISDN_CHAN_PRI_B0,	 ISDN_CHAN_PRI_B1,
	      ISDN_CHAN_PRI_B2,	 ISDN_CHAN_PRI_B3,
	      ISDN_CHAN_PRI_B4,	 ISDN_CHAN_PRI_B5,
	      ISDN_CHAN_PRI_B6,	 ISDN_CHAN_PRI_B7,
	      ISDN_CHAN_PRI_B8,	 ISDN_CHAN_PRI_B9,
	      ISDN_CHAN_PRI_B10, ISDN_CHAN_PRI_B11,
	      ISDN_CHAN_PRI_B12, ISDN_CHAN_PRI_B13,
	      ISDN_CHAN_PRI_B14, ISDN_CHAN_PRI_B15,
	      ISDN_CHAN_PRI_B16, ISDN_CHAN_PRI_B17,
	      ISDN_CHAN_PRI_B18, ISDN_CHAN_PRI_B19,
	      ISDN_CHAN_PRI_B20, ISDN_CHAN_PRI_B21,
	      ISDN_CHAN_PRI_B22, ISDN_CHAN_PRI_B23,
	      ISDN_CHAN_PRI_B24, ISDN_CHAN_PRI_B25,
	      ISDN_CHAN_PRI_B26, ISDN_CHAN_PRI_B27,
	      ISDN_CHAN_PRI_B28, ISDN_CHAN_PRI_B29,
	      ISDN_CHAN_PRI_B30, ISDN_CHAN_PRI_B31,

	      /* Auxiliary channel defines */

	      ISDN_CHAN_AUX0, ISDN_CHAN_AUX1, ISDN_CHAN_AUX2, ISDN_CHAN_AUX3,
	      ISDN_CHAN_AUX4, ISDN_CHAN_AUX5, ISDN_CHAN_AUX6, ISDN_CHAN_AUX7
	 } isdn_chan_t;

   ISDN Interface types
       The  isdn_interface_t  type enumerates the interfaces available on ISDN
       controllers. The defined interfaces are described  by  the  isdn_inter‐
       face_t type as shown below:

	 /* ISDN interfaces */
	 typedef enum {
	   ISDN_TYPE_UNKNOWN = -1,  /* Not known or applicable */
	   ISDN_TYPE_SELF = 0,	    /*
		    * For queries, application may
		    * put this value into "type" to
		    * query the state of the file
		    * descriptor used in an ioctl.
		    */
	   ISDN_TYPE_OTHER,	    /* Not an ISDN interface */
	   ISDN_TYPE_TE,
	   ISDN_TYPE_NT,
	   ISDN_TYPE_PRI,
	 } isdn_interface_t;

   Activation and Deactivation of ISDN Interfaces
       The  management	device	associated  with  an ISDN D-channel is used to
       request activation, deactivation	 and  receive  information  about  the
       activation  state  of  the  interface.  See  the	 descriptions  of  the
       ISDN_PH_ACTIVATE_REQ and ISDN_MPH_DEACTIVATE_REQ ioctls. Changes in the
       activation  state  of  an  interface  are communicated to the D-channel
       application through M_PROTO messages sent up-stream on  the  management
       device  associated  with the D-channel. If the D-channel protocol stack
       is implemented as a user process, the user  process  can	 retrieve  the
       M_PROTO messages using the getmsg(2) system call.

       These M_PROTO messages have the following format:

	 typedef struct isdn_message {
	      unsigned int magic;	    /* set to ISDN_PROTO_MAGIC */
	      isdn_interface_t type;	    /* Interface type */
	      isdn_message_type_t message;  /* CCITT or vendor Primitive */
	      unsigned int vendor[5];	    /* Vendor specific content */
	 } isdn_message_t;
	 typedef  enum	isdn_message_type  {
	   ISDN_VPH_VENDOR = 0,	 /* Vendor specific messages */
	   ISDN_PH_AI,		 /* Physical: Activation Ind */
	   ISDN_PH_DI,		 /* Physical: Deactivation Ind */
	   ISDN_MPH_AI,		 /* Management: Activation Ind */
	   ISDN_MPH_DI,		 /* Management: Deactivation Ind */
	   ISDN_MPH_EI1,	 /* Management: Error 1 Indication */
	   ISDN_MPH_EI2,	 /* Management: Error 2 Indication */
	   ISDN_MPH_II_C,	 /* Management: Info Ind, connection */
	   ISDN_MPH_II_D	 /* Management: Info Ind, disconn. */
	 } isdn_message_type_t;

IOCTLS
   STREAMS IOCTLS
       All  of the streamio(7I) ioctl commands may be issued for a device con‐
       forming to the the isdnio interface.

       ISDN interfaces that allow access to audio data should implement a rea‐
       sonable subset of the audio(7I) interface.

   ISDN ioctls
       ISDN_PH_ACTIVATE_REQ	  Request ISDN physical layer activation. This
				  command is valid for both TE and  NT	inter‐
				  faces.  fd must be a D-channel file descrip‐
				  tor. arg is ignored.

				  TE activation will occur without use of  the
				  ISDN_PH_ACTIVATE_REQ	ioctl  if  the	device
				  corresponding to the TE D-channel  is	 open,
				  "on",	 and  the  ISDN	 switch	 is requesting
				  activation.

       ISDN_MPH_DEACTIVATE_REQ	  fd must be an NT D-channel file  descriptor.
				  arg is ignored.

				  This	command	 requests  ISDN physical layer
				  de-activation. This  is  not	valid  for  TE
				  interfaces.  A TE interace may be turned off
				  by use of the ISDN_PARAM_POWER command or by
				  close(2) on the associated fd.

       ISDN_ACTIVATION_STATUS	  fd  is  the file descriptor for a D-channel,
				  the management  device  associated  with  an
				  ISDN	interface,  or	the  management device
				  associated with the  controller.  arg	 is  a
				  pointer   to	 an   isdn_activation_status_t
				  structure.  Although	it  is	possible   for
				  applications	to determine the current acti‐
				  vation state with this  ioctl,  a  D-channel
				  protocol  stack  should instead process mes‐
				  sages from  the  management  pseudo  channel
				  associated with the D-channel.

				    typedef struct isdn_activation_status {
					 isdn_interface_t type;
					 enum isdn_activation_state activation;
				    } isdn_activation_status_t;
				    typedef enum isdn_activation_state {
					 ISDN_OFF = 0,		/* Interface is powered down */
					 ISDN_UNPLUGGED,	/* Power but no-physical connection */
					 ISDN_DEACTIVATED_REQ,	/* Pending Deactivation, NT Only */
					 ISDN_DEACTIVATED,	/* Activation is permitted */
					 ISDN_ACTIVATE_REQ,	/* Attempting to activate */
					 ISDN_ACTIVATED,	/* Interface is activated */
				    } isdn_activation_state_t;

				  The	 type	field	should	 be   set   to
				  ISDN_TYPE_SELF. The device  specific	inter‐
				  face	type  will  be	returned  in  the type
				  field.

				  The isdn_activation_status_t structure  con‐
				  tains	 the  interface	 type  and the current
				  activation state. type is the interface type
				  and	should	 be   set  by  the  caller  to
				  ISDN_TYPE_SELF.

       ISDN_INTERFACE_STATUS	  The  ISDN_INTERFACE_STATUS  ioctl  retrieves
				  the  status and statistics of an ISDN inter‐
				  face.	 The requesting channel must  own  the
				  interface whose status is being requested or
				  the ioctl will fail. fd is the file descrip‐
				  tor for an ISDN interface management device.
				  arg is a pointer  to	a  struct  isdn_inter‐
				  face_info.  If the interface field is set to
				  ISDN_TYPE_SELF, it will be  changed  in  the
				  returned  structure  to  reflect  the proper
				  device-specific interface of the  requesting
				  fd.

				    typedef struct isdn_interface_info {
				      isdn_interface_t interface;
				      enum isdn_activation_state  activation;
				      unsigned int ph_ai;     /* Physical: Activation Ind */
				      unsigned int ph_di;     /* Physical: Deactivation Ind */
				      unsigned int mph_ai;    /* Management: Activation Ind */
				      unsigned int mph_di;    /* Management: Deactivation Ind */
				      unsigned int mph_ei1;   /* Management: Error 1 Indication */
				      unsigned int mph_ei2;   /* Management: Error 2 Indication */
				      unsigned int mph_ii_c;  /* Management: Info Ind, connection */
				      unsigned int mph_ii_d;  /* Management: Info Ind, disconn. */
				    } isdn_interface_info_t;

       ISDN_CHANNEL_STATUS	  The  ISDN_CHANNEL_STATUS ioctl retrieves the
				  status and statistics of  an	ISDN  channel.
				  The  requesting channel must own the channel
				  whose status is being requested or the ioctl
				  will fail. fd is any file descriptor. arg is
				  a pointer to a struct isdn_channel_info.  If
				  the	 interface    field    is    set    to
				  ISDN_CHAN_SELF, it will be  changed  in  the
				  returned  structure  to  reflect  the proper
				  device-specific channel  of  the  requesting
				  fd.

				    typedef struct isdn_channel_info {
					 isdn_chan_t	channel;
					 enum isdn_iostate   iostate;
					 struct	  isdn_io_stats {
					 ulong_t  packets;   /* packets transmitted or received */
					 ulong_t  octets;    /* octets transmitted or received */
					 ulong_t  errors;    /* errors packets transmitted or received */
					 } transmit, receive;
				    } isdn_channel_info_t;

       ISDN_PARAM_SET		  fd  is  the file descriptor for a management
				  device.  arg	is  a  pointer	to  a	struct
				  isdn_param.  This command allows the setting
				  of various ISDN  physical  layer  parameters
				  such	as  timers. This command uses the same
				  arguments as the ISDN_PARAM_GET command.

       ISDN_PARAM_GET		  fd is the file descriptor for	 a  management
				  device.   arg	 is  a	pointer	 to  a	struct
				  isdn_param This command provides for	query‐
				  ing  the value of a particular ISDN physical
				  layer parameter.

				    typedef enum {
				      ISDN_PARAM_NONE = 0,
				      ISDN_PARAM_NT_T101,    /* NT Timer, 5-30 s, in milliseconds */
				      ISDN_PARAM_NT_T102,    /* NT Timer, 25-100 ms, in milliseconds */
				      ISDN_PARAM_TE_T103,    /* TE Timer, 5-30 s, in milliseconds */
				      ISDN_PARAM_TE_T104,    /* TE Timer, 500-1000 ms, in milliseconds */
				      ISDN_PARAM_MAINT,	     /* Manage the TE Maintenance Channel */
				      ISDN_PARAM_ASMB,	     /* Modify Activation State Machine Behavior */
				      ISDN_PARAM_POWER,	     /* Take the interface online or offline */
				      ISDN_PARAM_PAUSE,	     /* Paused if == 1, else not paused == 0 */
				    } isdn_param_tag_t;
				    enum isdn_param_asmb {
					 ISDN_PARAM_TE_ASMB_CCITT88, /* 1988 bluebook */
					 ISDN_PARAM_TE_ASMB_CTS2,    /* Conformance Test Suite 2 */
				    };
				    typedef struct isdn_param {
					 isdn_param_tag_t    tag;
					 union {
				       unsigned int us;		 /* micro seconds */
				       unsigned int ms;		 /* Timer value in ms */
				       unsigned int flag;	 /* Boolean */
				       enum isdn_param_asmb  asmb;
				       enum isdn_param_maint maint;
				       struct {
					  isdn_chan_t channel;	 /* Channel to Pause */
					  int paused;		 /* TRUE or FALSE */
					      } pause;
				       unsigned int reserved[2]; /* reserved, set to zero */
					 } value;
				    } isdn_param_t;

       ISDN_PARAM_POWER		  If an implementation provides power  on  and
				  off  functions,  then	 power should be on by
				  default.  If	flag  is  ISDN_PARAM_POWER_OFF
				  then a TE interface is forced into state F0,
				  NT interfaces are forced into state  G0.  If
				  flag is ISDN_PARAM_POWER_ON then a TE inter‐
				  face will immediately transition to state F3
				  when	the TE D-channel is opened. If flag is
				  one, an  NT  interface  will	transition  to
				  state G1 when the NT D-channel is opened.

				  Implementations    that   do	 not   provide
				  ISDN_POWER return failure with errno set  to
				  ENXIO.ISDN_POWER     is    different	  from
				  ISDN_PH_ACTIVATE_REQ since CCITT  specifica‐
				  tion	requires  that	if  a BRI-TE interface
				  device has power, then  it  permits  activa‐
				  tion.

       ISDN_PARAM_NT_T101	  This	parameter  accesses the NT timer value
				  T1. The CCITT recommendations	 specify  that
				  timer	 T1  has a value from 5 to 30 seconds.
				  Other standards may differ.

       ISDN_PARAM_NT_T102	  This parameter accesses the NT  timer	 value
				  T2.  The  CCITT recommendations specify that
				  timer T2 has a value from  25	 to  100  mil‐
				  liseconds. Other standards may differ.

       ISDN_PARAM_TE_T103	  This	parameter  accesses the TE timer value
				  T3. The CCITT recommendations	 specify  that
				  timer	 T3  has a value from 5 to 30 seconds.
				  Other standards may differ.

       ISDN_PARAM_TE_T104	  This parameter accesses the TE  timer	 value
				  T4.  The  CTS2  specifies  that  timer T4 is
				  either not used or has a value from  500  to
				  1000	milliseconds. Other standards may dif‐
				  fer. CTS2 requires that timer T309 be imple‐
				  mented if T4 is not available.

       ISDN_PARAM_MAINT		  This	parameter  sets the multi-framing mode
				  of a BRI-TE interface. For normal  operation
				  this	  parameter    should	 be   set   to
				  ISDN_PARAM_MAINT_ECHO. Other	uses  of  this
				  parameter  are  dependent  on the definition
				  and use of the BRI interface S and  Q	 chan‐
				  nels.

       ISDN_PARAM_ASMB		  There	 are  a	 few differences in the BRI-TE
				  interface  activation	 state	machine	 stan‐
				  dards.  This	parameter allows the selection
				  of the appropriate standard.	At this	 time,
				  only	    ISDN_PARAM_TE_ASMB_CCITT88	   and
				  ISDN_PARAM_TE_ASMB_CTS2 are available.

       ISDN_PARAM_PAUSE		  This parameter allows a management device to
				  pause	 the  IO on a B-channel. pause.channel
				  is set to indicate which channel  is	to  be
				  paused  or un-paused. pause.paused is set to
				  zero to un-pause and one  to	pause.	fd  is
				  associated with an ISDN interface management
				  device.  arg	is  a  pointer	to  a	struct
				  isdn_param.

       ISDN_SET_LOOPBACK	  fd is the file descriptor for an ISDN inter‐
				  face's management device. arg is  a  pointer
				  to an isdn_loopback_request_t structure.

				    typedef enum {
					  ISDN_LOOPBACK_LOCAL,
					  ISDN_LOOPBACK_REMOTE,
				    } isdn_loopback_type_t;
				    typedef enum {
				      ISDN_LOOPBACK_B1 =     0x1,
				      ISDN_LOOPBACK_B2 =     0x2,
					  ISDN_LOOPBACK_D  = 0x4,
					  ISDN_LOOPBACK_E_ZERO = 0x8,
					  ISDN_LOOPBACK_S  = 0x10,
					  ISDN_LOOPBACK_Q  = 0x20,
				    } isdn_loopback_chan_t;
				    typedef struct isdn_loopback_request {
					 isdn_loopback_type_t  type;
					 int		       channels;
				    } isdn_loopback_request_t;

				  An  application  can	receive D-channel data
				  during D-Channel loopback but cannot	trans‐
				  mit  data.  The field type is the bitwise OR
				  of at least one of the following values:

				      ISDN_LOOPBACK_B1	   (0x1)   /* loopback on B1-channel */
				      ISDN_LOOPBACK_B2	    (0x2)   /* loopback on B2-channel */
				      ISDN_LOOPBACK_D	    (0x4)   /* loopback on D-channel */
				      ISDN_LOOPBACK_E_ZERO  (0x8)   /* force E-channel to Zero if */
								    /* fd is for NT interface */
				      ISDN_LOOPBACK_S	    (0x10)  /* loopback on S-channel */
				      ISDN_LOOPBACK_Q	    (0x20)  /* loopback on Q-channel */

       ISDN_RESET_LOOPBACK	  arg  is   a	pointer	  to   an   isdn_loop‐
				  back_request_t  structure.  ISDN_RESET_LOOP‐
				  BACK turns off the selected loopback modes.

   ISDN Data Format
       The isdn_format_t type is meant to be a	complete  description  of  the
       various	data  modes  and rates available on an ISDN interface. Several
       macros are available for setting the format fields.  The	 isdn_format_t
       structure is shown below:

	 /* ISDN channel data format */
	 typedef enum {
	   ISDN_MODE_NOTSPEC,	  /* Not specified */
	   ISDN_MODE_HDLC,	  /* HDLC framing and error checking */
	   ISDN_MODE_TRANSPARENT  /* Transparent mode */
	 } isdn_mode_t;

	 /* Audio encoding types (from audioio.h) */

	 #define AUDIO_ENCODING_NONE   (0)  /* no encoding*/
	 #define AUDIO_ENCODING_ULAW   (1)  /* mu-law */
	 #define AUDIO_ENCODING_ALAW   (2)  /* A-law */
	 #define AUDIO_ENCODING_LINEAR (3)  /* Linear PCM */
	 typedef struct isdn_format {
	   isdn_mode_t	mode;
	   unsigned int sample_rate;  /* sample frames/sec*/
	   unsigned int channels;     /* # interleaved chans */
	   unsigned int precision;    /* bits per sample */
	   unsigned int encoding;     /* data encoding */
	 } isdn_format_t;
	 /*
	  * These macros set the fields pointed
	  * to by the macro argument (isdn_format_t*)fp in preparation
	  * for the ISDN_SET_FORMAT ioctl.
	  */
	 ISDN_SET_FORMAT_BRI_D(fp)	/* BRI D-channel */
	 ISDN_SET_FORMAT_PRI_D(fp)	/* PRI D-channel */
	 ISDN_SET_FORMAT_HDLC_B64(fp)	/* BRI B-ch @ 56kbps */
	 ISDN_SET_FORMAT_HDLC_B56(fp)	/* BRI B-ch @ 64kbps */
	 ISDN_SET_FORMAT_VOICE_ULAW(fp) /* BRI B-ch voice */
	 ISDN_SET_FORMAT_VOICE_ALAW(fp) /* BRI B-ch voice */
	 ISDN_SET_FORMAT_BRI_H(fp)	/* BRI H-channel */

   ISDN Datapath Types
       Every  STREAMS  stream  that  carries  data  to or from the ISDN serial
       interfaces is classified as a channel-stream datapath. A possible  ISDN
       channel-stream	 datapath    device   name   for   a   TE   could   be
       /dev/isdn/0/te/b1.

       On some hardware implementations, it is possible to route the data from
       hardware channel to hardware channel completely within the chip or con‐
       troller. This is classified as a channel-channel datapath.  There  does
       not need to be any open file descriptor for either channel in this con‐
       figuration. Only when data enters  the  host  and  utilizes  a  STREAMS
       stream is this classified as an ISDN channel-stream datapath.

   ISDN Management Stream
       A  management stream is a STREAMS stream that exists solely for control
       purposes and is not intended to carry data to or from the  ISDN	serial
       interfaces.  A  possible	 management  device  name  for	a  TE could be
       /dev/isdn/0/te/mgt.

CHANNEL MANAGEMENT IOCTLS
       The following ioctls describe operations on individual channels and the
       connection of multiple channels.

       ISDN_SET_FORMAT	   fd is a data channel, the management pseudo-channel
			   associated with the data channel, or the management
			   channel  associated	with the data channel's inter‐
			   face or controller. arg is a pointer	 to  a	struct
			   isdn_format_req. The ISDN_SET_FORMAT ioctl sets the
			   format of an ISDN channel-stream datapath.  It  may
			   be issued on both an open ISDN channel-stream data‐
			   path Stream or an ISDN Management Stream. Note that
			   an  open(2) call for a channel-stream datapath will
			   fail if an ISDN_SET_FORMAT has  never  been	issued
			   after  a  reset, as the mode for all channel-stream
			   datapaths is initially biased to ISDN_MODE_NOTSPEC.
			   arg	is a pointer to an ISDN format type (isdn_for‐
			   mat_req_t*).

			     typedef struct isdn_format_req {
			       isdn_chan_t  channel;
			       isdn_format_t format;   /* data format */
			       int reserved[4];	       /* future use - must be 0 */
			     } isdn_format_req_t;

			   If there is not an open channel-stream datapath for
			   a  requested	 channel,  the	default format of that
			   channel will be set for a subsequent open(2).

			   To modify the format of an open stream, the	driver
			   will	 disconnect  the  hardware  channel, flush the
			   internal hardware queues, set the new default  con‐
			   figuration,	and  finally  reconnect	 the data path
			   using  the  newly  specified	 format.  Upon	taking
			   effect, all state information will be reset to ini‐
			   tial conditions, as if a channel was	 just  opened.
			   It  is  suggested that the user flush the interface
			   as well as consult the hardware specific documenta‐
			   tion to insure data integrity.

			   If  a user desires to connect more than one B chan‐
			   nel, such as an H-channel, the B-channel  with  the
			   smallest  offset should be specified, then the pre‐
			   cision should be specified multiples of 8.  For  an
			   H-channel the precision value would be 16. The user
			   should subsequently open the base B-channel. If any
			   of the sequential B-channels are busy the open will
			   fail, otherwise all of the B-channels that  are  to
			   be used in conjunction will be marked as busy.

			   The	returned  failure codes and their descriptions
			   are listed below:

			     EPERM   /* No permission for intented operation */
			     EINVAL   /* Invalid format request */
			     EIO      /* Set format attempt failed. */

       ISDN_SET_CHANNEL	   The ISDN_SET_CHANNEL ioctl sets up a	 data  connec‐
			   tion	 within an ISDN controller. The ISDN_SET_CHAN‐
			   NEL ioctl can only be issued from an	 ISDN  manage‐
			   ment	 stream to establish or modify channel-channel
			   datapaths. The ioctl parameter arg is a pointer  to
			   an ISDN connection request (isdn_conn_req_t*). Once
			   a data path is established, data flow is started as
			   soon as the path endpoints become active. Upon tak‐
			   ing effect, all state information is reset to  ini‐
			   tial conditions, as if a channel was just opened.

			   The	isdn_conn_req_t	 structure is shown below. The
			   five fields include the receive and	transmit  ISDN
			   channels,  the  number  of  directions  of the data
			   path, as well as  the  data	format.	 The  reserved
			   field must always be set to zero.

			     /* Number of directions for data flow */
			     typedef enum {
			       ISDN_PATH_NOCHANGE = 0, /* Invalid value */
			       ISDN_PATH_DISCONNECT,   /* Disconnect data path */
			       ISDN_PATH_ONEWAY,       /* One way data path */
			       ISDN_PATH_TWOWAY,       /* Bi-directional data path */
			     } isdn_path_t;
			     typedef struct isdn_conn_req {
			       isdn_chan_t  from;
			       isdn_chan_t  to;
			       isdn_path_t  dir;      /* uni/bi-directional or disconnect */
			       isdn_format_t format;  /* data format */
			       int  reserved[4];      /* future use - must be 0 */
			     } isdn_conn_req_t;

			   To  specify	a read-only, write-only, or read-write
			   path, or to disconnect a path, the dir field should
			   be  set  to ISDN_PATH_ONEWAY, ISDN_PATH_TWOWAY, and
			   ISDN_PATH_DISCONNECT respectively.  To  modify  the
			   format  of  a channel-channel datapath, a user must
			   disconnect the channel and then reconnect with  the
			   desired format.

			   The	returned  failure codes and their descriptions
			   are listed below:

			     EPERM   /* No permission for intented operation */
			     EBUSY   /* Connection in use */
			     EINVAL  /* Invalid connection request */
			     EIO     /* Connection attempt failed */

       ISDN_GET_FORMAT	   The ISDN_GET_FORMAT ioctl gets the ISDN data format
			   of the channel-stream datapath described by fd. arg
			   is a pointer to an ISDN data	 format	 request  type
			   (isdn_format_req_t*). ISDN_GET_FORMAT can be issued
			   on any channel to retrieve the format of any	 chan‐
			   nel	it owns. For example, if issued on the TE man‐
			   agement channel, the format of any other te channel
			   can be retrieved.

       ISDN_GETCONFIG	   The ISDN_GETCONFIG ioctl is used to get the current
			   connection status of all ISDN  channels  associated
			   with a particular management stream. ISDN_GETCONFIG
			   also	 retrieves  a  hardware	 identifier  and   the
			   generic  interface  type. arg is an ISDN connection
			   table     pointer	  (isdn_conn_tab_t*).	   The
			   isdn_conn_tab_t structure is shown below:

			     typedef struct isdn_conn_tab {
			       char name[ISDN_ID_SIZE];	 /* identification string */
			       isdn_interface_t type;
			       int maxpaths;		 /* size in entries of app's array int npaths; */
							 /* number of valid entries returned by driver */
			       isdn_conn_req_t *paths;	 /* connection table in app's memory */
			     } isdn_conn_tab_t;

			   The	table  contains	 a  string which is the inter‐
			   face's unique  identification  string.  The	second
			   element  of	this  table contains the ISDN transmit
			   and receive connections and configuration  for  all
			   possible  data  paths  for  each  type of ISDN con‐
			   troller hardware. Entries that  are	not  connected
			   will	 have  a value of ISDN_NO_CHAN in the from and
			   to fields. The number of  entries  will  always  be
			   ISDN_MAX_CHANS,  and can be referenced in the hard‐
			   ware	 specific  implementation  documentation.   An
			   isdn_conn_tab_t  structure  is  allocated  on a per
			   controller basis.

SEE ALSO
       getmsg(2), ioctl(2), open(2), poll(2),  read(2),	 write(2),  audio(7I),
       streamio(7I)

       ISDN,  An  Introduction	- William Stallings, Macmillan Publishing Com‐
       pany. ISBN 0-02-415471-7

SunOS 5.11			  8 Apr 2009			    isdnio(7I)
[top]

List of man pages available for OpenIndiana

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net