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

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

?? hciconfig.c

?? BlueZ源碼
?? 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_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 features[8], max_page = 0;	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);	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]);	tmp = lmp_featurestostr(di.features, "\t\t", 63);	printf("%s\n", tmp);	bt_free(tmp);	for (i = 1; i <= max_page; i++) {		if (hci_read_local_ext_features(dd, i, NULL,							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, "/");		switch(minor & 15) {		case 0:			break;		case 1:			strncat(cls_str, "Joystick", sizeof(cls_str) - strlen(cls_str));			break;		case 2:			strncat(cls_str, "Gamepad", sizeof(cls_str) - strlen(cls_str));			break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线观看视频| 久久久亚洲高清| 欧美羞羞免费网站| 一本久久综合亚洲鲁鲁五月天 | 91免费看`日韩一区二区| 国产激情一区二区三区四区| 国内精品免费**视频| 国内精品视频一区二区三区八戒 | 欧美一区二区美女| 欧美一区二区在线免费播放| 日韩欧美国产一区二区在线播放| 欧美一区二区三区视频免费播放 | 亚洲一本大道在线| 九九国产精品视频| 精品在线一区二区| 国产成人综合视频| av资源网一区| 欧美色中文字幕| 日韩欧美国产高清| 国产欧美综合在线观看第十页| 国产精品久久久久影院老司 | 高清不卡一区二区在线| 不卡的av在线| 欧美日韩高清影院| 日韩一二三区不卡| 国产欧美精品一区二区色综合 | 一区二区三区在线视频免费| 亚洲国产aⅴ成人精品无吗| 免费成人在线播放| 国产精品伊人色| 色婷婷亚洲一区二区三区| 欧美日韩一区二区欧美激情| 精品捆绑美女sm三区| 国产精品精品国产色婷婷| 亚洲国产成人av网| 国产美女一区二区三区| 色婷婷av一区二区| 日韩免费一区二区三区在线播放| 国产日韩精品视频一区| 亚洲欧美国产毛片在线| 人人爽香蕉精品| 成人午夜在线播放| 欧美日韩亚洲综合一区| 欧美激情一二三区| 亚洲国产精品天堂| 国产毛片精品一区| 在线一区二区三区| 久久婷婷成人综合色| 亚洲品质自拍视频| 韩国v欧美v日本v亚洲v| 色婷婷久久99综合精品jk白丝| 91精品久久久久久久91蜜桃 | 国产aⅴ综合色| 欧美亚洲一区三区| 国产女人aaa级久久久级| 亚洲高清免费在线| 不卡的av电影在线观看| 日韩丝袜情趣美女图片| 亚洲三级视频在线观看| 久久精品99国产国产精| 在线观看免费亚洲| 国产丝袜在线精品| 日本美女一区二区| 91国产视频在线观看| 久久久久国产成人精品亚洲午夜 | 欧美日韩不卡一区二区| 国产精品热久久久久夜色精品三区 | 欧美剧情电影在线观看完整版免费励志电影 | 色综合天天综合狠狠| 欧美v亚洲v综合ⅴ国产v| 亚洲乱码日产精品bd| 国产精品一区二区三区99| 欧美精品粉嫩高潮一区二区| 亚洲欧洲色图综合| 国产剧情在线观看一区二区| 51精品秘密在线观看| 亚洲精品成人少妇| 成人午夜激情影院| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美性一级生活| 亚洲欧美视频在线观看视频| 风间由美中文字幕在线看视频国产欧美| 欧美精品高清视频| 亚洲高清一区二区三区| 在线免费观看日本一区| 亚洲美女屁股眼交3| 不卡欧美aaaaa| 国产精品看片你懂得| 国产精品香蕉一区二区三区| 精品国偷自产国产一区| 免费观看一级欧美片| 欧美久久久久免费| 亚洲成在线观看| 欧美亚洲高清一区二区三区不卡| 日韩一区中文字幕| av在线综合网| **欧美大码日韩| 99re热这里只有精品免费视频| 欧美激情一区二区三区蜜桃视频 | 欧美精品一区二区三区很污很色的| 丝袜美腿高跟呻吟高潮一区| 欧美三级电影网| 香蕉加勒比综合久久| 欧美吻胸吃奶大尺度电影| 一区二区在线免费观看| 在线看国产日韩| 性久久久久久久久久久久| 欧美浪妇xxxx高跟鞋交| 日韩电影在线观看一区| 欧美一卡二卡在线观看| 男女男精品网站| 久久久影视传媒| 粉嫩av亚洲一区二区图片| 中文字幕一区二区三| 色婷婷av一区| 午夜精品久久久久影视| 91精品久久久久久久99蜜桃| 麻豆91在线看| 国产欧美日韩在线看| 欧美日韩一区二区三区四区五区| 日韩精品一二三四| 欧美xxxxxxxx| 成人短视频下载| 亚洲综合999| 欧美一级黄色片| 国产高清成人在线| 亚洲人成伊人成综合网小说| 欧美日韩视频在线观看一区二区三区| 亚洲国产综合在线| 精品久久人人做人人爰| 国产不卡在线播放| 亚洲伊人色欲综合网| 精品裸体舞一区二区三区| 国产精品亚洲专一区二区三区| 亚洲同性同志一二三专区| 欧美色精品在线视频| 精品制服美女久久| 亚洲欧美日韩电影| 欧美一区二区免费| 99精品偷自拍| 日本三级亚洲精品| 中文成人综合网| 555www色欧美视频| 成人深夜福利app| 午夜精品久久久久久久蜜桃app| 久久综合狠狠综合久久综合88| 成人国产亚洲欧美成人综合网| 亚洲制服丝袜在线| 久久这里只精品最新地址| 91网页版在线| 激情综合色综合久久综合| 中文字幕日本乱码精品影院| 欧美精品电影在线播放| 不卡在线观看av| 日本在线不卡一区| 1024成人网色www| 日韩一区二区电影| 色综合久久综合网97色综合| 久久电影国产免费久久电影| 国产精品国产自产拍在线| 日韩欧美国产电影| 在线国产电影不卡| 成人做爰69片免费看网站| 日韩精品电影在线| 亚洲欧洲在线观看av| 日韩欧美国产综合在线一区二区三区 | 高清视频一区二区| 日韩成人精品视频| 亚洲人一二三区| 国产亚洲综合色| 欧美一区二区日韩一区二区| 91小宝寻花一区二区三区| 国产一区二区免费在线| 亚洲成人精品一区二区| 国产精品不卡视频| 亚洲精品在线电影| 欧美日本乱大交xxxxx| 91麻豆免费观看| 国产精品18久久久久久久久久久久| 午夜影院在线观看欧美| 亚洲人成在线播放网站岛国 | 一级中文字幕一区二区| 欧美国产日本视频| 精品国产一区二区国模嫣然| 日韩视频免费观看高清在线视频| 在线观看日韩高清av| www.亚洲国产| 成人高清av在线| 国产成人精品影院| 国产九色精品成人porny| 蜜桃视频在线一区| 日韩电影在线免费| 五月婷婷综合在线| 亚洲电影视频在线| 亚洲激情自拍视频| 一区二区三区在线观看国产| 成人免费一区二区三区视频| 中文乱码免费一区二区| 中文字幕精品一区二区精品绿巨人| 精品国产区一区|