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

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

?? obex.c

?? linux操作系統下的紅外驅動的測試程序
?? C
字號:
/********************************************************************* *                 * Filename:      obex.c * Version:        * Description:    * Status:        Experimental. * Author:        Dag Brattli <dagb@cs.uit.no> * Created at:    Wed Mar 31 14:09:47 1999 * Modified at:   Wed Apr 21 15:52:03 1999 * Modified by:   Dag Brattli <dagb@cs.uit.no> *  *     Copyright (c) 1999 Dag Brattli, All Rights Reserved. *     Copyright (c) 1999 Jean Tourrilhes, All Rights Reserved. *      *     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., 59 Temple Place, Suite 330, Boston,  *     MA 02111-1307 USA *      ********************************************************************/#include "irdadump.h"#include "obex.h"#include <stdio.h>#include <string.h>#include <netinet/in.h>		/* ntohs */void unicode_to_char(guint8 *buf){	guint8 *buf2 = buf;	int n=0;		while ((buf2[n] = buf[n*2+1]))		n++;}/* * Function parse_obex_header (buf) * *     * */int parse_obex_header(GNetBuf *buf, GString *str, int istext){	char string[255];	guint32 tmp_int;	guint16 tmp_short;	int len = 0;	/* g_print("%s()", __FUNCTION__);fflush(stdout); */	switch (buf->data[0] & OBEX_HI_MASK) {	case OBEX_UNICODE:		/* g_print("OBEX_UNICODE");fflush(stdout); */		memcpy(&tmp_short, buf->data+1, 2); /* Align value */		tmp_short = GINT16_FROM_BE(tmp_short) - 3;		len += 3;				memcpy(string, buf->data+3, tmp_short);		unicode_to_char(string);		len += tmp_short;		/* g_print("%s ", string);fflush(stdout); */		g_string_sprintfa(str, "\"%s\" ", string);		break;	case OBEX_BYTE_STREAM:                /* g_print("OBEX_BYTE_STREAM");fflush(stdout); */		memcpy(&tmp_short, buf->data+1, 2); /* Align value */		tmp_short = GINT16_FROM_BE(tmp_short) - 3;		len += tmp_short + 3;		if(istext) {			memcpy(string, buf->data+3, tmp_short);			string[tmp_short] = '\0';			g_string_sprintfa(str, "\"%s\" ", string);		} else			g_string_sprintfa(str, "[%d bytes] ", tmp_short);		break;	case OBEX_BYTE:		/* g_print("OBEX_BYTE");fflush(stdout); */		g_string_sprintfa(str, "%d ", buf->data[0]);                len += 2;		break;	case OBEX_INT:		/* g_print("OBEX_INT");fflush(stdout); */		memcpy(&tmp_int, buf->data+1, 4); /* Align value */		len += 5;		/* printf("%ld ", ntohl(tmp_int));fflush(stdout); */		g_string_sprintfa(str, "%d ", GINT32_FROM_BE(tmp_int));		break;	default:		g_print("******");fflush(stdout);		break;	}		return len;}/* * Function parse_obex_put (buf) * *    Parse an OBEX put command * */inline void parse_obex_headers(GNetBuf *buf, GString *str){	struct obex_minimal_frame *frame;	int final;	guint16 size;	int len;	frame = (struct obex_minimal_frame *) buf->data;	/* We know it's a put frame, but we have to check if it's the final */	final = frame->opcode & OBEX_FINAL;	/* Length of this frame */	size = ntohs(frame->len);		/* Remove the OBEX common header */	g_netbuf_pull(buf, 3);	g_string_sprintfa(str, "final=%d len=%d ", final >> 7, size);	/* Parse all headers */	while (buf->len > 0) {		/* Read the header identifier */		/* g_print("hi=%02x", buf->data[0]);fflush(stdout); */		switch (buf->data[0]) {		case HEADER_NAME:		case HEADER_ANAME:			g_string_append(str, "Name=");			len = parse_obex_header(buf, str, 1);			break;		case HEADER_DESCRIPTION:			g_string_append(str, "Description=");			len = parse_obex_header(buf, str, 0);			break;		case HEADER_LENGTH:			g_string_append(str, "Lenght=");			len = parse_obex_header(buf, str, 0);			break;		case HEADER_TYPE:			g_string_append(str, "Type=");			len = parse_obex_header(buf, str, 1);			break;		case HEADER_TARGET:			g_string_append(str, "Target=");			len = parse_obex_header(buf, str, 1);			break;		case HEADER_BODY:			g_string_append(str, "body=");			len = parse_obex_header(buf, str, 0);			break;		case HEADER_BODY_END:			g_string_append(str, "body-end=");			len = parse_obex_header(buf, str, 0);			break;		default:			g_string_append(str, "custom=");			len = parse_obex_header(buf, str, 0);			break;		}                /* g_print("len=%d\n", len);fflush(stdout); */		if(g_netbuf_pull(buf, len) == NULL) {			g_string_append(str, "{unterminated} ");			break;		}	}}inline void parse_obex_connect(GNetBuf *buf, GString *str){	struct obex_connect_frame *frame;	guint16 length;	guint8 version;	int flags;	guint16 mtu;		frame = (struct obex_connect_frame *) buf->data;	length  = ntohs(frame->len);	/* Check if it contains connection setup parameters - Jean II */	if(length == 7) {		version = frame->version;		flags   = frame->flags;		mtu     = ntohs(frame->mtu);		g_string_sprintfa(str,				  "CONNECT len=%d ver=%d.%d flags=%d mtu=%d ", 				  length, ((version & 0xf0) >> 4),				  version & 0x0f, flags, mtu);	} else		g_string_sprintfa(str, "CONNECT len=%d ", length);}/* * The first success frame contains the negociated Obex parameters * We also need to parse the anser to GET request properly * Jean II */inline void parse_obex_success(GNetBuf *buf, GString *str){	struct obex_connect_frame *frame;	guint16 length;	guint8 version;	int flags;	guint16 mtu;		frame = (struct obex_connect_frame *) buf->data;	length  = ntohs(frame->len);	switch(length) {	case 7:		/* Frame contains connection setup parameters */		version = frame->version;		flags   = frame->flags;		mtu     = ntohs(frame->mtu);		g_string_sprintfa(str,				  "SUCCESS len=%d ver=%d.%d flags=%d mtu=%d ", 				  length, ((version & 0xf0) >> 4),				  version & 0x0f, flags, mtu);		break;	case 3:		/* Frame contains nothing */		g_string_sprintfa(str, "SUCCESS len=%d ", length);		break;	default:		/* Frame contains some headers (probably a GET reply) */		g_string_append(str, "SUCCESS ");		parse_obex_headers(buf, str);		break;	}}/* * Function parse_obex (buf) * *    Parse OBEX commands and responses * */inline void parse_obex(GNetBuf *buf, GString *str, int cmd){	guint8	opcode;	int	len;	/* g_print(__FUNCTION__);fflush(stdout); */	g_string_append(str, "\n\tOBEX ");	/* Check for empty frames - Jean II */	len = g_netbuf_get_len(buf);	if(len == 0)	  return;	opcode = buf->data[0] & ~OBEX_FINAL; /* Remove final bit */	/* Check if it's a command or response frame - Jean II */	if (!cmd) {		switch (opcode) {		case OBEX_CONTINUE:			g_string_append(str, "CONTINUE ");			parse_obex_headers(buf, str);			break;		case OBEX_SWITCH_PRO:			g_string_append(str, "SWITCH_PRO ");			break;		case OBEX_SUCCESS:			parse_obex_success(buf, str);			break;		case OBEX_CREATED:			g_string_append(str, "CREATED ");			break;		case OBEX_ACCEPTED:			g_string_append(str, "ACCEPTED ");			break;		case OBEX_BAD_REQUEST:			g_string_append(str, "BAD REQUEST ");			break;		case OBEX_FORBIDDEN:			g_string_append(str, "FORBIDDEN ");			break;		case OBEX_CONFLICT:			g_string_append(str, "CONFLICT ");			break;		default:			g_string_sprintfa(str, "Unknown response %02x ", 					  opcode);			break;		}	} else {		switch (opcode) {		case OBEX_CONNECT:			parse_obex_connect(buf, str);			break;		case OBEX_PUT:			g_string_append(str, "PUT ");			parse_obex_headers(buf, str);			break;		case OBEX_GET:			g_string_append(str, "GET ");			parse_obex_headers(buf, str);			break;		case OBEX_DISCONNECT:			g_string_append(str, "DISC ");			break;		case OBEX_ABORT:			g_string_append(str, "ABORT ");			break;		case OBEX_SETPATH:			g_string_append(str, "SETPATH ");			break;		default:			if ((opcode > 0x04) && (opcode < 0x10))				g_string_append(str, "RESERVED ");			else if ((opcode > 0x0f) && (opcode < 0x20))				g_string_append(str, "USER_DEFINED ");			else 				g_string_sprintfa(str, "unknown opcode %#x ",						 opcode);			break;		}	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区三区四区| 一区二区日韩电影| 丁香婷婷综合网| 中文字幕乱码亚洲精品一区| 99久久精品一区| 亚洲欧美精品午睡沙发| 一本大道av伊人久久综合| 伊人一区二区三区| 欧美精三区欧美精三区| 美腿丝袜亚洲三区| 久久综合九色综合97_久久久 | 亚洲人123区| 欧美性受xxxx黑人xyx性爽| 偷拍日韩校园综合在线| 日韩欧美www| 国产精品白丝av| 亚洲私人影院在线观看| 在线精品亚洲一区二区不卡| 午夜一区二区三区视频| 日韩视频免费观看高清完整版| 激情久久久久久久久久久久久久久久| 亚洲精品一区二区精华| 成人h精品动漫一区二区三区| 亚洲啪啪综合av一区二区三区| 欧美视频在线一区二区三区| 首页欧美精品中文字幕| 精品福利在线导航| 不卡的av中国片| 亚洲国产日韩精品| 精品国产一区二区三区不卡 | 国产激情视频一区二区在线观看 | 日韩三级.com| 丁香亚洲综合激情啪啪综合| 亚洲精品成人精品456| 日韩午夜av一区| 成人免费黄色在线| 亚洲午夜一区二区| 精品国产乱码久久久久久夜甘婷婷| 成人美女在线观看| 无吗不卡中文字幕| 国产精品入口麻豆原神| 欧美日韩在线亚洲一区蜜芽| 国产在线视频一区二区| 亚洲啪啪综合av一区二区三区| 日韩一区二区三区三四区视频在线观看| 国产大陆精品国产| 午夜视频在线观看一区二区三区| 久久天天做天天爱综合色| 色吧成人激情小说| 精品一区二区三区免费毛片爱| 综合网在线视频| 日韩三级伦理片妻子的秘密按摩| av电影在线观看完整版一区二区| 奇米精品一区二区三区在线观看| 国产精品私人自拍| 欧美精品v国产精品v日韩精品| 丁香激情综合国产| 日韩成人免费看| 成人欧美一区二区三区在线播放| 欧美一区二区免费视频| www.日韩大片| 另类小说视频一区二区| 亚洲男女毛片无遮挡| 欧美成人r级一区二区三区| 91传媒视频在线播放| 国产精品伊人色| 丝袜国产日韩另类美女| 亚洲美女精品一区| 国产欧美一区二区在线| 日韩一级在线观看| 91久久久免费一区二区| 国产黄色91视频| 日韩专区一卡二卡| 亚洲女女做受ⅹxx高潮| 久久九九久久九九| 欧美一区二区啪啪| 欧美熟乱第一页| 97se亚洲国产综合自在线观| 狠狠色狠狠色综合系列| 天天影视色香欲综合网老头| 亚洲女同女同女同女同女同69| 国产清纯在线一区二区www| 欧美一区二区视频在线观看2020 | 92精品国产成人观看免费| 国产乱人伦偷精品视频不卡| 肉肉av福利一精品导航| 一区二区三区欧美久久| 亚洲欧美在线视频| 亚洲国产精品黑人久久久| 精品国内片67194| 91精品国产一区二区| 欧美午夜理伦三级在线观看| 99精品欧美一区二区蜜桃免费 | 国产精品妹子av| 精品国产乱码久久久久久浪潮| 欧美精品在线观看一区二区| 在线一区二区观看| 一本色道**综合亚洲精品蜜桃冫| 成人午夜视频网站| 国产成人精品亚洲午夜麻豆| 国产一区二区三区免费看| 裸体在线国模精品偷拍| 日韩成人av影视| 午夜精品久久一牛影视| 亚洲成人免费在线观看| 亚洲国产精品久久久久婷婷884| 亚洲精品免费在线| 亚洲免费伊人电影| 亚洲人成小说网站色在线| 亚洲人成精品久久久久久| 亚洲乱码中文字幕综合| 亚洲精品久久久蜜桃| 亚洲男人都懂的| 一区二区三区资源| 亚洲综合在线观看视频| 一区二区三区不卡视频| 亚洲va天堂va国产va久| 亚洲成人免费在线| 日韩成人精品视频| 久久精品国产一区二区三| 久久机这里只有精品| 极品少妇一区二区三区精品视频| 久久成人羞羞网站| 国产高清视频一区| 成人综合婷婷国产精品久久免费| 丁香一区二区三区| 色综合中文综合网| 一本色道久久综合亚洲91| 在线这里只有精品| 91超碰这里只有精品国产| 91精品国产综合久久精品app| 欧美一级生活片| 精品久久国产老人久久综合| 久久精品视频在线免费观看| 日本一区二区免费在线| 综合久久久久久| 亚洲成人一区在线| 久久国产尿小便嘘嘘尿| 国产高清亚洲一区| 91网上在线视频| 欧美日韩在线精品一区二区三区激情| 欧美日韩成人一区二区| 欧美大片拔萝卜| 国产香蕉久久精品综合网| 亚洲色图20p| 亚洲国产欧美在线| 久久精品噜噜噜成人av农村| 国产精品18久久久| 色偷偷88欧美精品久久久| 欧美精品自拍偷拍动漫精品| 久久综合九色综合97婷婷| 综合久久久久久| 日韩电影在线免费| 高潮精品一区videoshd| 91福利精品第一导航| 日韩精品最新网址| 国产精品欧美一级免费| 亚洲国产精品久久人人爱 | 久久精品国产久精国产爱| 国产福利91精品一区| 色婷婷国产精品综合在线观看| 51精品久久久久久久蜜臀| 国产亚洲精品精华液| 一区二区三国产精华液| 激情亚洲综合在线| 99久久er热在这里只有精品15| 欧美日韩国产欧美日美国产精品| 26uuu色噜噜精品一区| 亚洲色图色小说| 久久99九九99精品| 91色婷婷久久久久合中文| 欧美一区二区三区在线电影 | 久久久久久97三级| 一区二区在线电影| 韩国在线一区二区| 在线精品视频小说1| 精品日韩在线一区| 一区二区在线观看视频 | eeuss国产一区二区三区| 欧美福利一区二区| 国产精品麻豆久久久| 首页国产欧美久久| www.性欧美| 精品国产欧美一区二区| 一区二区三区日本| 高清视频一区二区| 91精品欧美久久久久久动漫 | 国产精品 日产精品 欧美精品| 欧美日韩一区二区在线观看| 国产嫩草影院久久久久| 午夜免费久久看| www.欧美.com| 欧美成人一区二区三区片免费| 亚洲欧洲www| 国产乱国产乱300精品| 在线不卡的av| 亚洲欧美日韩一区二区| 国产91精品一区二区麻豆网站 | 曰韩精品一区二区| 风流少妇一区二区|