--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/inc/musavacapability.h Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,233 @@
+/*
+* Copyright (c) 2005-2007 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: Capability
+*
+*/
+
+
+#ifndef CMUSAVACAPABILITY_H
+#define CMUSAVACAPABILITY_H
+
+
+#include <e32base.h> // CBase
+#include <sdpcodecstringconstants.h>
+#include <sdpcodecstringpool.h>
+#include <badesca.h>
+#include "musunittesting.h"
+
+
+class CMusAvaCapabilityExchange;
+class CSIPServerTransaction;
+class CSIPHeaderBase;
+class CSdpDocument;
+class CSIPAcceptContactHeader;
+class CSdpFmtAttributeField;
+class CSdpAttributeField;
+class CSdpOriginField;
+class CSdpMediaField;
+class RStringF;
+
+#define CAPABILITY_CONTAINS( tagSet, tag ) ( tagSet.Find( tag ) >= KErrNone )
+_LIT8( KCapabilitySwisFeature, "+g.3gpp.cs-voice");
+_LIT8( KCapabilitySwisApplication, "com.gsma.rts");
+_LIT8( KCapabilitySDPAttributeNameType, "type");
+_LIT8( KCapabilitySDPAttributeType, "videolive");
+_LIT8( KCapabilitySDPAttributeCodecH263, "H263-2000" );
+_LIT8( KCapabilitySwisFormatList, "98 96" );
+_LIT8( KCapabilitySwisFormatListH263Only, "96" );
+_LIT8( KCapabilitySDPAttributeCodecH264, "H264" );
+
+const TUint64 KCapabilitySDPAttributeClockrate = 90000;
+const TUint64 KCapabilitySDPAttributePayloadType = 96;
+const TUint64 KCapabilitySDPAttributePayloadTypeH264 = 98;
+
+
+/**
+ * Capability
+ *
+ * @lib musavailabilityplugin.dll
+ */
+class CMusAvaCapability : public CBase
+ {
+
+public: // constructors and destructor
+
+ static CMusAvaCapability* NewL( CMusAvaCapabilityExchange& aExchange );
+ virtual ~CMusAvaCapability();
+
+
+protected: // constructors
+
+ CMusAvaCapability( CMusAvaCapabilityExchange& aExchange );
+
+ void ConstructL( );
+
+public: // new functions
+
+ /**
+ * Returns exchance
+ *
+ * @return exchance
+ */
+ CMusAvaCapabilityExchange& Exchange() const;
+
+ /**
+ * Returns feature this capability represents
+ *
+ * @return feature this capability represents
+ */
+ const RStringF& Feature() const;
+
+ /**
+ * Checks if capability supports feature, found
+ * in Accept-Contact header
+ *
+ * @param acceptContact accept contact
+ * @return ETrue, if there is a match
+ */
+ virtual TBool Supports( const CSIPAcceptContactHeader& acceptContact );
+
+ /**
+ * Uses for conrolling capability
+ *
+ * @return ETrue, if capability is enabled
+ */
+ TBool& Enabled();
+
+ /**
+ * Populates response to query
+ *
+ * @param aQuery query as SIP server transaction
+ * @param aResponseHeaders SIP headers container for response
+ * @param aResponseContent SDP document container for response
+ */
+ virtual void PopulateResponseL(
+ CSIPServerTransaction& aQuery,
+ RPointerArray<CSIPHeaderBase>& aResponseHeaders,
+ CSdpDocument& aResponseContent );
+
+
+private:
+
+ /**
+ * Populates response to query
+ *
+ * @param aResponseContent SDP document container for response
+ */
+ void DoPopulateResponseL( CSdpDocument& aResponseContent );
+
+
+
+public: //static API
+
+
+ /**
+ * Creates SDP document
+ *
+ * @param aQuery received query
+ * @return SDP document
+ */
+ static CSdpDocument* ResponseContentLC(
+ const CSIPServerTransaction& aQuery );
+
+ /**
+ * Finds and resolves the codecs from SDP document
+ *
+ * @return the supported media types
+ */
+ static CDesCArrayFlat* ResolveCodecsL( CSdpDocument& aSDP );
+
+ /**
+ * Finds attribute field from SDP document
+ *
+ * @param aAttribute attribute name
+ * @param aSDP SDP document
+ * @return the attribute
+ */
+ static const CSdpAttributeField* Attribute( const RStringF& aAttribute,
+ CSdpDocument& aSDP );
+
+ /**
+ * Finds attribute field from media part in SDP document
+ *
+ * @param aMedia name of the media
+ * @param aAttribute attribute name
+ * @param aSDP SDP document
+ * @return the attribute
+ */
+ static const CSdpAttributeField* Attribute( const RStringF& aMedia,
+ const RStringF& aAttribute,
+ CSdpDocument& aSDP );
+public://new functions
+
+ /**
+ * Adds contact header to response of query
+ *
+ * @param aQuery query as SIP server transaction
+ * @param aResponseHeaders SIP headers container for response
+ */
+ virtual void AddContactHeaderL(
+ CSIPServerTransaction& aQuery,
+ RPointerArray<CSIPHeaderBase>& aResponseHeaders );
+
+ /**
+ * Creates origin field for sdp
+ *
+ * @param aNetType net type
+ * @param aLocalHost local host
+ * @param aHostType host type
+ * @return origin field
+ */
+ static CSdpOriginField* OriginFieldL( const RStringF& aNetType,
+ const TDesC8& aLocalHost,
+ const RStringF& aHostType );
+
+ /**
+ * Creates media line
+ *
+ * @param aMedia name of the media
+ * @param aFormatList format list
+ * @return media line
+ */
+ CSdpMediaField* MediaLineLC( const RStringF& aMedia,
+ const TDesC8& aFormatList ) const;
+
+
+ /**
+ * Creates rtpmap line
+ *
+ * @param aCodec name of coded
+ * @param aPayloadType payload type
+ * @param aClockRate clockrate
+ * @param aParams optional params
+ * @return rtpmap line
+ */
+ static CSdpFmtAttributeField* RtpMapLineLC( const TDesC8& aCodec,
+ const TUint64 aPayloadType,
+ const TUint64 aClockRate,
+ const TDesC8& aParams = KNullDesC8 );
+
+
+private:
+
+ CMusAvaCapabilityExchange& iExchange;
+ RStringF iFeature;
+ TBool iIsEnabled;
+
+ //for unit testing
+ //MUS_UNITTEST ( UT_ )
+
+ };
+
+#endif // CMUSAVACAPABILITY_H