diff -r 6b1d113cdff3 -r 6638e7f4bd8f telephonyprotocols/rawipnif/inc/BcaIoController.h --- a/telephonyprotocols/rawipnif/inc/BcaIoController.h Mon May 03 13:37:20 2010 +0300 +++ b/telephonyprotocols/rawipnif/inc/BcaIoController.h Thu May 06 15:10:38 2010 +0100 @@ -1,306 +1,306 @@ -// Copyright (c) 2004-2010 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 -// for the constants for sending/blocking -#include -#include "MControllerObserver.h" -#include "Constants.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 CBase - { -public: - static CBcaIoController* NewL(MControllerObserver& aObserver, CBttLogger* aTheLogger); - ~CBcaIoController(); - - void StartL(); - void Stop(TInt aError = KErrNone); - ESock::MLowerDataSender::TSendResult Send(RMBufChain& aPdu); - void SendComplete(); - - inline CSender& Sender(); - inline CReceiver& Receiver(); - inline TUint Nsapi(); - void SetBcaStackAndName(const TDesC& aBcaStack, const TDesC& aBcaName); - inline TPtrC BcaStack()const; - inline TPtrC BcaName()const; - inline MBca* Bca(); - inline void SetBca(MBca* aBca); - inline void SetPort(const TDesC& aPortName); - inline TPtrC Port() const; - inline void SetIapId(TUint32 aIapId); - inline TUint32 IapId(); - inline void BlockSending(void) { iFlowBlocked = ETrue; } - void ResumeSending(); - - // Get the NIF reference. - inline MControllerObserver& GetObserver() { return iObserver; } - -#ifdef RAWIP_HEADER_APPENDED_TO_PACKETS - // tag headers - void SetType(TUint16 aType); - void AddHeader(TDes8& aDes); - TUint16 RemoveHeader(RMBufChain& aPdu); -#endif // RAWIP_HEADER_APPENDED_TO_PACKETS - -protected: - CBttLogger* iTheLogger; - TUint iMaxTxPacketSize; - TUint iMaxRxPacketSize; - -private: - - CBcaIoController(MControllerObserver& aObserver, CBttLogger* aTheLogger); - void ConstructL(); - - enum TSendState - { - EIdle, - ESending, - EShuttingDown - }; - - enum TInitialisationState - { - EStart, - EBcaController, - EInitialised - }; - - // Flow control flags - TSendState iSendState; - - inline void SendState(TSendState aState) { iSendState = aState; } - - - // uplink flow control - TBool iFlowBlocked; - - // Buffer control - inline TBool IsSendQueueEmpty() { return iSendQueue.IsEmpty(); } - inline TBool IsSendQueueFull() { return (iNumPacketsInSendQueue >= iMaxSendQueueLen) ? ETrue : EFalse; } - - inline void AppendToSendQueue(RMBufChain& aPdu) - { - iSendQueue.Append(aPdu); - iNumPacketsInSendQueue++; - } - - inline TBool RemoveFromSendQueue(RMBufChain& aPdu) - { - TBool ret = iSendQueue.Remove(aPdu); - if(ret) - { - iNumPacketsInSendQueue--; - } - return ret; - } - - /** The internal packet buffer */ - RMBufPktQ iSendQueue; - /** The maximum number of packets that we want in an internal queue */ - TUint iMaxSendQueueLen; - /** Current number of packets in the internal packet buffer */ - TInt iNumPacketsInSendQueue; - - MControllerObserver& iObserver; - - // 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*/ - TPtrC iBcaName; - /** Bca Stack*/ - TPtrC iBcaStack; - /** CommPort Name*/ - TPtrC 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 TPtrC CBcaIoController::BcaStack()const - { - return iBcaStack; - } - -/** returns the BCA name*/ -inline TPtrC 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(const TDesC& aPortName) - { - iCommPort.Set(aPortName); - } - -/** returns the port name*/ -inline TPtrC 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, - /** Bca channel is open */ - EBcaOpened - }; - -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 - +// Copyright (c) 2004-2010 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 +// for the constants for sending/blocking +#include +#include "MControllerObserver.h" +#include "Constants.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 CBase + { +public: + static CBcaIoController* NewL(MControllerObserver& aObserver, CBttLogger* aTheLogger); + ~CBcaIoController(); + + void StartL(); + void Stop(TInt aError = KErrNone); + ESock::MLowerDataSender::TSendResult Send(RMBufChain& aPdu); + void SendComplete(); + + inline CSender& Sender(); + inline CReceiver& Receiver(); + inline TUint Nsapi(); + void SetBcaStackAndName(const TDesC& aBcaStack, const TDesC& aBcaName); + inline TPtrC BcaStack()const; + inline TPtrC BcaName()const; + inline MBca* Bca(); + inline void SetBca(MBca* aBca); + inline void SetPort(const TDesC& aPortName); + inline TPtrC Port() const; + inline void SetIapId(TUint32 aIapId); + inline TUint32 IapId(); + inline void BlockSending(void) { iFlowBlocked = ETrue; } + void ResumeSending(); + + // Get the NIF reference. + inline MControllerObserver& GetObserver() { return iObserver; } + +#ifdef RAWIP_HEADER_APPENDED_TO_PACKETS + // tag headers + void SetType(TUint16 aType); + void AddHeader(TDes8& aDes); + TUint16 RemoveHeader(RMBufChain& aPdu); +#endif // RAWIP_HEADER_APPENDED_TO_PACKETS + +protected: + CBttLogger* iTheLogger; + TUint iMaxTxPacketSize; + TUint iMaxRxPacketSize; + +private: + + CBcaIoController(MControllerObserver& aObserver, CBttLogger* aTheLogger); + void ConstructL(); + + enum TSendState + { + EIdle, + ESending, + EShuttingDown + }; + + enum TInitialisationState + { + EStart, + EBcaController, + EInitialised + }; + + // Flow control flags + TSendState iSendState; + + inline void SendState(TSendState aState) { iSendState = aState; } + + + // uplink flow control + TBool iFlowBlocked; + + // Buffer control + inline TBool IsSendQueueEmpty() { return iSendQueue.IsEmpty(); } + inline TBool IsSendQueueFull() { return (iNumPacketsInSendQueue >= iMaxSendQueueLen) ? ETrue : EFalse; } + + inline void AppendToSendQueue(RMBufChain& aPdu) + { + iSendQueue.Append(aPdu); + iNumPacketsInSendQueue++; + } + + inline TBool RemoveFromSendQueue(RMBufChain& aPdu) + { + TBool ret = iSendQueue.Remove(aPdu); + if(ret) + { + iNumPacketsInSendQueue--; + } + return ret; + } + + /** The internal packet buffer */ + RMBufPktQ iSendQueue; + /** The maximum number of packets that we want in an internal queue */ + TUint iMaxSendQueueLen; + /** Current number of packets in the internal packet buffer */ + TInt iNumPacketsInSendQueue; + + MControllerObserver& iObserver; + + // 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*/ + TPtrC iBcaName; + /** Bca Stack*/ + TPtrC iBcaStack; + /** CommPort Name*/ + TPtrC 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 TPtrC CBcaIoController::BcaStack()const + { + return iBcaStack; + } + +/** returns the BCA name*/ +inline TPtrC 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(const TDesC& aPortName) + { + iCommPort.Set(aPortName); + } + +/** returns the port name*/ +inline TPtrC 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, + /** Bca channel is open */ + EBcaOpened + }; + +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 +