--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/fax/faxclientandserver/FAXSVR/FAXMDRV.H Tue Feb 02 01:41:59 2010 +0200
@@ -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
+