--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dlnasrv_plat/upnp_avcp_api/inc/upnpavcontrolpoint.h Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,631 @@
+/** @file
+* Copyright (c) 2005-2006 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: AV control point class
+*
+*/
+
+
+
+#ifndef C_CUPNPAVCONTROLPOINT_H
+#define C_CUPNPAVCONTROLPOINT_H
+
+
+// INCLUDES
+#include "upnpavcontrolpointobserver.h"
+#include "upnpcontrolpoint.h"
+#include "upnphttpmessage.h"
+
+// FORWARD DECLARATIONS
+class CUpnpActionResponseHandler;
+class CUpnpStateUpdateHandler;
+class CUpnpAvtActionFactory;
+class CUpnpCdsActionFactory;
+class CUpnpCmActionFactory;
+class CUpnpRcActionFactory;
+// CLASS DECLARATION
+
+/**
+* Main class of AV Control Point.
+* This class serves as an interface to AVCP library and contais functions for
+* UPnP Action creation and sending as well as receiving Action responses and
+* UPnP events.
+*
+* Prior using the CUpnpAVControlPoint class, client application has to create
+* the network connection. If connection is not up and
+* running, the CUpnpDispatcherEngine class construction will fail.
+* See UPnP Interface Design document for instuctions.
+*
+* @since Series 60 2.6
+*/
+class CUpnpAVControlPoint : public CUpnpControlPoint
+ {
+public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CUpnpAVControlPoint* NewL(
+ MUpnpAVControlPointObserver& aAVControlPointObserver
+ );
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C virtual ~CUpnpAVControlPoint();
+
+public: // New functions
+
+ /**
+ * Service search and getter function.
+ * @since Series 60 2.6
+ * @param aDevice Target device of search.
+ * @param aServiceType Type of searched service.
+ * @return Found CUpnpService or NULL if not found.
+ */
+ IMPORT_C CUpnpService* Service(
+ CUpnpDevice* aDevice,
+ const TDesC8& aServiceType);
+
+ /**
+ * Device getter.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @return Founded device.
+ IMPORT_C const CUpnpDevice* Device(const TDesC8& aUuid);
+ */
+
+
+ /**
+ * Creates and sends a SetTransportURI action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @param aCurrentUri Content URI.
+ * @param aCurrentMetaData Content metadata.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtSetTransportUriActionL(
+ const TDesC8& aUuid,
+ TInt aInstanceId,
+ const TDesC8& aCurrentUri,
+ const TDesC8& aCurrentMetaData);
+
+ /**
+ * Creates and sends a SetNextTransportURI action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @param aNextUri Content URI.
+ * @param aNextMetaData Content metadata.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtSetNextTransportUriActionL(
+ const TDesC8& aUuid,
+ TInt aInstanceId,
+ const TDesC8& aNextUri,
+ const TDesC8& aNextMetaData);
+
+ /**
+ * Creates and sends a Seek action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @param aUnit
+ * @param aTarget
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtSeekActionL(
+ const TDesC8& aUuid,
+ TInt aInstanceId,
+ const TDesC8& aUnit,
+ const TDesC8& aTarget);
+
+ /**
+ * Creates and sends a GetMediaInfo action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtMediaInfoActionL(const TDesC8& aUuid,TInt aInstanceId);
+
+ /**
+ * Creates and sends a GetTransportInfo action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtTransportInfoActionL(const TDesC8& aUuid,TInt aInstanceId);
+
+ /**
+ * Creates and sends a GetPositionInfo action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtPositionInfoActionL(const TDesC8& aUuid,TInt aInstanceId);
+
+ /**
+ * Creates and sends a GetDeviceCapabilities action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtDeviceCapabilitiesActionL(const TDesC8& aUuid,TInt aInstanceId);
+
+ /**
+ * Creates and sends a GetTransportSetings action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtTransportSettingsActionL(const TDesC8& aUuid, TInt aInstanceId);
+
+ /**
+ * Creates and sends a Stop action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtStopActionL(const TDesC8& aUuid, TInt aInstanceId);
+
+ /**
+ * Creates and sends a Play action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @param aSpeed Speed of playback.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtPlayActionL(
+ const TDesC8& aUuid,
+ TInt aInstanceId,
+ const TDesC8& aSpeed);
+
+ /**
+ * Creates and sends a Pause action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtPauseActionL(const TDesC8& aUuid, TInt aInstanceId);
+
+ /**
+ * Creates and sends a Record action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtRecordActionL(const TDesC8& aUuid,TInt aInstanceId);
+
+ /**
+ * Creates and sends a Next action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtNextActionL(const TDesC8& aUuid, TInt aInstanceId);
+
+ /**
+ * Creates and sends a Previous action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtPreviousActionL(const TDesC8& aUuid, TInt aInstanceId);
+
+ /**
+ * Creates and sends a SetPlayMode action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @param aPlayMode
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtSetPlayModeActionL(
+ const TDesC8& aUuid,
+ TInt aInstanceId,
+ const TDesC8& aPlayMode);
+
+ /**
+ * Creates and sends a SetRecordQualityMode action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @param aRecordMode
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtSetRecordModeActionL(
+ const TDesC8& aUuid,
+ TInt aInstanceId,
+ const TDesC8& aRecordMode);
+
+ /**
+ * Creates and sends a GetTransportIDs action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt AvtTransportsActionL(const TDesC8& aUuid, TInt aInstanceId);
+
+ /**
+ * Creates and sends a Browse action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aObjectId Target's id.
+ * @param aBrowseFlag MetaData or DirectChildren.
+ * @param aFilter What is returned.
+ * @param aStartingIndex First returned item.
+ * @param aRequestedCount How manyy items is returned.
+ * @param aSortCriteria Sorting order.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CdsBrowseActionL(
+ const TDesC8& aUuid,
+ const TDesC8& aObjectId,
+ const TDesC8& aBrowseFlag,
+ const TDesC8& aFilter,
+ TInt aStartingIndex,
+ TInt aRequestedCount,
+ const TDesC8& aSortCriteria);
+
+ /**
+ * Creates and sends a Search action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aObjectId Target's id.
+ * @param aSearchCriteria Search rules.
+ * @param aFilter What is returned.
+ * @param aStartingIndex First returned item.
+ * @param aRequestedCount How manyy items is returned.
+ * @param aSortCriteria Sorting order.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CdsSearchActionL(
+ const TDesC8& aUuid,
+ const TDesC8& aObjectId,
+ const TDesC8& aSearchCriteria,
+ const TDesC8& aFilter,
+ TInt aStartingIndex,
+ TInt aRequestedCount,
+ const TDesC8& aSortCriteria
+ );
+
+ /**
+ * Creates and sends a GetSystemUpdateID action.
+ * @since Series 60 2.6
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CdsSystemUpdateIdActionL(const TDesC8& aUuid);
+
+ /**
+ * Creates and sends a GetSearchCapabilities action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CdsSearchCapabilitiesActionL(const TDesC8& aUuid);
+
+ /**
+ * Creates and sends a GetSortCapabilities action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CdsSortCapabilitiesActionL(const TDesC8& aUuid);
+
+ /**
+ * Creates and sends a CreateObject action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aId Parent container.
+ * @param aElements Object in XML form.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CdsCreateObjectActionL(
+ const TDesC8& aUuid,
+ const TDesC8& aId,
+ const TDesC8& aElements);
+
+ /**
+ * Creates and sends a ImportResource action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aSourceUri Source of import.
+ * @param aDestinationUri Destination of import.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CdsImportResourceActionL(
+ const TDesC8& aUuid,
+ const TDesC8& aSourceUri,
+ const TDesC8& aDestinationUri
+ );
+
+ /**
+ * Creates and sends a ExportResource action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aSourceUri Source of export.
+ * @param aDestinationUri Destination of export.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CdsExportResourceActionL(
+ const TDesC8& aUuid,
+ const TDesC8& aSourceUri,
+ const TDesC8& aDestinationUri );
+
+ /**
+ * Creates and sends a CreteReference action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aDestinationContainerId Place for reference.
+ * @param aSourceObjectId Referred object.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CdsCreateReferenceActionL(
+ const TDesC8& aUuid,
+ const TDesC8& aDestinationContainerId,
+ const TDesC8& aSourceObjectId );
+
+ /**
+ * Creates and sends a DeleteResource action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aResourceUri Resource to be deleted.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CdsDeleteResourceActionL(
+ const TDesC8& aUuid,
+ const TDesC8& aResourceUri );
+
+ /**
+ * Creates and sends a DestroyObject action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aObjectId Object to be destroyed.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CdsDestroyObjectActionL(
+ const TDesC8& aUuid,
+ const TDesC8& aObjectId );
+
+ /**
+ * Creates and sends a StopTransfer action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aTransferId Transfer to be stopped.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CdsStopTransferActionL(const TDesC8& aUuid, TInt aTransferId );
+
+ /**
+ * Creates and sends a GetTransferProgress action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aTransferId Observed transfer.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CdsTransferProgressActionL(const TDesC8& aUuid, TInt aTransferId );
+
+ /**
+ * Creates and sends a SetTransportURI action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aObjectID Updated object.
+ * @param aCurrentTagValue Current object XML.
+ * @param aNewTagValue New object XML.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CdsUpdateObjectActionL(
+ const TDesC8& aUuid,
+ const TDesC8& aObjectID,
+ const TDesC8& aCurrentTagValue,
+ const TDesC8& aNewTagValue );
+
+ /**
+ * Creates and sends a GetProtocolInfo action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CmProtocolInfoActionL(const TDesC8& aUuid);
+
+ /**
+ * Creates and sends a GetCurrentConnections action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CmCurrentConnectionsActionL(const TDesC8& aUuid);
+
+ /**
+ * Creates and sends a PrepareForConnection action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aRemoteProtocolInfo
+ * @param aPeerConnectionManager
+ * @param aPeerConnectionID
+ * @param aDirection
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CmPrepareConnectionActionL(
+ const TDesC8& aUuid,
+ const TDesC8& aRemoteProtocolInfo,
+ const TDesC8& aPeerConnectionManager,
+ TInt aPeerConnectionID,
+ const TDesC8& aDirection
+ );
+
+ /**
+ * Creates and sends a ConnectionComplete action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aConnectionId
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CmConnectionCompleteActionL(
+ const TDesC8& aUuid,
+ TInt aConnectionId
+ );
+
+ /**
+ * Creates and sends a GetCurrentConnectionInfo action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aConnectionId
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt CmCurrentConnectionInfoActionL(
+ const TDesC8& aUuid,
+ TInt aConnectionId
+ );
+
+ /**
+ * Creates and sends a GetVolume action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceID Rendring Instance.
+ * @param aChannel Audio channel.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt RcGetVolumetActionL(
+ const TDesC8& aUuid,
+ TInt aInstanceID,
+ const TDesC8& aChannel
+ );
+
+ /**
+ * Creates and sends a SetVolume action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @param aChannel Audio channel.
+ * @param aVolume
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt RcSetVolumetActionL(
+ const TDesC8& aUuid,
+ TInt aInstanceId,
+ const TDesC8& aChannel,
+ TInt aVolume
+ );
+
+ /**
+ * Creates and sends a GetMute action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @param aChannel Audio channel.
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt RcGetMuteActionL(
+ const TDesC8& aUuid,
+ TInt aInstanceId,
+ const TDesC8& aChannel
+ );
+
+ /**
+ * Creates and sends a SetTransportURI action.
+ * @since Series 60 2.6
+ * @param aUuid A Universal Unique Identifier of device.
+ * @param aInstanceId Rendring Instance.
+ * @param aChannel Audio channel.
+ * @param aMute
+ * @return Error code. KErrNone if no errors.
+ */
+ IMPORT_C TInt RcSetMuteActionL(
+ const TDesC8& aUuid,
+ TInt aInstanceId,
+ const TDesC8& aChannel,
+ const TDesC8& aMute
+ );
+
+ /**
+ * This function will be invoke if some network event will occure
+ * for example IP Address of UPnP changes
+ */
+ IMPORT_C void NetworkEvent( CUpnpNetworkEventBase* aEvent );
+
+protected: // Functions from base classes
+
+ /**
+ * From CUpnpControlPoint State update handler.
+ */
+ IMPORT_C void StateUpdatedL(CUpnpService* aService);
+
+ /**
+ * From CUpnpControlPoint Device discovery handler.
+ */
+ IMPORT_C void DeviceDiscoveredL(CUpnpDevice* aDevice);
+
+ /**
+ * From CUpnpControlPoint Device dissappear handler.
+ */
+ IMPORT_C void DeviceDisappearedL(CUpnpDevice* aDevice);
+
+ /**
+ * From CUpnpControlPoint Action response handler function.
+ */
+ IMPORT_C void ActionResponseReceivedL(CUpnpAction* aAction);
+
+ /**
+ * From CUpnpControlPoint HTTP message handler function.
+ */
+ IMPORT_C void HttpResponseReceivedL(CUpnpHttpMessage* aMessage);
+
+ /**
+ * C++ default constructor.
+ */
+ IMPORT_C CUpnpAVControlPoint(MUpnpAVControlPointObserver& aAVControlPointObserver);
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ IMPORT_C void ConstructL();
+
+ /**
+ * Initialize CdsActionFactory if is equal NULL
+ */
+ IMPORT_C void InitializeCdsActionFactoryL();
+
+protected: // Data
+ //AV control point observer (engine)
+ MUpnpAVControlPointObserver& iAVControlPointObserver;
+
+ //Action response handler
+ CUpnpActionResponseHandler* iActionResponseHandler;
+
+ // UPnP event handler
+ CUpnpStateUpdateHandler* iStateUpdateHandler;
+
+ // Action factories
+ CUpnpAvtActionFactory* iAvtActionFactory;
+ CUpnpCdsActionFactory* iCdsActionFactory;
+ CUpnpCmActionFactory* iCmActionFactory;
+ CUpnpRcActionFactory* iRcActionFactory;
+ };
+
+#endif // C_CUPNPAVCONTROLPOINT_H
+
+// End of File
\ No newline at end of file