亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? capi.c

?? linux和2410結合開發 用他可以生成2410所需的zImage文件
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* $Id: capi.c,v 1.1.4.1 2001/11/20 14:19:34 kai Exp $ * * ISDN lowlevel-module for the IBM ISDN-S0 Active 2000. * CAPI encoder/decoder * * 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 * */#define __NO_VERSION__#include "act2000.h"#include "capi.h"static actcapi_msgdsc valid_msg[] = {	{{ 0x86, 0x02}, "DATA_B3_IND"},       /* DATA_B3_IND/CONF must be first because of speed!!! */	{{ 0x86, 0x01}, "DATA_B3_CONF"},	{{ 0x02, 0x01}, "CONNECT_CONF"},	{{ 0x02, 0x02}, "CONNECT_IND"},	{{ 0x09, 0x01}, "CONNECT_INFO_CONF"},	{{ 0x03, 0x02}, "CONNECT_ACTIVE_IND"},	{{ 0x04, 0x01}, "DISCONNECT_CONF"},	{{ 0x04, 0x02}, "DISCONNECT_IND"},	{{ 0x05, 0x01}, "LISTEN_CONF"},	{{ 0x06, 0x01}, "GET_PARAMS_CONF"},	{{ 0x07, 0x01}, "INFO_CONF"},	{{ 0x07, 0x02}, "INFO_IND"},	{{ 0x08, 0x01}, "DATA_CONF"},	{{ 0x08, 0x02}, "DATA_IND"},	{{ 0x40, 0x01}, "SELECT_B2_PROTOCOL_CONF"},	{{ 0x80, 0x01}, "SELECT_B3_PROTOCOL_CONF"},	{{ 0x81, 0x01}, "LISTEN_B3_CONF"},	{{ 0x82, 0x01}, "CONNECT_B3_CONF"},	{{ 0x82, 0x02}, "CONNECT_B3_IND"},	{{ 0x83, 0x02}, "CONNECT_B3_ACTIVE_IND"},	{{ 0x84, 0x01}, "DISCONNECT_B3_CONF"},	{{ 0x84, 0x02}, "DISCONNECT_B3_IND"},	{{ 0x85, 0x01}, "GET_B3_PARAMS_CONF"},	{{ 0x01, 0x01}, "RESET_B3_CONF"},	{{ 0x01, 0x02}, "RESET_B3_IND"},	/* {{ 0x87, 0x02, "HANDSET_IND"}, not implemented */	{{ 0xff, 0x01}, "MANUFACTURER_CONF"},	{{ 0xff, 0x02}, "MANUFACTURER_IND"},#ifdef DEBUG_MSG	/* Requests */	{{ 0x01, 0x00}, "RESET_B3_REQ"},	{{ 0x02, 0x00}, "CONNECT_REQ"},	{{ 0x04, 0x00}, "DISCONNECT_REQ"},	{{ 0x05, 0x00}, "LISTEN_REQ"},	{{ 0x06, 0x00}, "GET_PARAMS_REQ"},	{{ 0x07, 0x00}, "INFO_REQ"},	{{ 0x08, 0x00}, "DATA_REQ"},	{{ 0x09, 0x00}, "CONNECT_INFO_REQ"},	{{ 0x40, 0x00}, "SELECT_B2_PROTOCOL_REQ"},	{{ 0x80, 0x00}, "SELECT_B3_PROTOCOL_REQ"},	{{ 0x81, 0x00}, "LISTEN_B3_REQ"},	{{ 0x82, 0x00}, "CONNECT_B3_REQ"},	{{ 0x84, 0x00}, "DISCONNECT_B3_REQ"},	{{ 0x85, 0x00}, "GET_B3_PARAMS_REQ"},	{{ 0x86, 0x00}, "DATA_B3_REQ"},	{{ 0xff, 0x00}, "MANUFACTURER_REQ"},	/* Responses */	{{ 0x01, 0x03}, "RESET_B3_RESP"},		{{ 0x02, 0x03}, "CONNECT_RESP"},		{{ 0x03, 0x03}, "CONNECT_ACTIVE_RESP"},		{{ 0x04, 0x03}, "DISCONNECT_RESP"},		{{ 0x07, 0x03}, "INFO_RESP"},		{{ 0x08, 0x03}, "DATA_RESP"},		{{ 0x82, 0x03}, "CONNECT_B3_RESP"},		{{ 0x83, 0x03}, "CONNECT_B3_ACTIVE_RESP"},		{{ 0x84, 0x03}, "DISCONNECT_B3_RESP"},	{{ 0x86, 0x03}, "DATA_B3_RESP"},	{{ 0xff, 0x03}, "MANUFACTURER_RESP"},#endif	{{ 0x00, 0x00}, NULL},};#define num_valid_msg (sizeof(valid_msg)/sizeof(actcapi_msgdsc))#define num_valid_imsg 27 /* MANUFACTURER_IND *//* * Check for a valid incoming CAPI message. * Return: *   0 = Invalid message *   1 = Valid message, no B-Channel-data *   2 = Valid message, B-Channel-data */intactcapi_chkhdr(act2000_card * card, actcapi_msghdr *hdr){	int i;	if (hdr->applicationID != 1)		return 0;	if (hdr->len < 9)		return 0;	for (i = 0; i < num_valid_imsg; i++)		if ((hdr->cmd.cmd == valid_msg[i].cmd.cmd) &&		    (hdr->cmd.subcmd == valid_msg[i].cmd.subcmd)) {			return (i?1:2);		}	return 0;}#define ACTCAPI_MKHDR(l, c, s) { \	skb = alloc_skb(l + 8, GFP_ATOMIC); \	if (skb) { \	        m = (actcapi_msg *)skb_put(skb, l + 8); \		m->hdr.len = l + 8; \		m->hdr.applicationID = 1; \	        m->hdr.cmd.cmd = c; \	        m->hdr.cmd.subcmd = s; \	        m->hdr.msgnum = actcapi_nextsmsg(card); \	} else m = NULL;\}#define ACTCAPI_CHKSKB if (!skb) { \	printk(KERN_WARNING "actcapi: alloc_skb failed\n"); \	return; \}#define ACTCAPI_QUEUE_TX { \	actcapi_debug_msg(skb, 1); \	skb_queue_tail(&card->sndq, skb); \	act2000_schedule_tx(card); \}intactcapi_listen_req(act2000_card *card){	__u16 eazmask = 0;	int i;	actcapi_msg *m;	struct sk_buff *skb;	for (i = 0; i < ACT2000_BCH; i++)		eazmask |= card->bch[i].eazmask;	ACTCAPI_MKHDR(9, 0x05, 0x00);        if (!skb) {                printk(KERN_WARNING "actcapi: alloc_skb failed\n");                return -ENOMEM;        }	m->msg.listen_req.controller = 0;	m->msg.listen_req.infomask = 0x3f; /* All information */	m->msg.listen_req.eazmask = eazmask;	m->msg.listen_req.simask = (eazmask)?0x86:0; /* All SI's  */	ACTCAPI_QUEUE_TX;        return 0;}intactcapi_connect_req(act2000_card *card, act2000_chan *chan, char *phone,		    char eaz, int si1, int si2){	actcapi_msg *m;	struct sk_buff *skb;	ACTCAPI_MKHDR((11 + strlen(phone)), 0x02, 0x00);	if (!skb) {                printk(KERN_WARNING "actcapi: alloc_skb failed\n");		chan->fsm_state = ACT2000_STATE_NULL;		return -ENOMEM;	}	m->msg.connect_req.controller = 0;	m->msg.connect_req.bchan = 0x83;	m->msg.connect_req.infomask = 0x3f;	m->msg.connect_req.si1 = si1;	m->msg.connect_req.si2 = si2;	m->msg.connect_req.eaz = eaz?eaz:'0';	m->msg.connect_req.addr.len = strlen(phone) + 1;	m->msg.connect_req.addr.tnp = 0x81;	memcpy(m->msg.connect_req.addr.num, phone, strlen(phone));	chan->callref = m->hdr.msgnum;	ACTCAPI_QUEUE_TX;	return 0;}static voidactcapi_connect_b3_req(act2000_card *card, act2000_chan *chan){	actcapi_msg *m;	struct sk_buff *skb;	ACTCAPI_MKHDR(17, 0x82, 0x00);	ACTCAPI_CHKSKB;	m->msg.connect_b3_req.plci = chan->plci;	memset(&m->msg.connect_b3_req.ncpi, 0,	       sizeof(m->msg.connect_b3_req.ncpi));	m->msg.connect_b3_req.ncpi.len = 13;	m->msg.connect_b3_req.ncpi.modulo = 8;	ACTCAPI_QUEUE_TX;}/* * Set net type (1TR6) or (EDSS1) */intactcapi_manufacturer_req_net(act2000_card *card){	actcapi_msg *m;	struct sk_buff *skb;	ACTCAPI_MKHDR(5, 0xff, 0x00);        if (!skb) {                printk(KERN_WARNING "actcapi: alloc_skb failed\n");                return -ENOMEM;        }	m->msg.manufacturer_req_net.manuf_msg = 0x11;	m->msg.manufacturer_req_net.controller = 1;	m->msg.manufacturer_req_net.nettype = (card->ptype == ISDN_PTYPE_EURO)?1:0;	ACTCAPI_QUEUE_TX;	printk(KERN_INFO "act2000 %s: D-channel protocol now %s\n",	       card->interface.id, (card->ptype == ISDN_PTYPE_EURO)?"euro":"1tr6");	card->interface.features &=		~(ISDN_FEATURE_P_UNKNOWN | ISDN_FEATURE_P_EURO | ISDN_FEATURE_P_1TR6);	card->interface.features |=		((card->ptype == ISDN_PTYPE_EURO)?ISDN_FEATURE_P_EURO:ISDN_FEATURE_P_1TR6);        return 0;}/* * Switch V.42 on or off */intactcapi_manufacturer_req_v42(act2000_card *card, ulong arg){	actcapi_msg *m;	struct sk_buff *skb;	ACTCAPI_MKHDR(8, 0xff, 0x00);        if (!skb) {                printk(KERN_WARNING "actcapi: alloc_skb failed\n");                return -ENOMEM;        }	m->msg.manufacturer_req_v42.manuf_msg = 0x10;	m->msg.manufacturer_req_v42.controller = 0;	m->msg.manufacturer_req_v42.v42control = (arg?1:0);	ACTCAPI_QUEUE_TX;        return 0;}/* * Set error-handler */intactcapi_manufacturer_req_errh(act2000_card *card){	actcapi_msg *m;	struct sk_buff *skb;	ACTCAPI_MKHDR(4, 0xff, 0x00);        if (!skb) {                printk(KERN_WARNING "actcapi: alloc_skb failed\n");                return -ENOMEM;        }	m->msg.manufacturer_req_err.manuf_msg = 0x03;	m->msg.manufacturer_req_err.controller = 0;	ACTCAPI_QUEUE_TX;        return 0;}/* * Set MSN-Mapping. */intactcapi_manufacturer_req_msn(act2000_card *card){	msn_entry *p = card->msn_list;	actcapi_msg *m;	struct sk_buff *skb;	int len;	while (p) {		int i;		len = strlen(p->msn);		for (i = 0; i < 2; i++) {			ACTCAPI_MKHDR(6 + len, 0xff, 0x00);			if (!skb) {				printk(KERN_WARNING "actcapi: alloc_skb failed\n");				return -ENOMEM;			}			m->msg.manufacturer_req_msn.manuf_msg = 0x13 + i;			m->msg.manufacturer_req_msn.controller = 0;			m->msg.manufacturer_req_msn.msnmap.eaz = p->eaz;			m->msg.manufacturer_req_msn.msnmap.len = len;			memcpy(m->msg.manufacturer_req_msn.msnmap.msn, p->msn, len);			ACTCAPI_QUEUE_TX;		}		p = p->next;	}        return 0;}voidactcapi_select_b2_protocol_req(act2000_card *card, act2000_chan *chan){	actcapi_msg *m;	struct sk_buff *skb;	ACTCAPI_MKHDR(10, 0x40, 0x00);	ACTCAPI_CHKSKB;	m->msg.select_b2_protocol_req.plci = chan->plci;	memset(&m->msg.select_b2_protocol_req.dlpd, 0,	       sizeof(m->msg.select_b2_protocol_req.dlpd));	m->msg.select_b2_protocol_req.dlpd.len = 6;	switch (chan->l2prot) {		case ISDN_PROTO_L2_TRANS:			m->msg.select_b2_protocol_req.protocol = 0x03;			m->msg.select_b2_protocol_req.dlpd.dlen = 4000;			break;		case ISDN_PROTO_L2_HDLC:			m->msg.select_b2_protocol_req.protocol = 0x02;			m->msg.select_b2_protocol_req.dlpd.dlen = 4000;			break;		case ISDN_PROTO_L2_X75I:		case ISDN_PROTO_L2_X75UI:		case ISDN_PROTO_L2_X75BUI:			m->msg.select_b2_protocol_req.protocol = 0x01;			m->msg.select_b2_protocol_req.dlpd.dlen = 4000;			m->msg.select_b2_protocol_req.dlpd.laa = 3;			m->msg.select_b2_protocol_req.dlpd.lab = 1;			m->msg.select_b2_protocol_req.dlpd.win = 7;			m->msg.select_b2_protocol_req.dlpd.modulo = 8;			break;	}	ACTCAPI_QUEUE_TX;}static voidactcapi_select_b3_protocol_req(act2000_card *card, act2000_chan *chan){	actcapi_msg *m;	struct sk_buff *skb;	ACTCAPI_MKHDR(17, 0x80, 0x00);	ACTCAPI_CHKSKB;	m->msg.select_b3_protocol_req.plci = chan->plci;	memset(&m->msg.select_b3_protocol_req.ncpd, 0,	       sizeof(m->msg.select_b3_protocol_req.ncpd));	switch (chan->l3prot) {		case ISDN_PROTO_L3_TRANS:			m->msg.select_b3_protocol_req.protocol = 0x04;			m->msg.select_b3_protocol_req.ncpd.len = 13;			m->msg.select_b3_protocol_req.ncpd.modulo = 8;			break;	}	ACTCAPI_QUEUE_TX;}static voidactcapi_listen_b3_req(act2000_card *card, act2000_chan *chan){	actcapi_msg *m;	struct sk_buff *skb;	ACTCAPI_MKHDR(2, 0x81, 0x00);	ACTCAPI_CHKSKB;	m->msg.listen_b3_req.plci = chan->plci;	ACTCAPI_QUEUE_TX;}static voidactcapi_disconnect_req(act2000_card *card, act2000_chan *chan){	actcapi_msg *m;	struct sk_buff *skb;	ACTCAPI_MKHDR(3, 0x04, 0x00);	ACTCAPI_CHKSKB;	m->msg.disconnect_req.plci = chan->plci;	m->msg.disconnect_req.cause = 0;	ACTCAPI_QUEUE_TX;}voidactcapi_disconnect_b3_req(act2000_card *card, act2000_chan *chan){	actcapi_msg *m;	struct sk_buff *skb;	ACTCAPI_MKHDR(17, 0x84, 0x00);	ACTCAPI_CHKSKB;	m->msg.disconnect_b3_req.ncci = chan->ncci;	memset(&m->msg.disconnect_b3_req.ncpi, 0,	       sizeof(m->msg.disconnect_b3_req.ncpi));	m->msg.disconnect_b3_req.ncpi.len = 13;	m->msg.disconnect_b3_req.ncpi.modulo = 8;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
1024成人网色www| 国产精品国产精品国产专区不蜜| caoporn国产精品| 国产精品123区| 国产激情一区二区三区四区| 国产精品一区二区果冻传媒| 国产另类ts人妖一区二区| 国产不卡免费视频| 成人久久视频在线观看| 色综合天天狠狠| 欧美三级日韩三级| 日韩欧美激情四射| 国产日产亚洲精品系列| 国产精品久久久久久久久动漫| 最好看的中文字幕久久| 伊人色综合久久天天人手人婷| 亚洲成人自拍网| 奇米亚洲午夜久久精品| 国产成人午夜99999| 成人av综合在线| 欧美在线观看一区| 精品91自产拍在线观看一区| 欧美国产1区2区| 亚洲高清三级视频| 国精产品一区一区三区mba视频| 国产高清一区日本| 欧美日本一区二区| 久久精品网站免费观看| 一区二区三区在线观看欧美| 蜜臀91精品一区二区三区| 国产成人免费视频精品含羞草妖精| 色综合激情久久| 精品日韩一区二区| 夜夜精品视频一区二区| 国产综合一区二区| 欧美日韩一区国产| 国产校园另类小说区| 亚洲国产成人av好男人在线观看| 久久99精品国产麻豆婷婷洗澡| 91在线高清观看| 欧美一二三四在线| 一区二区三区中文免费| 国产美女一区二区三区| 精品视频999| 1024国产精品| 岛国精品一区二区| 日韩一级片网址| 亚洲成人你懂的| 99精品欧美一区二区三区小说 | 99re66热这里只有精品3直播 | 国产美女精品在线| 这里只有精品视频在线观看| 亚洲天天做日日做天天谢日日欢 | 国产99久久精品| 欧美久久久一区| 一区二区三区小说| 成人免费毛片aaaaa**| 欧美精品一区二区三区蜜桃视频 | 韩国精品一区二区| 欧美日韩精品系列| 亚洲愉拍自拍另类高清精品| 99国产精品视频免费观看| www国产成人| 九九国产精品视频| 日韩一区二区免费电影| 午夜精品影院在线观看| 在线一区二区观看| 一区二区三区视频在线看| 99久久精品免费看| 国产精品电影院| 99在线精品一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋| 国产白丝精品91爽爽久久| 精品国产第一区二区三区观看体验 | 亚洲免费观看高清在线观看| 波多野结衣中文字幕一区二区三区| 精品va天堂亚洲国产| 国产一区二区毛片| 国产欧美视频一区二区| 成人av影院在线| 国产精品第五页| 日本道免费精品一区二区三区| 一区二区久久久| 欧美女孩性生活视频| 五月天中文字幕一区二区| 在线成人av网站| 激情综合五月婷婷| 国产日韩欧美一区二区三区乱码 | 久久人人超碰精品| 国产99久久久国产精品| 亚洲色图视频网站| 欧美日韩一二三| 精品一区免费av| 中文字幕一区二区三区色视频| 99re成人精品视频| 日韩av中文在线观看| 久久久91精品国产一区二区精品| 成人黄色av电影| 亚洲电影你懂得| 久久先锋影音av鲁色资源网| www.综合网.com| 日本伊人精品一区二区三区观看方式| 日韩一区二区三区在线观看| 国产宾馆实践打屁股91| 一区二区三区蜜桃| 精品国产一区二区三区久久影院 | 91影视在线播放| 丝袜脚交一区二区| 国产色爱av资源综合区| 欧美三级视频在线观看| 国产精品456| 日本午夜一区二区| 日韩久久一区二区| 精品国精品自拍自在线| 91精彩视频在线| 国产精品羞羞答答xxdd| 亚洲丶国产丶欧美一区二区三区| 国产午夜一区二区三区| 欧美福利一区二区| 97精品久久久午夜一区二区三区| 免费久久精品视频| 一区二区三国产精华液| 中文字幕第一区二区| 日韩亚洲欧美一区二区三区| 日本黄色一区二区| 成人午夜av在线| 紧缚奴在线一区二区三区| 亚洲国产日韩精品| 亚洲天堂福利av| 国产欧美久久久精品影院 | 国产乱理伦片在线观看夜一区| 午夜精品免费在线观看| 亚洲人午夜精品天堂一二香蕉| 国产亚洲欧美日韩日本| 日韩美女在线视频| 91精品国产手机| 欧美美女一区二区三区| 91久久香蕉国产日韩欧美9色| 国产成人一区在线| 国产精品自拍一区| 美女一区二区久久| 日本大胆欧美人术艺术动态| 香蕉加勒比综合久久 | 久久麻豆一区二区| 欧美一级片在线| 欧美一区二区久久久| 欧美一区二区三区小说| 91精品欧美久久久久久动漫| 欧美日韩色一区| 欧美二区三区的天堂| 欧美丰满嫩嫩电影| 日韩一级高清毛片| 欧美精品一区二区三区在线播放| 欧美mv日韩mv国产网站app| 精品国产1区二区| 精品国产凹凸成av人网站| 欧美成人激情免费网| 欧美精品一区二区久久婷婷| ww久久中文字幕| 中文字幕+乱码+中文字幕一区| 国产色产综合色产在线视频| 国产精品久久综合| 亚洲精品国产高清久久伦理二区| 玉米视频成人免费看| 亚洲mv在线观看| 久久99这里只有精品| 成人永久aaa| 色呦呦国产精品| 3atv一区二区三区| 欧美精品一区二区三区视频| 国产精品天干天干在线综合| 亚洲欧洲综合另类| 日韩精品91亚洲二区在线观看 | 日韩av电影天堂| 国产精品一区二区果冻传媒| 一本久久a久久免费精品不卡| 欧美人伦禁忌dvd放荡欲情| 欧美va在线播放| 国产精品白丝在线| 天天综合网 天天综合色| 国产一区 二区| 欧美自拍偷拍一区| xfplay精品久久| 亚洲午夜激情av| 国产一区在线不卡| 欧美视频中文字幕| 久久综合丝袜日本网| 一区二区高清在线| 韩国精品久久久| 欧美在线观看视频一区二区三区| 精品捆绑美女sm三区| 亚洲精品你懂的| 国产乱对白刺激视频不卡| 欧美亚洲一区二区在线| 久久精品男人天堂av| 午夜精品影院在线观看| 99精品视频在线免费观看| 26uuu精品一区二区三区四区在线| 亚洲欧美精品午睡沙发| 国产精品一区二区在线播放 |