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

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

?? hciconfig.c

?? 基于LINUX內核驅動的開發
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * *  BlueZ - Bluetooth protocol stack for Linux * *  Copyright (C) 2000-2001  Qualcomm Incorporated *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com> *  Copyright (C) 2002-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 <ctype.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <getopt.h>#include <sys/param.h>#include <sys/ioctl.h>#include <sys/socket.h>#include <bluetooth/bluetooth.h>#include <bluetooth/hci.h>#include <bluetooth/hci_lib.h>#include "textfile.h"#include "csr.h"static struct hci_dev_info di;static int all;static void print_dev_hdr(struct hci_dev_info *di);static void print_dev_info(int ctl, struct hci_dev_info *di);static void print_dev_list(int ctl, int flags){	struct hci_dev_list_req *dl;	struct hci_dev_req *dr;	int i;	if (!(dl = malloc(HCI_MAX_DEV * sizeof(struct hci_dev_req) + sizeof(uint16_t)))) {		perror("Can't allocate memory");		exit(1);	}	dl->dev_num = HCI_MAX_DEV;	dr = dl->dev_req;	if (ioctl(ctl, HCIGETDEVLIST, (void *) dl) < 0) {		perror("Can't get device list");		exit(1);	}	for (i = 0; i< dl->dev_num; i++) {		di.dev_id = (dr+i)->dev_id;		if (ioctl(ctl, HCIGETDEVINFO, (void *) &di) < 0)			continue;		if (hci_test_bit(HCI_RAW, &di.flags) &&				!bacmp(&di.bdaddr, BDADDR_ANY)) {			int dd = hci_open_dev(di.dev_id);			hci_read_bd_addr(dd, &di.bdaddr, 1000);			hci_close_dev(dd);		}		print_dev_info(ctl, &di);	}}static void print_pkt_type(struct hci_dev_info *di){	printf("\tPacket type: %s\n", hci_ptypetostr(di->pkt_type));}static void print_link_policy(struct hci_dev_info *di){	printf("\tLink policy: %s\n", hci_lptostr(di->link_policy));}static void print_link_mode(struct hci_dev_info *di){	printf("\tLink mode: %s\n", hci_lmtostr(di->link_mode));}static void print_dev_features(struct hci_dev_info *di, int format){	printf("\tFeatures: 0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x "				"0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x\n",		di->features[0], di->features[1], di->features[2],		di->features[3], di->features[4], di->features[5],		di->features[6], di->features[7]);	if (format) {		char *tmp = lmp_featurestostr(di->features, "\t\t", 63);		printf("%s\n", tmp);		bt_free(tmp);	}}static void cmd_rstat(int ctl, int hdev, char *opt){	/* Reset HCI device stat counters */	if (ioctl(ctl, HCIDEVRESTAT, hdev) < 0) {		fprintf(stderr, "Can't reset stats counters hci%d: %s (%d)\n",						hdev, strerror(errno), errno);		exit(1);	}}static void cmd_scan(int ctl, int hdev, char *opt){	struct hci_dev_req dr;	dr.dev_id  = hdev;	dr.dev_opt = SCAN_DISABLED;	if (!strcmp(opt, "iscan"))		dr.dev_opt = SCAN_INQUIRY;	else if (!strcmp(opt, "pscan"))		dr.dev_opt = SCAN_PAGE;	else if (!strcmp(opt, "piscan"))		dr.dev_opt = SCAN_PAGE | SCAN_INQUIRY;	if (ioctl(ctl, HCISETSCAN, (unsigned long) &dr) < 0) {		fprintf(stderr, "Can't set scan mode on hci%d: %s (%d)\n",						hdev, strerror(errno), errno);		exit(1);	}}static void cmd_iac(int ctl, int hdev, char *opt){	int s = hci_open_dev(hdev);	if (s < 0) {		fprintf(stderr, "Can't open device hci%d: %s (%d)\n",						hdev, strerror(errno), errno);		exit(1);	}	if (opt) {		int l = strtoul(opt, 0, 16);		uint8_t lap[3];		if (!strcasecmp(opt, "giac")) {			l = 0x9e8b33;		} else if (!strcasecmp(opt, "liac")) {			l = 0x9e8b00;		} else if (l < 0x9e8b00 || l > 0x9e8b3f) {			printf("Invalid access code 0x%x\n", l);			exit(1);		}		lap[0] = (l & 0xff);		lap[1] = (l >> 8) & 0xff;		lap[2] = (l >> 16) & 0xff;		if (hci_write_current_iac_lap(s, 1, lap, 1000) < 0) {			printf("Failed to set IAC on hci%d: %s\n", hdev, strerror(errno));			exit(1);		}	} else {		uint8_t lap[3 * MAX_IAC_LAP];		int i, j;		uint8_t n;		if (hci_read_current_iac_lap(s, &n, lap, 1000) < 0) {			printf("Failed to read IAC from hci%d: %s\n", hdev, strerror(errno));			exit(1);		}		print_dev_hdr(&di);		printf("\tIAC: ");		for (i = 0; i < n; i++) {			printf("0x");			for (j = 3; j--; )				printf("%02x", lap[j + 3 * i]);			if (i < n - 1)				printf(", ");		}		printf("\n");	}	close(s);}static void cmd_auth(int ctl, int hdev, char *opt){	struct hci_dev_req dr;	dr.dev_id = hdev;	if (!strcmp(opt, "auth"))		dr.dev_opt = AUTH_ENABLED;	else		dr.dev_opt = AUTH_DISABLED;	if (ioctl(ctl, HCISETAUTH, (unsigned long) &dr) < 0) {		fprintf(stderr, "Can't set auth on hci%d: %s (%d)\n",						hdev, strerror(errno), errno);		exit(1);	}}static void cmd_encrypt(int ctl, int hdev, char *opt){	struct hci_dev_req dr;	dr.dev_id = hdev;	if (!strcmp(opt, "encrypt"))		dr.dev_opt = ENCRYPT_P2P;	else		dr.dev_opt = ENCRYPT_DISABLED;	if (ioctl(ctl, HCISETENCRYPT, (unsigned long) &dr) < 0) {		fprintf(stderr, "Can't set encrypt on hci%d: %s (%d)\n",						hdev, strerror(errno), errno);		exit(1);	}}static void cmd_secmgr(int ctl, int hdev, char *opt){	int val, s = hci_open_dev(hdev);	if (!strcmp(opt, "secmgr"))		val = 1;	else		val = 0;	if (ioctl(s, HCISETSECMGR, val) < 0) {		fprintf(stderr, "Can't set security manager on hci%d: %s (%d)\n",						hdev, strerror(errno), errno);		exit(1);	}	close(s);}static void cmd_up(int ctl, int hdev, char *opt){	/* Start HCI device */	if (ioctl(ctl, HCIDEVUP, hdev) < 0) {		if (errno == EALREADY)			return;		fprintf(stderr, "Can't init device hci%d: %s (%d)\n",						hdev, strerror(errno), errno);		exit(1);	}}static void cmd_down(int ctl, int hdev, char *opt){	/* Stop HCI device */	if (ioctl(ctl, HCIDEVDOWN, hdev) < 0) {		fprintf(stderr, "Can't down device hci%d: %s (%d)\n",						hdev, strerror(errno), errno);		exit(1);	}}static void cmd_reset(int ctl, int hdev, char *opt){	/* Reset HCI device */#if 0	if (ioctl(ctl, HCIDEVRESET, hdev) < 0 ){		fprintf(stderr, "Reset failed for device hci%d: %s (%d)\n",						hdev, strerror(errno), errno);		exit(1);	}#endif	cmd_down(ctl, hdev, "down");	cmd_up(ctl, hdev, "up");}static void cmd_ptype(int ctl, int hdev, char *opt){	struct hci_dev_req dr;	dr.dev_id = hdev;	if (hci_strtoptype(opt, &dr.dev_opt)) {		if (ioctl(ctl, HCISETPTYPE, (unsigned long) &dr) < 0) {			fprintf(stderr, "Can't set pkttype on hci%d: %s (%d)\n",						hdev, strerror(errno), errno);			exit(1);		}	} else {		print_dev_hdr(&di);		print_pkt_type(&di);	}}static void cmd_lp(int ctl, int hdev, char *opt){	struct hci_dev_req dr;	dr.dev_id = hdev;	if (hci_strtolp(opt, &dr.dev_opt)) {		if (ioctl(ctl, HCISETLINKPOL, (unsigned long) &dr) < 0) {			fprintf(stderr, "Can't set link policy on hci%d: %s (%d)\n",						hdev, strerror(errno), errno);			exit(1);		}	} else {		print_dev_hdr(&di);		print_link_policy(&di);	}}static void cmd_lm(int ctl, int hdev, char *opt){	struct hci_dev_req dr;	dr.dev_id = hdev;	if (hci_strtolm(opt, &dr.dev_opt)) {		if (ioctl(ctl, HCISETLINKMODE, (unsigned long) &dr) < 0) {			fprintf(stderr, "Can't set default link mode on hci%d: %s (%d)\n",						hdev, strerror(errno), errno);			exit(1);		}	} else {		print_dev_hdr(&di);		print_link_mode(&di);	}}static void cmd_aclmtu(int ctl, int hdev, char *opt){	struct hci_dev_req dr = { dev_id: hdev };	uint16_t mtu, mpkt;	if (!opt)		return;	if (sscanf(opt, "%4hu:%4hu", &mtu, &mpkt) != 2)		return;	dr.dev_opt = htobl(htobs(mpkt) | (htobs(mtu) << 16));	if (ioctl(ctl, HCISETACLMTU, (unsigned long) &dr) < 0) {		fprintf(stderr, "Can't set ACL mtu on hci%d: %s(%d)\n",						hdev, strerror(errno), errno);		exit(1);	}}static void cmd_scomtu(int ctl, int hdev, char *opt){	struct hci_dev_req dr = { dev_id: hdev };	uint16_t mtu, mpkt;	if (!opt)		return;	if (sscanf(opt, "%4hu:%4hu", &mtu, &mpkt) != 2)		return;	dr.dev_opt = htobl(htobs(mpkt) | (htobs(mtu) << 16));	if (ioctl(ctl, HCISETSCOMTU, (unsigned long) &dr) < 0) {		fprintf(stderr, "Can't set SCO mtu on hci%d: %s (%d)\n",						hdev, strerror(errno), errno);		exit(1);	}}static void cmd_features(int ctl, int hdev, char *opt){	uint8_t max_page, features[8];	char *tmp;	int i, dd;	if (!(di.features[7] & LMP_EXT_FEAT)) {		print_dev_hdr(&di);		print_dev_features(&di, 1);		return;	}	dd = hci_open_dev(hdev);	if (dd < 0) {		fprintf(stderr, "Can't open device hci%d: %s (%d)\n",						hdev, strerror(errno), errno);		exit(1);	}	if (hci_read_local_ext_features(dd, 0, &max_page, features, 1000) < 0) {		fprintf(stderr, "Can't read extended features hci%d: %s (%d)\n",						hdev, strerror(errno), errno);		exit(1);	}	print_dev_hdr(&di);	tmp = lmp_featurestostr(di.features, "\t\t", 63);	printf("\tFeatures%s: 0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x "				"0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x\n",		(max_page > 0) ? " page 0" : "",		features[0], features[1], features[2], features[3],		features[4], features[5], features[6], features[7]);	printf("%s\n", tmp);	bt_free(tmp);	for (i = 1; i <= max_page; i++) {		if (hci_read_local_ext_features(dd, 1, &max_page, features, 1000) < 0)			continue;		printf("\tFeatures page %d: 0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x "					"0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x\n", i,			features[0], features[1], features[2], features[3],			features[4], features[5], features[6], features[7]);	}	hci_close_dev(dd);}static void cmd_name(int ctl, int hdev, char *opt){	int dd;	dd = hci_open_dev(hdev);	if (dd < 0) {		fprintf(stderr, "Can't open device hci%d: %s (%d)\n",						hdev, strerror(errno), errno);		exit(1);	}	if (opt) {		if (hci_write_local_name(dd, opt, 2000) < 0) {			fprintf(stderr, "Can't change local name on hci%d: %s (%d)\n",						hdev, strerror(errno), errno);			exit(1);		}	} else {		char name[249];		int i;		if (hci_read_local_name(dd, sizeof(name), name, 1000) < 0) {			fprintf(stderr, "Can't read local name on hci%d: %s (%d)\n",						hdev, strerror(errno), errno);			exit(1);		}		for (i = 0; i < 248 && name[i]; i++) {			if ((unsigned char) name[i] < 32 || name[i] == 127)				name[i] = '.';		}		name[248] = '\0';		print_dev_hdr(&di);		printf("\tName: '%s'\n", name);	}	hci_close_dev(dd);}/*  * see http://www.bluetooth.org/assigned-numbers/baseband.htm --- all * strings are reproduced verbatim */static char *get_minor_device_name(int major, int minor){	switch (major) {	case 0:	/* misc */		return "";	case 1:	/* computer */		switch(minor) {		case 0:			return "Uncategorized";		case 1:			return "Desktop workstation";		case 2:			return "Server";		case 3:			return "Laptop";		case 4:			return "Handheld";		case 5:			return "Palm";		case 6:			return "Wearable";		}		break;	case 2:	/* phone */		switch(minor) {		case 0:			return "Uncategorized";		case 1:			return "Cellular";		case 2:			return "Cordless";		case 3:			return "Smart phone";		case 4:			return "Wired modem or voice gateway";		case 5:			return "Common ISDN Access";		case 6:			return "Sim Card Reader";		}		break;	case 3:	/* lan access */		if (minor == 0)			return "Uncategorized";		switch(minor / 8) {		case 0:			return "Fully available";		case 1:			return "1-17% utilized";		case 2:			return "17-33% utilized";		case 3:			return "33-50% utilized";		case 4:			return "50-67% utilized";		case 5:			return "67-83% utilized";		case 6:			return "83-99% utilized";		case 7:			return "No service available";		}		break;	case 4:	/* audio/video */		switch(minor) {		case 0:			return "Uncategorized";		case 1:			return "Device conforms to the Headset profile";		case 2:			return "Hands-free";			/* 3 is reserved */		case 4:			return "Microphone";		case 5:			return "Loudspeaker";		case 6:			return "Headphones";		case 7:			return "Portable Audio";		case 8:			return "Car Audio";		case 9:			return "Set-top box";		case 10:			return "HiFi Audio Device";		case 11:			return "VCR";		case 12:			return "Video Camera";		case 13:			return "Camcorder";		case 14:			return "Video Monitor";		case 15:			return "Video Display and Loudspeaker";		case 16:			return "Video Conferencing";			/* 17 is reserved */		case 18:			return "Gaming/Toy";		}		break;	case 5:	/* peripheral */ {		static char cls_str[48];				cls_str[0] = '\0';		switch(minor & 48) {		case 16:			strncpy(cls_str, "Keyboard", sizeof(cls_str));			break;		case 32:			strncpy(cls_str, "Pointing device", sizeof(cls_str));			break;		case 48:			strncpy(cls_str, "Combo keyboard/pointing device", sizeof(cls_str));			break;		}		if((minor & 15) && (strlen(cls_str) > 0))			strcat(cls_str, "/");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃av一区二区| 日韩一区二区三区视频| eeuss鲁一区二区三区| 久久99久久久久| 一区二区日韩av| 亚洲视频一二区| 亚洲天堂免费看| 国产精品久久久久影院老司| 欧美一区二区视频在线观看2020| 色综合久久九月婷婷色综合| 92国产精品观看| 成人美女视频在线观看| 国产一区日韩二区欧美三区| 亚洲猫色日本管| 欧美日本一道本在线视频| 韩日av一区二区| 国产精品一区二区久激情瑜伽 | 91在线精品一区二区| 91污在线观看| 欧美精品v日韩精品v韩国精品v| 91麻豆福利精品推荐| 欧美性色aⅴ视频一区日韩精品| 91亚洲精品一区二区乱码| 欧美日韩在线免费视频| 欧美xxxxx裸体时装秀| 精品久久久久久久久久久久久久久 | 成人涩涩免费视频| 色综合视频在线观看| 91久久精品国产91性色tv| 91在线观看高清| 成人午夜伦理影院| 国产精品1区2区| 91天堂素人约啪| 欧美日韩中文精品| 欧美mv日韩mv亚洲| 国产精品系列在线| 午夜精品久久久久影视| 国产91丝袜在线播放九色| 色哟哟在线观看一区二区三区| 精品久久久久久久久久久久包黑料| 亚洲欧美日韩一区二区三区在线观看| 亚洲成a天堂v人片| 91玉足脚交白嫩脚丫在线播放| 欧美成人精品3d动漫h| 一区二区三区四区五区视频在线观看| 成人av影院在线| 日韩精品免费视频人成| 久久久久国产精品麻豆ai换脸| 91碰在线视频| 国产很黄免费观看久久| 日日夜夜精品视频天天综合网| 亚洲精品在线免费播放| av福利精品导航| 老司机午夜精品| 亚洲精品日韩一| 国产欧美一区在线| 欧美一级黄色录像| 精品一区二区三区在线播放视频| 玉足女爽爽91| 欧美激情综合在线| 精品久久久三级丝袜| 欧美色图12p| 99精品视频一区| 国内精品第一页| 天堂蜜桃91精品| 亚洲精品乱码久久久久久| wwwwww.欧美系列| 欧美日本一道本在线视频| 99精品欧美一区二区三区综合在线| 久久99国产精品久久99| 国产精品久久久久天堂| 欧美一个色资源| 欧美日韩免费一区二区三区视频| 成人午夜在线免费| 国产乱子伦视频一区二区三区| 亚洲国产乱码最新视频 | 色呦呦网站一区| 国产成人av电影在线观看| 有码一区二区三区| 精品成人私密视频| 91久久精品一区二区三| 国产成人av一区二区三区在线| 捆绑调教一区二区三区| 日韩av电影免费观看高清完整版 | 中文字幕欧美日韩一区| 精品免费99久久| 日韩午夜三级在线| 色综合视频一区二区三区高清| 麻豆一区二区三| 亚洲综合免费观看高清完整版| 亚洲欧美日韩国产手机在线| 中文子幕无线码一区tr| 国产精品理论片| 国产精品嫩草99a| 中文字幕在线播放不卡一区| 亚洲欧美中日韩| 亚洲免费观看高清完整版在线观看 | 欧美日韩高清在线播放| 欧美亚洲国产怡红院影院| 欧美撒尿777hd撒尿| 欧美乱妇一区二区三区不卡视频| 欧美日韩日日摸| 欧美日韩视频在线第一区| 欧美日韩一区三区| 欧美精品丝袜久久久中文字幕| 欧美性猛片aaaaaaa做受| 欧美日韩高清不卡| 欧美一区二区三区日韩视频| 欧美一级在线观看| 久久久精品国产99久久精品芒果 | 欧美中文字幕不卡| 在线观看国产精品网站| 欧美老女人在线| 精品国产制服丝袜高跟| 国产欧美日韩在线看| 亚洲美女一区二区三区| 亚洲国产综合人成综合网站| 午夜精品福利视频网站| 精久久久久久久久久久| 精品一二三四在线| 色激情天天射综合网| 91麻豆精品国产| 久久日一线二线三线suv| 欧美经典一区二区| 一区二区三区欧美| 秋霞影院一区二区| 国产成人综合视频| 色婷婷亚洲一区二区三区| 欧美一区二区福利视频| 中文字幕av一区二区三区高| 亚洲一区二区三区四区在线| 极品少妇xxxx精品少妇偷拍| 精品夜夜嗨av一区二区三区| 色网站国产精品| 精品电影一区二区| 亚洲女人小视频在线观看| 久久国产欧美日韩精品| 成年人国产精品| 9191成人精品久久| 中文字幕乱码亚洲精品一区| 亚洲成av人**亚洲成av**| 激情五月激情综合网| 色婷婷av一区二区三区gif| 日韩一区二区三区精品视频| 中文字幕一区二区在线播放| 玉米视频成人免费看| 懂色av一区二区在线播放| 91精品国产综合久久久蜜臀图片| 亚洲国产精品精华液ab| 日韩综合在线视频| 91麻豆.com| 亚洲国产高清在线观看视频| 蜜臀av性久久久久av蜜臀妖精| 91蜜桃网址入口| 国产日韩欧美在线一区| 日本欧美一区二区在线观看| 91麻豆成人久久精品二区三区| 久久蜜桃一区二区| 日本视频在线一区| 色综合久久天天综合网| 中文一区一区三区高中清不卡| 美女网站色91| 欧美日韩和欧美的一区二区| 亚洲人午夜精品天堂一二香蕉| 精品一区二区三区影院在线午夜| 欧美日韩一级黄| 亚洲欧美日韩国产一区二区三区| 国产成人免费在线| 欧美视频在线一区| 一区二区三区欧美在线观看| 97精品国产露脸对白| 欧美韩国日本不卡| 国产露脸91国语对白| 欧美岛国在线观看| 美国av一区二区| 91精品国产综合久久久久久久久久 | 日韩高清不卡一区二区| 欧美日韩亚洲综合在线| 一区二区欧美在线观看| 色域天天综合网| 一区二区三区四区在线免费观看| 国产一区91精品张津瑜| 日韩精品一区二区三区swag | 亚洲电影欧美电影有声小说| 亚洲成人一区在线| 高清shemale亚洲人妖| 久久久蜜桃精品| 国产成人av电影在线观看| 国产欧美日韩一区二区三区在线观看| 国产一区二区免费视频| 久久综合中文字幕| 国产激情视频一区二区在线观看| 久久精品欧美一区二区三区不卡 | 美女视频一区在线观看| 欧美福利视频导航| 日韩国产欧美一区二区三区| 日韩欧美电影一区| 国产成人久久精品77777最新版本| 国产精品人人做人人爽人人添| 成人涩涩免费视频|