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

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

?? classone.cpp

?? fax engine 傳真引擎 relay fax 的開源項目 商業軟件使用 高質量 高可靠
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
		//}

		if( c3 & 0x02 )
		{
			//OutputDebugString( "Receiving T.6 encoding\n" );
			m_bT6Encoding = true;
			m_DCSParams.p.DataFormat = FAXAPI_ENC_CCITT_T6;
		}

		if( (c3 & 0x01)	 && // extension bit
			m_nHDLCBuffPtr > 7 )
		{
			BYTE c4 = CFaxFile::s_FlipTable[ m_szHDLCBuff[7] ];

			// width expansion byte

			if( (c4 & 0x01)	 && // extension bit
				m_nHDLCBuffPtr > 8 )
			{
				BYTE c5 = CFaxFile::s_FlipTable[ m_szHDLCBuff[8] ];

				// more recent extensions
			}
		}
	}

	m_FaxFile.SetImageRes( m_DCSParams.p.VertRes != 0 );
	m_FaxFile.SetImageCompression( m_bT6Encoding ? 4 : 3 ); // Set to 4 for Group IV (T.6) encoding
	m_FaxFile.SetT4Options( m_b2D ? 0x01 : 0x00 );
	m_FaxFile.SetImageLength( 0 );

	SignalEvent( EVENT_RECV_DCS );

}



//////////////////////////////////////////////////////////////////////
// on End of Page
//////////////////////////////////////////////////////////////////////
void CClassOne::OnEOP(void)
{
	m_bGotEOP = true;
}

//////////////////////////////////////////////////////////////////////
// on End of Message
//////////////////////////////////////////////////////////////////////
void CClassOne::OnEOM(void)
{
	m_bGotEOM = true;
}

//////////////////////////////////////////////////////////////////////
// on MPS
//////////////////////////////////////////////////////////////////////
void CClassOne::OnMPS(void)
{
	m_bGotMPS = true;
}

//////////////////////////////////////////////////////////////////////
// on DCN
//////////////////////////////////////////////////////////////////////
void CClassOne::OnDCN(void)
{
	m_bGotDCN = true;
	SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_DCN).c_str() );
}

//////////////////////////////////////////////////////////////////////
// on PPS
//////////////////////////////////////////////////////////////////////
void CClassOne::OnPPS(void)
{
//	char szMsg[80];
//	wsprintf( szMsg, "OnPPS FCF=%x, Pages=%d, Blocks=%d, Frames=%d\n", 
//		     m_szHDLCBuff[3], m_szHDLCBuff[4], m_szHDLCBuff[5], m_szHDLCBuff[6] );
//	OutputDebugString( szMsg );

	if( m_nPPRCtr == 0 )
	{
		m_ECMFrameCount = m_szHDLCBuff[6];
	}

	switch( m_szHDLCBuff[3] & 0xfe )
	{
	case 0:	// partial page boundary
		SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_PPSNULL).c_str() );
		break;

	case EOP:
		OnEOP();
		SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_PPSEOP).c_str() );
		break;

	case MPS:
		OnMPS();
		SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_PPSMPS).c_str() );
		break;

	case EOM:
		OnEOM();
		SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_PPSEOM).c_str() );
		break;
	}

}


//////////////////////////////////////////////////////////////////////
// on PPR
//////////////////////////////////////////////////////////////////////
void CClassOne::OnPPR(void)
{
	m_bGotPPR = true;

	m_nPPRCtr++;

	// save the PPR FIF
	memcpy( m_FaxFile.GetSeqMap(), m_szHDLCBuff + 3, SEQ_MAP_SIZE );

	SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_PPR).c_str() );

	// make sure we have a bad frame - sometimes the receiving
	// fax sends PPR with no bad bits when it should have sent MCF
	
	int nBadFrames = 0;
	int i,j;
	BYTE b;
	BYTE bit;
	int nSeqNum = 0;

	for(i = 0; i < SEQ_MAP_SIZE; i++ )
	{
		b = m_FaxFile.GetSeqMap()[i];

		for(j = 0; j < 8; j++, b >>= 1 )
		{
			bit = (b & 0x01);

			if( bit )
			{
				nBadFrames++;
			}

			nSeqNum++;

			// Ignore any sequence numbers which we didn't transmit
			if( nSeqNum > m_FaxFile.GetFrameCount() )
			{
				break;
			}
		}
		if( nSeqNum > m_FaxFile.GetFrameCount() )
		{
			break;
		}
	}

	if( nBadFrames == 0 )
	{
		m_bGotPPR = false;
		m_bGotMCF = true;
	}

}


//////////////////////////////////////////////////////////////////////
// on RNR - receive not ready
//////////////////////////////////////////////////////////////////////
void CClassOne::OnRNR(void)
{
	m_bGotRNR = true;

	SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_RNR).c_str() );

	if( m_dwRNRStart == 0 )
	{
		m_dwRNRStart = GetTickCount();
	}
}

//////////////////////////////////////////////////////////////////////
// on RR - receive ready
//////////////////////////////////////////////////////////////////////
void CClassOne::OnRR(void)
{
	SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_RR).c_str() );
}


//////////////////////////////////////////////////////////////////////
// on CRP - command repeat
//////////////////////////////////////////////////////////////////////
void CClassOne::OnCRP(void)
{
	m_bGotCRP = true;
	SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_CRP).c_str() );
}

//////////////////////////////////////////////////////////////////////
// on NSF - nonstandard facilities
//////////////////////////////////////////////////////////////////////
void CClassOne::OnNSF(void)
{
	SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_NSF).c_str() );
}


//////////////////////////////////////////////////////////////////////
// on CTC - Continue to correct
//////////////////////////////////////////////////////////////////////
void CClassOne::OnCTC(void)
{
//	OutputDebugString( "OnCTC\n" );
	m_bGotCTC = true;

	BYTE c1 = CFaxFile::s_FlipTable[ m_szHDLCBuff[4] ];

	WORD wBitRate = (c1 & 0x3c) >> 2;

	for( int i = 0; i < MAX_CLS1SPEEDS; i++ )
	{
		if( cls1Speeds[i].cDCSBits == wBitRate )
		{
			m_nClass1Speed = i;
			break;
		}
	}

	char jbuf[FAXAPI_MODEMMSG_INFOLEN];

	wsprintf( jbuf, (char*)LoadString(GEN_RECEIVED_CTC).c_str(), cls1Speeds[m_nClass1Speed].dwSpeed );
	SignalEventString( EVENT_INFO, jbuf );
}

//////////////////////////////////////////////////////////////////////
// on CTR - Continue to correct response
//////////////////////////////////////////////////////////////////////
void CClassOne::OnCTR(void)
{
	m_bGotCTC = true;
	SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_CTR).c_str() );
}

//////////////////////////////////////////////////////////////////////
// on EOR - End of retransmission
//////////////////////////////////////////////////////////////////////
void CClassOne::OnEOR(void)
{
//	OutputDebugString( "OnEOR\n" );
	m_bGotEOR = true;

	switch( m_szHDLCBuff[3] & 0xfe )
	{
	case 0:	// partial page boundary
		break;

	case EOP:
		OnEOP();
		SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_EOREOP).c_str() );
		break;

	case MPS:
		OnMPS();
		SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_EORMPS).c_str() );
		break;

	case EOM:
		OnEOM();
		SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_EOREOM).c_str() );
		break;
	}

}

//////////////////////////////////////////////////////////////////////
// on ERR - End of retransmission response
//////////////////////////////////////////////////////////////////////
void CClassOne::OnERR(void)
{
	m_bGotEOR = true;
	SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_ERR).c_str() );
}


//////////////////////////////////////////////////////////////////////
// Handle wait timeout - do periodic processing
//////////////////////////////////////////////////////////////////////
bool CClassOne::OnWaitTimeout( void )
{
	CModem::OnWaitTimeout();
/*
	if( m_nState == STATE_INIT )
	{
		DWORD dwElapsed = GetTickCount() - m_nLastCommandTickCount;

		// In case the modem doesn't respond with an OK
		if( dwElapsed > 1000 )
		{
			if( m_nLastCommand == COMMAND_QUERY_SEND_SPEEDS )
			{
				SendCommand( COMMAND_QUERY_RECEIVE_SPEEDS );
			}
			else if( m_nLastCommand == COMMAND_QUERY_RECEIVE_SPEEDS )
			{
				SetState( STATE_IDLE );
			}
		}

		if( dwElapsed > 4000 )
		{
			char szMsg[256];
			wsprintf( szMsg, "Timeout: %d ms waiting for response\n", dwElapsed );
			//OutputDebugString( szMsg );

			OnDisconnectMsg();
		}
	}
*/
	return false;
}


void CClassOne::OnPartialHDLCFrame(void)
{
	if( m_nState == STATE_PHASE_C && m_bReceiving )
	{
		if( m_bECM )
		{
			m_FaxFile.WriteECMBuffer( m_szHDLCBuff, m_nHDLCBuffPtr );
		}
		else
		{
			m_FaxFile.WriteBuffer( m_szHDLCBuff, m_nHDLCBuffPtr );
		}
	}
	else
	{
		//OutputDebugString( "HDLC buffer overflow!\n" );
	}
}


void CClassOne::OnHDLCFrame(void)
{
//	char szDigit[16];
//	OutputDebugString( "CClassOne::OnHDLCFrame\n" );

	if( m_nHDLCBuffPtr == 0 )
	{
		//OutputDebugString( "Empty HDLC Frame\n" );
		m_bRecvHDLCError = true;
		return;
	}

//	int i;
//	for( i = 0; i < m_nHDLCBuffPtr; i++ )
//	{
//		wsprintf( szDigit, "%02.2x ", m_szHDLCBuff[i] );
//		OutputDebugString( szDigit );
//	}
//	OutputDebugString( "\n" );


	if( m_nState == STATE_PHASE_C && m_bReceiving )
	{
		if( m_bECM )
		{
			m_FaxFile.WriteECMBuffer( m_szHDLCBuff, m_nHDLCBuffPtr );
		}
		else
		{
			m_FaxFile.WriteBuffer( m_szHDLCBuff, m_nHDLCBuffPtr );
		}
	}
	else if( m_nPhaseState == STATE_RECEIVE_TRAINING )
	{
		int i;
		bool bStart = false;
		int nZeros = 0;

		for( i = 0; i < m_nHDLCBuffPtr; i++ )
		{
			if( bStart == false )
			{
				if( m_szHDLCBuff[i] == 0 ) 
				{
					bStart = true;
					nZeros = 1;
				}
			}
			else
			{
				if( m_szHDLCBuff[i] == 0 ) 
				{
					nZeros++;
				}
			}
		}

		int nBytesExpected = (int)(((float)(cls1Speeds[m_nClass1Speed].dwSpeed / 8)) * 1.5) + 2;

		m_nCorrect = (int)(100 * nZeros / nBytesExpected);

		//char szMsg[180];
		//wsprintf( szMsg, "Zeros: %d, Correct=%d%%, Total=%d, Expected=%d\n", nZeros, m_nCorrect, m_nHDLCBuffPtr, nBytesExpected );
		//OutputDebugString( szMsg );
	}
	else
	{

		if( (unsigned char)m_szHDLCBuff[0] != 0xff )
		{
			bool bFoundFrame = false;

			for( int i = 1; i < m_nHDLCBuffPtr; i++ )
			{
				if( (unsigned char)m_szHDLCBuff[i] == 0xff )
				{
					memmove( m_szHDLCBuff, m_szHDLCBuff + i, m_nHDLCBuffPtr - i );
					bFoundFrame = true;
				}
			}

			if( bFoundFrame == false )
				return;
		}

		if( m_szHDLCBuff[1] & 0x10 )
		{
			/// final frame
			//OutputDebugString( "Final Frame\n" );
			m_bFinalHDLCFrame = true;
		}

		switch( (m_szHDLCBuff[2] & 0xfe) )  // set LSB to zero
		{
		case DIS:
			OnDIS();
			break;

		case CSI:
		case TSI:
			OnCSI();
			break;

		case CFR:
			OnCFR();
			break;

		case MCF:
			OnMCF();
			break;

		case RTP:
			OnRTP();
			break;

		case RTN:
			OnRTN();
			break;

		case FTT:
			OnFTT();
			break;

		case DCS:
			OnDCS();
			break;

		case EOP:
			OnEOP();
			SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_EOP).c_str() );
			break;

		case EOM:
			OnEOM();
			SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_EOM).c_str() );
			break;

		case MPS:
			OnMPS();
			SignalEventString( EVENT_INFO, (char*)LoadString(GEN_RECEIVED_MPS).c_str() );
			break;

		case DCN:
			OnDCN();
			break;

		case PPS:
			OnPPS();
			break;

		case PPR:
			OnPPR();
			break;

		case RR:
			OnRR();
			break;

		case RNR:
			OnRNR();
			break;

		case CRP:
			OnCRP();
			break;

		case NSF:
			OnNSF();
			break;

		case CTC:
			OnCTC();
			break;

		case CTR:
			OnCTR();
			break;

		case EOR:
			OnEOR();
			break;

		case ERR:
			OnERR();
			break;


		default:
			{
				//char szMsg[256];
				//wsprintf( szMsg, "Unknown FCF: %d\n", m_szHDLCBuff[2] );
				//OutputDebugString( szMsg );
			}
		}
	}
}


//////////////////////////////////////////////////////////////////////
// OnSendFaxMsg
//////////////////////////////////////////////////////////////////////
void CClassOne::OnSendFaxMsg(MSG* pMsg)
{
	CModem::OnSendFaxMsg( pMsg );

	if( !m_bConnected )
	{
		// Error!
		return;
	}

	if( m_nState != STATE_IDLE )
	{
		// Error!
		return;
	}

	m_FaxFile.SetSendEncoding( m_nSendEncoding );

	int nRet = m_FaxFile.ReadFirstHeader();

	if( nRet == 1 )
	{
		//OutputDebugString( "Error reading first header\n" );
		m_sLastError.assign( (char*)LoadString(GEN_ERROR_READING_TIFF_FILE).c_str() );
//		SignalEvent( EVENT_ERROR );
		SignalEvent( EVENT_TERMINATE );
		SignalEvent( EVENT_IDLE );
		return;
	}
	else if( nRet == 2 )
	{
		//OutputDebugString( "Error reading first header\n" );
		m_sLastError.assign( (char*)LoadString(GEN_ERROR_INCOMPAT_TIFF_FILE).c_str() );
//		SignalEvent( EVENT_ERROR );
		SignalEvent( EVENT_TERMINATE );
		SignalEvent( EVENT_IDLE );
		return;
	}

	m_dwRNRStart

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品电影一区亚洲| 国产午夜精品一区二区| 九九精品一区二区| 欧美国产激情一区二区三区蜜月| 91首页免费视频| 五月综合激情日本mⅴ| 2020国产精品| 欧美人与性动xxxx| 成人av电影在线网| 精品在线观看视频| 午夜精品久久久久久久99樱桃| 久久久久久久久久久99999| 一本大道久久精品懂色aⅴ| 国精产品一区一区三区mba视频| 亚洲精品久久久蜜桃| 国产精品素人视频| 精品理论电影在线观看| 欧美日韩视频在线第一区| 不卡影院免费观看| 国产精品综合在线视频| 日本欧美一区二区三区乱码| 亚洲黄色免费电影| 亚洲视频免费在线观看| 国产精品久久午夜| 亚洲视频免费在线| 亚洲一区视频在线| 亚欧色一区w666天堂| 亚洲超丰满肉感bbw| 亚洲成人激情av| 亚洲国产cao| 日韩av在线播放中文字幕| 亚洲mv大片欧洲mv大片精品| 亚洲综合av网| 污片在线观看一区二区| 美女一区二区视频| 国产综合久久久久久鬼色 | 综合色天天鬼久久鬼色| 国产精品福利电影一区二区三区四区| 国产女人18毛片水真多成人如厕 | www.性欧美| 91蝌蚪porny| 欧美男男青年gay1069videost| 欧美精选一区二区| 久久精品视频在线看| 亚洲天堂成人在线观看| 午夜激情久久久| 国产一区二区在线影院| 99re成人精品视频| 日韩三级高清在线| 国产精品久久久久aaaa| 婷婷一区二区三区| 成人性生交大片免费看在线播放| 亚洲女同女同女同女同女同69| 色乱码一区二区三区88| 日日骚欧美日韩| 欧美精品一区二区精品网| 中文字幕在线视频一区| 欧美自拍偷拍午夜视频| 色欧美乱欧美15图片| 日本道免费精品一区二区三区| 91在线视频播放| 日韩欧美精品三级| wwwwxxxxx欧美| 日韩欧美一区电影| 欧美国产乱子伦| 亚洲444eee在线观看| 日本vs亚洲vs韩国一区三区 | 久久99精品久久久久久动态图| 亚洲123区在线观看| 日韩成人精品在线| 99视频一区二区| 欧美天天综合网| 国产精品久久久久久久裸模| 99热在这里有精品免费| 制服.丝袜.亚洲.中文.综合| 亚洲精品久久久蜜桃| 精品精品欲导航| 丝袜亚洲另类欧美综合| 日本一区二区三区电影| 国产成人在线影院 | 天天综合网天天综合色| 欧美一区三区二区| 蜜桃精品视频在线观看| 欧美日韩mp4| 亚洲一区欧美一区| 在线免费观看日本欧美| 欧美在线免费观看视频| 欧美日韩激情一区二区三区| 国产一区二区三区免费观看| 日韩极品在线观看| 欧美精品久久99久久在免费线 | 色综合天天综合给合国产| 综合久久国产九一剧情麻豆| 亚洲国产一区二区视频| 欧美午夜宅男影院| 亚洲成av人在线观看| 亚洲精品视频免费观看| 亚洲综合久久久| 夜夜嗨av一区二区三区中文字幕| 久久蜜臀精品av| 亚洲一区二区精品3399| 在线视频国内一区二区| 777午夜精品视频在线播放| 免费高清在线视频一区·| www.色精品| 99久久久精品免费观看国产蜜| 成人白浆超碰人人人人| 日韩综合一区二区| 久久天天做天天爱综合色| 久久久777精品电影网影网| 中文字幕不卡在线观看| 精品国产精品一区二区夜夜嗨| 成人av电影在线播放| 欧美精品久久99久久在免费线| 久久久久久久性| 天天影视网天天综合色在线播放| 精品国产91洋老外米糕| 日韩精品在线一区| 久久久影院官网| 欧美一区午夜精品| 成人精品亚洲人成在线| 五月天国产精品| 久久久蜜臀国产一区二区| 欧美影视一区二区三区| 欧美日韩精品欧美日韩精品一 | 免费成人美女在线观看| 中文字幕综合网| 国产成人综合精品三级| 欧美美女网站色| 亚洲理论在线观看| 精品国产一区二区亚洲人成毛片| 国产精品夜夜嗨| 欧美日韩中文字幕一区| 欧美图区在线视频| 91精品国产综合久久蜜臀| 欧美精品777| 精品美女在线观看| 国产婷婷色一区二区三区在线| 久久精品男人的天堂| 国产精品女同一区二区三区| 亚洲少妇30p| 午夜精品福利一区二区三区av| 丝袜国产日韩另类美女| 久久精品噜噜噜成人88aⅴ | 国产呦萝稀缺另类资源| 粉嫩一区二区三区在线看| 色婷婷精品久久二区二区蜜臀av| 在线亚洲欧美专区二区| 日韩一区二区在线看| 国产视频视频一区| 亚洲成a人片综合在线| 国产在线不卡一卡二卡三卡四卡| 99久久精品国产导航| 欧美三级日韩三级国产三级| 日韩欧美中文一区二区| 国产精品丝袜在线| 日韩福利电影在线观看| 懂色一区二区三区免费观看| 91福利在线免费观看| 国产欧美日韩激情| 三级久久三级久久久| 波多野结衣在线一区| 精品免费日韩av| 日韩精品亚洲专区| 色综合激情五月| 久久久久久久国产精品影院| 婷婷中文字幕综合| 欧美亚洲图片小说| 国产精品二三区| 成人亚洲一区二区一| 欧美成人艳星乳罩| 日本亚洲免费观看| 欧美高清视频一二三区| 亚洲成人动漫在线免费观看| 91浏览器打开| 成人免费一区二区三区视频| 国产一区二区在线观看视频| 日韩精品中文字幕在线一区| 婷婷综合另类小说色区| 欧美美女视频在线观看| 亚洲成在人线免费| 欧美日韩日日夜夜| 午夜精品久久久久久久99水蜜桃| 91亚洲精品久久久蜜桃| 亚洲欧洲日产国码二区| 99re在线视频这里只有精品| 亚洲精品国产一区二区精华液 | 国内精品视频666| 久久久综合精品| 99久久久国产精品免费蜜臀| 亚洲欧洲av色图| 色8久久人人97超碰香蕉987| 亚洲精品成人a在线观看| 欧美日韩一级片网站| 秋霞av亚洲一区二区三| 久久久91精品国产一区二区三区| 成人av网址在线| 偷拍日韩校园综合在线| 欧美国产禁国产网站cc| 欧美在线观看一区二区|