📄 isdnif.h
字号:
/* $Id: isdnif.h,v 1.29 1999/07/31 13:00:02 armin Exp $ * * Linux ISDN subsystem * * Definition of the interface between the subsystem and its low-level drivers. * * Copyright 1994,95,96 by Fritz Elfert (fritz@wuemaus.franken.de) * Copyright 1995,96 Thinking Objects Software GmbH Wuerzburg * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Log: isdnif.h,v $ * Revision 1.29 1999/07/31 13:00:02 armin * Added tty fax capabilities. * * Revision 1.28 1999/07/13 20:57:48 werner * added callback ISDN_STAT_DISCH for limiting b-channel resources. * * Revision 1.27 1999/07/11 17:07:39 armin * Added tty modem register S23. * Added new layer 2 and 3 protocols for Fax and DSP functions. * * Revision 1.26 1999/07/01 08:35:44 keil * compatibility to 2.3 * * Revision 1.25 1998/06/17 19:51:55 he * merged with 2.1.10[34] (cosmetics and udelay() -> mdelay()) * brute force fix to avoid Ugh's in isdn_tty_write() * cleaned up some dead code * * Revision 1.24 1998/03/19 13:18:57 keil * Start of a CAPI like interface for supplementary Service * first service: SUSPEND * * Revision 1.23 1998/02/20 17:36:52 fritz * Added L2-protocols for V.110, changed FEATURE-Flag-constants. * * Revision 1.22 1998/01/31 22:14:12 keil * changes for 2.1.82 * * Revision 1.21 1997/10/09 21:28:13 fritz * New HL<->LL interface: * New BSENT callback with nr. of bytes included. * Sending without ACK. * New L1 error status (not yet in use). * Cleaned up obsolete structures. * Implemented Cisco-SLARP. * Changed local net-interface data to be dynamically allocated. * Removed old 2.0 compatibility stuff. * * Revision 1.20 1997/05/27 15:18:06 fritz * Added changes for recent 2.1.x kernels: * changed return type of isdn_close * queue_task_* -> queue_task * clear/set_bit -> test_and_... where apropriate. * changed type of hard_header_cache parameter. * * Revision 1.19 1997/03/25 23:13:56 keil * NI-1 US protocol * * Revision 1.18 1997/03/04 22:09:18 calle * Change macros copy_from_user and copy_to_user in inline function. * These are now correct replacements of the functions for 2.1.xx * * Revision 1.17 1997/02/10 21:12:53 fritz * More setup-interface changes. * * Revision 1.16 1997/02/10 19:42:57 fritz * New interface for reporting incoming calls. * * Revision 1.15 1997/02/09 00:18:42 keil * leased line support * * Revision 1.14 1997/02/03 23:43:00 fritz * Misc changes for Kernel 2.1.X compatibility. * * Revision 1.13 1996/11/13 02:39:59 fritz * More compatibility changes. * * Revision 1.12 1996/11/06 17:38:48 keil * more changes for 2.1.X * * Revision 1.11 1996/10/23 11:59:42 fritz * More compatibility changes. * * Revision 1.10 1996/10/22 23:14:19 fritz * Changes for compatibility to 2.0.X and 2.1.X kernels. * * Revision 1.9 1996/06/06 21:24:24 fritz * Started adding support for suspend/resume. * * Revision 1.8 1996/05/18 01:45:37 fritz * More spelling corrections. * * Revision 1.7 1996/05/18 01:37:19 fritz * Added spelling corrections and some minor changes * to stay in sync with kernel. * * Revision 1.6 1996/05/17 03:59:28 fritz * Marked rcvcallb and writebuf obsolete. * * Revision 1.5 1996/05/01 11:43:54 fritz * Removed STANDALONE * * Revision 1.4 1996/05/01 11:38:40 fritz * Added ISDN_FEATURE_L2_TRANS * * Revision 1.3 1996/04/29 22:57:54 fritz * Added driverId and channel parameters to * writecmd() and readstat(). * Added constant for voice-support. * * Revision 1.2 1996/04/20 17:02:40 fritz * Changes to support skbuffs for Lowlevel-Drivers. * Misc. typos * * Revision 1.1 1996/01/09 05:50:51 fritz * Initial revision * */#ifndef isdnif_h#define isdnif_h#include <linux/isdn_compat.h>/* * Values for general protocol-selection */#define ISDN_PTYPE_UNKNOWN 0 /* Protocol undefined */#define ISDN_PTYPE_1TR6 1 /* german 1TR6-protocol */#define ISDN_PTYPE_EURO 2 /* EDSS1-protocol */#define ISDN_PTYPE_LEASED 3 /* for leased lines */#define ISDN_PTYPE_NI1 4 /* US NI-1 protocol */#define ISDN_PTYPE_MAX 7 /* Max. 8 Protocols *//* * Values for Layer-2-protocol-selection */#define ISDN_PROTO_L2_X75I 0 /* X75/LAPB with I-Frames */#define ISDN_PROTO_L2_X75UI 1 /* X75/LAPB with UI-Frames */#define ISDN_PROTO_L2_X75BUI 2 /* X75/LAPB with UI-Frames */#define ISDN_PROTO_L2_HDLC 3 /* HDLC */#define ISDN_PROTO_L2_TRANS 4 /* Transparent (Voice) */#define ISDN_PROTO_L2_X25DTE 5 /* X25/LAPB DTE mode */#define ISDN_PROTO_L2_X25DCE 6 /* X25/LAPB DCE mode */#define ISDN_PROTO_L2_V11096 7 /* V.110 bitrate adaption 9600 Baud */#define ISDN_PROTO_L2_V11019 8 /* V.110 bitrate adaption 19200 Baud */#define ISDN_PROTO_L2_V11038 9 /* V.110 bitrate adaption 38400 Baud */#define ISDN_PROTO_L2_MODEM 10 /* Analog Modem on Board */#define ISDN_PROTO_L2_FAX 11 /* Fax Group 2/3 */#define ISDN_PROTO_L2_MAX 15 /* Max. 16 Protocols *//* * Values for Layer-3-protocol-selection */#define ISDN_PROTO_L3_TRANS 0 /* Transparent */#define ISDN_PROTO_L3_TRANSDSP 1 /* Transparent with DSP */#define ISDN_PROTO_L3_FAX 2 /* Fax Group 2/3 */#define ISDN_PROTO_L3_MAX 7 /* Max. 8 Protocols */#ifdef __KERNEL__#include <linux/skbuff.h>/***************************************************************************//* Extensions made by Werner Cornelius (werner@ikt.de) *//* */ /* The proceed command holds a incoming call in a state to leave processes *//* enough time to check whether ist should be accepted. *//* The PROT_IO Command extends the interface to make protocol dependant *//* features available (call diversion, call waiting...). *//* */ /* The PROT_IO Command is executed with the desired driver id and the arg *//* parameter coded as follows: *//* The lower 8 bits of arg contain the desired protocol from ISDN_PTYPE *//* definitions. The upper 24 bits represent the protocol specific cmd/stat.*//* Any additional data is protocol and command specific. *//* This mechanism also applies to the statcallb callback STAT_PROT. */ /* *//* This suggested extension permits an easy expansion of protocol specific *//* handling. Extensions may be added at any time without changing the HL *//* driver code and not getting conflicts without certifications. *//* The well known CAPI 2.0 interface handles such extensions in a similar *//* way. Perhaps a protocol specific module may be added and separately *//* loaded and linked to the basic isdn module for handling. */ /***************************************************************************//*****************//* DSS1 commands */ /*****************/#define DSS1_CMD_INVOKE ((0x00 << 8) | ISDN_PTYPE_EURO) /* invoke a supplementary service */#define DSS1_CMD_INVOKE_ABORT ((0x01 << 8) | ISDN_PTYPE_EURO) /* abort a invoke cmd *//*******************************//* DSS1 Status callback values *//*******************************/#define DSS1_STAT_INVOKE_RES ((0x80 << 8) | ISDN_PTYPE_EURO) /* Result for invocation */#define DSS1_STAT_INVOKE_ERR ((0x81 << 8) | ISDN_PTYPE_EURO) /* Error Return for invocation */#define DSS1_STAT_INVOKE_BRD ((0x82 << 8) | ISDN_PTYPE_EURO) /* Deliver invoke broadcast info *//*********************************************************************//* structures for DSS1 commands and callback *//* *//* An action is invoked by sending a DSS1_CMD_INVOKE. The ll_id, proc*//* timeout, datalen and data fields must be set before calling. *//* *//* The return value is a positive hl_id value also delivered in the *//* hl_id field. A value of zero signals no more left hl_id capacitys.*//* A negative return value signals errors in LL. So if the return *//* value is <= 0 no action in LL will be taken -> request ignored *//* *//* The timeout field must be filled with a positive value specifying *//* the amount of time the INVOKED process waits for a reaction from *//* the network. *//* If a response (either error or result) is received during this *//* intervall, a reporting callback is initiated and the process will *//* be deleted, the hl identifier will be freed. *//* If no response is received during the specified intervall, a error*//* callback is initiated with timeout set to -1 and a datalen set *//* to 0. *//* If timeout is set to a value <= 0 during INVOCATION the process is*//* immediately deleted after sending the data. No callback occurs ! *//* *//* A currently waiting process may be aborted with INVOKE_ABORT. No *//* callback will occur when a process has been aborted. *//* *//* Broadcast invoke frames from the network are reported via the *//* STAT_INVOKE_BRD callback. The ll_id is set to 0, the other fields *//* are supplied by the network and not by the HL. */ /*********************************************************************/typedef struct { ulong ll_id; /* ID supplied by LL when executing */ /* a command and returned by HL for */ /* INVOKE_RES and INVOKE_ERR */ int hl_id; /* ID supplied by HL when called */ /* for executing a cmd and delivered */ /* for results and errors */ /* must be supplied by LL when aborting*/ int proc; /* invoke procedure used by CMD_INVOKE */ /* returned by callback and broadcast */ int timeout; /* timeout for INVOKE CMD in ms */ /* -1 in stat callback when timed out */ /* error value when error callback */ int datalen; /* length of cmd or stat data */ u_char *data;/* pointer to data delivered or send */ } dss1_cmd_stat;/* * Commands from linklevel to lowlevel * */#define ISDN_CMD_IOCTL 0 /* Perform ioctl */#define ISDN_CMD_DIAL 1 /* Dial out */#define ISDN_CMD_ACCEPTD 2 /* Accept an incoming call on D-Chan. */#define ISDN_CMD_ACCEPTB 3 /* Request B-Channel connect. */#define ISDN_CMD_HANGUP 4 /* Hangup */#define ISDN_CMD_CLREAZ 5 /* Clear EAZ(s) of channel */#define ISDN_CMD_SETEAZ 6 /* Set EAZ(s) of channel */#define ISDN_CMD_GETEAZ 7 /* Get EAZ(s) of channel */#define ISDN_CMD_SETSIL 8 /* Set Service-Indicator-List of channel */#define ISDN_CMD_GETSIL 9 /* Get Service-Indicator-List of channel */#define ISDN_CMD_SETL2 10 /* Set B-Chan. Layer2-Parameter */#define ISDN_CMD_GETL2 11 /* Get B-Chan. Layer2-Parameter */#define ISDN_CMD_SETL3 12 /* Set B-Chan. Layer3-Parameter */#define ISDN_CMD_GETL3 13 /* Get B-Chan. Layer3-Parameter */#define ISDN_CMD_LOCK 14 /* Signal usage by upper levels */#define ISDN_CMD_UNLOCK 15 /* Release usage-lock */#define ISDN_CMD_SUSPEND 16 /* Suspend connection */#define ISDN_CMD_RESUME 17 /* Resume connection */#define ISDN_CMD_PROCEED 18 /* Proceed with call establishment */#define ISDN_CMD_ALERT 19 /* Alert after Proceeding */#define ISDN_CMD_REDIR 20 /* Redir a incoming call */#define ISDN_CMD_PROT_IO 21 /* Protocol specific commands */#define CAPI_PUT_MESSAGE 22 /* CAPI message send down or up */#define ISDN_CMD_FAXCMD 23 /* FAX commands to HL-driver */#define ISDN_CMD_AUDIO 24 /* DSP, DTMF, ... settings *//* * Status-Values delivered from lowlevel to linklevel via * statcallb(). * */#define ISDN_STAT_STAVAIL 256 /* Raw status-data available */#define ISDN_STAT_ICALL 257 /* Incoming call detected */#define ISDN_STAT_RUN 258 /* Signal protocol-code is running */#define ISDN_STAT_STOP 259 /* Signal halt of protocol-code */#define ISDN_STAT_DCONN 260 /* Signal D-Channel connect */#define ISDN_STAT_BCONN 261 /* Signal B-Channel connect */#define ISDN_STAT_DHUP 262 /* Signal D-Channel disconnect */#define ISDN_STAT_BHUP 263 /* Signal B-Channel disconnect */#define ISDN_STAT_CINF 264 /* Charge-Info */#define ISDN_STAT_LOAD 265 /* Signal new lowlevel-driver is loaded */#define ISDN_STAT_UNLOAD 266 /* Signal unload of lowlevel-driver */#define ISDN_STAT_BSENT 267 /* Signal packet sent */#define ISDN_STAT_NODCH 268 /* Signal no D-Channel */#define ISDN_STAT_ADDCH 269 /* Add more Channels */#define ISDN_STAT_CAUSE 270 /* Cause-Message */#define ISDN_STAT_ICALLW 271 /* Incoming call without B-chan waiting */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -