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

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

?? hciattach_tialt.c

?? BlueZ源碼
?? C
字號:
/* * *  BlueZ - Bluetooth protocol stack for Linux * *  Copyright (C) 2005-2008  Marcel Holtmann <marcel@holtmann.org> * * *  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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA * */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <stdio.h>#include <errno.h>#include <fcntl.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <signal.h>#include <syslog.h>#include <termios.h>#include <time.h>#include <sys/time.h>#include <sys/poll.h>#include <sys/param.h>#include <sys/ioctl.h>#include <sys/socket.h>#include <sys/uio.h>#include <bluetooth/bluetooth.h>#include <bluetooth/hci.h>#include <bluetooth/hci_lib.h>#define FAILIF(x, args...) do {   \	if (x) {					  \		fprintf(stderr, ##args);  \		return -1;				  \	}							  \} while(0)typedef struct {	uint8_t uart_prefix;	hci_event_hdr hci_hdr;	evt_cmd_complete cmd_complete;	uint8_t status;	uint8_t data[16];} __attribute__((packed)) command_complete_t;extern int read_hci_event(int fd, unsigned char* buf, int size);static int read_command_complete(int fd, unsigned short opcode, unsigned char len) {	command_complete_t resp;	/* Read reply. */	FAILIF(read_hci_event(fd, (unsigned char *)&resp, sizeof(resp)) < 0,		   "Failed to read response");		/* Parse speed-change reply */	FAILIF(resp.uart_prefix != HCI_EVENT_PKT,		   "Error in response: not an event packet, but 0x%02x!\n", 		   resp.uart_prefix);	FAILIF(resp.hci_hdr.evt != EVT_CMD_COMPLETE, /* event must be event-complete */		   "Error in response: not a cmd-complete event, "		   "but 0x%02x!\n", resp.hci_hdr.evt);	FAILIF(resp.hci_hdr.plen < 4, /* plen >= 4 for EVT_CMD_COMPLETE */		   "Error in response: plen is not >= 4, but 0x%02x!\n",		   resp.hci_hdr.plen);	/* cmd-complete event: opcode */	FAILIF(resp.cmd_complete.opcode != (uint16_t)opcode,		   "Error in response: opcode is 0x%04x, not 0x%04x!",		   resp.cmd_complete.opcode, opcode);	return resp.status == 0 ? 0 : -1;}typedef struct {	uint8_t uart_prefix;	hci_command_hdr hci_hdr;	uint32_t speed;} __attribute__((packed)) texas_speed_change_cmd_t;static int texas_change_speed(int fd, uint32_t speed) {		return 0;	/* Send a speed-change request */	texas_speed_change_cmd_t cmd;	int n;	cmd.uart_prefix = HCI_COMMAND_PKT;	cmd.hci_hdr.opcode = 0xff36;	cmd.hci_hdr.plen = sizeof(uint32_t);	cmd.speed = speed;	fprintf(stdout, "Setting speed to %d\n", speed);	n = write(fd, &cmd, sizeof(cmd));	if (n < 0) {		perror("Failed to write speed-set command");		return -1;	}	n = write(fd, &cmd, sizeof(cmd));	if (n < 0) {		perror("Failed to write command.");		return -1;	}	if (n < (int)sizeof(cmd)) {		fprintf(stderr, "Wanted to write %d bytes, could only write %d. "				"Stop\n", (int)sizeof(cmd), n);		return -1;	}	/* Parse speed-change reply */	if (read_command_complete(fd, 0xff36, 4) < 0) {		return -1;	}	fprintf(stdout, "Speed changed to %d.\n", speed);}static int texas_load_firmware(int fd, const char *firmware) {	fprintf(stdout, "Opening firmware file: %s\n", firmware);	int fw = open(firmware, O_RDONLY);	FAILIF(fw < 0, 		   "Could not open firmware file %s: %s (%d).\n",		   firmware, strerror(errno), errno);	fprintf(stdout, "Uploading firmware...\n");	do {		int nr;		/* Read each command and wait for a response. */		unsigned char cmdp[1 + sizeof(hci_command_hdr)];		nr = read(fw, cmdp, sizeof(cmdp));		if (!nr)			break;		hci_command_hdr *cmd = (hci_command_hdr *)(cmdp + 1);		FAILIF(nr != sizeof(cmdp), "Could not read H4 + HCI header!\n");		FAILIF(*cmdp != HCI_COMMAND_PKT, "Command is not an H4 command packet!\n");				unsigned char data[1024];		FAILIF(read(fw, data, cmd->plen) != cmd->plen,			   "Could not read %d bytes of data for command with opcode %04x!\n",			   cmd->plen,			   cmd->opcode);						{#if 0			fprintf(stdout, "\topcode 0x%04x (%d bytes of data).\n", 					cmd->opcode, 					cmd->plen);#endif			struct iovec iov_cmd[2];			iov_cmd[0].iov_base = cmdp;			iov_cmd[0].iov_len	= sizeof(cmdp);			iov_cmd[1].iov_base = data;			iov_cmd[1].iov_len	= cmd->plen;			int nw = writev(fd, iov_cmd, 2);			FAILIF(nw != sizeof(cmd) +	cmd->plen, 				   "Could not send entire command (sent only %d bytes)!\n",				   nw);		}		/* Wait for response */		if (read_command_complete(fd, 								  cmd->opcode,								  cmd->plen) < 0) {			return -1;		}				} while(1);	fprintf(stdout, "Firmware upload successful.\n");	close(fw);	return 0;}int texasalt_init(int fd, int speed, struct termios *ti){	struct timespec tm = {0, 50000};	char cmd[4];	unsigned char resp[100];		/* Response */	int n;	memset(resp,'\0', 100);	/* It is possible to get software version with manufacturer specific 	   HCI command HCI_VS_TI_Version_Number. But the only thing you get more	   is if this is point-to-point or point-to-multipoint module */	/* Get Manufacturer and LMP version */	cmd[0] = HCI_COMMAND_PKT;	cmd[1] = 0x01;	cmd[2] = 0x10;	cmd[3] = 0x00;	do {		n = write(fd, cmd, 4);		if (n < 0) {			perror("Failed to write init command (READ_LOCAL_VERSION_INFORMATION)");			return -1;		}		if (n < 4) {			fprintf(stderr, "Wanted to write 4 bytes, could only write %d. Stop\n", n);			return -1;		}		/* Read reply. */		if (read_hci_event(fd, resp, 100) < 0) {			perror("Failed to read init response (READ_LOCAL_VERSION_INFORMATION)");			return -1;		}		/* Wait for command complete event for our Opcode */	} while (resp[4] != cmd[1] && resp[5] != cmd[2]);	/* Verify manufacturer */	if ((resp[11] & 0xFF) != 0x0d)		fprintf(stderr,"WARNING : module's manufacturer is not Texas Instrument\n");	/* Print LMP version */	fprintf(stderr, "Texas module LMP version : 0x%02x\n", resp[10] & 0xFF);	/* Print LMP subversion */	{		unsigned short lmp_subv = resp[13] | (resp[14] << 8);		unsigned short brf_chip = (lmp_subv & 0x7c00) >> 10;		static const char *c_brf_chip[5] = {			"unknown",			"unknown",			"brf6100",			"brf6150",			"brf6300"		};		fprintf(stderr, "Texas module LMP sub-version : 0x%04x\n", lmp_subv);		fprintf(stderr,				"\tinternal version freeze: %d\n"				"\tsoftware version: %d\n"				"\tchip: %s (%d)\n",				lmp_subv & 0x7f,				((lmp_subv & 0x8000) >> (15-3)) | ((lmp_subv & 0x380) >> 7),				((brf_chip > 4) ? "unknown" : c_brf_chip[brf_chip]),				brf_chip);		char fw[100];		sprintf(fw, "/etc/firmware/%s.bin", c_brf_chip[brf_chip]);		texas_load_firmware(fd, fw);		texas_change_speed(fd, speed);	}	nanosleep(&tm, NULL);	return 0;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品72免费观看| 国产精品美女久久久久aⅴ国产馆| 亚洲啪啪综合av一区二区三区| 高清国产一区二区三区| 久久噜噜亚洲综合| 成人毛片在线观看| 1024成人网| 欧美顶级少妇做爰| 免费在线观看成人| 久久久久久久久久久久电影| 99热99精品| 日日夜夜精品视频免费| 精品福利在线导航| 色哟哟一区二区三区| 亚洲精品欧美专区| 欧美一区二区精品| 国产91精品久久久久久久网曝门| 亚洲免费资源在线播放| 在线成人av网站| 国产精品18久久久久久久久| 中文字幕在线观看不卡| 欧美麻豆精品久久久久久| 激情丁香综合五月| 亚洲丝袜精品丝袜在线| 制服丝袜一区二区三区| 国产成人亚洲综合a∨婷婷| 亚洲精品成人天堂一二三| 日韩精品一区二区三区在线观看 | 视频在线观看一区二区三区| 国产三级久久久| 欧洲国内综合视频| 激情六月婷婷综合| 亚洲你懂的在线视频| 欧美一区日韩一区| 97久久精品人人爽人人爽蜜臀| 亚洲v中文字幕| 欧美国产精品中文字幕| 欧美视频一区二| 成人av在线观| 九九热在线视频观看这里只有精品| 中文字幕亚洲区| 欧美成人一区二区三区在线观看| av不卡一区二区三区| 麻豆精品国产91久久久久久| 亚洲靠逼com| 久久久久久免费网| 91精品在线观看入口| 欧美精品免费视频| 97成人超碰视| 国产精品夜夜嗨| 麻豆成人久久精品二区三区红| 亚洲精品一卡二卡| 国产精品欧美久久久久一区二区| 欧美一区二区在线免费观看| 日本道免费精品一区二区三区| 国产精品系列在线观看| 久久激情五月激情| 午夜精品久久久久久久久久| 一区av在线播放| 中文字幕va一区二区三区| 日韩你懂的在线播放| 欧美日韩另类一区| 色婷婷av一区二区三区大白胸| 岛国一区二区三区| 国产成人免费视| 国内精品免费在线观看| 蜜臀a∨国产成人精品| 亚洲成人av资源| 一二三区精品福利视频| 亚洲男人天堂一区| 亚洲婷婷综合色高清在线| 中国色在线观看另类| 26uuu国产一区二区三区 | 欧美日韩国产美| 欧美日韩在线播| 欧美主播一区二区三区| 欧美在线色视频| 欧美色精品在线视频| 欧美在线观看视频一区二区三区| 色94色欧美sute亚洲线路一久| 色婷婷av一区二区三区之一色屋| 在线一区二区视频| 在线免费观看视频一区| 欧美性猛交xxxx黑人交| 欧美精品v国产精品v日韩精品| 欧美久久免费观看| 日韩一区二区三区av| 欧美精品一区二区三区一线天视频| 日韩欧美美女一区二区三区| 欧美精品一区二区三| 国产婷婷色一区二区三区四区| 国产精品久久久久久久久果冻传媒| 欧美国产精品中文字幕| 一区二区三区在线免费视频| 亚洲国产成人va在线观看天堂| 蜜桃视频一区二区三区在线观看| 国内成人精品2018免费看| 成人自拍视频在线观看| 色婷婷综合久久久| 制服丝袜在线91| 国产性做久久久久久| 亚洲美女免费视频| 首页欧美精品中文字幕| 国产一本一道久久香蕉| 91亚洲精品久久久蜜桃| 欧美日韩午夜影院| 久久日韩粉嫩一区二区三区| 亚洲欧美日韩在线播放| 日韩av午夜在线观看| 丁香六月久久综合狠狠色| 欧美亚洲综合在线| 精品国产成人在线影院| 综合久久久久久| 蜜臀91精品一区二区三区| 成人精品一区二区三区中文字幕| 欧美日韩国产片| 国产天堂亚洲国产碰碰| 午夜激情一区二区| 国产成人在线网站| 欧美高清视频在线高清观看mv色露露十八| 精品国产91洋老外米糕| 亚洲欧美日韩成人高清在线一区| 免费成人性网站| 一本色道亚洲精品aⅴ| www亚洲一区| 婷婷丁香久久五月婷婷| www.亚洲人| 欧美va亚洲va国产综合| 亚洲美女屁股眼交3| 国产成人午夜电影网| 制服丝袜国产精品| 一区二区三区精品久久久| 国产一区中文字幕| 91精品国产综合久久精品麻豆| 国产精品电影一区二区三区| 久久99国产精品免费网站| 91福利视频网站| 国产亲近乱来精品视频| 蜜臀va亚洲va欧美va天堂| 色综合欧美在线| 国产精品妹子av| 精品一区二区三区香蕉蜜桃| 精品视频色一区| 最新中文字幕一区二区三区| 久久福利视频一区二区| 4438成人网| 亚洲线精品一区二区三区| 国产大陆a不卡| 久久久蜜桃精品| 国产一区二区三区精品欧美日韩一区二区三区 | jvid福利写真一区二区三区| 日韩视频免费观看高清完整版| 亚洲一区在线观看网站| 99久久精品国产导航| 亚洲国产精品黑人久久久| 国产精品一二三在| 久久久久久久久久久久久女国产乱| 日韩国产欧美一区二区三区| 欧美日韩国产另类不卡| 亚洲二区在线视频| 欧美久久一区二区| 性欧美疯狂xxxxbbbb| 欧美日韩一区不卡| 亚洲国产成人va在线观看天堂| 日本韩国视频一区二区| 亚洲免费观看高清完整版在线 | 一本大道久久a久久精二百| 国产精品家庭影院| 成人黄页在线观看| 中文字幕永久在线不卡| 白白色 亚洲乱淫| 亚洲免费观看高清| 在线观看亚洲成人| 亚洲国产精品一区二区久久恐怖片| 在线欧美小视频| 日韩精品久久理论片| 日韩欧美一区二区在线视频| 麻豆精品一区二区三区| 久久久91精品国产一区二区精品| 国产69精品久久久久777| 国产精品麻豆视频| 日本精品视频一区二区| 亚洲bt欧美bt精品| 日韩丝袜美女视频| 国产高清一区日本| 亚洲三级在线播放| 欧美午夜精品久久久久久超碰| 亚洲国产成人av好男人在线观看| 久久老女人爱爱| 国产91精品在线观看| 一区二区三区在线视频观看| 欧美一区二区三区小说| 韩国av一区二区三区| 综合分类小说区另类春色亚洲小说欧美| 色综合一区二区三区| 日韩激情视频网站| 国产亚洲欧美日韩在线一区| 91麻豆免费看片| 另类小说综合欧美亚洲| 国产精品美女久久久久av爽李琼 |