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

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

?? xmodemr.c

?? xmodem協(xié)議接收程序
?? C
字號(hào):
#include "mcudslbase.h"#include "timer.h"#include "serio.h"#include "crctab.h"/* * Copyright (c) 1995 by Edward A. Falk *//********** * * *	@   @  @   @   @@@   @@@@   @@@@@  @   @  @@@@    *	 @ @   @@ @@  @   @  @   @  @      @@ @@  @   @   *	  @    @ @ @  @   @  @   @  @@@    @ @ @  @@@@    *	 @ @   @ @ @  @   @  @   @  @      @ @ @  @  @    *	@   @  @ @ @   @@@   @@@@   @@@@@  @ @ @  @   @   * *	XMODEMR - receiver side of xmodem/ymodem protocol * *	Caller sets flags defined in xmodem.h as appropriate. *	(default is basic xmodem) * *	This code is designed to be called from inside a larger *	program, so it is implemented as a state machine where *	practical. * * *	functions: * *	XmodemRInit( INT8U *BaseAddr, Protocol p) *		Initiate a receive * *	XmodemRTimeout() *		called after timeout expired * *	XmodemRRcv(char c) *		called after character received * *	XmodemRAbort() *		abort transfer * *	all functions return 0 on success, 1 on abort * * * *	Edward A. Falk * *	January, 1995 * * * **********/#include "xmodem.h"	/* TODO: WXmodem */	bool	xmodem1k = False ;	Protocol protocol = Xmodem ;	int	xmTfd = -1 ;	int	xmRfd = -1 ;	int	xmTimeout = 0 ;typedef	enum {	  Start,	/* waiting to begin */	  Init,		/* sent initial NAK, 'C' or 'W' */	  Packet,	/* receiving a packet */	  Wait,		/* wait for start of next packet */	} XmodemState ;static INT8U * memAddr;static	bool		ymodem ;static	XmodemState	state = Start ;static	int		errorCount = 0 ;static	int		errorCount2 ;static	int		ignoreCount ;static	int		eotCount ;	/* count EOT's, reject first one */static	int		inCount ;	/* characters received this packet */static	int		pktLen ;	/* length of this packet data */static	int		pktHdrLen ;	/* id, cmpl, checksum or crc */static	char		packet[MAXPACKET+5], *optr ;static	int		packetId ;	/* id of last received packet */static	int		packetCount ;	/* # packets received *//*static	FILE		*ofile ;	 output file fd static	int		fileLen, fileDate, fileMode ;*/static	int	XmodemRStart() ;static	int	processPacket() ;static	int	rejectPacket() ;static	int	acceptPacket() ;int XmodemRInit( INT8U *BaseAddr, Protocol prot ){	int	err ;	memAddr=(INT8U*)BaseAddr;	state = Start ;	protocol = prot ;	ymodem =( (prot == Ymodem) || (prot == YmodemG) );	eotCount = errorCount = errorCount2 = 0 ;	err=XmodemRStart();	if( err!=0 )	  return err ;	state = Init ;	packetId = ymodem ? 255 : 0 ;	packetCount = 0 ;	pktHdrLen = protocol == Xmodem ? 3 : 4 ;	return 0 ;}	/* send startup character */static	intXmodemRStart(){static	char	pchars[5] = {NAK,'C','W','C','C'} ;static	int	timeouts[5] = {INITTO, INITTO2, INITTO2, INITTO, INITTO} ;	char	c = pchars[(int)protocol] ;	int	err ;	err=sendFlush(c);	if( err!=0 )	  return err ;	xmTimeout = timeouts[((int)protocol)] ;	return 0 ;}intXmodemRRcv(char c){	errorCount = 0 ;	switch( state ) {	  case Start:		/* shouldn't happen, ignore */	    if( c == CAN )	      return XmErrCancel ;	    break ;	  case Init:		/* waiting */	  case Wait:	    switch( c ) {	      case SOH:	      case STX:		pktLen = c == STX ? 1024 : 128 ;		inCount = 0 ;		optr = packet ;		state = Packet ;		xmTimeout = PKTTO ;		break ;	      case EOT:		if( ++eotCount > 1 ) {		  sendFlush(ACK) ;		  if( ymodem )		    return 0;/*XmodemRInit() ;	 restart protocol */		  else		    return XmDone ;		}		else		  return rejectPacket() ;	/* make xmitter try again */	      case CAN: return XmErrCancel ;	      default:		/* ignore all others */		if( ++ignoreCount > 1030 ) {		  ignoreCount = 0 ;		  return sendFlush(NAK) ;		}		break ;	    }	    break ;	  case Packet:		/* mid packet */	    *optr++ = c ;	    if( ++inCount >= pktLen + pktHdrLen )	      processPacket() ;	    break ;	}	return 0 ;}intXmodemRTimeout(){	if( ++errorCount > MAXERROR )	  return state == Init ? XmErrInitTo : XmErrRcvTo ;	switch( state ) {	  case Start: return -1 ;		/* shouldn't happen */	  case Init:	    if( ++errorCount2 >= 3 )	      switch( protocol ) {		case WXmodem: protocol = XmodemCrc ; errorCount2 = 0 ; break ;		case XmodemCrc: protocol = Xmodem ; pktHdrLen = 3 ; break ;	      }	    return XmodemRStart() ;	  case Wait:			/* timeout while waiting */	  case Packet:			/* timeout in mid packet */	    return rejectPacket() ;	}	return -1;}intXmodemRAbort(){	  return sendCancel() ;}static	intprocessPacket(){	int	id = (INT8U)packet[0] ;	int	idc = (INT8U)packet[1] ;	int	i ;	if( idc != 255-id )	  return rejectPacket() ;	if( id == packetId )		/* duplicate */	  return acceptPacket() ;	if( id != (packetId+1)%256 ) {	/* out of sequence */	  (void) sendCancel() ;	  return XmErrSequence ;	}	if( protocol == Xmodem )	{	  /* compute checksum */	  register int csum = calcChecksum(packet+2, pktLen) ;	  if( csum != (INT8U) packet[2+pktLen] )	    return rejectPacket() ;	}	else	{	  unsigned short crc0 = (INT8U)packet[pktLen+2] << 8 | (INT8U)packet[pktLen+3] ;	  unsigned short crc1 = calcrc(packet+2, pktLen) ;	  if( crc0 != crc1 )	    return rejectPacket() ;	}	/* it's a good packet */	packetId = (packetId+1)%256 ;	/* is this the first packet? */	if( packetCount == 0 )	{	  if( ymodem )	  {	    if( packet[2] == '\0' )	/* last file */	    {	      (void) acceptPacket() ;	      return XmDone ;	    }	    /*if( packet[2] == '/' )	      strcpy(xmFilename, packet+2) ;	    else {	      strcpy(xmFilename, xmDefPath) ;	      strcat(xmFilename, packet+2) ;	    }	    fileLen = fileDate = fileMode = -1 ;	    sscanf(packet+2+strlen(packet)+1, "%d %o %o",		&fileLen, &fileDate, &fileMode) ;*/	  }	  /*if( (ofile = fopen(xmFilename, "w")) == NULL ) {	    sendCancel() ;	    return XmErrCantOpen ;	  }*/	  if( ymodem ) {	    packetCount = 1 ;	    acceptPacket() ;	    return sendFlush('C') ;	  }	  else	    state = Packet ;	}	++packetCount ;	for(i=0;i<pktLen;i++)	{	  memAddr[i]=packet[i+2];	}	memAddr+=pktLen;	return acceptPacket() ;	/* TODO: ymodem: if this is last packet, truncate it */	/*if( (i=fwrite(packet+2, 1, pktLen, ofile)) != pktLen )	{	  sendCancel() ;	  return XmErrSys ;	}	else	  return acceptPacket() ;*/}static	intrejectPacket(){	state = Wait ;	xmTimeout = INITTO ;	return sendFlush(NAK) ;}static	intacceptPacket(){	state = Wait ;	xmTimeout = INITTO ;	return sendFlush(ACK) ;}intsendCancel(){	return sendFlush(CAN) || sendFlush(CAN) ;}	/* send one character, return nonzero on error */intsendFlush(char c){	/* first, flush input port */	/* TODO: caller provide a way to do this? */	/* TODO: caller provides flush 	if( ioctl(xmRfd, TCFLSH, TCIFLUSH) == -1 )	  return XmErrSys ;*/	return sendChr(c) ;}	/* send one character, return nonzero on error */intsendChr(char c){	/* TODO: caller provide character output func? */	outbyte(c);	return 0;	//return write(xmTfd, &c, 1) ==1 ? 0 : XmErrSys ;}/* send some character, return nonzero on error */intsendStr(char *str, int len){	/* TODO: caller provide character output func? */	INT32S i=0;		for(i=0;i<len;i++)       sendChr(*str++);	return 0 ;}intcalcChecksum(char *ptr, int count){	register int csum = 0 ;	while( --count >= 0 )	  csum += (INT8U) *ptr++ ;	return csum & 255 ;}INT32U receive(INT8U * BaseAddr){    TIMER timeout;	INT32U	done = FALSE ;    	INT8U	i ;	//INT32S	len ;	settimer(&timeout,xmTimeout*1000);	xmodem1k = 0 ;	done = XmodemRInit( ((INT8U*)BaseAddr), XmodemCrc) != 0 ;#ifdef	COMMENT//	xmodem1k = 1 ;//	done = XmodemRInit("./", Ymodem) != 0 ;#endif	/* COMMENT */	while(!done)	{	  	  INT32U tmOut=FALSE;	  i=inbyte_time(xmTimeout*1000,&tmOut);	  	  	  if( tmOut==TRUE )	    done = XmodemRTimeout() != 0 ;	  else {	      done = XmodemRRcv(i) != 0 ;	  }	  	}	if(pktLen == 128)	return (packetCount<<7);	else if(pktLen == 1024)	return (packetCount<<10); 	else	return (packetCount*pktLen); }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合国产精品| 亚洲电影一区二区| 7777精品伊人久久久大香线蕉| 美女尤物国产一区| 最新中文字幕一区二区三区| 337p亚洲精品色噜噜| 99久久精品国产毛片| 日韩和欧美一区二区| 亚洲天堂av老司机| 久久久久久免费毛片精品| 欧美视频一区二区三区| 成人一级视频在线观看| 日本午夜一本久久久综合| 亚洲精品国产精品乱码不99| 久久午夜羞羞影院免费观看| 在线播放欧美女士性生活| 97成人超碰视| 国产宾馆实践打屁股91| 蜜臀av性久久久久蜜臀aⅴ | 99精品视频在线观看免费| 三级影片在线观看欧美日韩一区二区| 国产精品久久久久久久久动漫 | 欧美精品一区二区三区很污很色的 | 婷婷激情综合网| 亚洲欧美综合色| 偷拍一区二区三区| 亚洲精品视频在线看| 欧美激情在线观看视频免费| 欧美电影精品一区二区 | 久久精品一区二区三区不卡牛牛| 欧美三级乱人伦电影| 91在线国产观看| 国产精品中文字幕一区二区三区| 麻豆极品一区二区三区| 麻豆专区一区二区三区四区五区| 亚洲一二三区在线观看| 伊人色综合久久天天| 国产精品久久免费看| 日本一区二区成人| 亚洲国产精品t66y| 日本一区二区不卡视频| 国产精品美女www爽爽爽| 久久亚区不卡日本| 久久久久久免费| 欧美国产成人精品| 国产精品久久久久影院亚瑟| 欧美经典三级视频一区二区三区| 久久久久久久网| 久久久蜜桃精品| 国产精品色噜噜| 亚洲三级在线免费| 亚洲在线一区二区三区| 亚洲成人精品在线观看| 日韩精品免费专区| 天堂资源在线中文精品| 奇米777欧美一区二区| 老司机午夜精品99久久| 国产一区二区不卡在线 | 国产精品中文字幕日韩精品 | 欧美视频在线观看一区二区| 欧美嫩在线观看| 欧美一区二区三区成人| 精品国产一区二区三区忘忧草| 精品人在线二区三区| 久久精品一区二区| 亚洲视频免费在线观看| 亚洲一级二级三级在线免费观看| 午夜国产不卡在线观看视频| 美美哒免费高清在线观看视频一区二区| 久久精品噜噜噜成人88aⅴ| 国产成人精品影院| 色婷婷精品久久二区二区蜜臀av| 欧美日韩激情在线| 久久久久久亚洲综合| 亚洲精品免费在线观看| 美女视频免费一区| 高清国产一区二区| 91成人网在线| 精品精品国产高清a毛片牛牛| 中文字幕av资源一区| 亚洲大型综合色站| 国产麻豆视频一区| 欧美视频中文字幕| 国产亚洲综合av| 亚洲国产视频直播| 国产资源在线一区| 日本韩国一区二区三区| 欧美成人三级电影在线| 亚洲天堂免费看| 久久精品国产精品亚洲精品| 成人免费视频caoporn| 欧美美女网站色| 国产日韩一级二级三级| 亚洲国产aⅴ成人精品无吗| 韩国视频一区二区| 欧美性猛片aaaaaaa做受| 国产欧美一区二区三区在线老狼| 一区二区不卡在线播放| 国产成人综合网站| 91麻豆精品国产91| 亚洲嫩草精品久久| 国产传媒久久文化传媒| 91精品午夜视频| 综合久久久久久| 国产精品自拍毛片| 欧美成人一级视频| 天天射综合影视| 99国产精品久久久久久久久久久 | 亚洲高清免费观看| jlzzjlzz欧美大全| 精品久久久久久久人人人人传媒| 亚洲一区二区五区| 97se亚洲国产综合自在线不卡| 精品粉嫩超白一线天av| 青青草原综合久久大伊人精品优势| 色综合中文字幕| 国产精品三级在线观看| 老司机精品视频线观看86| 欧美精品 国产精品| 亚洲欧美日韩国产综合在线| 国产激情视频一区二区在线观看| 91精品国产综合久久香蕉的特点| 亚洲精品日产精品乱码不卡| 9久草视频在线视频精品| 国产拍揄自揄精品视频麻豆| 国产综合久久久久影院| 欧美不卡一区二区三区四区| 视频一区中文字幕| 欧美色国产精品| 亚洲一区在线观看网站| 色综合久久综合| 亚洲激情在线播放| 色偷偷一区二区三区| 亚洲精品国产a久久久久久| gogo大胆日本视频一区| 国产精品久久久99| 91啪九色porn原创视频在线观看| 国产精品视频第一区| 国产69精品久久777的优势| 国产欧美日韩不卡免费| 成人午夜av电影| 国产精品污www在线观看| 成人av免费在线| 亚洲人成网站精品片在线观看| 色综合中文字幕国产 | 精品久久久久一区| 黄色资源网久久资源365| 精品国产一区二区三区不卡| 精品中文av资源站在线观看| 久久人人超碰精品| 成人精品视频.| 亚洲精品高清在线观看| 欧美系列日韩一区| 日本vs亚洲vs韩国一区三区 | 一区二区三区在线观看国产| 欧美中文字幕一区| 日韩**一区毛片| 精品国产91乱码一区二区三区| 国产尤物一区二区| 中文字幕一区三区| 欧美视频一区在线观看| 美女精品自拍一二三四| 欧美国产激情一区二区三区蜜月| 9久草视频在线视频精品| 亚洲大片在线观看| 日韩欧美一级特黄在线播放| 国产精品亚洲午夜一区二区三区 | 欧美三级欧美一级| 国产在线一区观看| 国产精品视频第一区| 欧洲一区二区三区在线| 久久精品999| 国产精品乱码一区二区三区软件| 91九色最新地址| 久久爱另类一区二区小说| 中文字幕第一区第二区| 欧美男人的天堂一二区| 国产一区二区在线观看视频| 亚洲免费av高清| 制服丝袜亚洲精品中文字幕| 国产精品一区二区三区乱码| 亚洲精品老司机| 欧美精品一区视频| 在线亚洲精品福利网址导航| 韩国v欧美v亚洲v日本v| 依依成人精品视频| 久久综合五月天婷婷伊人| 91麻豆福利精品推荐| 久草在线在线精品观看| 亚洲人吸女人奶水| 欧美一区二区三区性视频| 波多野结衣的一区二区三区| 日本不卡的三区四区五区| 中文字幕一区免费在线观看| 日韩欧美国产高清| 在线观看欧美日本| 丁香六月综合激情| 奇米精品一区二区三区四区 | 国产精品一区二区久激情瑜伽| 一区二区三区在线视频免费|