--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothapitest/bluetoothsvs/T_BTSdpAPI/src/T_DataSdpElementBuilder.cpp Fri Jan 15 08:13:17 2010 +0200
@@ -0,0 +1,487 @@
+/*
+* Copyright (c) 2005-2009 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:
+*
+*/
+
+#include "T_DataSdpElementBuilder.h"
+
+/*@{*/
+//Parameters
+_LIT(KType, "type");
+_LIT(KSizeDesc, "sizedesc");
+_LIT(KData, "data");
+_LIT(KUint, "uint");
+_LIT(KInt, "int");
+_LIT(KUUID, "uuid");
+_LIT(KBool, "bool");
+_LIT(KString, "string");
+_LIT(KUrl, "url");
+_LIT(KSdpIntBufObj, "sdpintbufobj");
+
+//Commands
+_LIT(KCmdBuildUnknownL, "BuildUnknownL");
+_LIT(KCmdBuildNilL, "BuildNilL");
+_LIT(KCmdBuildUintL, "BuildUintL");
+_LIT(KCmdBuildIntL, "BuildIntL");
+_LIT(KCmdBuildUUIDL, "BuildUUIDL");
+_LIT(KCmdBuildBooleanL, "BuildBooleanL");
+_LIT(KCmdBuildStringL, "BuildStringL");
+_LIT(KCmdBuildDESL, "BuildDESL");
+_LIT(KCmdBuildDEAL, "BuildDEAL");
+_LIT(KCmdStartListL, "StartListL");
+_LIT(KCmdEndListL, "EndListL");
+_LIT(KCmdBuildURLL, "BuildURLL");
+_LIT(KCmdMSEB_ExtensionInterfaceL, "MSEB_ExtensionInterfaceL");
+/*@}*/
+
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CT_DataSdpElementBuilder::CT_DataSdpElementBuilder(CDataWrapper& aDataWrapper)
+: iDataWrapper(aDataWrapper)
+ {
+ }
+
+CT_DataSdpElementBuilder::~CT_DataSdpElementBuilder()
+ {
+ }
+
+/**
+ * Process a command read from the ini file
+ *
+ * @param aCommand The command to process
+ * @param aSection The section in the ini containing data for the command
+ * @param aAsyncErrorIndex Command index for async calls to return errors to
+ *
+ * @return ETrue if the command is processed
+ *
+ * @leave System wide error
+ */
+TBool CT_DataSdpElementBuilder::DoCommandL(MSdpElementBuilder& aElementBuilder, const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt /*aAsyncErrorIndex*/)
+ {
+ TBool ret = ETrue;
+
+ if ( aCommand==KCmdBuildUnknownL )
+ {
+ DoCmdBuildUnknownL(aElementBuilder, aSection);
+ }
+ else if ( aCommand==KCmdBuildNilL )
+ {
+ DoCmdBuildNilL(aElementBuilder);
+ }
+ else if ( aCommand==KCmdBuildUintL )
+ {
+ DoCmdBuildUintL(aElementBuilder, aSection);
+ }
+ else if ( aCommand==KCmdBuildIntL )
+ {
+ DoCmdBuildIntL(aElementBuilder, aSection);
+ }
+ else if ( aCommand==KCmdBuildUUIDL )
+ {
+ DoCmdBuildUUIDL(aElementBuilder, aSection);
+ }
+ else if ( aCommand==KCmdBuildBooleanL )
+ {
+ DoCmdBuildBooleanL(aElementBuilder, aSection);
+ }
+ else if ( aCommand==KCmdBuildStringL )
+ {
+ DoCmdBuildStringL(aElementBuilder, aSection);
+ }
+ else if ( aCommand==KCmdBuildDESL )
+ {
+ DoCmdBuildDESL(aElementBuilder);
+ }
+ else if ( aCommand==KCmdBuildDEAL )
+ {
+ DoCmdBuildDEAL(aElementBuilder);
+ }
+ else if ( aCommand==KCmdStartListL )
+ {
+ DoCmdStartListL(aElementBuilder);
+ }
+ else if ( aCommand==KCmdEndListL )
+ {
+ DoCmdEndListL(aElementBuilder);
+ }
+ else if ( aCommand==KCmdBuildURLL )
+ {
+ DoCmdBuildURLL(aElementBuilder, aSection);
+ }
+ else if ( aCommand==KCmdMSEB_ExtensionInterfaceL )
+ {
+ DoCmdMSEB_ExtensionInterfaceL(aElementBuilder);
+ }
+ else
+ {
+ ret=EFalse;
+ }
+
+ return ret;
+ }
+
+/**
+Test MSdpElementBuilder::BuildUnknownL()
+*/
+void CT_DataSdpElementBuilder::DoCmdBuildUnknownL(MSdpElementBuilder& aElementBuilder, const TDesC& aSection)
+ {
+ TInt theValue;
+ if( iDataWrapper.GetIntFromConfig(aSection, KType(), theValue) )
+ {
+ TUint8 type = theValue;
+
+ if( iDataWrapper.GetIntFromConfig(aSection, KSizeDesc(), theValue) )
+ {
+ TUint8 sizeDesc = theValue;
+
+ TPtrC theString;
+ if( iDataWrapper.GetStringFromConfig(aSection, KData(), theString) )
+ {
+ HBufC8* theString8 = HBufC8::NewLC(theString.Length());
+ theString8->Des().Copy(theString);
+ TPtrC8 stringPtr=theString8->Des();
+ TRAPD(err, aElementBuilder.BuildUnknownL(type, sizeDesc, stringPtr));
+ if(err != KErrNone)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder BuildUnknownL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ CleanupStack::PopAndDestroy(theString8);
+ }
+ else
+ {
+ iDataWrapper.ERR_PRINTF2(_L("Missing parameter %S"), &KData());
+ iDataWrapper.SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ iDataWrapper.ERR_PRINTF2(_L("Missing parameter %S"), &KData());
+ iDataWrapper.SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ iDataWrapper.ERR_PRINTF2(_L("Missing parameter %S"), &KData());
+ iDataWrapper.SetBlockResult(EFail);
+ }
+ }
+
+
+/**
+Test MSdpElementBuilder::BuildNilL()
+*/
+void CT_DataSdpElementBuilder::DoCmdBuildNilL(MSdpElementBuilder& aElementBuilder)
+ {
+ iDataWrapper.INFO_PRINTF1(_L("MSdpElementBuilder BuildNilL Call"));
+
+ TRAPD(err, aElementBuilder.BuildNilL());
+ if(err != KErrNone)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder BuildNilL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ }
+
+
+/**
+Test MSdpElementBuilder::BuildUintL()
+*/
+void CT_DataSdpElementBuilder::DoCmdBuildUintL(MSdpElementBuilder& aElementBuilder, const TDesC& aSection)
+ {
+ iDataWrapper.INFO_PRINTF1(_L("MSdpElementBuilder BuildUintL Call"));
+
+ TPtrC theString;
+ TPtrC sdpIntBufName;
+ TBool foundParameter=EFalse;
+ if( iDataWrapper.GetStringFromConfig(aSection, KUint(), theString) )
+ {
+ foundParameter=ETrue;
+ HBufC8* theString8 = HBufC8::NewLC(theString.Length());
+ theString8->Des().Copy(theString);
+ TPtrC8 stringPtr = theString8->Des();
+ TRAPD(err, aElementBuilder.BuildUintL(stringPtr));
+ if(err != KErrNone)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder BuildUintL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ CleanupStack::PopAndDestroy(theString8);
+ }
+
+ if ( iDataWrapper.GetStringFromConfig(aSection, KSdpIntBufObj(), sdpIntBufName) )
+ {
+ foundParameter=ETrue;
+ TAny* object=iDataWrapper.GetDataObjectL(sdpIntBufName);
+ TSdpIntBuf<TUint8>* sdpIntBuf = static_cast<TSdpIntBuf<TUint8>*>(object);
+ TSdpIntBuf<TUint8> sdpIntObj = *sdpIntBuf;
+ const TUint8 *tmp=&sdpIntObj[0];
+ TPtrC8 bufferPtr(tmp, sdpIntObj.Length());
+ TRAPD(err, aElementBuilder.BuildUintL(bufferPtr));
+ if ( err!=KErrNone )
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder BuildUintL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ }
+
+ if (!foundParameter)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("Missing parameter %S"), &KSdpIntBufObj());
+ iDataWrapper.SetBlockResult(EFail);
+ }
+ }
+
+
+/**
+Test MSdpElementBuilder::BuildIntL()
+*/
+void CT_DataSdpElementBuilder::DoCmdBuildIntL(MSdpElementBuilder& aElementBuilder, const TDesC& aSection)
+ {
+ iDataWrapper.INFO_PRINTF1(_L("MSdpElementBuilder BuildIntL Call"));
+
+ TPtrC theString;
+ TPtrC sdpIntBufName;
+ TBool foundParameter=EFalse;
+ if( iDataWrapper.GetStringFromConfig(aSection, KInt(), theString) )
+ {
+ foundParameter=ETrue;
+ HBufC8* theString8 = HBufC8::NewLC(theString.Length());
+ theString8->Des().Copy(theString);
+ TPtrC8 stringPtr = theString8->Des();
+ TRAPD(err, aElementBuilder.BuildIntL(stringPtr));
+ if(err != KErrNone)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder BuildIntL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ CleanupStack::PopAndDestroy(theString8);
+ }
+
+ if ( iDataWrapper.GetStringFromConfig(aSection, KSdpIntBufObj(), sdpIntBufName) )
+ {
+ foundParameter=ETrue;
+ TAny* object=iDataWrapper.GetDataObjectL(sdpIntBufName);
+ TSdpIntBuf<TUint8>* sdpIntBuf = static_cast<TSdpIntBuf<TUint8>*>(object);
+ TSdpIntBuf<TUint8> sdpIntObj = *sdpIntBuf;
+ const TUint8 *tmp=&sdpIntObj[0];
+ TPtrC8 bufferPtr(tmp, sdpIntObj.Length());
+ TRAPD(err, aElementBuilder.BuildIntL(bufferPtr));
+ if ( err!=KErrNone )
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder BuildIntL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ }
+
+ if (!foundParameter)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("Missing parameter %S"), &KSdpIntBufObj());
+ iDataWrapper.SetBlockResult(EFail);
+ }
+ }
+
+
+/**
+Test MSdpElementBuilder::BuildUUIDL()
+*/
+void CT_DataSdpElementBuilder::DoCmdBuildUUIDL(MSdpElementBuilder& aElementBuilder, const TDesC& aSection)
+ {
+ iDataWrapper.INFO_PRINTF1(_L("MSdpElementBuilder BuildUUIDL Call"));
+
+ TInt theValue;
+ if( iDataWrapper.GetIntFromConfig(aSection, KUUID(), theValue) )
+ {
+ TUUID theUUID(theValue);
+
+ TRAPD(err, aElementBuilder.BuildUUIDL(theUUID));
+ if(err != KErrNone)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder BuildUUIDL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ }
+ else
+ {
+ iDataWrapper.ERR_PRINTF2(_L("Missing parameter %S"), &KUUID());
+ iDataWrapper.SetBlockResult(EFail);
+ }
+ }
+
+
+/**
+Test MSdpElementBuilder::BuildBooleanL()
+*/
+void CT_DataSdpElementBuilder::DoCmdBuildBooleanL(MSdpElementBuilder& aElementBuilder, const TDesC& aSection)
+ {
+ iDataWrapper.INFO_PRINTF1(_L("MSdpElementBuilder BuildBooleanL Call"));
+
+ TBool boolValue = 0;
+ if( iDataWrapper.GetBoolFromConfig(aSection, KBool(), boolValue) )
+ {
+ TRAPD(err, aElementBuilder.BuildBooleanL(boolValue));
+ if(err != KErrNone)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder BuildBooleanL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ }
+ else
+ {
+ iDataWrapper.ERR_PRINTF2(_L("Missing parameter %S"), &KBool());
+ iDataWrapper.SetBlockResult(EFail);
+ }
+ }
+
+
+/**
+Test MSdpElementBuilder::BuildStringL()
+*/
+void CT_DataSdpElementBuilder::DoCmdBuildStringL(MSdpElementBuilder& aElementBuilder, const TDesC& aSection)
+ {
+ iDataWrapper.INFO_PRINTF1(_L("MSdpElementBuilder BuildStringL Call"));
+
+ TPtrC theString;
+ if( iDataWrapper.GetStringFromConfig(aSection, KString(), theString) )
+ {
+ HBufC8* theString8=HBufC8::NewLC(theString.Length());
+ theString8->Des().Copy(theString);
+ TPtrC8 stringPtr = theString8->Des();
+ TRAPD(err, aElementBuilder.BuildStringL(stringPtr));
+ if(err != KErrNone)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder BuildStringL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ CleanupStack::PopAndDestroy(theString8);
+ }
+ else
+ {
+ iDataWrapper.ERR_PRINTF2(_L("Missing parameter %S"), &KString());
+ iDataWrapper.SetBlockResult(EFail);
+ }
+ }
+
+/**
+Test MSdpElementBuilder::BuildDESL()
+*/
+void CT_DataSdpElementBuilder::DoCmdBuildDESL(MSdpElementBuilder& aElementBuilder)
+ {
+ iDataWrapper.INFO_PRINTF1(_L("MSdpElementBuilder BuildDESL Call"));
+
+ TRAPD(err, aElementBuilder.BuildDESL());
+ if(err != KErrNone)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder BuildDESL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ }
+
+
+/**
+Test MSdpElementBuilder::BuildDEAL()
+*/
+void CT_DataSdpElementBuilder::DoCmdBuildDEAL(MSdpElementBuilder& aElementBuilder)
+ {
+ iDataWrapper.INFO_PRINTF1(_L("MSdpElementBuilder BuildDEAL Call"));
+
+ TRAPD(err, aElementBuilder.BuildDEAL());
+ if(err != KErrNone)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder BuildDEAL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ }
+
+
+/**
+Test MSdpElementBuilder::StartListL()
+*/
+void CT_DataSdpElementBuilder::DoCmdStartListL(MSdpElementBuilder& aElementBuilder)
+ {
+ iDataWrapper.INFO_PRINTF1(_L("MSdpElementBuilder StartListL Call"));
+
+ TRAPD(err, aElementBuilder.StartListL());
+ if(err != KErrNone)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder StartListL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ }
+
+
+/**
+Test MSdpElementBuilder::EndListL()
+*/
+void CT_DataSdpElementBuilder::DoCmdEndListL(MSdpElementBuilder& aElementBuilder)
+ {
+ iDataWrapper.INFO_PRINTF1(_L("MSdpElementBuilder EndListL Call"));
+
+ TRAPD(err, aElementBuilder.EndListL());
+ if(err != KErrNone)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder EndListL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ }
+
+
+/**
+Test MSdpElementBuilder::BuildURLL()
+*/
+void CT_DataSdpElementBuilder::DoCmdBuildURLL(MSdpElementBuilder& aElementBuilder, const TDesC& aSection)
+ {
+ iDataWrapper.INFO_PRINTF1(_L("MSdpElementBuilder BuildURLL Call"));
+
+ TPtrC theString;
+ if( iDataWrapper.GetStringFromConfig(aSection, KUrl(), theString) )
+ {
+ HBufC8* theString8=HBufC8::NewLC(theString.Length());
+ theString8->Des().Copy(theString);
+ TPtrC8 stringPtr = theString8->Des();
+ TRAPD(err, aElementBuilder.BuildURLL(stringPtr));
+ if(err != KErrNone)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder BuildURLL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ CleanupStack::PopAndDestroy(theString8);
+ }
+ else
+ {
+ iDataWrapper.ERR_PRINTF2(_L("Missing parameter %S"), &KUrl());
+ iDataWrapper.SetBlockResult(EFail);
+ }
+ }
+
+
+/**
+Test MSdpElementBuilder::MSEB_ExtensionInterfaceL()
+*/
+void CT_DataSdpElementBuilder::DoCmdMSEB_ExtensionInterfaceL(MSdpElementBuilder& aElementBuilder)
+ {
+ iDataWrapper.INFO_PRINTF1(_L("MSdpElementBuilder MSEB_ExtensionInterfaceL Call"));
+
+ void* tmpVoid;
+ TRAPD(err, aElementBuilder.MSEB_ExtensionInterfaceL(KNullUid, tmpVoid));
+ if(err != KErrNone)
+ {
+ iDataWrapper.ERR_PRINTF2(_L("MSdpElementBuilder MSEB_ExtensionInterfaceL failed with error %d"), err);
+ iDataWrapper.SetError(err);
+ }
+ }