diff -r 630d2f34d719 -r 07a122eea281 fax/faxclientandserver/FAXSVR/FAXMDRV.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fax/faxclientandserver/FAXSVR/FAXMDRV.H Wed Sep 01 12:40:21 2010 +0100 @@ -0,0 +1,190 @@ +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Contents : fax s/r header file +// +// + +/** + @file + @internalComponent +*/ + +#ifndef __FAXMDRV_H +#define __FAXMDRV_H + +// class 1 T.30 frame stuff + +#include "FRAMES.H" +/** +@internalComponent +*/ +const TInt KDialTimeout (100); + +/********************************************************************/ + +// now the CFaxModemDriver abstract class +class CFaxModem; +class CFaxModemDriver : public CBase +/** +@internalComponent +*/ + { + + public: + static CFaxModemDriver * NewLC (TFaxServerSessionSettings *,RFax::TProgress& aProgress); + static CFaxModemDriver * NewL (TFaxServerSessionSettings *,RFax::TProgress& aProgress); + void ConstructL (TFaxServerSessionSettings *,RFax::TProgress& aProgress); + CFaxModemDriver (); + ~CFaxModemDriver (); + + void GetFaxDataL (TDes8 *); + TInt GetLineL (TUint8 *); + virtual TInt RxConnectL () = 0; + virtual TInt RxPrePageL () = 0; + virtual TInt RxPostPageL () = 0; + + TInt SendFaxDataL (const TDesC8 *); + virtual TInt TxConnectL () = 0; + virtual TInt TxPrePageL () = 0; + virtual TInt TxPostPageL () = 0; + + inline void SetSharedFileHandles(CFaxSharedFileHandles* aSharedHandles) + { + iSharedHandles = aSharedHandles; + } + + protected: + inline TUint8 Invert (TUint8); + void DialFaxOnDemandL (); + void WriteFaxStoreL (TInt); + TInt RxStartPageL(); + TInt TxStartPageL(); + void SendFaxHeaderL (); + void padLineL (TInt); + TInt CheckCadenceExportL(const TDesC8 &); + + public: + CFaxModem * iModem; + TFaxServerSessionSettings * iFaxServerSessionSettings; + TInt iRepeatPage; + TTimeIntervalMicroSeconds iCadence; + TTime iTimeOfLastRing; + + protected: + TInt iActualFaxSpeed; + TInt iMinscan; + TInt iMinlinelength; // worked out from iMinscan and iActualFaxSpeed + TBuf8 < 128 > iResults; + CFaxSharedFileHandles* iSharedHandles; + }; + +/********************************************************************/ + +// Here we have the derived classes for various types of fax modems +// class one is the only complicated one + +/********************************************************************/ + +class CFaxClass1 : public CFaxModemDriver +/** +@internalComponent +*/ + { + + public: + static CFaxModemDriver * NewL (TFaxServerSessionSettings *,RFax::TProgress& aProgress); + static CFaxModemDriver * NewLC (TFaxServerSessionSettings *,RFax::TProgress& aProgress); + + TInt RxConnectL (); + TInt RxPrePageL (); + TInt RxPostPageL (); + TInt TxConnectL (); + TInt TxPrePageL (); + TInt TxPostPageL (); + + private: + TInt RxPrePollL (); + TInt RxSetHighSpeedL (); + void RxDCNL (); + TInt TxSetHighSpeedL (); + TInt TxDCNL (); + + TInt GetframeL (TDes8 &); + TInt SendframeL (TDes8 &); + TInt GetFramestatL (); + TInt FramestatL (); + TInt FramestatL (TInt); + void ReceiveSilenceL (); + TInt SendCRPL (); + inline void AnalyseDISL (); + + union faxparms iDisFrame; + union faxparms iDcsFrame; + union faxparms iDtcFrame; + TInt iDcsBytes ; + TInt iDisBytes ; + TInt iFcfXbit ; // the fcf X bit, see T.30/5.3.6.1 + TBuf8 < 16 > iModemString; // HDLC post-frame modem status + TBuf8 < 36 > iOldFrame; // last frame resend for class 1 + TBuf8 < 36 > iFrame; // current frame data space + }; +/********************************************************************/ + +class CFaxClass2 : public CFaxModemDriver +/** +@internalComponent +*/ + { + public: + static CFaxModemDriver * NewL (TFaxServerSessionSettings *,RFax::TProgress& aProgress); + static CFaxModemDriver * NewLC (TFaxServerSessionSettings *,RFax::TProgress& aProgress); + + TInt RxConnectL (); + TInt RxPrePageL (); + TInt RxPostPageL (); + TInt TxConnectL (); + TInt TxPrePageL (); + TInt TxPostPageL (); + + protected: + void ParseResults (TDesC8 &) ; + void ExtractAnswerback (TDesC8 &); + void AnalyseFHNG(void); + + }; +/********************************************************************/ + +class CFaxClass20 : public CFaxClass2 +/** +@internalComponent +*/ + { + public: + static CFaxModemDriver * NewL (TFaxServerSessionSettings *,RFax::TProgress& aProgress); + static CFaxModemDriver * NewLC (TFaxServerSessionSettings *,RFax::TProgress& aProgress); + + TInt RxConnectL (); + TInt RxPrePageL (); + TInt RxPostPageL (); + TInt TxConnectL (); + TInt TxPrePageL (); + TInt TxPostPageL (); + }; + +/********************************************************************/ + +#include "FAXMDRV.INL" + +#endif +