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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? obex.c

?? bluetooth 開(kāi)發(fā)程序bluez-hcidump-1.28
?? C
字號(hào):
/* * *  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 TABLE_SIZE 20static struct {	uint16_t handle;	uint8_t dlci;	uint8_t opcode;	uint8_t status;	struct frame frm;} table[TABLE_SIZE];static void del_frame(uint16_t handle, uint8_t dlci){	int i;	for (i = 0; i < TABLE_SIZE; i++)		if (table[i].handle == handle && table[i].dlci == dlci) {			table[i].handle = 0;			table[i].dlci   = 0;			table[i].opcode = 0;			table[i].status = 0;			if (table[i].frm.data)				free(table[i].frm.data);			memset(&table[i].frm, 0, sizeof(struct frame));			break;		}}static struct frame *add_frame(struct frame *frm){	struct frame *fr;	void *data;	int i, pos = -1;	for (i = 0; i < TABLE_SIZE; i++) {		if (table[i].handle == frm->handle && table[i].dlci == frm->dlci) {			pos = i;			break;		}		if (pos < 0 && !table[i].handle && !table[i].dlci)			pos = i;	}	if (pos < 0)		return frm;	table[pos].handle = frm->handle;	table[pos].dlci   = frm->dlci;	fr = &table[pos].frm;	data = malloc(fr->len + frm->len);	if (!data) {		perror("Can't allocate OBEX stream buffer");		del_frame(frm->handle, frm->dlci);		return frm;	}	if (fr->len > 0)		memcpy(data, fr->ptr, fr->len);	if (frm->len > 0)		memcpy(data + fr->len, frm->ptr, frm->len);	if (fr->data)		free(fr->data);	fr->data     = data;	fr->data_len = fr->len + frm->len;	fr->len      = fr->data_len;	fr->ptr      = fr->data;	fr->dev_id   = frm->dev_id;	fr->in       = frm->in;	fr->ts       = frm->ts;	fr->handle   = frm->handle;	fr->cid      = frm->cid;	fr->num      = frm->num;	fr->dlci     = frm->dlci;	fr->channel  = frm->channel;	fr->audio_fd = frm->audio_fd;	return fr;}static uint8_t get_opcode(uint16_t handle, uint8_t dlci){	int i;	for (i = 0; i < TABLE_SIZE; i++)		if (table[i].handle == handle && table[i].dlci == dlci)			return table[i].opcode;	return 0x00;}static void set_opcode(uint16_t handle, uint8_t dlci, uint8_t opcode){	int i;	for (i = 0; i < TABLE_SIZE; i++)		if (table[i].handle == handle && table[i].dlci == dlci) {			table[i].opcode = opcode;			break;		}}static uint8_t get_status(uint16_t handle, uint8_t dlci){	int i;	for (i = 0; i < TABLE_SIZE; i++)		if (table[i].handle == handle && table[i].dlci == dlci)			return table[i].status;	return 0x00;}static void set_status(uint16_t handle, uint8_t dlci, uint8_t status){	int i;	for (i = 0; i < TABLE_SIZE; i++)		if (table[i].handle == handle && table[i].dlci == dlci) {			table[i].status = status;			break;		}}static char *opcode2str(uint8_t opcode){	switch (opcode & 0x7f) {	case 0x00:		return "Connect";	case 0x01:		return "Disconnect";	case 0x02:		return "Put";	case 0x03:		return "Get";	case 0x04:		return "Reserved";	case 0x05:		return "SetPath";	case 0x06:		return "Reserved";	case 0x07:		return "Session";	case 0x7f:		return "Abort";	case 0x10:		return "Continue";	case 0x20:		return "Success";	case 0x21:		return "Created";	case 0x22:		return "Accepted";	case 0x23:		return "Non-authoritative information";	case 0x24:		return "No content";	case 0x25:		return "Reset content";	case 0x26:		return "Partial content";	case 0x30:		return "Multiple choices";	case 0x31:		return "Moved permanently";	case 0x32:		return "Moved temporarily";	case 0x33:		return "See other";	case 0x34:		return "Not modified";	case 0x35:		return "Use Proxy";	case 0x40:		return "Bad request";	case 0x41:		return "Unauthorized";	case 0x42:		return "Payment required";	case 0x43:		return "Forbidden";	case 0x44:		return "Not found";	case 0x45:		return "Method not allowed";	case 0x46:		return "Not acceptable";	case 0x47:		return "Proxy authentication required";	case 0x48:		return "Request timeout";	case 0x49:		return "Conflict";	case 0x4a:		return "Gone";	case 0x4b:		return "Length required";	case 0x4c:		return "Precondition failed";	case 0x4d:		return "Requested entity too large";	case 0x4e:		return "Requested URL too large";	case 0x4f:		return "Unsupported media type";	case 0x50:		return "Internal server error";	case 0x51:		return "Not implemented";	case 0x52:		return "Bad gateway";	case 0x53:		return "Service unavailable";	case 0x54:		return "Gateway timeout";	case 0x55:		return "HTTP version not supported";	case 0x60:		return "Database full";	case 0x61:		return "Database locked";	default:		return "Unknown";	}}static char *hi2str(uint8_t hi){	switch (hi & 0x3f) {	case 0x00:		return "Count";	case 0x01:		return "Name";	case 0x02:		return "Type";	case 0x03:		return "Length";	case 0x04:		return "Time";	case 0x05:		return "Description";	case 0x06:		return "Target";	case 0x07:		return "HTTP";	case 0x08:		return "Body";	case 0x09:		return "End of Body";	case 0x0a:		return "Who";	case 0x0b:		return "Connection ID";	case 0x0c:		return "App. Parameters";	case 0x0d:		return "Auth. Challenge";	case 0x0e:		return "Auth. Response";	case 0x0f:		return "Creator ID";	case 0x10:		return "WAN UUID";	case 0x11:		return "Object Class";	case 0x12:		return "Session Parameters";	case 0x13:		return "Session Sequence Number";	default:		return "Unknown";	}}static void parse_headers(int level, struct frame *frm){	uint8_t hi, hv8;	uint16_t len;	uint32_t hv32;	while (frm->len > 0) {		hi = get_u8(frm);		p_indent(level, frm);		printf("%s (0x%02x)", hi2str(hi), hi);		switch (hi & 0xc0) {		case 0x00:	/* Unicode */			len = get_u16(frm) - 3;			printf(" = Unicode length %d\n", len);			raw_ndump(level, frm, len);			frm->ptr += len;			frm->len -= len;			break;		case 0x40:	/* Byte sequence */			len = get_u16(frm) - 3;			printf(" = Sequence length %d\n", len);			raw_ndump(level, frm, len);			frm->ptr += len;			frm->len -= len;			break;		case 0x80:	/* One byte */			hv8 = get_u8(frm);			printf(" = %d\n", hv8);			break;		case 0xc0:	/* Four bytes */			hv32 = get_u32(frm);			printf(" = %u\n", hv32);			break;		}	}}void obex_dump(int level, struct frame *frm){	uint8_t last_opcode, opcode, status;	uint8_t version, flags, constants;	uint16_t length, pktlen;	frm = add_frame(frm);	while (frm->len > 0) {		opcode = get_u8(frm);		length = get_u16(frm);		status = opcode & 0x7f;		if (frm->len < length - 3) {			frm->ptr -= 3;			frm->len += 3;			return;		}		p_indent(level, frm);		last_opcode = get_opcode(frm->handle, frm->dlci);		if (!(opcode & 0x70)) {			printf("OBEX: %s cmd(%c): len %d",					opcode2str(opcode),					opcode & 0x80 ? 'f' : 'c', length);			set_opcode(frm->handle, frm->dlci, opcode);		} else {			printf("OBEX: %s rsp(%c): status %x%02d len %d",					opcode2str(last_opcode),					opcode & 0x80 ? 'f' : 'c',					status >> 4, status & 0xf, length);			opcode = last_opcode;		}		if (get_status(frm->handle, frm->dlci) == 0x10)			printf(" (continue)");		set_status(frm->handle, frm->dlci, status);		switch (opcode & 0x7f) {		case 0x00:	/* Connect */			version = get_u8(frm);			flags   = get_u8(frm);			pktlen  = get_u16(frm);			printf(" version %d.%d flags %d mtu %d\n",				version >> 4, version & 0xf, flags, pktlen);			break;		case 0x05:	/* SetPath */			if (length > 3) {				flags     = get_u8(frm);				constants = get_u8(frm);				printf(" flags %d constants %d\n",							flags, constants);			} else				printf("\n");			break;		default:			printf("\n");		}		if ((status & 0x70) && (parser.flags & DUMP_VERBOSE)) {			p_indent(level, frm);			printf("Status %x%02d = %s\n",					status >> 4, status & 0xf,							opcode2str(status));		}		parse_headers(level, frm);	}}void obex_clear(uint16_t handle, uint8_t dlci){	del_frame(handle, dlci);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人免费电影| 不卡视频一二三四| 欧美成人精品3d动漫h| 精品一区二区久久| 亚洲视频一二三| 95精品视频在线| 亚洲成人av在线电影| 欧美一区二区在线看| 国产一区二区三区观看| 国产精品久久久久久久久图文区| 欧美日韩国产一区| 国产成人精品亚洲日本在线桃色| 亚洲欧美怡红院| 91精品国产一区二区三区| 波多野结衣在线一区| 毛片不卡一区二区| 亚洲一区成人在线| 国产精品国产三级国产aⅴ中文 | 亚洲福利视频一区二区| 欧美精品在线视频| 欧美性xxxxx极品少妇| 国产一区二区在线观看视频| 视频一区二区三区中文字幕| 精品国产精品一区二区夜夜嗨| 成人午夜在线视频| 久久婷婷国产综合国色天香| 欧美一区在线视频| 中文字幕在线不卡一区二区三区| 久久品道一品道久久精品| 欧美亚洲综合在线| 欧美日韩综合色| 欧美三级乱人伦电影| 国产精品嫩草影院com| 91精品国产综合久久久久久漫画| 911精品产国品一二三产区| 欧美一区二区三区免费视频| 日韩亚洲欧美综合| 激情亚洲综合在线| 天天影视网天天综合色在线播放| 国产精品每日更新在线播放网址| 欧美精品一区二区高清在线观看 | 国产一区二区三区四区五区美女| 亚洲欧美偷拍卡通变态| 日本一区二区三区四区在线视频| xfplay精品久久| 日韩欧美一区中文| 日韩丝袜美女视频| 精品美女一区二区| 国产亚洲制服色| 欧美国产欧美亚州国产日韩mv天天看完整| 日韩欧美在线123| 国产日产欧美精品一区二区三区| 国产精品久久久久久久久久免费看| 亚洲视频每日更新| 亚洲一区二区三区中文字幕在线| 亚洲超碰97人人做人人爱| 石原莉奈一区二区三区在线观看| 蜜桃视频免费观看一区| 国产麻豆欧美日韩一区| 97久久精品人人做人人爽50路| 色老汉一区二区三区| 色成年激情久久综合| 在线欧美一区二区| 欧美二区三区91| 555www色欧美视频| 欧美日韩中字一区| 26uuu亚洲综合色欧美| 国产精品久久久99| 99久久精品免费| 婷婷综合久久一区二区三区| 精品理论电影在线| 国产在线精品免费| 欧美日韩久久一区二区| 久久综合久久综合亚洲| 亚洲视频中文字幕| 精品一区二区三区在线观看国产| 色www精品视频在线观看| 久久精品一二三| 天堂资源在线中文精品| 欧美—级在线免费片| 亚洲综合色噜噜狠狠| 国产精品无遮挡| 亚洲精品在线观看网站| 在线视频你懂得一区| 麻豆国产一区二区| 日韩高清欧美激情| 亚洲婷婷综合久久一本伊一区| 日韩欧美不卡一区| 欧美日韩在线播放三区| 色综合天天天天做夜夜夜夜做| 久久精品国产久精国产| 日韩国产欧美视频| 亚洲视频电影在线| 午夜久久福利影院| 婷婷综合久久一区二区三区| 18成人在线观看| 自拍偷在线精品自拍偷无码专区| 久久久久青草大香线综合精品| 91精品国产综合久久久久| 91官网在线观看| 91精品国产麻豆国产自产在线 | 国产高清成人在线| 一区二区三区**美女毛片| 精品国产sm最大网站免费看| 国产米奇在线777精品观看| 亚洲永久免费av| 成人精品gif动图一区| 天天操天天干天天综合网| 精品视频一区二区三区免费| 欧美午夜片在线观看| 久久久综合激的五月天| 亚洲一级二级三级在线免费观看| 在线观看日韩毛片| 久久综合九色综合97_久久久 | 亚洲成人先锋电影| 国产成人午夜精品5599| 一区二区三区美女| 天天操天天综合网| 国产91丝袜在线播放| 99精品视频一区| 精品国产凹凸成av人导航| 精品国产伦一区二区三区观看方式 | 欧美一区二区免费观在线| 国产精品中文字幕欧美| 欧美亚洲日本一区| 欧美一级日韩免费不卡| 欧美大片一区二区三区| 中文字幕乱码日本亚洲一区二区| 国产精品第四页| 欧美a级理论片| 色婷婷av一区二区三区软件 | 色婷婷激情一区二区三区| 51精品国自产在线| 一区二区三区在线免费观看| 麻豆国产一区二区| 在线观看成人小视频| 久久久久久久久免费| 亚洲超丰满肉感bbw| 99国产精品久| 欧美日韩国产片| 欧美性猛交xxxxxx富婆| 久久亚洲二区三区| 亚洲狠狠丁香婷婷综合久久久| 亚洲123区在线观看| 专区另类欧美日韩| 亚洲图片欧美综合| 免费看黄色91| 精品一二线国产| 日韩一区二区三区免费看| 婷婷一区二区三区| 欧美一区二区三区视频在线| 天天综合天天综合色| 91精品国产综合久久蜜臀| 天天综合色天天| 日韩欧美专区在线| 精品一区二区三区久久| 精品伦理精品一区| 亚洲一区av在线| 成+人+亚洲+综合天堂| 欧美经典一区二区| 麻豆久久久久久| 精品人在线二区三区| 国产精品一区二区在线看| wwww国产精品欧美| 国产肉丝袜一区二区| 91视频一区二区| 亚洲成av人片在线| 91麻豆精品国产91| 欧美日韩视频在线第一区 | 91丝袜高跟美女视频| 亚洲国产中文字幕| 日本大胆欧美人术艺术动态| 一区二区成人在线| 日本不卡一区二区三区高清视频| 国产精品三级av| 亚洲成a人在线观看| 精品入口麻豆88视频| 成人欧美一区二区三区| 国产伦精品一区二区三区视频青涩| 水野朝阳av一区二区三区| 欧美一区二区播放| 91视频91自| 成人免费观看av| 国内精品在线播放| 亚洲激情五月婷婷| 日韩精品自拍偷拍| 91在线观看下载| 激情文学综合网| 欧美午夜寂寞影院| 日本一区二区三区在线观看| 午夜电影一区二区三区| 成人激情动漫在线观看| 宅男噜噜噜66一区二区66| 亚洲特黄一级片| 高清beeg欧美| 精品国产一区二区三区av性色| 中文字幕第一页久久| 亚洲一区二区av电影| 韩国成人福利片在线播放| 一区二区三区四区精品在线视频|