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

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

?? main.cpp

?? blue-usu: (Search, Connect, Playback, Record) with bluetooth devices like headset. Rely on usu dr
?? CPP
字號(hào):
/* * main.cpp * * Author : Lionetti Salvatore <salvatorelionetti@yahoo.it> * License: GPL * * 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 of the License, 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#include <stdio.h>#include <unistd.h>#include <time.h> 	/* nanosleep(), timespec.*/#include <string.h>	/* memset().*/#include <fcntl.h>  	/* open().*/#include <unistd.h> 	/* read()/close().*/#include <errno.h>#include "blue.h"HciBus hciBus;int startConn(char cmd='C', char* mac=NULL, char* pin=NULL, char* lk=NULL) {	int ritorno=0;	HciConn hci(hciBus);	hciBus.clear();	/* 	 * w	write configuration,	 * 	 * c	connect hci level,	 * l	connect l2cap,	 * s    connect sco	 * 	 * d	disconnect sco, l2cap, hci level	 *	 */	if (cmd=='C' || cmd=='c') {//		hci.setMac("\x44\xf0\x01\x5b\x02\x00");//		linkKeyRes.compileReq("\xE4\xA1\xCA\x92\x03\x49\x18\xF9\x14\x0A\x95\x84\x4A\x0C\x51\xF5",16);		ritorno = -EINVAL;		if (!isEmpty(mac,6)) {			ritorno = 0;			hci.setMac(mac);			if (!isEmpty(pin,16)) hci.setPin(pin);			else {				char stdpin[16];				if (isEmpty(lk,16)) {					memset(stdpin,0,16);					write(1,"Inserisci il pin[Invio]: ",25);					read(0,stdpin,16);					stdpin[strlen(stdpin)-1]='\x0';					printf("\npin inserito(%s)",stdpin);					memcpy(pin,stdpin,6);				} else					memcpy(stdpin,"\x31\x32\x33\x34",4);				hci.setPin(stdpin);			}			printf("\npin inserito(%s)",pin);			hci.setLinkKey(lk);		}	}	if (!ritorno && (cmd=='\x0' || cmd=='w' || cmd=='C'))		if (ritorno==0) ritorno=hci.writeConf();	hciBus.clear();	if (!ritorno && (cmd=='\x0' || cmd=='c' || cmd=='C')) {			/*ritorno=hci.connect(mac,DEVICE);			if (ritorno<0)*/		ritorno=hci.connectHci(HOST);		if (ritorno==0 && lk) hci.getLinkKey(lk);	}	hciBus.clear();	if (!ritorno && (cmd=='\x0' || cmd=='l' || cmd=='C'))		ritorno=hci.connectL2cap();	hciBus.clear();	if (!ritorno && (cmd=='\x0' || cmd=='s' || cmd=='C'))		ritorno=hci.connectSco();	hciBus.clear();	if (!ritorno && (cmd=='\x0' || cmd=='d'))		if (ritorno==0) ritorno=hci.disconnect();	hciBus.clear();//	hciBus.Dump();	return ritorno;}struct Device {	unsigned char mac[6];	char nome[256];	unsigned char pin[16];	unsigned char link[16];	Device() { reset(); }	void operator=(const Device& id) {memcpy(this,&id,sizeof(Device));}	void reset() { memset(this,0,sizeof(Device)); }};class DeviceStore {	static char nomeFile[];	static FILE* fp;public:	typedef enum WorkT {LOAD,SAVE}; /* One device at time.*/	DeviceStore();	~DeviceStore();	int DeviceStore::workOnStore(WorkT whatWork, Device &device);};char DeviceStore::nomeFile[]="devices.txt";FILE* DeviceStore::fp = NULL;DeviceStore::DeviceStore() {memcpy(nomeFile,"devices.txt",sizeof(nomeFile));}DeviceStore::~DeviceStore() {if (fp) fclose(fp);}#define MAC_FMT "%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x"#define MAC_ARG(a) a[0],a[1],a[2],a[3],a[4],a[5]#define LINK_FMT "%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x"#define LINK_ARG(a) a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]#define MAC_FMT_SCAN "%2x:%2x:%2x:%2x:%2x:%2x"#define MAC_ARG_SCAN(a) a,a+1,a+2,a+3,a+4,a+5	#define LINK_FMT_SCAN "%2x:%2x:%2x:%2x:%2x:%2x:%2x:%2x:%2x:%2x:%2x:%2x:%2x:%2x:%2x:%2x"#define LINK_ARG_SCAN(a) a,a+1,a+2,a+3,a+4,a+5,a+6,a+7,a+8,a+9,a+10,a+11,a+12,a+13,a+14,a+15/*  * Now we read all device then write all device. * LOAD: load first device found (exist internal state) * SAVE: append current device to file. * * ret: 0 mean no error. */int DeviceStore::workOnStore(WorkT whatWork, Device& indevice) {	/* sizeof(mac) return 4*	 * 1) Do a tour in file:	 * 	LOAD: memo value	 * 	STOR: memo from value (excluded) to eof, 	 * 	      overwrite area on file, value are merged (isEmpty()).	 */	int ritorno = -ENODATA;	Device curDevice;	if (fp || (fp=fopen("devices.txt",whatWork==LOAD?"r":"w+"))) {		switch (whatWork) {			case LOAD: {				char riga[80];				enum LoadStatus {NONE, FOUND, DONE} stato=NONE, statokm1=NONE;				while ((stato!=DONE) && fgets(riga,80,fp)) {					char ts[80];					int tl,l;					unsigned int *ti=(unsigned int*)ts;					memset(ts,0,80);					statokm1=stato;					if (sscanf(riga,"\tmac=\"" MAC_FMT_SCAN "\"",MAC_ARG_SCAN(ti))==6) {					      if (riga[6]!=' ') {curDevice.reset(); stato = FOUND;}					      for (l=0; l<6; l++) curDevice.mac[l]=(unsigned char)ti[l];					}else if(sscanf(riga,"\tnome=\"%s\"",ts)==1) {						memcpy(curDevice.nome,ts,strlen(ts)-1);					}else if((tl=sscanf(riga,"\tpin=\"" LINK_FMT_SCAN "\"",LINK_ARG_SCAN(ti)))>=4) {						for (l=0; l<tl; l++) curDevice.pin[l]=(unsigned char)ti[l];					}else if((tl=sscanf(riga,"\tpin=\"%s\"",ts))==1) {						memcpy(curDevice.pin,ts,strlen(ts)-1);					}else if((tl=sscanf(riga,"\tlinkkey=\"" LINK_FMT_SCAN "\"",LINK_ARG_SCAN(ti)))==16) {						for (l=0; l<tl; l++) curDevice.link[l]=(unsigned char)ti[l];					}else if(sscanf(riga,"</device%c",ts))						stato = DONE;				}				if (statokm1==FOUND)	{ritorno = 0; indevice=curDevice;}				else 			{ritorno = -ENODATA; fclose(fp); fp=NULL;}				break;			}			case SAVE: {				ritorno=fprintf(fp,"<device>\n");				if (ritorno>0) ritorno=fprintf(fp,"\tmac=\"" MAC_FMT "\"\n", MAC_ARG(indevice.mac));				if (ritorno>0) ritorno=fprintf(fp,"\tnome=\"%s\"\n",indevice.nome);				if (ritorno>0) ritorno=fprintf(fp,"\tpin=\"%s\"\n",indevice.pin);				if (ritorno>0) ritorno=fprintf(fp,"\tlinkkey=\"" LINK_FMT "\"\n",										 LINK_ARG(indevice.link));				if (ritorno>0) ritorno=fprintf(fp,"</device>\n");				if (ritorno>0) ritorno=0;				break;			}		}	}	return ritorno;}# define HOWMAC 10int main(int argc, char* argv[]) {	int ritorno;//	return startConn('d');	char cmd;	/* Local */	unsigned char mac[6];	/* Remote */	Device devices[HOWMAC];	char opts[HOWMAC][8];	int stato[HOWMAC];	int nMac;	int l,k;	nMac=0; cmd=0; ritorno=0;	memset(opts,0,sizeof(opts));	memset(stato,0,sizeof(stato));	/* Load saved device list.*/	DeviceStore ds;	while (nMac<HOWMAC && ds.workOnStore(DeviceStore::LOAD, devices[nMac])==0)		nMac++;	{		int fd=open("currmac.bin",O_RDONLY);		if (fd>0 && read(fd,mac,6)==6)			for (l=0; l<nMac; l++)				if (memcmp(devices[l].mac,mac,6)==0)					stato[l]=!stato[l];		if (fd>0) close(fd);	}	{ /* Read host device mac.*/		memset(mac,0,6);		ritorno = hciBus.readMac((char*)mac);		if (ritorno<0)			return ritorno;	}	while (cmd!=nMac+3) {		printf(" === Blue@" MAC_FMT "=== \n", MAC_ARG(mac));		printf(" 1) Search for reachable peripheral.\n");		printf(" 2) Write Local configuration (audio mode...)\n");		for (l=0; l<nMac; l++)			printf(" %d) %s " MAC_FMT " %s\n",l+3, stato[l]?"Disconnect from":"Connect to",MAC_ARG(devices[l].mac),devices[l].nome);		printf(" %d) quit(Saving current state).",nMac+3);				while ((cmd=getchar())<='0') {}	       	cmd -= '0';//		printf("got char=%x",cmd+'0');				hciBus.clear();		if (cmd==1) {			char newMacs[HOWMAC][6];			char newName[256];			int newnMac=0;			memset(newMacs,0,HOWMAC*6);			write(1,"Searching...",13);			printf("(ret=%d)\n",(ritorno=hciBus.searchDevice(newMacs,opts,HOWMAC)));			if (ritorno>0)			       newnMac = ritorno;						for (k=0; k<newnMac; k++) {				printf("device %d) " MAC_FMT " clock off: %2.2x:%2.2x\n",k,						MAC_ARG((unsigned char)newMacs[k]),						(unsigned char)opts[k][6],						(unsigned char)opts[k][7]);			}									/* New device where merged with old one.*/			for (k=0; (k<newnMac)/* && (ritorno>=0)*/; k++) {#if 0				SONO DIVERSI O NO PER LO STESSO MAC!!!				Belkin dongle: puo dare 4 eventi sullo stesso mac.					       In genere a regime converge.						Es 2 eventi						A B (1o search)						B B						...						Es 3 eventi						A B A						B B B						...										We choice the last value, perhaps the most probable2be steady state.#endif														int n;				for (n=0; n<newnMac; n++)					if (n!=k && !isEmpty(newMacs[k],6) && memcmp(newMacs[k],newMacs[n],6)==0) {						int min=n;						if (k<n) min=k;						printf("delete device %d\n",min);						memset(newMacs[min],0,6);					}														/* However update mac, name, if mac!empty, name readed without problem.*/				ritorno = -EINVAL;				memset(newName,0,256);				if (!isEmpty(newMacs[k],6)) {					printf("device %d) " MAC_FMT " (rep,mode)=(%d,%d) clock off: %2.2x:%2.2x\n",k,							MAC_ARG((unsigned char)newMacs[k]),							(unsigned char)opts[k][0],							(unsigned char)opts[k][2],							(unsigned char)opts[k][6],							(unsigned char)opts[k][7]);					/*opts[k][0]=1;					opts[k][7]|=0x80;					opts[k][0]=2;					opts[k][2]=0;					opts[k][6]=0;					opts[k][7]=0;*/#define READ_REM_NAME#ifdef READ_REM_NAME					if ((ritorno=hciBus.readRemoteName(newMacs[k],opts[k],newName,256))>=0)#endif					{						/* Get un index l onto write, updating nMac id new device.*/						for (l=0; l<nMac; l++)							if (memcmp(newMacs[k],devices[l].mac,6)==0)								break;												if (l==nMac) nMac++;						if (nMac<HOWMAC) {							memcpy(devices[l].mac,newMacs[k],6);#ifdef READ_REM_NAME							memcpy(devices[l].nome,newName,256);#endif						}					}				}			}		}		if (cmd==2) {			ritorno = startConn('w');		}		if (cmd>2 && cmd<nMac+3) {			int k;			bool alreadyConnected=false;			l=cmd-3;			for (k=0; k<nMac; k++)				if (stato[k] && k!=l) {					printf("Already connected with device %d " MAC_FMT ".\n",k,MAC_ARG(devices[k].mac));					alreadyConnected=true;				}			if (!alreadyConnected) {				printf("trying %sconnection with device %d " MAC_FMT ".",stato[l]?"dis":"",cmd, MAC_ARG(devices[l].mac));				ritorno = startConn(stato[l]?'d':'C',						(char*)devices[l].mac,						(char*)devices[l].pin,						(char*)devices[l].link);				printf("ritorno(%d)",ritorno);				if (ritorno>=0) stato[l]=!stato[l];			}		}		hciBus.clear();	}	/* Flush all data on device learned in this session.*/	l=0;	while (l<nMac && ds.workOnStore(DeviceStore::SAVE,devices[l])==0) l++;	{		for (l=0; l<nMac; l++)			if (stato[l])				break;		if (l<nMac) memcpy(mac,devices[l].mac,6);		else memset(mac,0,6);				int fd=open("currmac.bin",O_CREAT|O_WRONLY);		if (fd<=0 || write(fd,mac,6)!=6)			fprintf(stderr,"Non riesco a salvare su file che il device " MAC_FMT " e' connesso!",MAC_ARG(mac));		if (fd>0) close(fd);	}#if 0	char cmd='\x0';	if (argc>1)		cmd = argv[1][0];#endif	return ritorno;	/*startConn(cmd);*/}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品对白交换视频| 亚洲激情五月婷婷| 色综合天天综合网国产成人综合天| 一区二区三区日韩精品视频| 91麻豆精品国产91久久久使用方法| 国产一区视频网站| 亚洲黄色免费网站| 国产日韩欧美精品综合| 91精品国产日韩91久久久久久| 成人午夜电影久久影院| 久久精品国产免费| 亚洲高清免费观看高清完整版在线观看| 久久综合精品国产一区二区三区 | 美女脱光内衣内裤视频久久网站| 国产精品网曝门| 日韩视频一区二区三区| 一本久久综合亚洲鲁鲁五月天| 精品一区二区三区在线观看 | 中文无字幕一区二区三区| 国产精品久久久久久久久搜平片| 日韩一区二区三区电影在线观看 | 久久精品一二三| 欧美日本一区二区在线观看| 不卡的av电影| 国产乱妇无码大片在线观看| 麻豆精品视频在线观看视频| 亚洲一区二区三区四区五区黄 | 久久综合999| 8v天堂国产在线一区二区| 91视频91自| 粉嫩aⅴ一区二区三区四区| 麻豆精品精品国产自在97香蕉| 亚洲一区中文日韩| 亚洲欧美日韩一区| 欧美韩国日本一区| 久久久久亚洲蜜桃| 精品国产欧美一区二区| 在线电影国产精品| 欧美疯狂性受xxxxx喷水图片| 色综合视频在线观看| av电影天堂一区二区在线观看| 国产91精品免费| 福利一区二区在线观看| 高清不卡在线观看av| 成人一区二区三区| 成人精品视频一区二区三区 | 亚洲日韩欧美一区二区在线| 国产精品天天看| 中文字幕亚洲欧美在线不卡| 欧美国产精品久久| 国产精品国产精品国产专区不片| 国产精品嫩草99a| 国产精品久久久久影院亚瑟 | 亚洲国产日韩在线一区模特| 亚洲一区影音先锋| 丝袜脚交一区二区| 日韩 欧美一区二区三区| 欧美三级电影精品| 欧美综合色免费| 欧美日本一区二区| 欧美一区二区三区啪啪| 精品国产自在久精品国产| 久久精品夜夜夜夜久久| 国产精品久久久久久久岛一牛影视| 亚洲欧洲日韩av| 一区二区三区不卡视频在线观看| 一区二区不卡在线播放 | 亚洲韩国一区二区三区| 视频一区二区欧美| 久久99国产精品久久99| 国产成人啪免费观看软件| av午夜一区麻豆| 欧美系列亚洲系列| 日韩欧美在线网站| 国产精品色在线| 亚洲精品ww久久久久久p站| 婷婷成人综合网| 国产在线精品免费av| 99在线精品观看| 91精品麻豆日日躁夜夜躁| 久久伊99综合婷婷久久伊| 亚洲人成网站在线| 免费成人av资源网| 成人va在线观看| 欧美绝品在线观看成人午夜影视| 欧美一二三区在线| 中文字幕不卡在线播放| 亚洲国产三级在线| 国产成人av一区二区三区在线 | 欧美在线视频日韩| 亚洲精品在线观看视频| 亚洲欧美中日韩| 日韩av中文字幕一区二区三区| 国产激情91久久精品导航| 日本乱人伦一区| 国产亚洲一区二区在线观看| 亚洲一区二区三区四区在线 | 国产999精品久久| 欧美精选在线播放| 国产精品久久久久婷婷二区次| 天天综合日日夜夜精品| 成人午夜av电影| 日韩欧美一区二区不卡| 亚洲欧美激情视频在线观看一区二区三区 | 一区二区三区在线视频观看58| 毛片av一区二区| 91国偷自产一区二区三区成为亚洲经典 | 五月综合激情日本mⅴ| 成人黄色国产精品网站大全在线免费观看| 欧美三级电影精品| 中文字幕中文字幕一区二区| 久久国产精品99久久人人澡| 在线视频你懂得一区| 久久精品综合网| 免费欧美日韩国产三级电影| 色婷婷激情一区二区三区| 国产色91在线| 久久精品久久99精品久久| 欧美午夜精品久久久| 国产精品电影院| 国产麻豆9l精品三级站| 56国语精品自产拍在线观看| 亚洲欧美日韩在线| www.99精品| 国产欧美一区视频| 国产精品原创巨作av| 日韩美女在线视频| 免费视频一区二区| 91精品在线免费| 日韩黄色小视频| 欧美巨大另类极品videosbest | 一本一道波多野结衣一区二区| 中文字幕乱码亚洲精品一区| 国产一区二区三区在线观看免费 | 国产日韩欧美不卡在线| 国产制服丝袜一区| 欧美videos大乳护士334| 日本美女视频一区二区| 日韩一级免费一区| 久久精品国产999大香线蕉| 日韩欧美一级精品久久| 久久综合综合久久综合| 日韩三级伦理片妻子的秘密按摩| 日韩电影网1区2区| 日韩美女视频一区二区在线观看| 日本麻豆一区二区三区视频| 日韩一区二区免费电影| 蜜臀99久久精品久久久久久软件| 日韩一级高清毛片| 国产一区二区久久| 国产亚洲欧美日韩在线一区| 成人av资源站| 一区二区三区视频在线看| 欧美蜜桃一区二区三区 | 成人高清免费在线播放| 国产精品福利一区二区三区| 色综合天天综合在线视频| 亚洲一区二区三区美女| 666欧美在线视频| 韩国午夜理伦三级不卡影院| 国产欧美中文在线| 色婷婷av一区二区| 日韩和欧美一区二区三区| 亚洲精品一区二区三区影院 | 欧美日韩国产精品成人| 美美哒免费高清在线观看视频一区二区| 欧美不卡一区二区| 成人免费视频免费观看| 亚洲午夜久久久久久久久久久| 欧美一区二区三区喷汁尤物| 国产美女视频一区| 亚洲激情中文1区| 欧美一区二区三区公司| 国产99久久久久| 亚洲国产婷婷综合在线精品| 精品欧美一区二区久久| 波多野结衣中文字幕一区| 亚洲在线视频网站| www成人在线观看| 色婷婷精品久久二区二区蜜臂av | 国产精品人成在线观看免费| 欧美三级中文字幕| 国产一区福利在线| 亚洲综合男人的天堂| 欧美四级电影在线观看| 国产一级精品在线| 亚洲一二三区在线观看| 久久蜜桃一区二区| 欧美日韩精品一区二区三区蜜桃 | 国产成人免费网站| 亚洲国产综合人成综合网站| 久久一区二区三区国产精品| 色婷婷亚洲综合| 国内精品伊人久久久久av一坑 | 天天影视网天天综合色在线播放| 国产日韩综合av| 欧美日韩一级黄| 成人精品国产一区二区4080| 视频在线在亚洲| 中文字幕一区二区三区精华液|