--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpavcontroller/upnpavcontrollerserver/inc/upnpavdeviceextended.h Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,366 @@
+/*
+* 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: a device data class used internally in AVC server
+*
+*/
+
+
+
+
+
+
+#ifndef C_UPNPAVDEVICEEXTENDED_H_
+#define C_UPNPAVDEVICEEXTENDED_H_
+
+// Include files
+#include <e32base.h>
+#include "upnpavdevice.h"
+
+// FORWARD DECLARATIONS
+class CUpnpDlnaProtocolInfo;
+class CUpnpItem;
+
+/**
+ * Extended UPnP device. Contains protocolinfo and a reference count for
+ * subscibe actions.
+ *
+ */
+class CUpnpAVDeviceExtended: public CUpnpAVDevice
+ {
+
+public:
+
+ enum TDLNADeviceType
+ {
+ EUPnP = 0,
+ EDMR,
+ EDMP,
+ EDMS
+ };
+
+public:
+
+ /**
+ * Static 1st phase constructor
+ *
+ * @param aDevice base device
+ * @return new instance
+ */
+ static CUpnpAVDeviceExtended* NewL( const CUpnpAVDevice& aDevice );
+
+ /**
+ * Static 1st phase constructor
+ *
+ * @param aDevice base device
+ * @return new instance
+ */
+ static CUpnpAVDeviceExtended* NewL(
+ const CUpnpAVDeviceExtended& aDevice );
+
+ /**
+ * Static 1st phase constructor
+ *
+ * @return new timer instance
+ */
+ static CUpnpAVDeviceExtended* NewL();
+
+ /**
+ * Destructor
+ */
+ virtual ~CUpnpAVDeviceExtended();
+
+private:
+
+ /**
+ * Private constructor
+ */
+ CUpnpAVDeviceExtended();
+
+ /**
+ * 2nd phase constructor
+ */
+ void ConstructL();
+
+
+public: // New functions
+
+ /**
+ * Sets sink protocolinfo
+ *
+ * @param aProtocolInfo sink protocolinfo
+ */
+ void SetSinkProtocolInfoL( const TDesC8& aProtocolInfo );
+
+ /**
+ * Returns devices sink protocolinfos as an array
+ *
+ * @return array of protocolinfos
+ */
+ const RPointerArray<CUpnpDlnaProtocolInfo>&
+ SinkProtocolInfo() const;
+
+ /**
+ * Sets source protocolinfo
+ *
+ * @param aProtocolInfo source protocolinfo
+ */
+ void SetSourceProtocolInfoL( const TDesC8& aProtocolInfo );
+
+ /**
+ * Returns devices source protocolinfos as an array
+ *
+ * @return array of protocolinfos
+ */
+ const RPointerArray<CUpnpDlnaProtocolInfo>&
+ SourceProtocolInfo() const;
+
+ /**
+ * Increases devices subscription count
+ *
+ * @return subscription count
+ */
+ TInt IncreaseSubscriptionCount();
+
+ /**
+ * Decreases devices subscription count
+ *
+ * @return subscription count
+ */
+ TInt DecreaseSubscriptionCount();
+
+ /**
+ * Returns subscription count
+ *
+ * @return subscription count
+ */
+ TInt SubscriptionCount() const;
+
+ /**
+ * Sets device capabilities
+ *
+ * @param aListOfMimeTypes
+ */
+ void SetCapabilitiesBySupportedMimeTypesL(
+ const TDesC8& aListOfMimeTypes );
+
+ /**
+ * Sets if the device is a local device (S60 Media Server)
+ *
+ * @param aLocal
+ */
+ void SetLocal( TBool aLocal );
+
+ /**
+ * Return if the device is local
+ *
+ * @return ETrue if the device is local
+ */
+ TBool Local() const;
+
+ /**
+ * Matches protocolinfo and return ETrue if it matches
+ *
+ * @param aProtocolInfo objects protocolinfo
+ * @return ETrue if it matches
+ */
+ TBool MatchSinkProtocolInfo( const TDesC8& aInfo ) const;
+
+ /**
+ * Validates transfer
+ *
+ * @param aProtocolInfo objects protocolinfo
+ * @return ETrue if it matches
+ */
+ TBool ValidateTransfer( const TDesC8& aInfo ) const;
+
+ /**
+ * Sets sink protocolinfo
+ *
+ * @param aProtocolInfo
+ */
+ const TDesC8& FindFirstMatchingInSinkL(
+ const CUpnpItem& aItem ) const;
+
+ /**
+ * Matches objectclass to protocolInfo
+ *
+ * @param aObjectClass
+ * @param aProtocolInfo
+ */
+ TBool MatchType( const TDesC8& aObjectClass, const TDesC8&
+ aProtocolInfo ) const;
+
+ /**
+ * Sets if the device supports audio upload
+ *
+ * @param aAudioUpload
+ */
+ void SetAudioUpload( TBool aAudioUpload );
+
+ /**
+ * Return if the device supports audio upload
+ *
+ * @return ETrue if the device supports audio upload
+ */
+ TBool AudioUpload() const;
+
+ /**
+ * Sets if the device supports image upload
+ *
+ * @param aImageUpload
+ */
+ void SetImageUpload( TBool aImageUpload );
+
+ /**
+ * Return if the device supports image upload
+ *
+ * @return ETrue if the device supports image upload
+ */
+ TBool ImageUpload() const;
+
+ /**
+ * Sets if the device supports video upload
+ *
+ * @param aVideoUpload
+ */
+ void SetVideoUpload( TBool aVideoUpload );
+
+ /**
+ * Return if the device supports video upload
+ *
+ * @return ETrue if the device supports video upload
+ */
+ TBool VideoUpload() const;
+
+ /**
+ * Sets if the device supports CreateChildContainer
+ *
+ * @param aCreateChildContainer
+ */
+ void SetCreateChildContainer( TBool aCreateChildContainer );
+
+ /**
+ * Return if the device supports video upload
+ *
+ * @return ETrue if the device supports video upload
+ */
+ TBool CreateChildContainer() const;
+
+ /**
+ * Sets if the device supports DestroyObject
+ *
+ * @param aDestroyObject
+ */
+ void SetDestroyObject( TBool aDestroyObject );
+
+ /**
+ * Return if the device supports DestroyObject
+ *
+ * @return ETrue if the device is local
+ */
+ TBool DestroyObject() const;
+
+ /**
+ * Sets if the protocolInfo has been received
+ *
+ * @param aPInfoReceived
+ */
+ void SetPInfoReceived( TBool aPInfoReceived );
+
+ /**
+ * Return if the device has received protocolInfo
+ *
+ * @return ETrue if the device has received protocolInfo
+ */
+ TBool PInfoReceived() const;
+
+ void SetDLNADeviceType( TDLNADeviceType aDeviceType );
+
+ TDLNADeviceType DLNADeviceType() const;
+
+private:
+
+ /**
+ * Sets source protocolinfo
+ *
+ * @param aProtocolInfo source protocolinfo
+ */
+ void SetSourceProtocolInfoL(
+ const RPointerArray<CUpnpDlnaProtocolInfo>& aProtocolInfo );
+
+ /**
+ * Sets sink protocolinfo
+ *
+ * @param aProtocolInfo sink protocolinfo
+ */
+ void SetSinkProtocolInfoL(
+ const RPointerArray<CUpnpDlnaProtocolInfo>& aProtocolInfo );
+
+ /**
+ * Parses descriptor to a delimeter
+ *
+ * @param aLexer lexer representing a descriptor
+ * @param aDelimeter delimeter character
+ */
+ void ParseToDelimeter( TLex8& aLex, TChar aDelimeter );
+
+ /**
+ * Judge character to be able remove
+ *
+ * @param aCharacter is a character
+ * @return ETrue if the character can be removed
+ */
+ TBool IsIllegalCharacter( TChar aCharacter ) const;
+
+ /**
+ * Parses descriptor perhaps have illegal characters
+ *
+ * @param aPtr representing a descriptor
+ * @return a new hbufc8 buffer
+ */
+ HBufC8* RemoveIllegalCharactersL( const TDesC8& aPtr ) const;
+
+ TBool MatchSourceProfileId( const TDesC8& aInfo ) const;
+
+ TBool MatchSinkProfileId( const TDesC8& aInfo ) const;
+
+ TBool MatchSinkMime( const TDesC8& aInfo ) const;
+
+private:
+
+ RPointerArray<CUpnpDlnaProtocolInfo> iSourceProtocolInfo;
+
+ RPointerArray<CUpnpDlnaProtocolInfo> iSinkProtocolInfo;
+
+ TInt iSubscriptionCount;
+
+ TBool iLocal;
+
+ TBool iAudioUpload;
+
+ TBool iImageUpload;
+
+ TBool iVideoUpload;
+
+ TBool iCreateChildContainer;
+
+ TBool iDestroyObject;
+
+ TBool iPInfoReceived;
+
+ TDLNADeviceType iDLNADeviceType;
+ };
+
+
+#endif // C_UPNPAVDEVICEEXTENDED_H_