⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hci.c

📁 bluetooth 开发程序bluez-hcidump-1.28
💻 C
📖 第 1 页 / 共 5 页
字号:
		printf("\n");	}}static inline void read_buffer_size_dump(int level, struct frame *frm){	read_buffer_size_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x\n", rp->status);	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	} else {		p_indent(level, frm);		printf("ACL MTU %d:%d SCO MTU %d:%d\n",				btohs(rp->acl_mtu), btohs(rp->acl_max_pkt),				rp->sco_mtu, btohs(rp->sco_max_pkt));	}}static inline void read_link_quality_dump(int level, struct frame *frm){	read_link_quality_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x handle %d lq %d\n",			rp->status, btohs(rp->handle), rp->link_quality);	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void read_rssi_dump(int level, struct frame *frm){	read_rssi_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x handle %d rssi %d\n",				rp->status, btohs(rp->handle), rp->rssi);	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void read_afh_map_dump(int level, struct frame *frm){	read_afh_map_rp *rp = frm->ptr;	int i;	p_indent(level, frm);	printf("status 0x%2.2x handle %d mode %d\n",				rp->status, btohs(rp->handle), rp->mode);	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	} else {		p_indent(level, frm);		printf("AFH map: 0x");		for (i = 0; i < 10; i++)			printf("%2.2x", rp->map[i]);		printf("\n");	}}static inline void read_clock_dump(int level, struct frame *frm){	read_clock_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x handle %d clock 0x%4.4x accuracy %d\n",					rp->status, btohs(rp->handle),					btohl(rp->clock), btohs(rp->accuracy));	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void cmd_complete_dump(int level, struct frame *frm){	evt_cmd_complete *evt = frm->ptr;	uint16_t opcode = btohs(evt->opcode);	uint16_t ogf = cmd_opcode_ogf(opcode);	uint16_t ocf = cmd_opcode_ocf(opcode);	if (ogf == OGF_VENDOR_CMD && (parser.flags & DUMP_NOVENDOR))		return;	p_indent(level, frm);	printf("%s (0x%2.2x|0x%4.4x) ncmd %d\n",				opcode2str(opcode), ogf, ocf, evt->ncmd);	frm->ptr += EVT_CMD_COMPLETE_SIZE;	frm->len -= EVT_CMD_COMPLETE_SIZE;	if (!(parser.flags & DUMP_VERBOSE)) {		raw_dump(level, frm);		return;	}	switch (ogf) {	case OGF_LINK_CTL:		switch (ocf) {		case OCF_INQUIRY_CANCEL:		case OCF_PERIODIC_INQUIRY:		case OCF_EXIT_PERIODIC_INQUIRY:			status_response_dump(level, frm);			return;		case OCF_CREATE_CONN_CANCEL:		case OCF_REMOTE_NAME_REQ_CANCEL:		case OCF_PIN_CODE_REPLY:		case OCF_LINK_KEY_REPLY:		case OCF_PIN_CODE_NEG_REPLY:		case OCF_LINK_KEY_NEG_REPLY:			bdaddr_response_dump(level, frm);			return;		}		break;	case OGF_LINK_POLICY:		switch (ocf) {		case OCF_WRITE_LINK_POLICY:		case OCF_SNIFF_SUBRATE:			generic_response_dump(level, frm);			return;		}		break;	case OGF_HOST_CTL:		switch (ocf) {		case OCF_READ_PIN_TYPE:			read_pin_type_dump(level, frm);			return;		case OCF_READ_STORED_LINK_KEY:			read_stored_link_key_dump(level, frm);			return;		case OCF_WRITE_STORED_LINK_KEY:			write_stored_link_key_dump(level, frm);			return;		case OCF_DELETE_STORED_LINK_KEY:			delete_stored_link_key_dump(level, frm);			return;		case OCF_READ_LOCAL_NAME:			read_local_name_dump(level, frm);			return;		case OCF_READ_CLASS_OF_DEV:			read_class_of_dev_dump(level, frm);			return;		case OCF_READ_VOICE_SETTING:			read_voice_setting_dump(level, frm);			return;		case OCF_READ_CURRENT_IAC_LAP:			read_current_iac_lap_dump(level, frm);			return;		case OCF_READ_SCAN_ENABLE:		case OCF_READ_AUTH_ENABLE:			read_scan_enable_dump(level, frm);			return;		case OCF_READ_CONN_ACCEPT_TIMEOUT:		case OCF_READ_PAGE_TIMEOUT:			read_page_timeout_dump(level, frm);			return;		case OCF_READ_PAGE_ACTIVITY:		case OCF_READ_INQ_ACTIVITY:			read_page_activity_dump(level, frm);			return;		case OCF_READ_INQUIRY_SCAN_TYPE:			read_inquiry_scan_type_dump(level, frm);			return;		case OCF_READ_ENCRYPT_MODE:		case OCF_READ_INQUIRY_MODE:		case OCF_READ_AFH_MODE:			read_inquiry_mode_dump(level, frm);			return;		case OCF_READ_LINK_SUPERVISION_TIMEOUT:			read_link_supervision_timeout_dump(level, frm);			return;		case OCF_READ_TRANSMIT_POWER_LEVEL:			read_transmit_power_level_dump(level, frm);			return;		case OCF_READ_EXT_INQUIRY_RESPONSE:			read_ext_inquiry_response_dump(level, frm);			return;		case OCF_FLUSH:		case OCF_WRITE_LINK_SUPERVISION_TIMEOUT:			generic_response_dump(level, frm);			return;		case OCF_RESET:		case OCF_SET_EVENT_MASK:		case OCF_SET_EVENT_FLT:		case OCF_WRITE_PIN_TYPE:		case OCF_CREATE_NEW_UNIT_KEY:		case OCF_CHANGE_LOCAL_NAME:		case OCF_WRITE_CLASS_OF_DEV:		case OCF_WRITE_VOICE_SETTING:		case OCF_WRITE_CURRENT_IAC_LAP:		case OCF_WRITE_SCAN_ENABLE:		case OCF_WRITE_AUTH_ENABLE:		case OCF_WRITE_ENCRYPT_MODE:		case OCF_WRITE_CONN_ACCEPT_TIMEOUT:		case OCF_WRITE_PAGE_TIMEOUT:		case OCF_WRITE_PAGE_ACTIVITY:		case OCF_WRITE_INQ_ACTIVITY:		case OCF_WRITE_INQUIRY_SCAN_TYPE:		case OCF_WRITE_INQUIRY_MODE:		case OCF_WRITE_AFH_MODE:		case OCF_SET_AFH_CLASSIFICATION:		case OCF_WRITE_EXT_INQUIRY_RESPONSE:			status_response_dump(level, frm);			return;		}		break;	case OGF_INFO_PARAM:		switch (ocf) {		case OCF_READ_LOCAL_VERSION:			read_local_version_dump(level, frm);			return;		case OCF_READ_LOCAL_COMMANDS:			read_local_commands_dump(level, frm);			return;		case OCF_READ_LOCAL_FEATURES:			read_local_features_dump(level, frm);			return;		case OCF_READ_LOCAL_EXT_FEATURES:			read_local_ext_features_dump(level, frm);			return;		case OCF_READ_BUFFER_SIZE:			read_buffer_size_dump(level, frm);			return;		case OCF_READ_BD_ADDR:			bdaddr_response_dump(level, frm);			return;		}		break;	case OGF_STATUS_PARAM:		switch (ocf) {		case OCF_READ_FAILED_CONTACT_COUNTER:		case OCF_RESET_FAILED_CONTACT_COUNTER:			status_response_dump(level, frm);			return;		case OCF_READ_LINK_QUALITY:			read_link_quality_dump(level, frm);			return;		case OCF_READ_RSSI:			read_rssi_dump(level, frm);			return;		case OCF_READ_AFH_MAP:			read_afh_map_dump(level, frm);			return;		case OCF_READ_CLOCK:			read_clock_dump(level, frm);			return;		}		break;	}	raw_dump(level, frm);}static inline void cmd_status_dump(int level, struct frame *frm){	evt_cmd_status *evt = frm->ptr;	uint16_t opcode = btohs(evt->opcode);	uint16_t ogf = cmd_opcode_ogf(opcode);	uint16_t ocf = cmd_opcode_ocf(opcode);	if (ogf == OGF_VENDOR_CMD && (parser.flags & DUMP_NOVENDOR))		return;	p_indent(level, frm);	printf("%s (0x%2.2x|0x%4.4x) status 0x%2.2x ncmd %d\n",			opcode2str(opcode), ogf, ocf, evt->status, evt->ncmd);	if (evt->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(evt->status));	}}static inline void hardware_error_dump(int level, struct frame *frm){	evt_hardware_error *evt = frm->ptr;	p_indent(level, frm);	printf("code %d\n", evt->code);}static inline void inq_result_dump(int level, struct frame *frm){	uint8_t num = get_u8(frm);	char addr[18];	int i;	for (i = 0; i < num; i++) {		inquiry_info *info = frm->ptr;		ba2str(&info->bdaddr, addr);		p_indent(level, frm);		printf("bdaddr %s mode %d clkoffset 0x%4.4x class 0x%2.2x%2.2x%2.2x\n",			addr, info->pscan_rep_mode, btohs(info->clock_offset),			info->dev_class[2], info->dev_class[1], info->dev_class[0]);		frm->ptr += INQUIRY_INFO_SIZE;		frm->len -= INQUIRY_INFO_SIZE;	}}static inline void conn_complete_dump(int level, struct frame *frm){	evt_conn_complete *evt = frm->ptr;	char addr[18];	ba2str(&evt->bdaddr, addr);	p_indent(level, frm);	printf("status 0x%2.2x handle %d bdaddr %s type %s encrypt 0x%2.2x\n",			evt->status, btohs(evt->handle), addr,			evt->link_type == 1 ? "ACL" : "SCO", evt->encr_mode);	if (evt->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(evt->status));	}}static inline void conn_request_dump(int level, struct frame *frm){	evt_conn_request *evt = frm->ptr;	char addr[18];	ba2str(&evt->bdaddr, addr);	p_indent(level, frm);	printf("bdaddr %s class 0x%2.2x%2.2x%2.2x type %s\n",			addr, evt->dev_class[2], evt->dev_class[1],			evt->dev_class[0], evt->link_type == 1 ? "ACL" : "SCO");}static inline void disconn_complete_dump(int level, struct frame *frm){	evt_disconn_complete *evt = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x handle %d reason 0x%2.2x\n",				evt->status, btohs(evt->handle), evt->reason);	if (evt->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(evt->status));	} else if (evt->reason > 0) {		p_indent(level, frm);		printf("Reason: %s\n", status2str(evt->reason));	}}static inline void remote_name_req_complete_dump(int level, struct frame *frm){	evt_remote_name_req_complete *evt = frm->ptr;	char addr[18], name[249];	int i;	ba2str(&evt->bdaddr, addr);	memset(name, 0, sizeof(name));	for (i = 0; i < 248 && evt->name[i]; i++)		if (isprint(evt->name[i]))			name[i] = evt->name[i];		else			name[i] = '.';	p_indent(level, frm);	printf("status 0x%2.2x bdaddr %s name '%s'\n", evt->status, addr, name);	if (evt->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(evt->status));	}}static inline void master_link_key_complete_dump(int level, struct frame *frm){	evt_master_link_key_complete *evt = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x handle %d flag %d\n",				evt->status, btohs(evt->handle), evt->key_flag);	if (evt->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(evt->status));	}}static inline void encrypt_change_dump(int level, struct frame *frm){	evt_encrypt_change *evt = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x handle %d encrypt 0x%2.2x\n",				evt->status, btohs(evt->handle), evt->encrypt);	if (evt->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(evt->status));	}}static inline void read_remote_features_complete_dump(int level, struct frame *frm){	evt_read_remote_features_complete *evt = frm->ptr;	int i;	p_indent(level, frm);	printf("status 0x%2.2x handle %d\n", evt->status, btohs(evt->handle));	if (evt->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(evt->status));	} else {		p_indent(level, frm);		printf("Features:");		for (i = 0; i < 8; i++)			printf(" 0x%2.2x", evt->features[i]);		printf("\n");	}}static inline void read_remote_version_complete_dump(int level, struct frame *frm){	evt_read_remote_version_complete *evt = frm->ptr;	uint16_t manufacturer = btohs(evt->manufacturer);	p_indent(level, frm);	printf("status 0x%2.2x handle %d\n", evt->status, btohs(evt->handle));	if (evt->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(evt->status));	} else {		p_indent(level, frm);		printf("LMP Version: %s (0x%x) LMP Subversion: 0x%x\n",			lmp_vertostr(evt->lmp_ver), evt->lmp_ver,			btohs(evt->lmp_subver));		p_indent(level, frm);		printf("Manufacturer: %s (%d)\n",			bt_compidtostr(manufacturer), manufacturer);	}}static inline void qos_setup_complete_dump(int level, struct frame *frm){	evt_qos_setup_complete *evt = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x handle %d flags %d\n",				evt->status, btohs(evt->handle), evt->flags);	if (evt->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(evt->status));	} else {		p_indent(level, frm);		printf("Service type: %d\n", evt->qos.service_type);		p_indent(level, frm);		printf("Token rate: %d\n", btohl(evt->qos.token_rate));		p_indent(level, frm);		printf("Peak bandwith: %d\n", btohl(evt->qos.peak_bandwidth));		p_indent(level, frm);		printf("Latency: %d\n", btohl(evt->qos.latency));		p_indent(level, frm);		printf("Delay variation: %d\n", btohl(evt->qos.delay_variation));	}}static inline void role_change_dump(int level, struct frame *frm){	evt_role_change *evt = frm->ptr;	char addr[18];	p_indent(level, frm);	ba2str(&evt->bdaddr, addr);	printf("status 0x%2.2x bdaddr %s role 0x%2.2x\n",						evt->status, addr, evt->role);	if (evt->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(evt->status));	} else {		p_indent(level, frm);		printf("Role: %s\n", role2str(evt->role));	}}static inline void num_comp_pkts_dump(int level, struct frame *frm){	uint8_t num = get_u8(frm);	uint16_t handle, packets;	int i;	for (i = 0; i < num; i++) {		handle = btohs(htons(get_u16(frm)));		packets = btohs(htons(get_u16(frm)));		p_indent(level, frm);		printf("handle %d packets %d\n", handle, packets);	}}static inline void mode_change_dump(int level, struct frame *frm){	evt_mode_change *evt = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x handle %d mode 0x%2.2x interval %d\n",		evt->status, btohs(evt->handle), evt->mode, btohs(evt->interval));	if (evt->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(evt->status));	} else {		p_indent(level, frm);		printf("Mode: %s\n", mode2str(evt->mode));	}}static inline void pin_code_req_dump(int level, struct frame *frm){	evt_pin_code_req *evt = frm->ptr;	char addr[18];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -