--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommsengine/mmcefloorctrlengine/inc/fcpluginengine.h Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,242 @@
+/*
+* Copyright (c) 2005 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:
+*
+*/
+
+
+
+
+#ifndef CFCPLUGINENGINE_H
+#define CFCPLUGINENGINE_H
+
+// INCLUDES
+#include <e32base.h>
+#include "fcinterface.h"
+#include <ecom/ecom.h>
+#include "fcmessageobserver.h"
+#include "fcpluginstore.h"
+#include "fcobserver.h"
+
+// FORWARD DECLARATIONS
+class CFCPlugInInfo;
+class TFCInterfaceInitParams;
+class TFCPlugInIter;
+class CFCSession;
+class CSdpFmtAttributeField;
+class CSdpDocument;
+
+// CLASS DECLARATION
+
+/**
+* Class provides functions for using Floor Control Plugin
+* @lib CFCPlugInEngine.lib
+*/
+class CFCPlugInEngine : public CBase,
+ public MFCPlugInstore, public MFCMessageObserver
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Constructs an object; leaves on failure.
+ * @param aFCObserver an interface for requesting floor control events
+ * @return new instance
+ */
+ IMPORT_C static CFCPlugInEngine* NewL(MFCObserver& aFCObserver);
+
+ /**
+ * Constructs an object and adds the pointer to the cleanup stack;
+ * leaves on failure.
+ * @param aFCObserver an interface for requesting FC events
+ * @return new instance
+ */
+ IMPORT_C static CFCPlugInEngine* NewLC( MFCObserver& aFCObserver);
+
+ /**
+ * Destructor
+ */
+ IMPORT_C ~CFCPlugInEngine();
+
+ /**
+ * Gets all supported Floor contrl PlugIn
+ * @return supported Floor control plugins names (e.g. TBCP);
+ * the ownership is transferred
+ */
+ IMPORT_C CDesC8Array* SupportedProtocolL();
+
+ /**
+ * Gets the specific Floor contrl PlugIn
+ * @return specific Floor control plugins name (e.g. TBCP);
+ * the ownership is transferred
+ */
+ IMPORT_C MFCPlugIn* PlugInByNameL(const TDesC8& aProtocolName) ;
+
+ /**
+ * Gets the new FC session.
+ * @param aType, Plugin type
+ * @param aIapId, The IAP ID
+ * @param aPort, The port to be used-
+ * @return const CFCSession&, reference to FC session
+ * function will leave if there is no suitable plugIn
+ */
+ IMPORT_C CFCSession& CreateNewSessionL(const TDesC8& aType,
+ TUint32 aIapId,
+ TUint32 aPort);
+
+
+ /**
+ * Updates the FC session local port.
+ * @param aSession, reference to FC session.
+ * @param aNewPort, the new port.
+ */
+ IMPORT_C void SetSessionPortL( CFCSession& aFCSession, TUint32 aNewPort );
+
+ /**
+ * Updates the FC session local port and the receiving status.
+ * KFCDefaultPort means that the session will no be receiving.
+ * @param aSession, reference to FC session.
+ * @param aNewPort, the new port.
+ */
+ IMPORT_C void UpdateSessionL( CFCSession& aFCSession, TUint32 aNewPort );
+
+ /**
+ * Releases the FC session.
+ * @param aSession, reference to FC session.
+ */
+ IMPORT_C void ReleaseSession(const CFCSession& aSession);
+
+ /**
+ * Gets the set of media format level attributes.
+ * @return RPointerArray<CSdpFmtAttributeField>&: The set of media
+ * format level attributes.
+ */
+ IMPORT_C RPointerArray<CSdpFmtAttributeField>&
+ FormatAttributeFieldsL(const CFCSession& aSession);
+
+ /**
+ * Sets media format level attributes.
+ * @param aAttributes, The set of media format level attributes.
+ */
+ IMPORT_C void SetFormatAttributeFieldsL(const CFCSession& aSession,
+ RPointerArray<CSdpFmtAttributeField>* aAttributes);
+
+ /**
+ * Reads remote parameters of FC from offer/answer document.
+ * @param aSession FC Session
+ * @param aSdpDocument SDP document containing offer/answer
+ */
+ IMPORT_C void PeekDocumentL(const CFCSession& aSession, const CSdpDocument& aSdpDocument);
+
+ /**
+ * Modifies local parameters of FC to offer document.
+ * Adds a media line or modifies existing one.
+ * @param aSession FC Session
+ * @param aSdpDocument SDP document containing offer.
+ */
+ IMPORT_C void UpdateOfferL(const CFCSession& aSession, CSdpDocument& aSdpDocument);
+
+ /**
+ * Modifies local parameters of FC to answer document.
+ * @param aSession FC Session
+ * @param aSdpDocument SDP document containing answer, updating the port and addr only
+ */
+ IMPORT_C void UpdateAnswerL(const CFCSession& aSession, CSdpDocument& aSdpDocument);
+
+ /**
+ * Session is ready to send, Socket is open, and start to listen
+ * @param aSession FC Session
+ */
+ IMPORT_C void StartConnectionL( const CFCSession& aSession );
+
+ /**
+ * Send the Data to the predefined addresses
+ * @param aSession FC Session
+ * @param aData, sending via this plugIn
+ */
+ IMPORT_C void SendToNetL( const CFCSession& aSession,
+ HBufC8* aData );
+
+ /**
+ * Returns truth value whether or not this the plugin is
+ * to be receive data in this sessions port. Leaves with
+ * KErrNotFound, if the session is not found.
+ * @param aSession FC Session
+ */
+ IMPORT_C TBool IsReceiverL( const CFCSession& aSession );
+
+ /**
+ * Checks if the floor control paramaters have changed for
+ * the given session. Leaves with KErrNotFound, if the
+ * session is not found.
+ * @param aSession FC Session
+ */
+ IMPORT_C TBool UpdateNeededL( const CFCSession& aSession );
+
+
+ public: // From MFCMessageObserver
+
+ /**
+ * Called by a FloorControl plugin
+ * @param aData, Receving Data
+ * @param aPlugIn, The plug-in
+ */
+ void ReceivedData(HBufC8* aData, MFCPlugIn* aPlugIn ) ;
+
+ /**
+ * Called by a FloorControl plugin
+ * @param aErrCode KErrNone if connection succesfully, otherwise
+ * one of the system-wide error codes.
+ * @param aPlugIn, The plug-in
+ */
+ void ErrorNotify( TInt aErrCode, MFCPlugIn* aPlugIn ) ;
+
+ public:
+
+ /**
+ * Gets all PlugIn
+ * @return the iterator of plugin
+ */
+ TFCPlugInIter& FCPlugInIter();
+
+ /**
+ * Load the plugin uses the pre-difined UID
+ */
+ void ListMechanismImplementationsL();
+
+
+ private:
+ // Constructor
+ CFCPlugInEngine(MFCObserver& aFCObserver);
+
+ void ConstructL();
+
+ static void ArrayCleanup(TAny* aArray);
+
+ CFCSession* FindFCSession( MFCPlugIn* aPlugIn );
+
+ private:
+ //data
+ MFCObserver& iFCObserver;
+ RPointerArray< CFCPlugInInfo > iFCPlugIns;
+ TFCPlugInIter iFCPlugInIter;
+ RPointerArray<CFCSession> iFCSessions;
+
+ private: // EUnit
+ friend class UT_CFCPlugInEngine;
+
+ };
+
+#endif // CFCPlugInEngine_H
+
+// End of File