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

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

?? modem.h

?? fax engine 傳真引擎 relay fax 的開源項目 商業軟件使用 高質量 高可靠
?? H
字號:
/*****************************************************************************
* RelayFax Open Source Project
* Copyright 1996-2004 Alt-N Technologies, Ltd.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the RelayFax Open 
* Source License.  A copy of this license is available in file LICENSE 
* in the top-level directory of the distribution.
*
* RelayFax is a registered trademark of Alt-N Technologies, Ltd.
*
* Individual files and/or contributed packages may be copyright by
* other parties and subject to additional restrictions.
*****************************************************************************/

////////////////////////////////////////////////////////////////////////////////
//
// The purpose of CModem build the message loop of an independent thread
// into CCommPort and handle communication with other threads.
//
////////////////////////////////////////////////////////////////////////////////

#ifndef MODEM_H
#define MODEM_H

#include "FaxApi.h"

#include "CommPort.h"
#include "Thread.h"
#include "HiddenWindow.h"
#include "FaxFile.h"

#define WM_MODEM_CONNECT		WM_USER+1
#define WM_MODEM_DISCONNECT		WM_USER+2
#define WM_MODEM_SENDFAX		WM_USER+3
#define WM_MODEM_RECVFAX		WM_USER+4
#define WM_MODEM_ABORTFAX		WM_USER+5
#define WM_MODEM_CLEARRINGCNT	WM_USER+6
#define WM_MODEM_SETID			WM_USER+7

#define WM_MODEM_MESSAGE		WM_USER+423


#define  XMT_FCF(c) (c|0x01)
#define  RCV_FCF(c) (c)

// Initial identification
#define     DIS			0x80
#define		CSI			0x40
#define     NSF			0x20

// Command to send
#define		DCS			0x82
#define		TSI			0x42
#define     NSS			0x22

// Phase B responses
#define     CFR			0x84
#define     FTT			0x44

// Post-message commands
#define     EOM			0x8e
#define     MPS			0x4e
#define     EOP			0x2e

// Post-mesage responses
#define     MCF			0x8c
#define     RTP			0xcc
#define     PIP			0xac
#define     RTN			0x4c
#define     PIN			0x2c

// Other signals
#define     DCN			0xfa
#define     CRP			0x1a

// ECM frames
#define     FCD			0x06
#define     RCP			0x86
#define     PPS			0xbe
#define     PPR			0xbc
#define		RNR			0xec
#define		RR			0x6e
#define     CTC			0x12
#define     CTR			0xc4
#define     EOR			0xce
#define     ERR			0x1c

#define     HDLC_FLAG	0x7e


struct InternalModemMsg
{
	char szFile[MAX_PATH];
	char szNumber[MAX_PATH];
};

typedef union 
{
	FaxApiParameters p;
	int n[8];
} CommandParameters;


class CModem : 
	public CThread, 
	public CHiddenWindow,
	public CCommPort  
{
public:
	CModem();
	virtual ~CModem();

	enum CommandIDs { COMMAND_NONE, 
					  COMMAND_INIT, 
					  COMMAND_SETUP_STRING,
					  COMMAND_DISABLE_ECHO, 
					  COMMAND_SET_SPKR_VOL, 
					  COMMAND_SET_SPKR_MODE, 
					  COMMAND_SET_FCLASS_1,
					  COMMAND_SET_FCLASS_1_0,
					  COMMAND_SET_FCLASS_2,
					  COMMAND_SET_FCLASS_2_0,
					  COMMAND_SET_FCLASS_2_1,
					  COMMAND_QUERY_SEND_SPEEDS,
					  COMMAND_QUERY_RECEIVE_SPEEDS,
					  COMMAND_SET_LOCAL_ID,
					  COMMAND_SET_RECV,
					  COMMAND_SET_BIT_ORDER,
					  COMMAND_SET_FLOW_CONTROL,
					  COMMAND_SET_HDLC_REPORTING,
					  COMMAND_SET_FAX_PARAMS,
					  COMMAND_DIAL,
					  COMMAND_HANGUP,
					  COMMAND_ANSWER,
					  COMMAND_QUERY_FCLASS,
					  COMMAND_QUERY_PRODUCT_CODE,
					  COMMAND_QUERY_MANUFACTURER,
					  COMMAND_QUERY_CLASS2_CAP,
					  COMMAND_QUERY_CLASS2_MANUFACT,
					  COMMAND_QUERY_CLASS2_MODEL,
					  COMMAND_QUERY_CLASS2_0_CAP,
					  COMMAND_QUERY_CLASS2_0_MANUFACT,
					  COMMAND_QUERY_CLASS2_0_MODEL,
					  COMMAND_COUNT };

	enum States		{ STATE_NONE, 
					  STATE_INIT, 
					  STATE_IDLE,
					  STATE_PHASE_A,
	                  STATE_PHASE_B,
	                  STATE_PHASE_C,
					  STATE_PHASE_D,
	                  STATE_PHASE_E,
	                  STATE_RINGING,
					  STATE_HANGUP,				// not used
					  STATE_DISCONNECT };

	enum Events		{ EVENT_ERROR,
		              EVENT_IDLE,
					  EVENT_RING,
					  EVENT_START_RECV,
					  EVENT_START_SEND,
					  EVENT_RECV_DIS,
					  EVENT_SENT_DIS,
					  EVENT_RECV_DCS,
					  EVENT_SENT_DCS,
					  EVENT_START_TRAINING,
					  EVENT_START_PAGE,
					  EVENT_PAGE_DATA,
					  EVENT_GOT_REMOTEID,
					  EVENT_TERMINATE,
					  EVENT_DISCONNECT,
					  EVENT_CALLERID,
					  EVENT_INFO,
	};


	enum TimerIDs	{ TIMER_COMMAND, TIMER_HDLC_RECV, TIMER_TRAINING, TIMER_MAXPAGERETRIES };

	static char* s_CommonCmds[COMMAND_COUNT];

	// These functions call be called by other threads
	void Initialize( HANDLE hStop, DWORD faxThreadID );
	void SetPort( char* szPort );
	void Disconnect(void);
	void RecvFax( char* szFaxFile );
	void AbortFax(void);
	bool IsConnected(void) { return m_bConnected; }
	void SetSpkrParams( int nSpkrVol, int nSpkrMode );
	void SetDistinctiveRing( LPCSTR szRingCodes ) { m_sRingCodes.assign( szRingCodes ); };
	void SetInitString( LPCSTR szString );
	void SetSendEncoding( int nEncoding ) { m_nSendEncoding = nEncoding; m_FaxFile.SetSendEncoding( nEncoding ); }; 
	void SetSendECM( bool bECMSupported ) { m_bECMSupported = bECMSupported; };
	void SetSendFine( bool bFineSupported ) { m_bFineSupported = bFineSupported; };
	void SetSendUnlimited( bool bUnlimitedSupported ) { m_bUnlimitedSupported = bUnlimitedSupported; };
	void SetMaxPageRetries( int nRetries ) { m_nMaxPageRetries = nRetries; };
	void SetPulseDialing( bool bPulseDialing ) { m_bPulseDialing = bPulseDialing; };
	void SetCSID( LPCSTR szString );
	void ChangeCSID( LPCSTR szString );
	void SetSendBaud( int nBaud ) { m_nSendBaud = nBaud; };
	void SetRecvBaud( int nBaud ) { m_nRecvBaud = nBaud; };
	int GetSendBaud(void) { return m_nSendBaud; };
	int GetRecvBaud(void) { return m_nRecvBaud; };
	bool SendFax( char* szNumberToDial, char* szFaxFile );
	void SetFaxFile( LPCSTR szFaxFile ) { m_FaxFile.SetFileName( szFaxFile ); };

	LPCSTR GetLastError( void ) { return m_sLastError.c_str(); }
	bool IsReceiving(void) { return m_bReceiving; };
	unsigned int GetPageCount(void) { return m_FaxFile.GetPageCount(); };
	bool WasSuccessful(void) { return m_bSuccessful; };
	bool GetCapParam( int nIndex, int nValue );

	LPCSTR GetEIAClass(void) { return m_sEIAClass.c_str(); };
//	LPCSTR GetRemoteID(void) { return m_sRemoteCSID.c_str(); };

	void ClearRingCount(void);
	void SetMaxPageRetriesTimer(void);

	bool ThreadStarted(void) { return m_FaxThreadID != 0; };

	// Overridden methods of CThread
	virtual bool OnStartup(void);
	virtual void OnShutdown(void);
	virtual bool OnEvent( int nIndex );
	virtual bool OnWaitTimeout( void );
	virtual bool OnMsg( MSG* pMsg );
	virtual void OnRead(void);

	// Overridden methods of CHiddenWindow
	virtual LRESULT HandleMsg( UINT msg, WPARAM wParam, LPARAM lParam );

	// Methods overridden by derived classes
	virtual void OnHDLCFrame(void);
	virtual void OnPartialHDLCFrame(void);
	virtual void OnTimer( UINT nID );
	virtual void Abort( bool bUserCancelled );	
	virtual void CheckTimeouts( DWORD dwInActive );

protected:

	bool IsHexDigit( char digit );
	bool IsHex( char digit );
	void PurgeOutput( void );
	void PurgeWriteQueue( void );
	void DoHangup( void );
	void PhaseHangup(void);
	void PhaseDisconnect(void);
	void Terminate( void );   // terminates xfer
	bool OkToAnswer( void );
	bool IsRing(void);

	// Message handlers
	virtual void OnConnectMsg(void);
	virtual void OnDisconnectMsg(void);
	virtual void OnSendFaxMsg( MSG* pMsg );
	virtual void OnRecvFaxMsg( MSG* pMsg );
	virtual void OnAbortFaxMsg(void);

	void SendCommand( int nCommand, char* szCmdString = NULL );
	void SignalEvent( int nEvent, char info = 0 );
	void SignalEventString( int nEvent, LPCSTR szMsg );
	void SendModemMessage( int nEvent, FaxApiModemMsg* pMsg );

	void ErrorUnexpectedResponse( void );
	void ErrorConnectResponse( void );
	void ProcSupportedSpeeds( LPSTR lpSpeeds, bool bSend );
	int ParseFaxParams( int nMaxParams, int* pParams );
	void ProcCapabilities( LPSTR lpCaps );
	void ProcCapValue( LPSTR lpValue, int nIndex );
	int ProcCapValueIndex( LPSTR lpValue, int nIndex, bool bComma, bool bDash, int nLast );

	void ExitAndDelete(void);

	// Used by SendCommand
	int m_nLastCommand;
	string m_LastCommandString;
//	int m_nLastCommandTickCount;


	string m_sLastError;
	int m_nState;

	DWORD m_FaxThreadID;
	bool m_bConnected;

	int m_nSpkrVol;
	int m_nSpkrMode;

	string m_sInitString;
	string m_sEIAClass;
	string m_sLocalCSID;
	string m_sRemoteCSID;
	string m_sRingCodes;

	// fax params
	string m_sNumberToDial;

	CFaxFile m_FaxFile;

	bool m_bRecvSupported[MAX_CLS1SPEEDS];
	bool m_bSendSupported[MAX_CLS1SPEEDS];
	bool m_bECMSupported;
	bool m_bFineSupported;
	bool m_bUnlimitedSupported;
	int m_nSendEncoding;
	bool m_ParamMatrix[FAXAPI_MAXPARAMETERS][FAXAPI_MAXPARAMVALUE];

	bool m_bEnableReceive;

	int m_nRingCount;
	int m_nAnswerOnRing;
	bool m_bReceiving;
	bool m_bSuccessful;


	void InitHDLC(void) { m_nHDLCBuffPtr = 0; m_bGotDLE = false; m_bHDLCMode = true; 
	                      m_bEolFlag = true; m_bFinalHDLCFrame = false; };

	unsigned char m_szHDLCBuff[READBUF_SIZE];
	int m_nHDLCBuffPtr;
	bool m_bGotDLE;
	bool m_bHDLCMode;
	bool m_bFinalHDLCFrame;
	bool m_bGotOK;
	bool m_bGotConnect;

	CommandParameters m_DISParams;
	CommandParameters m_DCSParams;

	unsigned int m_nPageBytes;

	int m_nSendBaud;
	int m_nRecvBaud;
	int m_nMaxSendBaud;
	int m_nMaxRecvBaud;

	DWORD m_dwActivityTimer;

	bool m_bPulseDialing;

	int m_nMaxPageRetries;
	int m_nMaxPageRetriesPageNo;

	bool m_bTerminated;
	bool m_bLastPageGood;

};

#endif // MODEM_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人一级大片| 久久99精品国产91久久来源| 一区二区三区四区高清精品免费观看| 亚洲欧美另类综合偷拍| 五月激情综合色| 国产乱人伦精品一区二区在线观看| 国产99精品国产| 欧美自拍丝袜亚洲| 欧美变态凌虐bdsm| 成人欧美一区二区三区小说| 日韩成人免费电影| www.欧美日韩| 精品裸体舞一区二区三区| 国产精品国产三级国产a| 亚洲制服丝袜一区| 国产东北露脸精品视频| 欧美性大战久久久久久久| 久久亚洲综合色| 亚洲一区二区三区四区五区中文| 韩国一区二区在线观看| 色综合天天综合在线视频| 日韩午夜在线观看视频| 中文字幕一区二区三区在线不卡 | 亚洲a一区二区| 国产成人av资源| 欧美老女人在线| 精品美女在线观看| 夜夜亚洲天天久久| 成人爱爱电影网址| 欧美v亚洲v综合ⅴ国产v| 一区二区高清视频在线观看| 国产一区二区在线影院| 69堂成人精品免费视频| 亚洲天堂成人网| 国产成人夜色高潮福利影视| 91精品国产综合久久久蜜臀粉嫩| 亚洲女与黑人做爰| 蜜桃视频免费观看一区| 在线观看免费成人| 18欧美亚洲精品| 成熟亚洲日本毛茸茸凸凹| 日韩西西人体444www| 天堂在线亚洲视频| 欧美视频一区在线| 一区二区免费在线| 色综合久久88色综合天天免费| 国产日产亚洲精品系列| 韩国午夜理伦三级不卡影院| 日韩一卡二卡三卡四卡| 日日夜夜一区二区| 91麻豆精品国产| 日韩黄色一级片| 欧美一区二区在线视频| 日韩精品一卡二卡三卡四卡无卡| 欧美性猛交xxxxxx富婆| 亚洲成人av一区二区| 欧美日高清视频| 日韩中文欧美在线| 日韩视频免费观看高清完整版在线观看 | 蜜桃视频在线一区| 欧美日韩一级二级| 日本午夜一区二区| 日韩欧美专区在线| 久久99国内精品| 久久蜜桃av一区二区天堂| 国产中文字幕精品| 久久精品视频免费| jvid福利写真一区二区三区| 综合中文字幕亚洲| 欧美日韩国产大片| 久久国产成人午夜av影院| 久久老女人爱爱| av在线一区二区| 一二三区精品视频| 91精品国产综合久久福利软件| 另类调教123区| 欧美一级免费大片| 亚洲成人先锋电影| 欧美mv和日韩mv国产网站| 激情小说亚洲一区| 亚洲男人的天堂一区二区 | 欧美精品免费视频| 久久国产欧美日韩精品| 久久久久久久久蜜桃| 99天天综合性| 午夜精品123| 久久久亚洲精品石原莉奈| 91丨porny丨中文| 亚洲国产另类精品专区| 久久色视频免费观看| 一本大道久久a久久精品综合| 日韩专区在线视频| 国产精品免费看片| 91精品国产91热久久久做人人| 国产大陆a不卡| 香蕉成人啪国产精品视频综合网 | 精品视频1区2区| 国产精品66部| 视频一区二区中文字幕| 中文字幕精品综合| 欧美性大战久久久久久久| 丰满放荡岳乱妇91ww| 蜜桃久久久久久| 亚洲亚洲人成综合网络| 久久久久99精品国产片| 69精品人人人人| 91美女在线观看| 风间由美一区二区三区在线观看 | 欧美刺激午夜性久久久久久久| 成人性生交大片免费看视频在线 | 91精品婷婷国产综合久久竹菊| 国产成人精品免费| 日韩电影在线观看电影| 亚洲卡通动漫在线| 欧美国产一区视频在线观看| 日韩免费视频一区二区| 欧美色老头old∨ideo| 91在线精品一区二区| 国产精品一区二区三区乱码| 石原莉奈在线亚洲二区| 亚洲综合在线第一页| 一区在线播放视频| 国产女主播一区| 久久九九久久九九| 精品久久久久久久久久久久包黑料 | 麻豆免费精品视频| 亚洲成av人片在www色猫咪| 亚洲伦理在线精品| 国产精品色在线观看| 欧美一区二区播放| 色8久久人人97超碰香蕉987| 成人激情av网| 不卡免费追剧大全电视剧网站| 国产精品一区一区三区| 精品亚洲成a人在线观看| 九九**精品视频免费播放| 日韩成人免费看| 蜜桃一区二区三区在线观看| 日韩高清不卡一区二区| 日日骚欧美日韩| 日本不卡免费在线视频| 亚洲一级二级三级在线免费观看| 一区二区三区四区在线| 亚洲欧美日韩电影| 国产精品福利在线播放| 亚洲日本在线视频观看| 亚洲美女淫视频| 亚洲成人av一区| 美女在线视频一区| 国产乱码一区二区三区| 成人av影视在线观看| 91论坛在线播放| 欧美色图免费看| 日韩精品一区二区在线观看| 久久久久久毛片| 亚洲三级电影全部在线观看高清| 中文字幕在线不卡| 亚洲国产中文字幕在线视频综合| 亚洲成av人片在线观看| 麻豆久久久久久久| 成人黄色电影在线| 欧美自拍偷拍一区| 久久午夜色播影院免费高清 | 亚洲国产精品麻豆| 日韩精品1区2区3区| 国产精品综合一区二区| 91农村精品一区二区在线| 欧美久久久久久久久久| 亚洲精品在线免费观看视频| 中文字幕在线观看不卡视频| 亚洲一区二区三区精品在线| 精品一二三四区| 91久久精品一区二区三| 日韩欧美亚洲另类制服综合在线| 日韩一区二区在线播放| 久久久久97国产精华液好用吗| 久久久久久一级片| 国产精品天干天干在线综合| 午夜伦理一区二区| 国产美女一区二区| 欧美色视频在线观看| 国产亚洲欧美在线| 夜夜嗨av一区二区三区中文字幕| 国产在线一区观看| 91精品国产欧美一区二区18| 亚洲欧美日韩电影| av色综合久久天堂av综合| 国产无遮挡一区二区三区毛片日本| 日本视频一区二区| 欧美精品 日韩| 亚洲大型综合色站| 欧美伊人精品成人久久综合97| 最新热久久免费视频| 粉嫩av一区二区三区粉嫩| 久久精品欧美一区二区三区麻豆| 久久国产精品99精品国产| 日韩欧美一级二级| 精品一区二区三区av| 精品国产露脸精彩对白| 黄色成人免费在线|