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

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

?? csr.c

?? bluetooth 開發程序bluez-hcidump-1.28
?? C
字號:
/* * *  BlueZ - Bluetooth protocol stack for Linux * *  Copyright (C) 2004-2005  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 <unistd.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <netinet/in.h>#include "parser.h"#define CSR_U8(frm)  (get_u8(frm))#define CSR_U16(frm) (btohs(htons(get_u16(frm))))#define CSR_U32(frm) ((CSR_U16(frm) << 16) + CSR_U16(frm))#define CSR_S16(frm) (btohs(htons(get_u16(frm))))static char *type2str(uint16_t type){	switch (type) {	case 0x0000:		return "Get req";	case 0x0001:		return "Get rsp";	case 0x0002:		return "Set req";	default:		return "Reserved";	}}static inline void valueless_dump(int level, char *str, struct frame *frm){	p_indent(level, frm);	printf("%s\n", str);}static inline void complex_dump(int level, char *str, struct frame *frm){	p_indent(level, frm);	printf("%s\n", str);	raw_dump(level, frm);}static inline void bool_dump(int level, char *str, struct frame *frm){	uint16_t value;	value = CSR_U16(frm);	p_indent(level, frm);	printf("%s: value %s (%d)\n", str, value ? "TRUE" : "FALSE", value);}static inline void int8_dump(int level, char *str, struct frame *frm){	int16_t value;	value = CSR_S16(frm);	p_indent(level, frm);	printf("%s: value %d (0x%2.2x)\n", str, value, value);}static inline void int16_dump(int level, char *str, struct frame *frm){	int16_t value;	value = CSR_S16(frm);	p_indent(level, frm);	printf("%s: value %d (0x%2.2x)\n", str, value, value);}static inline void uint16_dump(int level, char *str, struct frame *frm){	uint16_t value;	value = CSR_U16(frm);	p_indent(level, frm);	printf("%s: value %d (0x%4.4x)\n", str, value, value);}static inline void uint32_dump(int level, char *str, struct frame *frm){	uint32_t value;	value = CSR_U32(frm);	p_indent(level, frm);	printf("%s: value %d (0x%4.4x)\n", str, value, value);}static inline void bdaddr_dump(int level, char *str, struct frame *frm){	char addr[18];	ba2str(frm->ptr, addr);	p_indent(level, frm);	printf("%s: bdaddr %s\n", str, addr);}static inline void features_dump(int level, char *str, struct frame *frm){	unsigned char features[8];	int i;	memcpy(features, frm->ptr, 8);	p_indent(level, frm);	printf("%s: features", str);	for (i = 0; i < 8; i++)		printf(" 0x%02x", features[i]);	printf("\n");}static inline void commands_dump(int level, char *str, struct frame *frm){	unsigned char commands[64];	int i;	memcpy(commands, frm->ptr, frm->len);	p_indent(level, frm);	printf("%s: commands", str);	for (i = 0; i < frm->len; i++)		printf(" 0x%02x", commands[i]);	printf("\n");}static inline void handle_length_dump(int level, char *str, struct frame *frm){	uint16_t handle, length;	handle = CSR_U16(frm);	length = CSR_U16(frm);	p_indent(level, frm);	printf("%s: handle %d length %d\n", str, handle, length);}static inline void handle_clock_dump(int level, char *str, struct frame *frm){	uint16_t handle;	uint32_t clock;	handle = CSR_U16(frm);	clock  = CSR_U32(frm);	p_indent(level, frm);	printf("%s: handle %d clock 0x%4.4x\n", str, handle, clock);}static inline void psmemtype_dump(int level, char *str, struct frame *frm){	uint16_t store, type;	store = CSR_U16(frm);	type  = CSR_U16(frm);	p_indent(level, frm);	printf("%s: store 0x%4.4x type %d\n", str, store, type);}static inline void psnext_dump(int level, char *str, struct frame *frm){	uint16_t key, stores, next;	key    = CSR_U16(frm);	stores = CSR_U16(frm);	next   = CSR_U16(frm);	p_indent(level, frm);	printf("%s: key 0x%4.4x stores 0x%4.4x next 0x%4.4x\n", str, key, stores, next);}static inline void pssize_dump(int level, char *str, struct frame *frm){	uint16_t key, length;	key    = CSR_U16(frm);	length = CSR_U16(frm);	p_indent(level, frm);	printf("%s: key 0x%4.4x %s 0x%4.4x\n", str, key,				frm->in ? "len" : "stores", length);}static inline void psstores_dump(int level, char *str, struct frame *frm){	uint16_t key, stores;	key    = CSR_U16(frm);	stores = CSR_U16(frm);	p_indent(level, frm);	printf("%s: key 0x%4.4x stores 0x%4.4x\n", str, key, stores);}static inline void pskey_dump(int level, struct frame *frm){	uint16_t key, length, stores;	key    = CSR_U16(frm);	length = CSR_U16(frm);	stores = CSR_U16(frm);	p_indent(level, frm);	printf("PSKEY: key 0x%4.4x len %d stores 0x%4.4x\n", key, length, stores);	switch (key) {	case 0x0001:		bdaddr_dump(level + 1, "BDADDR", frm);		break;	case 0x0002:		uint16_dump(level + 1, "COUNTRYCODE", frm);		break;	case 0x0003:		uint32_dump(level + 1, "CLASSOFDEVICE", frm);		break;	case 0x0004:		uint16_dump(level + 1, "DEVICE_DRIFT", frm);		break;	case 0x0005:		uint16_dump(level + 1, "DEVICE_JITTER", frm);		break;	case 0x000d:		uint16_dump(level + 1, "MAX_ACLS", frm);		break;	case 0x000e:		uint16_dump(level + 1, "MAX_SCOS", frm);		break;	case 0x000f:		uint16_dump(level + 1, "MAX_REMOTE_MASTERS", frm);		break;	case 0x00da:		uint16_dump(level + 1, "ENC_KEY_LMIN", frm);		break;	case 0x00db:		uint16_dump(level + 1, "ENC_KEY_LMAX", frm);		break;	case 0x00ef:		features_dump(level + 1, "LOCAL_SUPPORTED_FEATURES", frm);		break;	case 0x0106:		commands_dump(level + 1, "LOCAL_SUPPORTED_COMMANDS", frm);		break;	case 0x010d:		uint16_dump(level + 1, "HCI_LMP_LOCAL_VERSION", frm);		break;	case 0x010e:		uint16_dump(level + 1, "LMP_REMOTE_VERSION", frm);		break;	case 0x01a5:		bool_dump(level + 1, "HOSTIO_USE_HCI_EXTN", frm);		break;	case 0x01ab:		bool_dump(level + 1, "HOSTIO_MAP_SCO_PCM", frm);		break;	case 0x01be:		uint16_dump(level + 1, "UART_BAUDRATE", frm);		break;	case 0x01f6:		uint16_dump(level + 1, "ANA_FTRIM", frm);		break;	case 0x01f9:		uint16_dump(level + 1, "HOST_INTERFACE", frm);		break;	case 0x01fe:		uint16_dump(level + 1, "ANA_FREQ", frm);		break;	case 0x02be:		uint16_dump(level + 1, "USB_VENDOR_ID", frm);		break;	case 0x02bf:		uint16_dump(level + 1, "USB_PRODUCT_ID", frm);		break;	case 0x02cb:		uint16_dump(level + 1, "USB_DFU_PRODUCT_ID", frm);		break;	case 0x03cd:		int16_dump(level + 1, "INITIAL_BOOTMODE", frm);		break;	default:		raw_dump(level + 1, frm);		break;	}}static inline void bccmd_dump(int level, struct frame *frm){	uint16_t type, length, seqno, varid, status;	type   = CSR_U16(frm);	length = CSR_U16(frm);	seqno  = CSR_U16(frm);	varid  = CSR_U16(frm);	status = CSR_U16(frm);	p_indent(level, frm);	printf("BCCMD: %s: len %d seqno %d varid 0x%4.4x status %d\n",			type2str(type), length, seqno, varid, status);	if (!(parser.flags & DUMP_VERBOSE)) {		raw_dump(level + 1, frm);		return;	}	switch (varid) {	case 0x000b:		valueless_dump(level + 1, "PS_CLR_ALL", frm);		break;	case 0x000c:		valueless_dump(level + 1, "PS_FACTORY_SET", frm);		break;	case 0x082d:		uint16_dump(level + 1, "PS_CLR_ALL_STORES", frm);		break;	case 0x2801:		uint16_dump(level + 1, "BC01_STATUS", frm);		break;	case 0x2819:		uint16_dump(level + 1, "BUILDID", frm);		break;	case 0x281a:		uint16_dump(level + 1, "CHIPVER", frm);		break;	case 0x281b:		uint16_dump(level + 1, "CHIPREV", frm);		break;	case 0x2825:		uint16_dump(level + 1, "INTERFACE_VERSION", frm);		break;	case 0x282a:		uint16_dump(level + 1, "RAND", frm);		break;	case 0x282c:		uint16_dump(level + 1, "MAX_CRYPT_KEY_LENGTH", frm);		break;	case 0x2833:		uint16_dump(level + 1, "E2_APP_SIZE", frm);		break;	case 0x2836:		uint16_dump(level + 1, "CHIPANAREV", frm);		break;	case 0x2838:		uint16_dump(level + 1, "BUILDID_LOADER", frm);		break;	case 0x2c00:		uint32_dump(level + 1, "BT_CLOCK", frm);		break;	case 0x3005:		psnext_dump(level + 1, "PS_NEXT", frm);		break;	case 0x3006:		pssize_dump(level + 1, "PS_SIZE", frm);		break;	case 0x3008:		handle_length_dump(level + 1, "CRYPT_KEY_LENGTH", frm);		break;	case 0x3009:		handle_clock_dump(level + 1, "PICONET_INSTANCE", frm);		break;	case 0x300a:		complex_dump(level + 1, "GET_CLR_EVT", frm);		break;	case 0x300b:		complex_dump(level + 1, "GET_NEXT_BUILDDEF", frm);		break;	case 0x300e:		complex_dump(level + 1, "E2_DEVICE", frm);		break;	case 0x300f:		complex_dump(level + 1, "E2_APP_DATA", frm);		break;	case 0x3012:		psmemtype_dump(level + 1, "PS_MEMORY_TYPE", frm);		break;	case 0x301c:		complex_dump(level + 1, "READ_BUILD_NAME", frm);		break;	case 0x4001:		valueless_dump(level + 1, "COLD_RESET", frm);		break;	case 0x4002:		valueless_dump(level + 1, "WARM_RESET", frm);		break;	case 0x4003:		valueless_dump(level + 1, "COLD_HALT", frm);		break;	case 0x4004:		valueless_dump(level + 1, "WARM_HALT", frm);		break;	case 0x4005:		valueless_dump(level + 1, "INIT_BT_STACK", frm);		break;	case 0x4006:		valueless_dump(level + 1, "ACTIVATE_BT_STACK", frm);		break;	case 0x4007:		valueless_dump(level + 1, "ENABLE_TX", frm);		break;	case 0x4008:		valueless_dump(level + 1, "DISABLE_TX", frm);		break;	case 0x4009:		valueless_dump(level + 1, "RECAL", frm);		break;	case 0x400d:		valueless_dump(level + 1, "PS_FACTORY_RESTORE", frm);		break;	case 0x400e:		valueless_dump(level + 1, "PS_FACTORY_RESTORE_ALL", frm);		break;	case 0x400f:		valueless_dump(level + 1, "PS_DEFRAG_RESET", frm);		break;	case 0x4012:		valueless_dump(level + 1, "CANCEL_PAGE", frm);		break;	case 0x4818:		uint16_dump(level + 1, "PS_CLR", frm);		break;	case 0x481c:		uint16_dump(level + 1, "MAP_SCO_PCM", frm);		break;	case 0x500c:		psstores_dump(level + 1, "PS_CLR_STORES", frm);		break;	case 0x6000:		valueless_dump(level + 1, "NO_VARIABLE", frm);		break;	case 0x6802:		uint16_dump(level + 1, "CONFIG_UART", frm);		break;	case 0x6805:		uint16_dump(level + 1, "PANIC_ARG", frm);		break;	case 0x6806:		uint16_dump(level + 1, "FAULT_ARG", frm);		break;	case 0x6827:		int8_dump(level + 1, "MAX_TX_POWER", frm);		break;	case 0x682b:		int8_dump(level + 1, "DEFAULT_TX_POWER", frm);		break;	case 0x7003:		pskey_dump(level + 1, frm);		break;	default:		raw_dump(level + 1, frm);		break;	}}static char *cid2str(uint8_t cid){	switch (cid & 0x3f) {	case 0:		return "BCSP Internal";	case 1:		return "BCSP Link";	case 2:		return "BCCMD";	case 3:		return "HQ";	case 4:		return "Device Mgt";	case 5:		return "HCI Cmd/Evt";	case 6:		return "HCI ACL";	case 7:		return "HCI SCO";	case 8:		return "L2CAP";	case 9:		return "RFCOMM";	case 10:		return "SDP";	case 11:		return "Debug";	case 12:		return "DFU";	case 13:		return "VM";	case 14:		return "Unused";	case 15:		return "Reserved";	default:		return "Unknown";	}}static char *frag2str(uint8_t frag){	switch (frag & 0xc0) {	case 0x00:		return " middle fragment";	case 0x40:		return " first fragment";	case 0x80:		return " last fragment";	default:		return "";	}}void csr_dump(int level, struct frame *frm){	uint8_t desc, cid, type;	uint16_t handle, master, addr;	desc = CSR_U8(frm);	cid = desc & 0x3f;	switch (cid) {	case 2:		bccmd_dump(level, frm);		break;	case 20:		type = CSR_U8(frm);		if (!p_filter(FILT_LMP)) {			switch (type) {			case 0x0f:				frm->handle =  ((uint8_t *) frm->ptr)[17];				frm->master = 0;				frm->len--;				lmp_dump(level, frm);				return;			case 0x10:				frm->handle = ((uint8_t *) frm->ptr)[17];				frm->master = 1;				frm->len--;				lmp_dump(level, frm);				return;			case 0x12:				handle = CSR_U16(frm);				master = CSR_U16(frm);				addr = CSR_U16(frm);				p_indent(level, frm);				printf("FHS: handle %d addr %d (%s)\n", handle,					addr, master ? "master" : "slave");				if (!master) {					char addr[18];					ba2str((bdaddr_t *) frm->ptr, addr);					p_indent(level + 1, frm);					printf("bdaddr %s class "						"0x%2.2x%2.2x%2.2x\n", addr,						((uint8_t *) frm->ptr)[8],						((uint8_t *) frm->ptr)[7],						((uint8_t *) frm->ptr)[6]);				}				return;			case 0x7b:				p_indent(level, frm);				printf("LMP(r): duplicate (same SEQN)\n");				return;			}		}		p_indent(level, frm);		printf("CSR: Debug (type 0x%2.2x)\n", type);		raw_dump(level, frm);		break;	default:		p_indent(level, frm);		printf("CSR: %s (channel %d)%s\n", cid2str(cid), cid, frag2str(desc));		raw_dump(level, frm);		break;	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产综合色在线视频区| 欧美疯狂做受xxxx富婆| 国产传媒欧美日韩成人| 久久精品99国产国产精| 久久99深爱久久99精品| 精久久久久久久久久久| 国产在线精品一区二区| 国产精品一区在线观看你懂的| 精品在线播放午夜| 麻豆成人av在线| 久久se精品一区二区| 国产精品一级片在线观看| 国产xxx精品视频大全| 福利一区二区在线| 94-欧美-setu| 欧美综合色免费| 欧美日韩国产三级| 日韩一级视频免费观看在线| 日韩欧美国产综合在线一区二区三区| 日韩一级精品视频在线观看| 久久先锋影音av鲁色资源网| 国产精品免费视频网站| 亚洲欧美另类小说视频| 亚洲一区二区精品3399| 免费看日韩精品| 国产精品一区三区| 91原创在线视频| 欧美精品一二三区| 久久久91精品国产一区二区精品 | 日韩视频国产视频| 欧美成人伊人久久综合网| 久久久不卡影院| 综合久久久久久| 日韩国产一二三区| 高清国产一区二区| 欧美日韩精品一二三区| 久久久精品一品道一区| 亚洲另类色综合网站| 日本成人中文字幕| 懂色一区二区三区免费观看| 欧美天堂亚洲电影院在线播放| 日韩欧美一区在线| 日韩久久一区二区| 麻豆专区一区二区三区四区五区| 国产**成人网毛片九色| 欧美日韩在线播放三区| 久久九九99视频| 亚洲国产精品综合小说图片区| 国产精品一区在线观看乱码| 欧美亚洲一区二区在线| 久久久www成人免费无遮挡大片| 亚洲自拍偷拍网站| 国模冰冰炮一区二区| 欧美三级电影在线看| 国产欧美精品一区二区三区四区| 亚洲五码中文字幕| 成人性生交大合| 日韩欧美一区二区不卡| 亚洲欧美成aⅴ人在线观看 | 欧美老女人在线| 欧美激情在线免费观看| 日韩国产高清在线| 91在线观看视频| 国产日韩av一区二区| 肉丝袜脚交视频一区二区| 99久久精品国产毛片| 精品国产百合女同互慰| 亚洲高清免费在线| 北岛玲一区二区三区四区| 精品国产123| 午夜精品一区二区三区三上悠亚| 成人深夜在线观看| 久久久久久影视| 麻豆传媒一区二区三区| 欧美久久久久久蜜桃| 亚洲精品日韩一| 成人在线视频首页| 久久久久久久综合日本| 天天综合网天天综合色| 色偷偷一区二区三区| 国产精品另类一区| 激情综合网av| 欧美电影免费观看高清完整版在线观看 | 在线精品亚洲一区二区不卡| 国产日韩欧美综合一区| 国产在线播放一区二区三区| 欧美一级久久久| 日产欧产美韩系列久久99| 欧美偷拍一区二区| 亚洲综合成人在线| 欧美午夜不卡在线观看免费| 亚洲欧美激情插| 一本久久a久久免费精品不卡| 国产精品理论在线观看| 成人夜色视频网站在线观看| 久久久精品中文字幕麻豆发布| 精品一区二区久久| 精品国产不卡一区二区三区| 极品少妇xxxx精品少妇| 欧美电视剧在线看免费| 麻豆国产精品一区二区三区| 精品久久久久久亚洲综合网| 久久爱另类一区二区小说| 欧美电视剧在线观看完整版| 久久99精品久久久久久国产越南| 日韩免费观看高清完整版| 男人的j进女人的j一区| 日韩美女视频在线| 激情综合五月婷婷| 国产欧美日韩三级| 99国产一区二区三精品乱码| 亚洲欧美日韩综合aⅴ视频| 色嗨嗨av一区二区三区| 亚洲一区二区免费视频| 91精品国产色综合久久ai换脸 | 一区二区三区在线免费观看| 成人aaaa免费全部观看| 亚洲国产精品国自产拍av| 成人高清免费观看| 亚洲综合一区在线| 欧美一区日韩一区| 国产综合一区二区| 综合在线观看色| 欧美日韩一区二区在线观看视频| 婷婷国产v国产偷v亚洲高清| 日韩欧美专区在线| 国产.欧美.日韩| 夜夜爽夜夜爽精品视频| 91麻豆精品国产自产在线观看一区| 热久久一区二区| 欧美激情综合五月色丁香| 91在线观看免费视频| 日韩国产欧美一区二区三区| 久久久高清一区二区三区| 在线视频你懂得一区二区三区| 日韩中文字幕不卡| 国产日韩在线不卡| 欧美午夜寂寞影院| 国产很黄免费观看久久| 亚洲一区日韩精品中文字幕| 欧美不卡视频一区| 99久久99久久综合| 琪琪久久久久日韩精品| 国产精品系列在线| 欧美群妇大交群中文字幕| 国产精品白丝av| 亚洲一卡二卡三卡四卡 | 麻豆精品视频在线观看免费| 国产精品美女一区二区三区| 欧美视频一区二区三区四区| 韩国三级在线一区| 亚洲一区二区三区三| 久久久久久久久久久久电影| 色综合网色综合| 韩国成人福利片在线播放| 亚洲色图一区二区| 久久久亚洲精品石原莉奈| 欧美午夜在线观看| 成人动漫av在线| 久久电影网站中文字幕| 一区二区视频免费在线观看| 精品剧情v国产在线观看在线| 91美女蜜桃在线| 国产精品1区二区.| 麻豆视频观看网址久久| 亚洲乱码国产乱码精品精小说| 精品剧情v国产在线观看在线| 在线一区二区观看| 成人激情图片网| 精品一区二区在线看| 亚洲电影一区二区三区| 国产精品嫩草影院av蜜臀| 欧美xxxxx裸体时装秀| 欧美亚洲尤物久久| 91麻豆成人久久精品二区三区| 精品无码三级在线观看视频| 日韩综合小视频| 亚洲综合免费观看高清在线观看 | 国产精品69久久久久水密桃| 日本特黄久久久高潮| 一区二区三区中文在线| 欧美国产一区二区在线观看| 精品日韩一区二区| 欧美一区二区在线不卡| 欧美三级三级三级| 欧美在线观看你懂的| 99久久精品免费看国产免费软件| 国产精品77777| 国产精品88av| 国产精品18久久久久久vr| 久久国产夜色精品鲁鲁99| 视频一区二区三区在线| 一区二区三区免费观看| 中文字幕佐山爱一区二区免费| 欧美国产精品v| 久久久www成人免费毛片麻豆| 欧美变态凌虐bdsm| 日韩欧美第一区| 欧美一区二区观看视频| 7777精品伊人久久久大香线蕉完整版 |