diff -r 630d2f34d719 -r 07a122eea281 telephonyprotocols/rawipnif/version1/inc/BcaIoController.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyprotocols/rawipnif/version1/inc/BcaIoController.h Wed Sep 01 12:40:21 2010 +0100 @@ -0,0 +1,239 @@ +// Copyright (c) 2004-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: +// Defines the interface to the BCA interface +// +// + +/** + @file +*/ + +#ifndef BCAIOCONTROLLER_H +#define BCAIOCONTROLLER_H + +#include +#include +#include +#include + +#include "BcaController.h" +using namespace BasebandChannelAdaptation; + +class CBttLogger; +class CSender; +class CReceiver; +class CBcaControl; + +/** + +@internalComponent +*/ +void Panic(TRawIPNifPanic aPanic); + +/** + +@internalComponent +*/ +typedef MBcaFactory* (*TNewBcaFactoryL)(); + + +/** +@internalComponent +*/ +class CBcaIoController : public CBcaController + { +public: + CBcaIoController(MControllerObserver& aObserver, CBttLogger* aTheLogger); + static CBcaIoController* NewL(MControllerObserver& aObserver, CBttLogger* aTheLogger); + void ConstructL(); + ~CBcaIoController(); + +public: + void StartL(); + void Stop(TInt aError = KErrNone); + +public: // Process Down/Up stack data packets + void BcaProcess(TDesC8& aPdu); + void BcaSend(RMBufChain& aPdu); + void BcaSendComplete(); + +public: + inline CSender& Sender(); + inline CReceiver& Receiver(); + inline TUint Nsapi(); + void SetBcaStackAndName(TDesC& aBcaStack); + inline const TName& BcaStack()const; + inline const TName& BcaName()const; + inline MBca* Bca(); + inline void SetBca(MBca* aBca); + inline void SetPort(TDesC& aPortName); + inline const TName& Port()const; + inline void SetIapId(TUint32 aIapId); + inline TUint32 IapId(); + TInt BcaSendBufferLength(); + +private: + void InitialiseBcaL(); + +private: // Flow Control + void ResumeSending(); + +private: // Unowned data. + /** Pointer to the BCA */ + MBca* iMBca; + + /** used to send data*/ + CSender* iSender; + /** used to receive data*/ + CReceiver* iReceiver; + /** used to load, open and close the BCA*/ + CBcaControl* iLoader; + /** IAP ID used to open CommDB*/ + TUint32 iIapId; + /** Bca name*/ + TName iBcaName; + /** Bca Stack*/ + TName iBcaStack; + /** CommPort Name*/ + TName iCommPort; + }; + +inline CSender& CBcaIoController::Sender() +/** + * Returns reference to CSender object + * + * @return iSender The CSender reference + */ + { + return *iSender; + } + +inline CReceiver& CBcaIoController::Receiver() +/** + * Returns reference to CReceiver object + * + * @return iReceiver The CReceiver reference + */ + { + return *iReceiver; + } + +/** returns the BCA Stack*/ +inline const TName& CBcaIoController::BcaStack()const + { + return iBcaStack; + } + +/** returns the BCA name*/ +inline const TName& CBcaIoController::BcaName()const + { + return iBcaName; + } + +/** retrurns the BCA pointer.*/ +inline MBca* CBcaIoController::Bca() + { + return iMBca; + } +/** sets the BCA pointer. + +* @param aBca BCA pointer. +*/ +inline void CBcaIoController::SetBca(MBca* aBca) + { + iMBca = aBca; + } + +/** sets the IAP ID + +* @param aIapId IAP ID to be set. +*/ +inline void CBcaIoController::SetIapId(TUint32 aIapId) + { + iIapId = aIapId; + } + +/** returns the IAP ID*/ +inline TUint32 CBcaIoController::IapId() + { + return iIapId; + } + +/** sets the port name + +* @param aPortName port name to be set. +*/ +inline void CBcaIoController::SetPort(TDesC& aPortName) + { + iCommPort = aPortName; + } + +/** returns the port name*/ +inline const TName& CBcaIoController::Port()const + { + return iCommPort; + } + +/** class used to load, open and shutdown the BCA and also start and shutdown the NIF. +@internalComponent +*/ +class CBcaControl : public CActive + { +public: + CBcaControl(CBcaIoController& aObserver, CBttLogger* aTheLogger); + ~CBcaControl(); +public: + void StartLoadL(); + void ShutdownBca(TInt aError); + inline MBca* Bca(); +protected: + // Inherited from CActive. + virtual void RunL(); + virtual void DoCancel(); +private: // Unowned data. + CBcaIoController& iObserver; + CBttLogger* iTheLogger; +private: + enum TBcaState + { + /** Bca ready to start */ + EIdling, + /** Bca to be closed*/ + EClosing, + /** Bca IAP is set*/ + EIAPSet, + /** Bca stack is set*/ + EBcaStackSet + }; + +private: + + /** BCA owned by NIF*/ + MBca* iMBca; + /** used to load library*/ + TAutoClose iBcaDll; + /** BCA state*/ + TBcaState iState; + /** NIF shut down error*/ + TInt iError; + }; + +/** returns the BCA pointer. */ +inline MBca* CBcaControl::Bca() + { + return iMBca; + } + +#endif // BCAIOCONTROLLER_H +