--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/linklayerprotocols/pppnif/INC/PPPCCP.H Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,171 @@
+// 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:
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#if !defined(__PPPCCP_H__)
+#define __PPPCCP_H__
+
+#include <networking/pppbase.h>
+#include <networking/pppcfg.h>
+
+const TUint16 KPppIdCcp = 0x80fd;
+const TUint8 KPppCcpResetReq = 14;
+const TUint8 KPppCcpResetAck = 15;
+
+const TUint8 KPppCcpOptOui = 0;
+const TUint8 KPppCcpOptPred1 = 1;
+const TUint8 KPppCcpOptPred2 = 2;
+const TUint8 KPppCcpOptPuddle = 3;
+const TUint8 KPppCcpOptHP = 16;
+const TUint8 KPppCcpOptStac = 17;
+const TUint8 KPppCcpOptMsoft = 18;
+const TUint8 KPppCcpOptGandalf = 19;
+const TUint8 KPppCcpOptV42bis = 20;
+const TUint8 KPppCcpOptBSDLzw = 21;
+const TUint8 KPppCcpOptMagnalink = 24;
+const TUint8 KPppCcpOptDeflate = 26;
+const TUint8 KPppCcpOptReserved = 255;
+
+const TUint8 KCcpSendPriority = 10;
+
+//const TUint32 KPppCcpOptMsoftSupport = 1;
+
+/** @internalTechnology
+@{ */
+const TUint32 KUidPppCompressionModule = 0x10000C47;
+const TUint32 KUidUnicodePppCompressionModule = 0x10003d45;
+const TUint32 KUidPppMsCompression = 0x10000C49;
+//@}
+
+class CPppIniData;
+
+NONSHARABLE_CLASS(CPppCcp) : public CBase, public MPppFsm
+/**
+PPP Compression Control Protocol class (RFC 1962)
+@internalComponent
+*/
+ {
+public:
+ CPppCcp(CPppLcp* aLcp);
+ ~CPppCcp();
+ static CPppCcp* NewL(CPppLcp* aLcp);
+ void ConstructL();
+ void RemoveRegistration();
+ // Esock
+ virtual TInt State();
+ virtual TInt Send(RMBufChain& aPdu, TAny* aSource);
+ virtual void Info(TNifIfInfo& aInfo) const;
+ static void FillInInfo(TNifIfInfo& aInfo);
+
+ void SendFlowOn();
+ //
+ void Recv(RMBufChain& aPacket);
+ //
+ void KillProtocol();
+ void FrameError();
+
+ void UnloadCompressor() ;
+ // Added for Predictor
+ virtual void ReConfigLink();
+
+ virtual void SendResetRequestL();
+ virtual void RemoteCompressorHasReset();
+protected:
+ // PPP FSM Upcalls
+ virtual TInt FsmLayerStarted();
+ virtual void FsmLayerFinished(TInt aReason=KErrNone);
+ virtual void FsmLayerUp();
+ virtual void FsmLayerDown(TInt aReason=KErrNone);
+ virtual void FsmFillinConfigRequestL(RPppOptionList& aRequestList);
+ virtual void FsmCheckConfigRequest(RPppOptionList& aRequestList, RPppOptionList& aAckList, RPppOptionList& aNakList, RPppOptionList& aRejList);
+ virtual void FsmApplyConfigRequest(RPppOptionList& aRequestList);
+ virtual void FsmRecvConfigAck(RPppOptionList& aReplyList);
+ virtual void FsmRecvConfigNak(RPppOptionList& aReplyList, RPppOptionList& aReqList);
+ virtual void FsmRecvConfigReject(RPppOptionList& aReplyList, RPppOptionList& aReqList);
+ virtual TBool FsmRecvUnknownCode(TUint8 aCode, TUint8 aId, TInt aLength, RMBufChain& aPacket);
+ virtual void FsmTerminationPhaseComplete();
+private:
+ static TInt SendCallBack(TAny* aCProtocol);
+ void DoSend();
+ void SendResetAckL(TUint8 aId);
+ CPppDeCompressor* LoadDeCompressorL( CPppCompConfig& aPPPCompConfig, TInt aMaxFrameLength);
+ CPppCompressor* LoadCompressorL( CPppCompConfig& aPPPCompConfig, TInt aMaxFrameLength);
+ void AddToRequestListL(RPppOptionList& aRequestList, TSglQueIter<CPppCompConfig>& aIterator);
+private:
+
+ /** Whether compression has been enabled in the configuration database */
+ TBool iSoftwareCompressionOn;
+ //
+ //TUint iCurrentCompressor;
+ //TUint iCurrentDeCompressor;
+
+ /** Queue of packets to send */
+ RMBufPktQ iSendQ;
+
+ /** Active object used to schedule sending packets */
+ CAsyncCallBack* iSendCallBack;
+ //
+ TBool iLowerFlowOn;
+ TBool iUpperFlowOn;
+
+ /** Object to take outgoing packets */
+ TPppExtraRecvr<CPppCcp> iRecvr;
+
+ /** Identification code of the last Reset Request packet sent */
+ TUint8 iResetId;
+
+ /** Static compressor configuration information */
+ TSglQue<CPppCompConfig> iCompressorConfig;
+
+ //CObjectConIx* iContainerForDlls;
+ CObjectCon* iCompressorCon;
+ CObjectCon* iDeCompressorCon;
+
+ /** Object implementing the negotiated compression algorithm */
+ CPppCompressor* iCompressor;
+
+ /** Object implementing the negotiated decompression algorithm */
+ CPppDeCompressor* iDeCompressor;
+
+ /** Set to ETrue once KillProtocol has been called */
+ TBool iDead;
+
+ /** PPP .ini file parsing object */
+ CPppIniData* iIniFilePtr;
+
+ /** Working list of compressor configurations left to try */
+ RPppOptionList iRequestWorkList;
+
+ };
+
+class CPppCompFactory : public CNifFactory
+/**
+Factory base for creating a concrete instance of a compressor
+or decompressor object.
+@internalComponent
+*/
+ {
+public:
+ virtual void InstallL()=0;
+ virtual CPppCompressor* NewPppCompressorL( CPppCcp* aCcp, TInt aMaxFrameLength, const TUint8* aMode = NULL)=0;
+ virtual CPppDeCompressor* NewPppDeCompressorL(CPppCcp* aCcp, TInt aMaxFrameLength, const TUint8* aMode = NULL)=0;
+ };
+
+
+#endif // __PPPCCP_H_