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

📄 hci.c

📁 bluetooth 开发程序bluez-hcidump-1.28
💻 C
📖 第 1 页 / 共 5 页
字号:
		case OCF_LINK_KEY_NEG_REPLY:			pin_code_neg_reply_dump(level + 1, frm);			return;		case OCF_SET_CONN_ENCRYPT:			set_conn_encrypt_dump(level + 1, frm);			return;		case OCF_AUTH_REQUESTED:		case OCF_CHANGE_CONN_LINK_KEY:		case OCF_READ_REMOTE_FEATURES:		case OCF_READ_REMOTE_VERSION:		case OCF_READ_CLOCK_OFFSET:		case OCF_READ_LMP_HANDLE:		case OCF_SETUP_SYNC_CONN:			generic_command_dump(level + 1, frm);			return;		case OCF_MASTER_LINK_KEY:			master_link_key_dump(level + 1, frm);			return;		case OCF_READ_REMOTE_EXT_FEATURES:			read_remote_ext_features_dump(level + 1, frm);			return;		case OCF_REMOTE_NAME_REQ:			remote_name_req_dump(level + 1, frm);			return;		}		break;	case OGF_LINK_POLICY:		switch (ocf) {		case OCF_HOLD_MODE:		case OCF_PARK_MODE:			hold_mode_dump(level + 1, frm);			return;		case OCF_SNIFF_MODE:			sniff_mode_dump(level + 1, frm);			return;		case OCF_EXIT_SNIFF_MODE:		case OCF_EXIT_PARK_MODE:		case OCF_ROLE_DISCOVERY:		case OCF_READ_LINK_POLICY:			generic_command_dump(level + 1, frm);			return;		case OCF_SWITCH_ROLE:			accept_conn_req_dump(level + 1, frm);			return;		case OCF_WRITE_LINK_POLICY:			write_link_policy_dump(level + 1, frm);			return;		case OCF_SNIFF_SUBRATE:			sniff_subrate_dump(level + 1, frm);			return;		}		break;	case OGF_HOST_CTL:		switch (ocf) {		case OCF_RESET:		case OCF_CREATE_NEW_UNIT_KEY:			return;		case OCF_SET_EVENT_MASK:			set_event_mask_dump(level + 1, frm);			return;		case OCF_SET_EVENT_FLT:			set_event_flt_dump(level + 1, frm);			return;		case OCF_WRITE_PIN_TYPE:			write_pin_type_dump(level + 1, frm);			return;		case OCF_READ_STORED_LINK_KEY:		case OCF_DELETE_STORED_LINK_KEY:			request_stored_link_key_dump(level + 1, frm);			return;		case OCF_WRITE_STORED_LINK_KEY:			return_link_keys_dump(level + 1, frm);			return;		case OCF_CHANGE_LOCAL_NAME:			change_local_name_dump(level + 1, frm);			return;		case OCF_WRITE_CLASS_OF_DEV:			write_class_of_dev_dump(level + 1, frm);			return;		case OCF_WRITE_VOICE_SETTING:			write_voice_setting_dump(level + 1, frm);			return;		case OCF_WRITE_CURRENT_IAC_LAP:			write_current_iac_lap_dump(level + 1, frm);			return;		case OCF_WRITE_SCAN_ENABLE:		case OCF_WRITE_AUTH_ENABLE:			write_scan_enable_dump(level + 1, frm);			return;		case OCF_WRITE_CONN_ACCEPT_TIMEOUT:		case OCF_WRITE_PAGE_TIMEOUT:			write_page_timeout_dump(level + 1, frm);			return;		case OCF_WRITE_PAGE_ACTIVITY:		case OCF_WRITE_INQ_ACTIVITY:			write_page_activity_dump(level + 1, frm);			return;		case OCF_WRITE_INQUIRY_SCAN_TYPE:			write_inquiry_scan_type_dump(level + 1, frm);			return;		case OCF_WRITE_ENCRYPT_MODE:		case OCF_WRITE_INQUIRY_MODE:		case OCF_WRITE_AFH_MODE:			write_inquiry_mode_dump(level + 1, frm);			return;		case OCF_READ_TRANSMIT_POWER_LEVEL:			request_transmit_power_level_dump(level + 1, frm);			return;		case OCF_FLUSH:		case OCF_READ_LINK_SUPERVISION_TIMEOUT:			generic_command_dump(level + 1, frm);			return;		case OCF_WRITE_LINK_SUPERVISION_TIMEOUT:			write_link_supervision_timeout_dump(level + 1, frm);			return;		case OCF_WRITE_EXT_INQUIRY_RESPONSE:			write_ext_inquiry_response_dump(level + 1, frm);			return;		}		break;	case OGF_INFO_PARAM:		switch (ocf) {		case OCF_READ_LOCAL_EXT_FEATURES:			request_local_ext_features_dump(level + 1, frm);			return;		}		break;	case OGF_STATUS_PARAM:		switch (ocf) {		case OCF_READ_LINK_QUALITY:		case OCF_READ_RSSI:		case OCF_READ_AFH_MAP:			generic_command_dump(level + 1, frm);			return;		case OCF_READ_CLOCK:			request_clock_dump(level + 1, frm);			return;		}		break;	}	raw_dump(level, frm);}static inline void status_response_dump(int level, struct frame *frm){	uint8_t status = get_u8(frm);	p_indent(level, frm);	printf("status 0x%2.2x\n", status);	if (status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(status));	}	raw_dump(level, frm);}static inline void handle_response_dump(int level, struct frame *frm){	uint16_t handle = btohs(htons(get_u16(frm)));	p_indent(level, frm);	printf("handle %d\n", handle);	raw_dump(level, frm);}static inline void bdaddr_response_dump(int level, struct frame *frm){	uint8_t status = get_u8(frm);	bdaddr_t *bdaddr = frm->ptr;	char addr[18];	frm->ptr += sizeof(bdaddr_t);	frm->len -= sizeof(bdaddr_t);	p_indent(level, frm);	ba2str(bdaddr, addr);	printf("status 0x%2.2x bdaddr %s\n", status, addr);	if (status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(status));	}	raw_dump(level, frm);}static inline void generic_response_dump(int level, struct frame *frm){	uint8_t status = get_u8(frm);	uint16_t handle = btohs(htons(get_u16(frm)));	p_indent(level, frm);	printf("status 0x%2.2x handle %d\n", status, handle);	if (status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(status));	}	raw_dump(level, frm);}static inline void read_pin_type_dump(int level, struct frame *frm){	read_pin_type_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x type %d\n", rp->status, rp->pin_type);	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void read_stored_link_key_dump(int level, struct frame *frm){	read_stored_link_key_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x max %d num %d\n",				rp->status, rp->max_keys, rp->num_keys);	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void write_stored_link_key_dump(int level, struct frame *frm){	write_stored_link_key_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x written %d\n", rp->status, rp->num_keys);	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void delete_stored_link_key_dump(int level, struct frame *frm){	delete_stored_link_key_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x deleted %d\n", rp->status, btohs(rp->num_keys));	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void read_local_name_dump(int level, struct frame *frm){	read_local_name_rp *rp = frm->ptr;	char name[249];	int i;	memset(name, 0, sizeof(name));	for (i = 0; i < 248 && rp->name[i]; i++)		if (isprint(rp->name[i]))			name[i] = rp->name[i];		else			name[i] = '.';	p_indent(level, frm);	printf("status 0x%2.2x name \'%s\'\n", rp->status, name);	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void read_class_of_dev_dump(int level, struct frame *frm){	read_class_of_dev_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x class 0x%2.2x%2.2x%2.2x\n", rp->status,			rp->dev_class[2], rp->dev_class[1], rp->dev_class[0]);	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void read_voice_setting_dump(int level, struct frame *frm){	read_voice_setting_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x voice setting 0x%4.4x\n",					rp->status, btohs(rp->voice_setting));	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void read_current_iac_lap_dump(int level, struct frame *frm){	read_current_iac_lap_rp *rp = frm->ptr;	int i;	for (i = 0; i < rp->num_current_iac; i++) {		p_indent(level, frm);		printf("IAC 0x%2.2x%2.2x%2.2x", rp->lap[i][2], rp->lap[i][1], rp->lap[i][0]);		if (rp->lap[i][2] == 0x9e && rp->lap[i][1] == 0x8b) {			switch (rp->lap[i][0]) {			case 0x00:				printf(" (Limited Inquiry Access Code)");				break;			case 0x33:				printf(" (General Inquiry Access Code)");				break;			}		}		printf("\n");	}}static inline void read_scan_enable_dump(int level, struct frame *frm){	uint8_t status = get_u8(frm);	uint8_t enable = get_u8(frm);	p_indent(level, frm);	printf("status 0x%2.2x enable %d\n", status, enable);	if (status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(status));	}}static inline void read_page_timeout_dump(int level, struct frame *frm){	read_page_timeout_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x timeout %d\n", rp->status, btohs(rp->timeout));	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void read_page_activity_dump(int level, struct frame *frm){	read_page_activity_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x interval %d window %d\n",			rp->status, btohs(rp->interval), btohs(rp->window));	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void read_inquiry_scan_type_dump(int level, struct frame *frm){	read_inquiry_scan_type_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x type %d\n", rp->status, rp->type);	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void read_inquiry_mode_dump(int level, struct frame *frm){	read_inquiry_mode_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x mode %d\n", rp->status, rp->mode);	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void read_link_supervision_timeout_dump(int level, struct frame *frm){	read_link_supervision_timeout_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x handle %d timeout %d\n",			rp->status, btohs(rp->handle), btohs(rp->link_sup_to));	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void read_transmit_power_level_dump(int level, struct frame *frm){	read_transmit_power_level_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x handle %d level %d\n",				rp->status, btohs(rp->handle), rp->level);	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	}}static inline void read_ext_inquiry_response_dump(int level, struct frame *frm){	read_ext_inquiry_response_rp *rp = frm->ptr;	p_indent(level, frm);	printf("status 0x%2.2x fec 0x%2.2x\n", rp->status, rp->fec);	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	} else {		frm->ptr += 2;		frm->len -= 2;		ext_inquiry_response_dump(level, frm);	}}static inline void read_local_version_dump(int level, struct frame *frm){	read_local_version_rp *rp = frm->ptr;	uint16_t manufacturer = btohs(rp->manufacturer);	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("HCI Version: %s (0x%x) HCI Revision: 0x%x\n",					hci_vertostr(rp->hci_ver),					rp->hci_ver, btohs(rp->hci_rev));		p_indent(level, frm);		printf("LMP Version: %s (0x%x) LMP Subversion: 0x%x\n",					lmp_vertostr(rp->lmp_ver),					rp->lmp_ver, btohs(rp->lmp_subver));		p_indent(level, frm);		printf("Manufacturer: %s (%d)\n",				bt_compidtostr(manufacturer), manufacturer);	}}static inline void read_local_commands_dump(int level, struct frame *frm){	read_local_commands_rp *rp = frm->ptr;	int i, max = 0;	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 {		for (i = 0; i < 64; i++)			if (rp->commands[i])				max = i + 1;		p_indent(level, frm);		printf("Commands: ");		for (i = 0; i < (max > 32 ? 32 : max); i++)			printf("%2.2x", rp->commands[i]);		printf("\n");		if (max > 32) {			p_indent(level, frm);			printf("          ");			for (i = 32; i < max; i++)				printf("%2.2x", rp->commands[i]);			printf("\n");		}	}}static inline void read_local_features_dump(int level, struct frame *frm){	read_local_features_rp *rp = frm->ptr;	int i;	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("Features:");		for (i = 0; i < 8; i++)			printf(" 0x%2.2x", rp->features[i]);		printf("\n");	}}static inline void read_local_ext_features_dump(int level, struct frame *frm){	read_local_ext_features_rp *rp = frm->ptr;	int i;	p_indent(level, frm);	printf("status 0x%2.2x page %d max %d\n",		rp->status, rp->page_num, rp->max_page_num);	if (rp->status > 0) {		p_indent(level, frm);		printf("Error: %s\n", status2str(rp->status));	} else {		p_indent(level, frm);		printf("Features:");		for (i = 0; i < 8; i++)			 printf(" 0x%2.2x", rp->features[i]);

⌨️ 快捷键说明

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