diff -r 000000000000 -r 29b1cd4cb562 bluetoothapitest/bluetoothsvs/T_BTSdpAPI/src/T_DataSdpElementBuilder.cpp --- /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* sdpIntBuf = static_cast*>(object); + TSdpIntBuf 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* sdpIntBuf = static_cast*>(object); + TSdpIntBuf 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); + } + }