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

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

?? bccmd.c

?? BlueZ源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * *  BlueZ - Bluetooth protocol stack for Linux * *  Copyright (C) 2004-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 <stdlib.h>#include <getopt.h>#include <sys/socket.h>#include <bluetooth/bluetooth.h>#include <bluetooth/hci.h>#include <bluetooth/hci_lib.h>#include "csr.h"#define CSR_TRANSPORT_UNKNOWN	0#define CSR_TRANSPORT_HCI	1#define CSR_TRANSPORT_USB	2#define CSR_TRANSPORT_BCSP	3#define CSR_TRANSPORT_H4	4#define CSR_TRANSPORT_3WIRE	5#define CSR_STORES_PSI		(0x0001)#define CSR_STORES_PSF		(0x0002)#define CSR_STORES_PSROM	(0x0004)#define CSR_STORES_PSRAM	(0x0008)#define CSR_STORES_DEFAULT	(CSR_STORES_PSI | CSR_STORES_PSF)#define CSR_TYPE_NULL		0#define CSR_TYPE_COMPLEX	1#define CSR_TYPE_UINT8		2#define CSR_TYPE_UINT16		3#define CSR_TYPE_UINT32		4#define CSR_TYPE_ARRAY		CSR_TYPE_COMPLEX#define CSR_TYPE_BDADDR		CSR_TYPE_COMPLEXstatic inline int transport_open(int transport, char *device){	switch (transport) {	case CSR_TRANSPORT_HCI:		return csr_open_hci(device);#ifdef HAVE_LIBUSB	case CSR_TRANSPORT_USB:		return csr_open_usb(device);#endif	case CSR_TRANSPORT_BCSP:		return csr_open_bcsp(device);	case CSR_TRANSPORT_H4:		return csr_open_h4(device);	case CSR_TRANSPORT_3WIRE:		return csr_open_3wire(device);	default:		fprintf(stderr, "Unsupported transport\n");		return -1;	}}static inline int transport_read(int transport, uint16_t varid, uint8_t *value, uint16_t length){	switch (transport) {	case CSR_TRANSPORT_HCI:		return csr_read_hci(varid, value, length);#ifdef HAVE_LIBUSB	case CSR_TRANSPORT_USB:		return csr_read_usb(varid, value, length);#endif	case CSR_TRANSPORT_BCSP:		return csr_read_bcsp(varid, value, length);	case CSR_TRANSPORT_H4:		return csr_read_h4(varid, value, length);	case CSR_TRANSPORT_3WIRE:		return csr_read_3wire(varid, value, length);	default:		errno = EOPNOTSUPP;		return -1;	}}static inline int transport_write(int transport, uint16_t varid, uint8_t *value, uint16_t length){	switch (transport) {	case CSR_TRANSPORT_HCI:		return csr_write_hci(varid, value, length);#ifdef HAVE_LIBUSB	case CSR_TRANSPORT_USB:		return csr_write_usb(varid, value, length);#endif	case CSR_TRANSPORT_BCSP:		return csr_write_bcsp(varid, value, length);	case CSR_TRANSPORT_H4:		return csr_write_h4(varid, value, length);	case CSR_TRANSPORT_3WIRE:		return csr_write_3wire(varid, value, length);	default:		errno = EOPNOTSUPP;		return -1;	}}static inline void transport_close(int transport){	switch (transport) {	case CSR_TRANSPORT_HCI:		csr_close_hci();		break;#ifdef HAVE_LIBUSB	case CSR_TRANSPORT_USB:		csr_close_usb();		break;#endif	case CSR_TRANSPORT_BCSP:		csr_close_bcsp();		break;	case CSR_TRANSPORT_H4:		csr_close_h4();		break;	case CSR_TRANSPORT_3WIRE:		csr_close_3wire();		break;	}}static struct {	uint16_t pskey;	int type;	int size;	char *str;} storage[] = {	{ CSR_PSKEY_BDADDR,                   CSR_TYPE_BDADDR,  8,  "bdaddr"   },	{ CSR_PSKEY_COUNTRYCODE,              CSR_TYPE_UINT16,  0,  "country"  },	{ CSR_PSKEY_CLASSOFDEVICE,            CSR_TYPE_UINT32,  0,  "devclass" },	{ CSR_PSKEY_ENC_KEY_LMIN,             CSR_TYPE_UINT16,  0,  "keymin"   },	{ CSR_PSKEY_ENC_KEY_LMAX,             CSR_TYPE_UINT16,  0,  "keymax"   },	{ CSR_PSKEY_LOCAL_SUPPORTED_FEATURES, CSR_TYPE_ARRAY,   8,  "features" },	{ CSR_PSKEY_LOCAL_SUPPORTED_COMMANDS, CSR_TYPE_ARRAY,   18, "commands" },	{ CSR_PSKEY_HCI_LMP_LOCAL_VERSION,    CSR_TYPE_UINT16,  0,  "version"  },	{ CSR_PSKEY_LMP_REMOTE_VERSION,       CSR_TYPE_UINT8,   0,  "remver"   },	{ CSR_PSKEY_HOSTIO_USE_HCI_EXTN,      CSR_TYPE_UINT16,  0,  "hciextn"  },	{ CSR_PSKEY_HOSTIO_MAP_SCO_PCM,       CSR_TYPE_UINT16,  0,  "mapsco"   },	{ CSR_PSKEY_UART_BAUDRATE,            CSR_TYPE_UINT16,  0,  "baudrate" },	{ CSR_PSKEY_HOST_INTERFACE,           CSR_TYPE_UINT16,  0,  "hostintf" },	{ CSR_PSKEY_ANA_FREQ,                 CSR_TYPE_UINT16,  0,  "anafreq"  },	{ CSR_PSKEY_ANA_FTRIM,                CSR_TYPE_UINT16,  0,  "anaftrim" },	{ CSR_PSKEY_USB_VENDOR_ID,            CSR_TYPE_UINT16,  0,  "usbvid"   },	{ CSR_PSKEY_USB_PRODUCT_ID,           CSR_TYPE_UINT16,  0,  "usbpid"   },	{ CSR_PSKEY_USB_DFU_PRODUCT_ID,       CSR_TYPE_UINT16,  0,  "dfupid"   },	{ CSR_PSKEY_INITIAL_BOOTMODE,         CSR_TYPE_UINT16,  0,  "bootmode" },	{ 0x0000 },};static char *storestostr(uint16_t stores){	switch (stores) {	case 0x0000:		return "Default";	case 0x0001:		return "psi";	case 0x0002:		return "psf";	case 0x0004:		return "psrom";	case 0x0008:		return "psram";	default:		return "Unknown";	}}static char *memorytostr(uint16_t type){	switch (type) {	case 0x0000:		return "Flash memory";	case 0x0001:		return "EEPROM";	case 0x0002:		return "RAM (transient)";	case 0x0003:		return "ROM (or \"read-only\" flash memory)";	default:		return "Unknown";	}}#define OPT_RANGE(min, max) \		if (argc < (min)) { errno = EINVAL; return -1; } \		if (argc > (max)) { errno = E2BIG; return -1; }static struct option help_options[] = {	{ "help",	0, 0, 'h' },	{ 0, 0, 0, 0 }};static int opt_help(int argc, char *argv[], int *help){	int opt;	while ((opt=getopt_long(argc, argv, "+h", help_options, NULL)) != EOF) {		switch (opt) {		case 'h':			if (help)				*help = 1;			break;		}	}	return optind;}#define OPT_HELP(range, help) \		opt_help(argc, argv, (help)); \		argc -= optind; argv += optind; optind = 0; \		OPT_RANGE((range), (range))static int cmd_builddef(int transport, int argc, char *argv[]){	uint8_t array[8];	uint16_t def = 0x0000, nextdef = 0x0000;	int err = 0;	OPT_HELP(0, NULL);	printf("Build definitions:\n");	while (1) {		memset(array, 0, sizeof(array));		array[0] = def & 0xff;		array[1] = def >> 8;		err = transport_read(transport, CSR_VARID_GET_NEXT_BUILDDEF, array, 8);		if (err < 0) {			errno = -err;			break;		}		nextdef = array[2] | (array[3] << 8);		if (nextdef == 0x0000)			break;		def = nextdef;		printf("0x%04x - %s\n", def, csr_builddeftostr(def));	}	return err;}static int cmd_keylen(int transport, int argc, char *argv[]){	uint8_t array[8];	uint16_t handle, keylen;	int err;	OPT_HELP(1, NULL);	handle = atoi(argv[0]);	memset(array, 0, sizeof(array));	array[0] = handle & 0xff;	array[1] = handle >> 8;	err = transport_read(transport, CSR_VARID_CRYPT_KEY_LENGTH, array, 8);	if (err < 0) {		errno = -err;		return -1;	}	handle = array[0] | (array[1] << 8);	keylen = array[2] | (array[3] << 8);	printf("Crypt key length: %d bit\n", keylen * 8);	return 0;}static int cmd_clock(int transport, int argc, char *argv[]){	uint8_t array[8];	uint32_t clock;	int err;	OPT_HELP(0, NULL);	memset(array, 0, sizeof(array));	err = transport_read(transport, CSR_VARID_BT_CLOCK, array, 8);	if (err < 0) {		errno = -err;		return -1;	}	clock = array[2] | (array[3] << 8) | (array[0] << 16) | (array[1] << 24);	printf("Bluetooth clock: 0x%04x (%d)\n", clock, clock);	return 0;}static int cmd_rand(int transport, int argc, char *argv[]){	uint8_t array[8];	uint16_t rand;	int err;	OPT_HELP(0, NULL);	memset(array, 0, sizeof(array));	err = transport_read(transport, CSR_VARID_RAND, array, 8);	if (err < 0) {		errno = -err;		return -1;	}	rand = array[0] | (array[1] << 8);	printf("Random number: 0x%02x (%d)\n", rand, rand);	return 0;}static int cmd_chiprev(int transport, int argc, char *argv[]){	uint8_t array[8];	uint16_t rev;	char *str;	int err;	OPT_HELP(0, NULL);	memset(array, 0, sizeof(array));	err = transport_read(transport, CSR_VARID_CHIPREV, array, 8);	if (err < 0) {		errno = -err;		return -1;	}	rev = array[0] | (array[1] << 8);	switch (rev) {	case 0x64:		str = "BC1 ES";		break;	case 0x65:		str = "BC1";		break;	case 0x89:		str = "BC2-External A";		break;	case 0x8a:		str = "BC2-External B";		break;	case 0x28:		str = "BC2-ROM";		break;	case 0x43:		str = "BC3-Multimedia";		break;	case 0x15:		str = "BC3-ROM";		break;	case 0xe2:		str = "BC3-Flash";		break;	case 0x26:		str = "BC4-External";		break;	case 0x30:		str = "BC4-ROM";		break;	default:		str = "NA";		break;	}	printf("Chip revision: 0x%04x (%s)\n", rev, str);	return 0;}static int cmd_buildname(int transport, int argc, char *argv[]){	uint8_t array[130];	char name[64];	int i, err;	OPT_HELP(0, NULL);	memset(array, 0, sizeof(array));	err = transport_read(transport, CSR_VARID_READ_BUILD_NAME, array, 128);	if (err < 0) {		errno = -err;		return -1;	}	for (i = 0; i < sizeof(name); i++)		name[i] = array[(i * 2) + 4];	printf("Build name: %s\n", name);	return 0;}static int cmd_panicarg(int transport, int argc, char *argv[]){	uint8_t array[8];	uint16_t error;	int err;	OPT_HELP(0, NULL);	memset(array, 0, sizeof(array));	err = transport_read(transport, CSR_VARID_PANIC_ARG, array, 8);	if (err < 0) {		errno = -err;		return -1;	}	error = array[0] | (array[1] << 8);	printf("Panic code: 0x%02x (%s)\n", error,					error < 0x100 ? "valid" : "invalid");	return 0;}static int cmd_faultarg(int transport, int argc, char *argv[]){	uint8_t array[8];	uint16_t error;	int err;	OPT_HELP(0, NULL);	memset(array, 0, sizeof(array));	err = transport_read(transport, CSR_VARID_FAULT_ARG, array, 8);	if (err < 0) {		errno = -err;		return -1;	}	error = array[0] | (array[1] << 8);	printf("Fault code: 0x%02x (%s)\n", error,					error < 0x100 ? "valid" : "invalid");	return 0;}static int cmd_coldreset(int transport, int argc, char *argv[]){	return transport_write(transport, CSR_VARID_COLD_RESET, NULL, 0);}static int cmd_warmreset(int transport, int argc, char *argv[]){	return transport_write(transport, CSR_VARID_WARM_RESET, NULL, 0);}static int cmd_disabletx(int transport, int argc, char *argv[]){	return transport_write(transport, CSR_VARID_DISABLE_TX, NULL, 0);}static int cmd_enabletx(int transport, int argc, char *argv[]){	return transport_write(transport, CSR_VARID_ENABLE_TX, NULL, 0);}static int cmd_singlechan(int transport, int argc, char *argv[]){	uint8_t array[8];	uint16_t channel;	OPT_HELP(1, NULL);	channel = atoi(argv[0]);	if (channel > 2401 && channel < 2481)		channel -= 2402;	if (channel > 78) {		errno = EINVAL;		return -1;	}	memset(array, 0, sizeof(array));	array[0] = channel & 0xff;	array[1] = channel >> 8;	return transport_write(transport, CSR_VARID_SINGLE_CHAN, array, 8);}static int cmd_hoppingon(int transport, int argc, char *argv[]){	return transport_write(transport, CSR_VARID_HOPPING_ON, NULL, 0);}static int cmd_rttxdata1(int transport, int argc, char *argv[]){	uint8_t array[8];	uint16_t freq, level;	OPT_HELP(2, NULL);	freq = atoi(argv[0]);	if (!strncasecmp(argv[1], "0x", 2))		level = strtol(argv[1], NULL, 16);	else		level = atoi(argv[1]);	memset(array, 0, sizeof(array));	array[0] = 0x04;	array[1] = 0x00;	array[2] = freq & 0xff;	array[3] = freq >> 8;	array[4] = level & 0xff;	array[5] = level >> 8;	return transport_write(transport, CSR_VARID_RADIOTEST, array, 8);}static int cmd_radiotest(int transport, int argc, char *argv[]){	uint8_t array[8];	uint16_t freq, level, test;	OPT_HELP(3, NULL);	freq = atoi(argv[0]);	if (!strncasecmp(argv[1], "0x", 2))		level = strtol(argv[1], NULL, 16);	else		level = atoi(argv[1]);	test = atoi(argv[2]);	memset(array, 0, sizeof(array));	array[0] = test & 0xff;	array[1] = test >> 8;	array[2] = freq & 0xff;	array[3] = freq >> 8;	array[4] = level & 0xff;	array[5] = level >> 8;	return transport_write(transport, CSR_VARID_RADIOTEST, array, 8);}static int cmd_memtypes(int transport, int argc, char *argv[]){	uint8_t array[8];	uint16_t type, stores[4] = { 0x0001, 0x0002, 0x0004, 0x0008 };	int i, err;	OPT_HELP(0, NULL);	for (i = 0; i < 4; i++) {		memset(array, 0, sizeof(array));		array[0] = stores[i] & 0xff;		array[1] = stores[i] >> 8;		err = transport_read(transport, CSR_VARID_PS_MEMORY_TYPE, array, 8);		if (err < 0)			continue;		type = array[2] + (array[3] << 8);		printf("%s (0x%04x) = %s (%d)\n", storestostr(stores[i]),					stores[i], memorytostr(type), type);	}	return 0;}static struct option pskey_options[] = {	{ "stores",	1, 0, 's' },	{ "reset",	0, 0, 'r' },	{ "help",	0, 0, 'h' },

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲欧洲一区高清在线观看| 99久久精品一区二区| 91精品国产黑色紧身裤美女| 日韩国产精品久久久| 日韩欧美的一区二区| 国产乱色国产精品免费视频| 中文字幕不卡在线播放| 色综合久久88色综合天天免费| 亚洲午夜视频在线观看| 日韩一级成人av| 国产一区二区三区美女| 中文字幕一区二区日韩精品绯色| 欧洲国内综合视频| 青青草成人在线观看| 久久精品亚洲乱码伦伦中文| 94-欧美-setu| 亚洲aaa精品| 26uuu亚洲综合色| 成人精品高清在线| 亚洲成在人线在线播放| 日韩久久久久久| 99精品国产99久久久久久白柏| 亚洲午夜私人影院| www国产成人免费观看视频 深夜成人网| 国产精品91一区二区| 日韩毛片精品高清免费| 91精品国产aⅴ一区二区| 国产成人精品免费视频网站| 樱花影视一区二区| 精品久久久久一区二区国产| fc2成人免费人成在线观看播放| 亚洲成年人影院| 久久亚洲二区三区| 色一区在线观看| 精品一区中文字幕| 亚洲另类中文字| 精品国产伦一区二区三区免费| 91在线免费视频观看| 日本免费在线视频不卡一不卡二| 欧美激情中文字幕| 欧美日韩一级二级三级| 高清在线观看日韩| 午夜久久久影院| 国产精品免费视频观看| 69堂成人精品免费视频| 99在线精品免费| 免费高清不卡av| 亚洲欧美日韩一区二区| 欧美电影免费观看高清完整版 | 国产欧美视频在线观看| 欧美午夜精品理论片a级按摩| 国产在线一区二区| 亚洲成a人在线观看| 中文字幕欧美日韩一区| 日韩亚洲欧美一区| 日本道精品一区二区三区 | 久久国产精品99久久久久久老狼| 亚洲精品亚洲人成人网在线播放| 久久蜜桃av一区二区天堂 | 国产欧美综合在线| 777a∨成人精品桃花网| 97超碰欧美中文字幕| 国产一本一道久久香蕉| 日韩高清国产一区在线| 依依成人精品视频| 欧美极品另类videosde| 精品免费国产一区二区三区四区| 欧美影院精品一区| av综合在线播放| 国产精品一区二区免费不卡 | 日本一不卡视频| 亚洲伦理在线精品| 国产精品无圣光一区二区| 日韩精品中文字幕一区二区三区 | 欧美精品色综合| 色吊一区二区三区| 成人精品免费视频| 国产麻豆一精品一av一免费| 秋霞电影一区二区| 午夜激情综合网| 亚洲精品一二三区| 中文字幕佐山爱一区二区免费| 久久久精品影视| 日韩欧美卡一卡二| 69精品人人人人| 欧美老年两性高潮| 欧美日韩精品一区二区三区| 日本韩国一区二区三区| 99久久777色| 成人福利视频网站| 盗摄精品av一区二区三区| 国内精品伊人久久久久av一坑 | 亚洲精选视频免费看| 中文字幕一区二区三| 国产精品视频yy9299一区| 国产日产精品一区| 久久久亚洲综合| 国产亚洲精品福利| 久久婷婷国产综合国色天香 | 亚洲综合一区二区三区| 亚洲欧美乱综合| 亚洲男人都懂的| 亚洲精品日韩专区silk| 亚洲精品视频在线观看免费 | 亚洲日韩欧美一区二区在线| 国产精品久久久久久久久免费相片 | 亚洲电影一区二区三区| 亚洲综合色噜噜狠狠| 亚洲一区二区成人在线观看| 亚洲国产综合91精品麻豆| 亚洲国产一区视频| 天天影视网天天综合色在线播放 | 久久99精品久久久久久| 蓝色福利精品导航| 国产一区二区三区免费播放| 国产精品一区二区男女羞羞无遮挡| 国产伦精品一区二区三区视频青涩| 国产综合色精品一区二区三区| 国产一区不卡视频| 成人午夜激情在线| 91亚洲男人天堂| 色丁香久综合在线久综合在线观看| 欧洲激情一区二区| 7878成人国产在线观看| 欧美成人一级视频| 久久久精品影视| 国产精品萝li| 亚洲一区二区影院| 日产国产欧美视频一区精品| 美女mm1313爽爽久久久蜜臀| 激情综合色播激情啊| 国产寡妇亲子伦一区二区| 99久久伊人网影院| 欧洲亚洲国产日韩| 日韩一区二区三区观看| 2020国产成人综合网| 国产精品久久久久毛片软件| 洋洋av久久久久久久一区| 日韩电影免费在线看| 国产精品一区在线观看乱码 | 不卡一区中文字幕| 欧美亚洲日本一区| 日韩欧美在线1卡| 国产区在线观看成人精品| 亚洲你懂的在线视频| 日本不卡视频一二三区| 国产精品综合视频| 色综合欧美在线| 欧美一级电影网站| 国产欧美一区二区三区在线看蜜臀| 亚洲日本电影在线| 免费一级片91| 成人动漫在线一区| 欧美精品一级二级| 国产喂奶挤奶一区二区三区| 亚洲欧洲精品成人久久奇米网| 婷婷综合另类小说色区| 国产精品一区二区在线观看不卡| 色天天综合久久久久综合片| 日韩女优av电影在线观看| 中文字幕的久久| 日韩影院免费视频| 国产+成+人+亚洲欧洲自线| 精品视频999| 国产偷国产偷亚洲高清人白洁| 亚洲综合免费观看高清完整版在线 | 亚洲一区二区在线观看视频| 久久www免费人成看片高清| 91亚洲国产成人精品一区二区三| 91精品国产品国语在线不卡| 日本一区二区三区视频视频| 亚洲成人一区二区| 成人免费视频国产在线观看| 91精品婷婷国产综合久久竹菊| 国产精品视频一二| 日本亚洲最大的色成网站www| 成人免费看黄yyy456| 欧美精品九九99久久| 国产精品国产成人国产三级| 免费国产亚洲视频| 色偷偷成人一区二区三区91| 久久综合999| 午夜av电影一区| 99国产精品久久久久久久久久久| 日韩欧美国产一区二区三区 | 欧美午夜影院一区| 中文字幕乱码亚洲精品一区| 日韩av电影免费观看高清完整版 | 99精品视频免费在线观看| 精品国产一区二区三区四区四 | 91性感美女视频| 久久综合狠狠综合久久综合88| 亚洲最大成人网4388xx| 粉嫩av一区二区三区| 日韩欧美国产综合一区| 亚洲国产sm捆绑调教视频 | 欧美视频一区二| 综合激情成人伊人| 高清日韩电视剧大全免费| 日韩欧美中文字幕制服|