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

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

?? xmodem.c

?? vivi源碼代碼支持usb下載功能
?? C
字號:
/* * vivi/deriver/serialxmodem.c: *     - an implementation of the xmodem protocol from the spec. * * Based on bootldr/xmodem.c (C) 2000 Compaq Computer Coporation. * * Copyright (C) 2001 MIZI Research, Inc. * * * 1999-01-xx: Edwin Foo <efoo@crl.dec.com> *    - Initial code * * 2001-10-04: Janghoon Lyu <nandy@mizi.com> *    - Modified a little bit. * * 2002-07-04: Janghoon Lyu <nandy@mizi.com> */#include "config.h"#include "machine.h"#include "serial.h"#include "priv_data.h"#include <types.h>/* XMODEM parameters */#define BLOCK_SIZE	128	/* size of transmit blocks */#define RETRIES		20	/* maximum number of RETRIES *//* Line control codes */#define SOH		0x01	/* start of header */#define ACK		0x06	/* Acknowledge */#define NAK		0x15	/* Negative acknowledge */#define CAN		0x18	/* Cancel */#define EOT		0x04	/* end of text */#define GET_BYTE_TIMEOUT 10000000/* global error variable */char *xmodem_errtxt = NULL;int get_byte_err = 0;__u8 volatile rbuffer[BLOCK_SIZE];/* prototypes of helper functions */int get_record(void);__u8 get_byte(void);enum{	SAC_SEND_NAK = 0,	SAC_SENT_NAK = 1,	SAC_PAST_START_NAK = 2};static volatile int seen_a_char = SAC_SEND_NAK;static int one_nak = 0;static unsigned long xmodem_timeout = GET_BYTE_TIMEOUT;char debugbuf[4096];int db_idx = 0;void bufputs(char *s){	size_t len = strlen(s) + 1;	if (len + db_idx > sizeof(debugbuf))		len = sizeof(debugbuf) - db_idx;	if (len) {		memcpy(&debugbuf[db_idx], s, len);		db_idx += len;	}}void reset_debugbuf(void){	memset(debugbuf, 0x2a, sizeof(debugbuf));	db_idx = 0;}__u32 xmodem_receive(char *dldaddr, size_t len){	char ochr;	int r = 0, rx_block_num = 0, error_count = 0;	__u32 foffset = 0;	int i;	int ret;	xmodem_errtxt = NULL;	seen_a_char = 0;	one_nak = get_param_value("xmodem_one_nak", &ret);	if (ret) one_nak = 0;	xmodem_timeout = get_param_value("xmodem_initial_timeout", &ret);	if (ret) xmodem_timeout = GET_BYTE_TIMEOUT;	rx_block_num = 1;	error_count = RETRIES;	do {		if ((r = get_record()) == (rx_block_num & 255)) {			error_count = RETRIES;			for (i = 0; i <BLOCK_SIZE; i++)				*(__u8 *)(dldaddr+foffset+i) = rbuffer[i];			xmodem_errtxt = "RX PACKET";			rx_block_num++;			ochr = ACK;			foffset += BLOCK_SIZE;		} else {			switch (r) {			case -1: /* TIMEOUT */				xmodem_errtxt = "TIMEOUT";				ochr = NAK;				break;			case -2: /* Bad block */				xmodem_errtxt = "BAD BLOCK#";				/* eat teh rest of the block */				get_byte_err = 0;				while (get_byte_err != -1) get_byte();				ochr = NAK;				break;			case -3: /* Bad checksum */				xmodem_errtxt = "BAD CHKSUM";				ochr = NAK;				break;			case -4: /* End of file */				xmodem_errtxt = "DONE";				ochr = ACK;				break;			case -5: /* Cancel */				xmodem_errtxt = "ABORTED";				ochr = ACK;				break;			default: /* Block out of sequence */				xmodem_errtxt = "WRONG BLK";				ochr = NAK;			}			error_count--;		}		putc(ochr);	} while ((r > -3) && error_count);	if ((!error_count) || (r != -4)) {		foffset = 0;	/* indicate failure to caller */		/*printk("x-modem error: %s\n", xmodem_errtxt); */	}	return foffset;}/* * Read a record in the XMODEM protocol, return the block number * (0-255) if successful, or one of the following return codes: * 	-1 = Bad byte * 	-2 = Bad block number * 	-3 = Bad block checksum * 	-4 = End of file * 	-5 = Canceled by remote */int get_record(void){	int c, block_num = 0;	int i;	__u32 check_sum;	/* clear the buffer */	for (i = 0; i < BLOCK_SIZE; i++)		rbuffer[i] = 0x00;	check_sum = 0;	i = -2;	c = get_byte();	if (get_byte_err)		return -1;	switch (c) {	case SOH:	/* Receive packet */		for (;;) {			c = get_byte();			if (get_byte_err)				return -1;			switch (i) {			case -2: 				block_num = c;				break;			case -1:#if 0#ifdef CHECK_NEGATED_SECTNUM				if (c != (-block_num -1))					return -2;#endif#endif				break;			case BLOCK_SIZE:				if ((check_sum & 0xff) != c)					return -3;				else					return block_num;				break;			default:				rbuffer[i] = c;				check_sum += c;			}			i++;		}	case EOT:	/* end of file encountered */		return -4;	case CAN:	/* cancel protocol */		return -5;	default:		return -5;	}}/* get_byte should use one of the timer's for a CPU clock independent timeout */__u8 get_byte(){	int c, ret;again:	c = 0;	get_byte_err = 0; /* reset errno */	c = awaitkey(xmodem_timeout, &get_byte_err);	if (get_byte_err) {		if (seen_a_char == SAC_SEND_NAK || !one_nak) {			bufputs("timeout nak");			putc(NAK);	/* make the sender go */		}		if (seen_a_char < SAC_PAST_START_NAK) {			bufputs("goto again");			seen_a_char = SAC_SENT_NAK;			xmodem_timeout = get_param_value("xmodem_timeout", &ret);			if (ret) xmodem_timeout = GET_BYTE_TIMEOUT;			goto again;		}	}	if (get_byte_err == 0)		seen_a_char = SAC_PAST_START_NAK;	return (c);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩视频一区二区| 日韩国产欧美在线视频| 玉米视频成人免费看| 国内精品久久久久影院色| 在线一区二区三区做爰视频网站| 久久影院午夜论| 日韩二区三区四区| 日本久久电影网| 国产精品视频yy9299一区| 奇米888四色在线精品| 欧洲国内综合视频| 国产精品欧美精品| 国产乱理伦片在线观看夜一区| 欧美日韩一区二区三区免费看| 国产色产综合色产在线视频| 看片的网站亚洲| 91精品国产综合久久精品性色| 亚洲综合免费观看高清完整版 | 亚洲综合在线五月| 成人激情电影免费在线观看| 日韩免费一区二区| 日本色综合中文字幕| 欧美午夜精品一区二区三区| 亚洲欧美日韩系列| 91亚洲精品一区二区乱码| 久久久99久久| 粉嫩aⅴ一区二区三区四区 | 久久国产视频网| 欧美日韩精品一区二区天天拍小说 | 久草这里只有精品视频| 欧美另类高清zo欧美| 亚洲成人免费视频| 欧美日产国产精品| 蜜臀va亚洲va欧美va天堂| 欧美精品1区2区3区| 日韩高清在线观看| 日韩一区二区三区四区| 久久se精品一区二区| 精品久久久久av影院| 国内精品久久久久影院薰衣草| www国产精品av| 国产另类ts人妖一区二区| 国产日韩欧美a| voyeur盗摄精品| 亚洲精品美国一| 69堂国产成人免费视频| 久久电影网站中文字幕| 国产精品无码永久免费888| 99久久综合色| 性欧美疯狂xxxxbbbb| 欧美一级高清大全免费观看| 极品瑜伽女神91| 国产精品色婷婷| 欧美影视一区二区三区| 蜜臀国产一区二区三区在线播放| 久久久av毛片精品| 色哟哟欧美精品| 日本欧美在线观看| 日本一区二区不卡视频| 欧美亚洲动漫精品| 九九九久久久精品| 亚洲三级在线看| 91精品国产综合久久福利软件| 国产一区二区在线观看免费| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产在线精品一区二区不卡了| 国产精品美女久久久久高潮| 欧美日韩精品免费| 国产成人在线观看| 亚洲成精国产精品女| 久久网站热最新地址| 在线观看一区不卡| 国产一区二区三区视频在线播放| 亚洲欧洲制服丝袜| 精品国产一区二区三区忘忧草 | 色香色香欲天天天影视综合网| 日日夜夜精品视频天天综合网| 久久精品网站免费观看| 欧美日韩一区不卡| 99久久精品免费| 久久se精品一区二区| 一区二区三区在线视频播放| 2017欧美狠狠色| 欧美日韩亚洲国产综合| 成人福利在线看| 麻豆91免费观看| 亚洲成a人片在线观看中文| 欧美经典一区二区| 日韩午夜电影av| 欧美日韩在线不卡| 99在线精品一区二区三区| 激情综合色播激情啊| 午夜伦理一区二区| 一区二区三区欧美激情| 国产精品美女久久久久久| 日韩欧美成人激情| 在线综合视频播放| www.av精品| 成人网男人的天堂| 国产成人av电影在线播放| 美国三级日本三级久久99 | 国精品**一区二区三区在线蜜桃 | 国产精品伦理在线| 久久只精品国产| 日韩免费视频线观看| 欧美久久一区二区| 欧美日韩三级一区二区| 欧美伊人精品成人久久综合97| 99精品国产视频| 91在线视频免费91| 91丨porny丨户外露出| av中文字幕在线不卡| av激情亚洲男人天堂| 91免费版在线| 91久久国产最好的精华液| 色综合久久综合| 在线免费观看成人短视频| 99精品偷自拍| 91麻豆蜜桃一区二区三区| 一本在线高清不卡dvd| 91久久人澡人人添人人爽欧美 | 国产一区二区三区在线观看免费视频 | 中文字幕亚洲综合久久菠萝蜜| 国产午夜亚洲精品理论片色戒| 久久精品一区四区| 国产精品人妖ts系列视频| 日韩一区在线看| 亚洲影视在线观看| 人禽交欧美网站| 国产在线日韩欧美| 成人精品免费视频| 91丨porny丨国产| 欧美日韩高清在线| 欧美成人精品福利| 国产精品色呦呦| 一区二区三区久久久| 美女视频网站黄色亚洲| 国产精品正在播放| 日本道色综合久久| 欧美一级生活片| 国产视频一区在线播放| 亚洲人妖av一区二区| 日本不卡在线视频| 国产精品18久久久久久久久久久久| www..com久久爱| 91精品国产色综合久久| 日本一区二区三区dvd视频在线 | 国产欧美一区二区三区沐欲| 亚洲免费观看高清完整| 日韩电影在线观看电影| 国产成人aaaa| 91精品欧美久久久久久动漫| 国产婷婷一区二区| 香蕉久久一区二区不卡无毒影院| 精品在线观看视频| 91福利社在线观看| 久久久www成人免费毛片麻豆| 亚洲一区在线看| 国产福利91精品| 欧美欧美欧美欧美| 国产精品视频一区二区三区不卡| 天天色天天爱天天射综合| 成人av集中营| 欧美不卡视频一区| 亚洲aaa精品| 91视频com| 国产日产欧美一区| 男女性色大片免费观看一区二区 | 亚洲成av人片一区二区| 精品一区二区三区久久| 欧美亚洲动漫制服丝袜| 亚洲国产成人在线| 久久97超碰国产精品超碰| 欧美一a一片一级一片| 中文欧美字幕免费| 精品在线观看免费| 91麻豆精品国产91久久久更新时间| 中文字幕一区二区三区不卡| 国产在线国偷精品产拍免费yy| 欧美日韩三级一区| 亚洲综合免费观看高清在线观看 | 久久99国内精品| 6080午夜不卡| 亚洲午夜免费视频| 91免费看片在线观看| 国产精品久久久久aaaa| 久久超碰97人人做人人爱| 欧美一二区视频| 天堂va蜜桃一区二区三区漫画版| 色噜噜狠狠成人中文综合 | www.爱久久.com| 中文字幕一区二区三区视频| 国产91精品在线观看| 久久精品一区蜜桃臀影院| 狠狠v欧美v日韩v亚洲ⅴ| 欧美刺激脚交jootjob| 麻豆成人久久精品二区三区小说| 91精品久久久久久久91蜜桃| 奇米一区二区三区| 精品国产免费一区二区三区四区|