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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? blue.cpp

?? blue-usu: (Search, Connect, Playback, Record) with bluetooth devices like headset. Rely on usu dr
?? CPP
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
	 * If no msg@all, return 0, !-ESOMETHING	 */	int ritorno=readMsg(proto);	if (log && ritorno<0) {		int l;		switch (ritorno) {			case -EBADMSG  : Dprintf("> msg with unk proto!"); break;			default: break;		}		Dprintf("(len(%d)",lastPduC);		for (l=0; l<lastPduC; l++)			Dprintf("%02x",(unsigned char)lastPdu[l]);		Dprintf(")");	}	/* 2) Deliver pdu to all listener.*/	if (ritorno>0) {		int l;		ritorno=0;		for (l=0; (l<MAX_PENDING_CMD) && (ritorno==0); l++)			if (hcireqres[l] && !hcireqres[l]->done() && hcireqres[l]->getProto()==proto)				ritorno=hcireqres[l]->readRes(lastPdu,lastPduC);		if (ritorno==0) {			/* A: No destination: this msg !have a listener.*/			ritorno=-ESRCH;			if (log) {				Dprintf("> event without listener(");				for (l=0; l<lastPduC; l++)					Dprintf("%02x",(unsigned char)lastPdu[l]);				Dprintf(")");			}		} else if (ritorno>0) {			/* B: msg readed entirely.*/			l--; if (hcireqres[l]->done()) {/*hcireqres[l].detach()~HciReqRes()*/;hcireqres[l]=NULL;}		} else if (ritorno<0) {			/* C: msg readed, but msg have an error that must be signaled here.*/			l--; if (hcireqres[l]->done()) {/*hcireqres[l].detach()~HciReqRes()*/; hcireqres[l]=NULL;}		}		/* Any msg remain here until writeHci(), readHci().*/	}	/* 	 * <0 mean error: (exist msg and is erroneous4listener) || (!exist msg, have problem in get it).	 * >0 mean ok (exist msg .	 * =0 mean no msg available.	 */	if (log) {		Dprintf(" readHci(%s=%s)\n",ritorno>0?"bytes":ritorno==0?"nomsg":"err",linuxErrDes(ritorno));	}	return ritorno;}int HciBus::clear(HciReqRes& hci) {	int l;	int ritorno=-ENOMSG;	for (l=0; (l<MAX_PENDING_CMD) && (ritorno); l++)		if (hcireqres[l]==&hci) {			/*hcireqres[l].detach()~HciReqRes*/;			hcireqres[l]=NULL;			ritorno=0;		}	if (ritorno)		Dprintf("HciBus::clear() object !found !!!\n");	/*		for (l=0; l<lastPduC; l++)			Dprintf("%02x",(unsigned char)lastPdu[l]);	 */	return ritorno;}int HciBus::clear() {	int l;	int ritorno=0;	for (l=0; l<MAX_PENDING_CMD; l++)		if (hcireqres[l]) {			Dprintf("HciBus::clear() found obj!!!\n");			/*hcireqres[l].detach()~HciReqRes()*/;			hcireqres[l]=NULL;			ritorno++;		}	return ritorno;}/* Wait with granularity of 50ms.*/int HciBus::hci_waitRes(int ms) {	return waitRes(ms,HciReqRes::HCI);}int HciBus::l2cap_waitRes(int ms) {	return waitRes(ms,HciReqRes::L2CAP);}/* On timeout return 0.*/int HciBus::waitRes(int ms,HciReqRes::ProtoT proto) {	int ritorno=0;	int msRem=ms;	ritorno=readHci(proto);	while (ritorno==0 && msRem>0) {		struct timespec ts;		ts.tv_sec=0;		ts.tv_nsec=200<<20;		nanosleep(&ts,0); /* nanosleep() seem to ignore 2nd parameter.*/		msRem-=200;		ritorno=readHci(proto);	}	if (log && ritorno==0 && ms!=0) Dprintf("===TimedOut(%d msec)!===\n",ms);	return ritorno;}enum mainErrT {NO_ERR, SCHEDULE_ERR, PROTO_ERR};int mainErr(enum mainErrT err,char* opt=0) {	int ritorno=0;	switch (err) {		case SCHEDULE_ERR:			Dprintf("Error while scheduling a pdu on hci\n");			Dprintf("\t - blue.cpp/MAX_PENDING_CMD too low?\n");			Dprintf("\n - pdu scheduled have done()==true?\n");			ritorno=-ECANCELED;			break;		case PROTO_ERR:			Dprintf("Error on hci handshacking.\n");			ritorno=-EPROTO;			break;		case NO_ERR:			ritorno=0;			break;		default:			ritorno=-EPROTO;			break;	}	return ritorno;}int HciBus::readMac(char* mac) {	int ritorno = -EIO;	HciCmd rHM(READ_HOST_MAC);	/* 1) Discard all msg.*/	while (hci_waitRes(0)==-ESRCH) {}	if (schedule(rHM)>0 && (ritorno=hci_waitRes(100))>0) {		rHM.scanRes(mac,6);		ritorno = 0;	}	return ritorno;}int HciBus::searchDevice(char macs[][6], char opts[][8], int nMac, int nSec) {	int ritorno = -EINVAL;	if (macs && nMac>0 && nMac<255 && nSec>0 && nSec<255) {		HciCmd ds(SEARCH_DEVICE);		ds.compileReq("\x33\x8B\x9e",3); /* lap filed: fixed in openbt, little var in bluez.*/		char tmp;		tmp = (char) nSec; ds.compileReq(&tmp,1);		tmp = (char) nMac; ds.compileReq(&tmp,1);				/* 1) Discard all msg.*/		while (hci_waitRes(0)==-ESRCH) {}		if (schedule(ds)>0 && (ritorno=hci_waitRes(100))>0)			ritorno=0;		/*    		 *    02 0F ...  (0 or more times).		 *    01 01 00		 */		/* schedule() return 0 because4event we !write any byte to hci file.*/		if (ritorno>=0) {		HciEvt sde(SEARCH_DEVICE_END);		HciEvt sdf(SEARCH_DEVICE_FOUND);		int cMac=0;		if ((ritorno = schedule(sde))>=0 && (ritorno = schedule(sdf))>=0) {			while (ritorno>=0 && !sde.done()) {				ritorno = hci_waitRes((nSec+1)*1000);				if (sdf.done()) {					/* Got a response. Decode it & reschedule it.*/					sdf.scanRes(&tmp,1);					sdf.scanRes(macs[cMac],6);					sdf.scanRes(opts[cMac],8);										Dprintf("device %d) ",nMac);					int l;					for (l=0; l<6; l++)						Dprintf("%2.2x:",(unsigned char)macs[cMac][l]);					Dprintf("opt ");					for (l=0; l<8; l++)						Dprintf("%2.2x:",(unsigned char)opts[cMac][l]);					cMac++;					/* 					 * page scan repetition mode   	(1)					 * page scan period mode	(1)					 * page scan mode		(1)					 * class (3 bytes)					 * clock (2 bytes)					 *					 */					ritorno = schedule(sdf);				}			}			if (ritorno>=0)				ritorno = cMac;		}		if (!sde.done()) clear(sde); if (!sdf.done()) clear(sdf);		}	}	return ritorno;}/*  * opt will derive from inquiry. * If none, memset(opt,0,8). */int HciBus::readRemoteName(char* mac, char* opt, char* nome, int nomeL) {	int ritorno;	HciCmd rn(READ_REMOTE_NAME);	rn.compileReq(mac,6);/*	rn.compileReq("\x00\x00\x00\x00",4);  *	Perhaps page scan * are !related to inquiry res[i]. *	If use inquiryres[i] page_scan_rep_mode, page_scan_mode, hci level crash, *	causing extract of usu module, crash in /proc read() or other proc related crash. * *	Seeing from bluez we see that, *	  		      (rep,mode) *	  inquiryRes		0   0 *	  readRemoteName()	1   0 * *	  or, without having clock offset, * *	  readRemoteName()	2   0  (clock offset= 0 0)	opt[0]=(opt[6]==0 && opt[7]==0)?2:1;	opt[2]=0;	opt[0]=2;	opt[2]=0;	opt[6]=opt[7]=0; */	opt[7]|=0x80;		rn.compileReq(opt  ,1);	/* page scan rep mode.*/	rn.compileReq(opt+2,1); /* page scan mode */	rn.compileReq(opt+6,2); /* clock offset */	/* 1) Discard all msg.*/	while (hci_waitRes(0)==-ESRCH) {}	if ((ritorno = schedule(rn))>0 && (ritorno = hci_waitRes(15000))>0) {		HciEvt dn(DEVICE_NAME);		if ((ritorno = schedule(dn))>=0 && (ritorno = hci_waitRes(15000))>=0) {			if (!dn.done()) {ritorno = -EBADMSG;}			else {				char tmp=0;				char mactmp[6];				if (ritorno>nomeL)					ritorno = nomeL;				dn.scanRes(&tmp,1);				dn.scanRes(mactmp,6);				if (tmp==0) {dn.scanRes(nome,ritorno); nome[ritorno-1]='\x0';}				if (tmp==4) memcpy(nome,"-EHOSTDOWN",ritorno);				else if (tmp) snprintf(nome,ritorno,"(err=%d)",tmp);			}		}		}	return ritorno;}int HciBus::Dump() {	Dprintf("fd{Command,Event,Data{Async,Sync}}=%d,%d,%d,%d.\n",fdCommand,fdEvent,fdDataAsync,fdDataSync);	return 0;}#define HCICMD_start(nome, id, opt) HciCmd nome(id);nome.writeReq(opt,nome.getReqL());hci.schedule(nome)/*HCICMD_start(wVS, WRITE_VOICE_SETTING,	"\x60\x00");*/HciConn::HciConn(HciBus& hcib):hciBus(hcib) {	hciHandle=hciScoHandle=hciL2capHandleDst=hciL2capHandleSrc=0;}HciConn::~HciConn() {}int HciConn::writeConf() {	int ritorno=1;	HciCmd wSF(SET_EVENT_FILTER,"\x00\x80");	HciCmd wPT(WRITE_PAGESCAN_TIMEOUT,	"\x00\x80");	HciCmd wCT(WRITE_INCONNECTION_TIMEOUT,	"\x00\x7d");	HciCmd wSE(WRITE_SCAN_ENABLE,	"\x03");	HciCmd wAE(WRITE_AUTH_ENABLE, 	"\x00");	HciCmd wEM(WRITE_ENCR_MODE, 	"\x00");	HciCmd wLN(WRITE_LOCAL_NAME, 	"gattigerII-0");	HciCmd wCD(WRITE_CLASS_OF_DEV,	"\x00\x01\x3e");	HciCmd wVS(WRITE_VOICE_SETTING,	"\x60\x00");		/* 1) Discard all msg.*/	while (hciBus.hci_waitRes(0)==-ESRCH) {}	ritorno*=hciBus.schedule(wSF);	ritorno*=hciBus.schedule(wPT);	ritorno*=hciBus.schedule(wCT);	ritorno*=hciBus.schedule(wSE);	ritorno*=hciBus.schedule(wAE);	ritorno*=hciBus.schedule(wEM);	ritorno*=hciBus.schedule(wLN);	ritorno*=hciBus.schedule(wCD);	ritorno*=hciBus.schedule(wVS);	if (ritorno<0)		return mainErr(SCHEDULE_ERR);	hciBus.hci_waitRes(100); /* Ignore EINVAL for SET_EVENT_FILTER.*/	if (hciBus.hci_waitRes(100)<=0) return mainErr(PROTO_ERR);	if (hciBus.hci_waitRes(100)<=0) return mainErr(PROTO_ERR);	if (hciBus.hci_waitRes(100)<=0) return mainErr(PROTO_ERR);	if (hciBus.hci_waitRes(100)<=0) return mainErr(PROTO_ERR);	if (hciBus.hci_waitRes(100)<=0) return mainErr(PROTO_ERR);	if (hciBus.hci_waitRes(100)<=0) return mainErr(PROTO_ERR);	if (hciBus.hci_waitRes(100)<=0) return mainErr(PROTO_ERR);	if (hciBus.hci_waitRes(100)<=0) return mainErr(PROTO_ERR);	return 0;}bool isEmpty(char* str,int len) {	if ((str==NULL)||(len<=0))		return true;	int l;	for (l=0; l<len; l++)		if (str[l])			return false;	return true;}/* Only parameter needed.*/int HciConn::connectHci(enum ConnInitByT whoStartConn) {	int ritorno=0;	//	memcpy(mac,m,6);	if (whoStartConn==HOST) {		HciCmd connCmd(CREATE_CONNECTION);		connCmd.compileReq(mac,6);		connCmd.compileReq("\x18\xcc",2);	/* pktType=D{M,H}{1,3,5}.*/		connCmd.compileReq("\x01\x00",2);	/* pscanRepMode, pscanMode.*/		connCmd.compileReq("\x00\x00\x01",3); 	/* ClockOffset 0000, roleSwitch=1.*/		/* PageScanRepMode: messo a 2, dopo la connessione hci mi manda un evento:		 * PAGE SCAN REP MODE CHANGE 20 7 mac 1		 */				if (hciBus.schedule(connCmd)<0)			return mainErr(SCHEDULE_ERR);		/* Can return -EBUSY, that is a temporary state.*/		while (hciBus.hci_waitRes(1000)<=-ESRCH) return mainErr(PROTO_ERR);	} else {		/* 0) Wait for spontaneous event.*/		HciEvt connReq(CONNECT_REQUEST);		if (hciBus.schedule(connReq)<0)			return mainErr(SCHEDULE_ERR);		/* Stop when 		 * 	=0 mean no msg available, or		 * 	>0 found event, or		 * 	!=-ESRCH mean some error.*/		while ((ritorno=hciBus.hci_waitRes(0))==-ESRCH && !connReq.done()) {}		if (!connReq.done())  {			hciBus.clear(connReq);			return -1/* To avoid error on screen, cause we retry whoIn=HOST mainErr(PROTO_ERR)*/;		}		connReq.scanRes(mac,6);	}	/* Data flow trifurcation:*/	HciEvt connectComplete(CONNECT_COMPLETE);	HciEvt pinCodeReq(PINCODE_REQ);	HciEvt linkKeyReq(LINKKEY_REQ); /* has !any state so hci_waitRes()<0 if bus error.*/	if (hciBus.schedule(connectComplete)<0 || hciBus.schedule(pinCodeReq)<0 || hciBus.schedule(linkKeyReq)<0)		return mainErr(SCHEDULE_ERR);	/* Wait one event.	 * If connectComplete.done()==true but status!=0 => return mainErr(PROTO_ERR).*/	if (hciBus.hci_waitRes(5000)<=0) return mainErr(PROTO_ERR);//	while ((ritorno=hciBus.hci_waitRes(0))==-ESRCH) {}//	if (ritorno!=-ESRCH && ritorno<0) return mainErr(PROTO_ERR);//	if (connectComplete.done()) {//		if (log) Dprintf("Retry connection\n");//		return connectHci(mac,DEVICE);//	}	if (whoStartConn==DEVICE) {		HciCmd connAcceptCmd(ACCEPT_CONNECTION);		connAcceptCmd.compileReq(mac,6);		connAcceptCmd.compileReq("\x01",1); /* 1 Remain slave, 0 Become master.*/		if (hciBus.schedule(connAcceptCmd)<0)			return mainErr(SCHEDULE_ERR);		while (hciBus.hci_waitRes(100)<0 && !connAcceptCmd.done()) {}		if (!connAcceptCmd.done())			return mainErr(PROTO_ERR);	}		ritorno=-EPROTO;	if (linkKeyReq.done()) {		/* If we are here we have correct (status==0) linkKeyEvent.*/		HciCmd linkKeyRes(!isEmpty(linkkey,16)?					LINKKEY_REPLY:					LINKKEY_NEG_REPLY);		linkKeyRes.compileReq(mac,6);		if (!isEmpty(linkkey,16))			linkKeyRes.compileReq(linkkey,16);		if (hciBus.schedule(linkKeyRes)<0) return mainErr(SCHEDULE_ERR);		/* hci_waitRes() can return:		 * 	-ENODEV		 *	-ETIMEOUT		 * 	-EBADMSG		 * 	-ESRCH		 * 	read(fd)		 * 	readRes() = status || other.		 */		/* Wait response(ignoring result) & next event=PINCODE REQ || connectComplete.done().*/		ritorno = hciBus.hci_waitRes(1000);		if ((ritorno = hciBus.hci_waitRes(1000))<0) return mainErr(PROTO_ERR);	}	if (pinCodeReq.done()) {		char tmp=/*16*/strlen(pin);		HciCmd pinCodeRes(PINCODE_REPLY);		pinCodeRes.compileReq(mac,6);		pinCodeRes.compileReq(&tmp,1);		pinCodeRes.compileReq(pin,16/*tmp*/);		if (hciBus.schedule(pinCodeRes)<0) return mainErr(SCHEDULE_ERR);		if (hciBus.hci_waitRes(1000)<=0) return mainErr(PROTO_ERR);		/* Wait [link key notify] and connectComplete event.*/		HciEvt lkn(LINKKEY_NOTIFY);		if (hciBus.schedule(lkn)<0) return mainErr(SCHEDULE_ERR);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产综合色产在线精品| 日韩av一级电影| 欧美精品日韩一区| 国产成人福利片| 亚洲第一福利视频在线| 久久精品人人做人人爽97| 色综合天天综合网天天看片| 九一久久久久久| 亚洲妇女屁股眼交7| 国产精品久久三| 日韩欧美精品在线视频| 色天使久久综合网天天| 国产美女娇喘av呻吟久久| 日韩精品电影在线观看| 亚洲美女在线一区| 中文字幕精品在线不卡| 欧美一级视频精品观看| 欧美特级限制片免费在线观看| 成人蜜臀av电影| 紧缚捆绑精品一区二区| 夜色激情一区二区| 国产精品福利一区二区三区| 日韩一区二区三区av| 欧美视频精品在线观看| 91小视频在线观看| eeuss鲁一区二区三区| 国产一区二区三区四区五区入口| 蜜臀久久久99精品久久久久久| 午夜不卡在线视频| 国产精品一区二区三区网站| 亚洲激情图片小说视频| 亚洲欧美视频在线观看| 亚洲欧美在线观看| 中文字幕在线播放不卡一区| 中文幕一区二区三区久久蜜桃| 久久免费视频一区| 久久久综合视频| www成人在线观看| 亚洲精品国产高清久久伦理二区| 国产精品久久久久四虎| 国产精品―色哟哟| 中文字幕一区av| 亚洲免费伊人电影| 亚洲最色的网站| 亚洲成人一区二区| 日本在线不卡视频| 免费观看久久久4p| 激情都市一区二区| 高清视频一区二区| 99视频热这里只有精品免费| 91最新地址在线播放| 色吧成人激情小说| 欧美日韩精品电影| 日韩一区和二区| 精品久久久久久无| 国产亚洲精品久| 中文字幕在线不卡一区| 亚洲一级在线观看| 日本成人中文字幕| 国产乱码精品一区二区三区忘忧草 | 欧美不卡一二三| 久久免费精品国产久精品久久久久| 久久久久国产精品免费免费搜索| 久久精品视频免费| 亚洲男人的天堂在线aⅴ视频| 亚洲综合另类小说| 麻豆中文一区二区| 成人毛片老司机大片| 色综合天天综合色综合av | 午夜精品久久一牛影视| 蜜臀av在线播放一区二区三区| 国产美女精品在线| 91国产丝袜在线播放| 日韩欧美黄色影院| 中文字幕在线不卡一区二区三区| 亚洲成人一区二区| 国产精华液一区二区三区| 一本大道久久a久久综合婷婷 | 成人免费小视频| 五月天一区二区| 国产91精品露脸国语对白| 在线观看三级视频欧美| 日韩三级免费观看| 国产精品高潮呻吟久久| 日韩—二三区免费观看av| 国产丶欧美丶日本不卡视频| 在线观看欧美黄色| 久久这里只精品最新地址| 樱花影视一区二区| 国模冰冰炮一区二区| 91久久久免费一区二区| 精品国产三级电影在线观看| 亚洲精品视频在线观看免费| 精品一区二区影视| 欧美性大战xxxxx久久久| 精品国产一区二区三区四区四| 亚洲欧美成aⅴ人在线观看| 麻豆精品一区二区| 色狠狠桃花综合| 久久九九影视网| 人人精品人人爱| 色呦呦国产精品| 日本一区二区三区视频视频| 日韩高清不卡一区二区| 97精品视频在线观看自产线路二| 精品国偷自产国产一区| 亚洲成av人片| 色综合久久中文字幕| 久久综合久久鬼色| 日韩av中文在线观看| 色综合天天综合网国产成人综合天| 久久久久97国产精华液好用吗| 亚洲h动漫在线| 在线看一区二区| 国产精品久久久久毛片软件| 国产精品影视天天线| 欧美一级一区二区| 日韩精品高清不卡| 欧美日韩免费观看一区三区| 亚洲男帅同性gay1069| 成人午夜视频网站| 久久久99久久| 国产精品综合久久| 精品国产一二三| 另类专区欧美蜜桃臀第一页| 欧美电影在线免费观看| 亚洲国产另类av| 欧美在线一二三四区| 一区二区三区在线视频免费观看| 成人高清免费观看| 国产精品乱码一区二区三区软件 | 欧美一级精品在线| 亚洲成av人片| 欧美精品99久久久**| 五月天精品一区二区三区| 欧美三级电影在线看| 亚洲一区二区四区蜜桃| 欧美影院一区二区三区| 性欧美大战久久久久久久久| 精品污污网站免费看| 午夜亚洲福利老司机| 欧美猛男男办公室激情| 午夜精品视频一区| 日韩视频123| 国产一区二区不卡| 欧美国产精品中文字幕| 99视频热这里只有精品免费| 亚洲精品免费电影| 欧美人与z0zoxxxx视频| 免费美女久久99| 久久天天做天天爱综合色| 国产白丝网站精品污在线入口| 国产精品免费人成网站| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲自拍偷拍欧美| 日韩欧美成人一区| 国产电影一区二区三区| 亚洲精品国久久99热| 欧美精品18+| 国产一区二区毛片| 中文字幕一区二区三区蜜月| 91国偷自产一区二区三区成为亚洲经典| 亚洲午夜视频在线| 亚洲精品在线电影| 成人精品一区二区三区中文字幕 | 国内成人免费视频| 国产精品成人在线观看| 欧美日韩一级黄| 国内精品写真在线观看| 综合久久国产九一剧情麻豆| 欧美三级蜜桃2在线观看| 狠狠色综合色综合网络| 中文字幕在线一区| 91.xcao| 春色校园综合激情亚洲| 亚洲一区二区三区四区五区中文| 欧美一级片免费看| a级高清视频欧美日韩| 日韩一区精品字幕| 中文字幕免费在线观看视频一区| 欧美性欧美巨大黑白大战| 国内精品第一页| 亚洲一区二区综合| 国产视频一区在线播放| 欧美日韩国产免费| 成人精品视频网站| 日本不卡视频在线| 亚洲三级在线免费| 精品蜜桃在线看| 欧洲视频一区二区| 国产成人鲁色资源国产91色综| 亚洲综合丝袜美腿| 国产欧美精品一区二区色综合| 欧美日韩中文字幕一区| 国产99久久精品| 麻豆精品在线视频| 亚洲第一在线综合网站| 中文字幕在线一区二区三区| 精品电影一区二区三区 | 日本一区二区高清|