upnpavcontroller/upnpavcontrollerserver/inc/upnpavdeviceextended.h
changeset 0 7f85d04be362
--- /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_