⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 capi.h

📁 linux和2410结合开发 用他可以生成2410所需的zImage文件
💻 H
字号:
/* $Id: capi.h,v 1.1.4.1 2001/11/20 14:19:34 kai Exp $ * * ISDN lowlevel-module for the IBM ISDN-S0 Active 2000. * * Author       Fritz Elfert * Copyright    by Fritz Elfert      <fritz@isdn4linux.de> *  * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. * * Thanks to Friedemann Baitinger and IBM Germany * */#ifndef CAPI_H#define CAPI_H/* Command-part of a CAPI message */typedef struct actcapi_msgcmd {	__u8 cmd;	__u8 subcmd;} actcapi_msgcmd;/* CAPI message header */typedef struct actcapi_msghdr {	__u16 len;	__u16 applicationID;	actcapi_msgcmd cmd;	__u16 msgnum;} actcapi_msghdr;/* CAPI message description (for debugging) */typedef struct actcapi_msgdsc {	actcapi_msgcmd cmd;	char *description;} actcapi_msgdsc;/* CAPI Address */typedef struct actcapi_addr {	__u8 len;                            /* Length of element            */	__u8 tnp;                            /* Type/Numbering Plan          */	__u8 num[20];                        /* Caller ID                    */} actcapi_addr;/* CAPI INFO element mask */typedef  union actcapi_infonr {              /* info number                  */	__u16 mask;                          /* info-mask field              */	struct bmask {                       /* bit definitions              */		unsigned  codes : 3;         /* code set                     */		unsigned  rsvd  : 5;         /* reserved                     */		unsigned  svind : 1;         /* single, variable length ind. */		unsigned  wtype : 7;         /* W-element type               */	} bmask;} actcapi_infonr;/* CAPI INFO element */typedef union  actcapi_infoel {              /* info element                 */	__u8 len;                            /* length of info element       */	__u8 display[40];                    /* display contents             */	__u8 uuinfo[40];                     /* User-user info field         */	struct cause {                       /* Cause information            */		unsigned ext2  : 1;          /* extension                    */		unsigned cod   : 2;          /* coding standard              */		unsigned spare : 1;          /* spare                        */		unsigned loc   : 4;          /* location                     */		unsigned ext1  : 1;          /* extension                    */		unsigned cval  : 7;          /* Cause value                  */	} cause;                     	struct charge {                      /* Charging information         */		__u8 toc;                    /* type of charging info        */		__u8 unit[10];               /* charging units               */	} charge;	__u8 date[20];                       /* date fields                  */	__u8 stat;                           /* state of remote party        */} actcapi_infoel;/* Message for EAZ<->MSN Mapping */typedef struct actcapi_msn {	__u8 eaz;	__u8 len;                            /* Length of MSN                */	__u8 msn[15] __attribute__ ((packed));} actcapi_msn;typedef struct actcapi_dlpd {	__u8 len;                            /* Length of structure          */	__u16 dlen __attribute__ ((packed)); /* Data Length                  */	__u8 laa __attribute__ ((packed));   /* Link Address A               */	__u8 lab;                            /* Link Address B               */	__u8 modulo;                         /* Modulo Mode                  */	__u8 win;                            /* Window size                  */	__u8 xid[100];                       /* XID Information              */} actcapi_dlpd;typedef struct actcapi_ncpd {	__u8   len;                          /* Length of structure          */	__u16  lic __attribute__ ((packed));	__u16  hic __attribute__ ((packed));	__u16  ltc __attribute__ ((packed));	__u16  htc __attribute__ ((packed));	__u16  loc __attribute__ ((packed));	__u16  hoc __attribute__ ((packed));	__u8   modulo __attribute__ ((packed));} actcapi_ncpd;#define actcapi_ncpi actcapi_ncpd/* * Layout of NCCI field in a B3 DATA CAPI message is different from * standard at act2000: * * Bit 0-4  = PLCI * Bit 5-7  = Controller * Bit 8-15 = NCCI */#define MAKE_NCCI(plci,contr,ncci) \        ((plci & 0x1f) | ((contr & 0x7) << 5) | ((ncci & 0xff) << 8))#define EVAL_NCCI(fakencci,plci,contr,ncci) { \	plci  = fakencci & 0x1f; \	contr = (fakencci >> 5) & 0x7; \	ncci  = (fakencci >> 8) & 0xff; \}/* * Layout of PLCI field in a B3 DATA CAPI message is different from * standard at act2000: * * Bit 0-4  = PLCI * Bit 5-7  = Controller * Bit 8-15 = reserved (must be 0) */#define MAKE_PLCI(plci,contr) \        ((plci & 0x1f) | ((contr & 0x7) << 5))#define EVAL_PLCI(fakeplci,plci,contr) { \	plci  = fakeplci & 0x1f; \	contr = (fakeplci >> 5) & 0x7; \}typedef struct actcapi_msg {	actcapi_msghdr hdr;	union msg {		__u16 manuf_msg;		struct manufacturer_req_net {			__u16 manuf_msg;			__u16 controller;			__u8  nettype;		} manufacturer_req_net;		struct manufacturer_req_v42 {			__u16 manuf_msg;			__u16 controller;			__u32 v42control;		} manufacturer_req_v42;		struct manufacturer_conf_v42 {			__u16 manuf_msg;			__u16 controller;		} manufacturer_conf_v42;		struct manufacturer_req_err {			__u16 manuf_msg;			__u16 controller;		} manufacturer_req_err;		struct manufacturer_ind_err {			__u16 manuf_msg;			__u16 controller;			__u32 errcode;			__u8  errstring; /* actually up to 160 */		} manufacturer_ind_err;		struct manufacturer_req_msn {			__u16 manuf_msg;			__u16 controller;			actcapi_msn msnmap;		} manufacturer_req_msn;		/* TODO: TraceInit-req/conf/ind/resp and		 *       TraceDump-req/conf/ind/resp		 */		struct connect_req {			__u8  controller;			__u8  bchan;			__u32 infomask __attribute__ ((packed));			__u8  si1;			__u8  si2;			__u8  eaz;			actcapi_addr addr;		} connect_req;		struct connect_conf {			__u16 plci;			__u16 info;		} connect_conf;		struct connect_ind {			__u16 plci;			__u8  controller;			__u8  si1;			__u8  si2;			__u8  eaz;			actcapi_addr addr;		} connect_ind;		struct connect_resp {			__u16 plci;			__u8  rejectcause;		} connect_resp;		struct connect_active_ind {			__u16 plci;			actcapi_addr addr;		} connect_active_ind;		struct connect_active_resp {			__u16 plci;		} connect_active_resp;		struct connect_b3_req {			__u16 plci;			actcapi_ncpi ncpi;		} connect_b3_req;		struct connect_b3_conf {			__u16 plci;			__u16 ncci;			__u16 info;		} connect_b3_conf;		struct connect_b3_ind {			__u16 ncci;			__u16 plci;			actcapi_ncpi ncpi;		} connect_b3_ind;		struct connect_b3_resp {			__u16 ncci;			__u8  rejectcause;			actcapi_ncpi ncpi __attribute__ ((packed));		} connect_b3_resp;		struct disconnect_req {			__u16 plci;			__u8  cause;		} disconnect_req;		struct disconnect_conf {			__u16 plci;			__u16 info;		} disconnect_conf;		struct disconnect_ind {			__u16 plci;			__u16 info;		} disconnect_ind;		struct disconnect_resp {			__u16 plci;		} disconnect_resp;		struct connect_b3_active_ind {			__u16 ncci;			actcapi_ncpi ncpi;		} connect_b3_active_ind;		struct connect_b3_active_resp {			__u16 ncci;		} connect_b3_active_resp;		struct disconnect_b3_req {			__u16 ncci;			actcapi_ncpi ncpi;		} disconnect_b3_req;		struct disconnect_b3_conf {			__u16 ncci;			__u16 info;		} disconnect_b3_conf;		struct disconnect_b3_ind {			__u16 ncci;			__u16 info;			actcapi_ncpi ncpi;		} disconnect_b3_ind;		struct disconnect_b3_resp {			__u16 ncci;		} disconnect_b3_resp;		struct info_ind {			__u16 plci;			actcapi_infonr nr;			actcapi_infoel el;		} info_ind;		struct info_resp {			__u16 plci;		} info_resp;		struct listen_b3_req {			__u16 plci;		} listen_b3_req;		struct listen_b3_conf {			__u16 plci;			__u16 info;		} listen_b3_conf;		struct select_b2_protocol_req {			__u16 plci;			__u8  protocol;			actcapi_dlpd dlpd __attribute__ ((packed));		} select_b2_protocol_req;		struct select_b2_protocol_conf {			__u16 plci;			__u16 info;		} select_b2_protocol_conf;		struct select_b3_protocol_req {			__u16 plci;			__u8  protocol;			actcapi_ncpd ncpd __attribute__ ((packed));		} select_b3_protocol_req;		struct select_b3_protocol_conf {			__u16 plci;			__u16 info;		} select_b3_protocol_conf;		struct listen_req {			__u8  controller;			__u32 infomask __attribute__ ((packed));  			__u16 eazmask __attribute__ ((packed));			__u16 simask __attribute__ ((packed));		} listen_req;		struct listen_conf {			__u8  controller;			__u16 info __attribute__ ((packed));		} listen_conf;		struct data_b3_req {			__u16 fakencci;			__u16 datalen;			__u32 unused;			__u8  blocknr;			__u16 flags __attribute__ ((packed));		} data_b3_req;		struct data_b3_ind {			__u16 fakencci;			__u16 datalen;			__u32 unused;			__u8  blocknr;			__u16 flags __attribute__ ((packed));		} data_b3_ind;		struct data_b3_resp {			__u16 ncci;			__u8  blocknr;		} data_b3_resp;		struct data_b3_conf {			__u16 ncci;			__u8  blocknr;			__u16 info __attribute__ ((packed));		} data_b3_conf;	} msg;} actcapi_msg;extern __inline__ unsigned shortactcapi_nextsmsg(act2000_card *card){	unsigned long flags;	unsigned short n;	save_flags(flags);	cli();	n = card->msgnum;	card->msgnum++;	card->msgnum &= 0x7fff;	restore_flags(flags);	return n;}#define DEBUG_MSG#undef DEBUG_DATA_MSG#undef DEBUG_DUMP_SKBextern int actcapi_chkhdr(act2000_card *, actcapi_msghdr *);extern int actcapi_listen_req(act2000_card *);extern int actcapi_manufacturer_req_net(act2000_card *);extern int actcapi_manufacturer_req_v42(act2000_card *, ulong);extern int actcapi_manufacturer_req_errh(act2000_card *);extern int actcapi_manufacturer_req_msn(act2000_card *);extern int actcapi_connect_req(act2000_card *, act2000_chan *, char *, char, int, int);extern void actcapi_select_b2_protocol_req(act2000_card *, act2000_chan *);extern void actcapi_disconnect_b3_req(act2000_card *, act2000_chan *);extern void actcapi_connect_resp(act2000_card *, act2000_chan *, __u8);extern void actcapi_dispatch(act2000_card *);#ifdef DEBUG_MSGextern void actcapi_debug_msg(struct sk_buff *skb, int);#else#define actcapi_debug_msg(skb, len)#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -