telephonyprotocols/rawipnif/version1/inc/BcaIoController.h
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyprotocols/rawipnif/version1/inc/BcaIoController.h	Tue Feb 02 01:41:59 2010 +0200
@@ -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 <e32base.h>
+#include <c32comm.h>
+#include <networking/bca.h>
+#include <networking/bcafactory.h>
+
+#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<RLibrary> iBcaDll;
+	/** BCA state*/
+	TBcaState iState;
+	/** NIF shut down error*/
+	TInt iError; 
+	};
+	
+/** returns the BCA pointer. */	
+inline MBca* CBcaControl::Bca()
+	{
+	return iMBca;
+	}	
+
+#endif // BCAIOCONTROLLER_H
+