--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothapitest/bluetoothsvs/T_BTSdpAPI/src/T_DataSdpAttrValue.cpp Fri Jan 15 08:13:17 2010 +0200
@@ -0,0 +1,513 @@
+/*
+* 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_DataSdpAttrValue.h"
+#include "T_BTUtil.h"
+
+/*@{*/
+//Parameters
+_LIT(KExpected, "expected");
+_LIT(KExpectedRes, "expectedVisitorResult");
+_LIT(KExpectedLL, "expectedLL");
+_LIT(KExpectedLH, "expectedLH");
+_LIT(KExpectedHL, "expectedHL");
+_LIT(KExpectedHH, "expectedHH");
+
+//Commands
+_LIT(KCmdAcceptVisitorL, "AcceptVisitorL");
+_LIT(KCmdBool, "Bool");
+_LIT(KCmdDataSize, "DataSize");
+_LIT(KCmdDes, "Des");
+_LIT(KCmdDoesIntFit, "DoesIntFit");
+_LIT(KCmdInt, "Int");
+_LIT(KCmdType, "Type");
+_LIT(KCmdUint, "Uint");
+_LIT(KCmdUUID, "UUID");
+_LIT(KCmdMSAVV_ExtensionInterfaceL, "MSAVV_ExtensionInterfaceL");
+/*@}*/
+
+const TInt KAttrValueStringBufLen = 256;
+const TInt KVisitorResLen = 512;
+const TInt KMaxDataSize = 4;
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CT_DataSdpAttrValue::CT_DataSdpAttrValue()
+: iVisitorResult(new TUint16[KVisitorResLen],KVisitorResLen)
+ {
+ }
+
+/**
+ * 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_DataSdpAttrValue::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt /*aAsyncErrorIndex*/)
+ {
+ TBool ret = ETrue;
+
+ if ( aCommand==KCmdAcceptVisitorL )
+ {
+ DoCmdAcceptVisitor(aSection);
+ }
+ else if ( aCommand==KCmdBool )
+ {
+ DoCmdBool(aSection);
+ }
+ else if ( aCommand==KCmdDataSize )
+ {
+ DoCmdDataSize(aSection);
+ }
+ else if ( aCommand==KCmdDes )
+ {
+ DoCmdDes(aSection);
+ }
+ else if ( aCommand==KCmdDoesIntFit )
+ {
+ DoCmdDoesIntFit(aSection);
+ }
+ else if ( aCommand==KCmdInt )
+ {
+ DoCmdInt(aSection);
+ }
+ else if ( aCommand==KCmdType )
+ {
+ DoCmdType(aSection);
+ }
+ else if ( aCommand==KCmdUint )
+ {
+ DoCmdUint(aSection);
+ }
+ else if ( aCommand==KCmdUUID )
+ {
+ DoCmdUUID(aSection);
+ }
+ else if ( aCommand==KCmdMSAVV_ExtensionInterfaceL )
+ {
+ DoCmdMSAVV_ExtensionInterfaceL();
+ }
+ else
+ {
+ ret=EFalse;
+ }
+
+ return ret;
+ }
+
+void CT_DataSdpAttrValue::DoCmdAcceptVisitor(const TDesC& aSection)
+ {
+ TRAPD(err, GetSdpAttrValue()->AcceptVisitorL(*this));
+ if ( err!=KErrNone )
+ {
+ ERR_PRINTF2(_L("CSdpAttrValue::AcceptVisitorL failed with error %d"), err);
+ SetError(err);
+ return;
+ }
+
+ TPtrC expected;
+ if(GetStringFromConfig(aSection, KExpectedRes(), expected))
+ {
+ TPtr actual = GetVisitorResult();
+ INFO_PRINTF1(_L("Check result. Actual value:"));
+ INFO_PRINTF1(actual);
+ if(actual != expected)
+ {
+ INFO_PRINTF1(_L("CSdpAttrValue::AcceptVisitorL, Result is not as expected !"));
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("CSdpAttrValue::AcceptVisitorL, Result is correct !"));
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing expected value %S"), &KExpectedRes());
+ SetBlockResult(EFail);
+ }
+ }
+
+void CT_DataSdpAttrValue::DoCmdBool(const TDesC& aSection)
+ {
+ TBool actual = GetSdpAttrValue()->Bool();
+ INFO_PRINTF2(_L("CSdpAttrValue::Bool = %d"), actual);
+
+ TBool expected;
+ if ( GetBoolFromConfig(aSection, KExpected(), expected) )
+ {
+ if ( actual!=expected )
+ {
+ ERR_PRINTF1(_L("Bool is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing expected value %S"), &KExpected());
+ SetBlockResult(EFail);
+ }
+ }
+
+void CT_DataSdpAttrValue::DoCmdDataSize(const TDesC& aSection)
+ {
+ TUint actual = GetSdpAttrValue()->DataSize();
+ INFO_PRINTF2(_L("CSdpAttrValue::Size = %d"), actual);
+
+ TInt expected;
+ if (GetIntFromConfig(aSection, KExpected(), expected))
+ {
+ if(actual!=expected )
+ {
+ ERR_PRINTF1(_L("DataSize is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing expected value %S"), &KExpected());
+ SetBlockResult(EFail);
+ }
+ }
+
+void CT_DataSdpAttrValue::DoCmdDes(const TDesC& aSection)
+ {
+ TPtrC8 actual=GetSdpAttrValue()->Des();
+ HBufC* buffer=HBufC::NewLC(actual.Length());
+ TPtr bufferPtr=buffer->Des();
+ bufferPtr.Copy(actual);
+ INFO_PRINTF1(_L("CSdpAttrValue::Des result:"));
+ INFO_PRINTF1(bufferPtr);
+
+ TPtrC expected;
+ if ( GetStringFromConfig(aSection, KExpected(), expected) )
+ {
+ if ( bufferPtr!=expected )
+ {
+ ERR_PRINTF1(_L("Des is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing expected value %S"), &KExpected());
+ SetBlockResult(EFail);
+ }
+ CleanupStack::PopAndDestroy(buffer);
+ }
+
+void CT_DataSdpAttrValue::DoCmdDoesIntFit(const TDesC& aSection)
+ {
+ TBool actual=GetSdpAttrValue()->DoesIntFit();
+
+ TBool expected;
+ if ( GetBoolFromConfig(aSection, KExpected(), expected) )
+ {
+ if ( actual!=expected )
+ {
+ ERR_PRINTF1(_L("DoesIntFit is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing expected value %S"), &KExpected());
+ SetBlockResult(EFail);
+ }
+ }
+
+void CT_DataSdpAttrValue::DoCmdInt(const TDesC& aSection)
+ {
+ TInt actual = GetSdpAttrValue()->Int();
+ INFO_PRINTF2(_L("CSdpAttrValue::Int = %d"), actual);
+
+ TInt expected;
+ if ( GetIntFromConfig(aSection, KExpected(), expected) )
+ {
+ if ( actual!=expected )
+ {
+ ERR_PRINTF1(_L("Int is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing expected value %S"), &KExpected());
+ SetBlockResult(EFail);
+ }
+ }
+
+void CT_DataSdpAttrValue::DoCmdType(const TDesC& aSection)
+ {
+ TSdpElementType actual=GetSdpAttrValue()->Type();
+ INFO_PRINTF2(_L("CSdpAttrValue::Type = %d"), actual);
+
+ TSdpElementType expected;
+ if ( CT_BTUtil::ReadSdpElementType(*this, expected, aSection, KExpected()) )
+ {
+ if ( actual!=expected )
+ {
+ ERR_PRINTF1(_L("Type is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("Missing expected value Type"));
+ SetBlockResult(EFail);
+ }
+ }
+
+void CT_DataSdpAttrValue::DoCmdUint(const TDesC& aSection)
+ {
+ TInt actual = static_cast<TInt>(GetSdpAttrValue()->Uint());
+ INFO_PRINTF2(_L("CSdpAttrValue::Uint = %d"), actual);
+
+ TInt expected;
+ if ( GetIntFromConfig(aSection, KExpected(), expected) )
+ {
+ if ( actual!=expected )
+ {
+ ERR_PRINTF1(_L("Uint is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing expected value %S"), &KExpected());
+ SetBlockResult(EFail);
+ }
+ }
+
+void CT_DataSdpAttrValue::DoCmdUUID(const TDesC& aSection)
+ {
+ TBool ifexpectedExit = EFalse;
+ TBool ifexpectedHHExit = EFalse;
+ TBool ifexpectedHLExit = EFalse;
+ TBool ifexpectedLHExit = EFalse;
+ TBool ifexpectedLLExit = EFalse;
+ TInt expected = 0;
+ TInt expectedHH = 0;
+ TInt expectedHL = 0;
+ TInt expectedLH = 0;
+ TInt expectedLL = 0;
+ TUUID actualUUid = NULL;
+ TInt actualIntUUid = NULL;
+
+
+
+ actualUUid = GetSdpAttrValue()->UUID();
+ actualIntUUid = CT_BTUtil::ConvertUUID32toInt(actualUUid);
+
+
+ if ( GetIntFromConfig(aSection, KExpected(), expected) )
+ {
+ INFO_PRINTF2(_L("CSdpAttrValue::UUID call actual result: %d"), actualIntUUid);
+ ifexpectedExit=ETrue;
+ }
+ else //to get four input values for 128-bit TUUID object
+ {
+ if ( GetIntFromConfig(aSection, KExpectedHH(), expectedHH))
+ {
+ ifexpectedHHExit=ETrue;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing expected value %S"), &KExpectedHH());
+ SetBlockResult(EFail);
+ }
+
+ if ( GetIntFromConfig(aSection, KExpectedHL(), expectedHL))
+ {
+ ifexpectedHLExit=ETrue;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing expected value %S"), &KExpectedHL());
+ SetBlockResult(EFail);
+ }
+
+ if ( GetIntFromConfig(aSection, KExpectedLH(), expectedLH))
+ {
+ ifexpectedLHExit=ETrue;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing expected value %S"), &KExpectedLH());
+ SetBlockResult(EFail);
+ }
+
+ if ( GetIntFromConfig(aSection, KExpectedLL(), expectedLL))
+ {
+ ifexpectedLLExit=ETrue;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing expected value %S"), &KExpectedLL());
+ SetBlockResult(EFail);
+ }
+ }
+
+
+ if (ifexpectedExit)
+ {
+ if ( actualIntUUid!=expected )
+ {
+ ERR_PRINTF1(_L("UUID is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ }
+ else if(ifexpectedHHExit && ifexpectedHLExit && ifexpectedLHExit && ifexpectedLLExit)//to compare four values with input
+ {
+ INFO_PRINTF2(_L("expected Highest order word (HH bits 96 - 127): %d"), expectedHH);
+ INFO_PRINTF2(_L("expected Second highest order word (HL bits 64 - 95): %d"), expectedHL);
+ INFO_PRINTF2(_L("expected Second lowest order word (LH bits 32 - 63): %d"), expectedLH);
+ INFO_PRINTF2(_L("expected Low order word (LL bits 0 - 31): %d"), expectedLL);
+
+ TUUID expectedUUID(expectedHH,expectedHL,expectedLH,expectedLL);
+
+ if ( actualUUid!=expectedUUID )
+ {
+ ERR_PRINTF1(_L("128 bits of UUID is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ }
+ }
+
+void CT_DataSdpAttrValue::VisitAttributeValueL(CSdpAttrValue& aValue, TSdpElementType aType)
+ {
+ INFO_PRINTF1(_L("MSdpAttributeValueVisitor VisitAttributeValueL Call"));
+ HBufC16* string16 = HBufC16::NewLC(KAttrValueStringBufLen);
+
+ switch (aType)
+ {
+ case ETypeNil:
+ INFO_PRINTF1(_L("TSdpElementType is ETypeNil"));
+ iVisitorResult.Append(_L("&type=Nil"));
+ break;
+ case ETypeUint:
+ if( aValue.DataSize() <= (static_cast<TUint>(KMaxDataSize)) )
+ {
+ INFO_PRINTF2(_L("TSdpElementType is ETypeUint. Value = %d"), aValue.Uint());
+ iVisitorResult.Append(_L("&type=Uint&value="));
+ iVisitorResult.AppendNum(aValue.Uint());
+ }
+ else
+ {
+ string16->Des().Copy(aValue.Des());
+ TPtrC16 tprStringUint = string16->Des();
+ INFO_PRINTF1(_L("TSdpElementType is ETypeUint. Value = "));
+ INFO_PRINTF1(tprStringUint);
+ iVisitorResult.Append(_L("&type=Uint&value="));
+ iVisitorResult.Append(tprStringUint);
+ }
+ break;
+ case ETypeInt:
+ INFO_PRINTF2(_L("TSdpElementType is ETypeInt. Value = %d"), aValue.Int());
+ iVisitorResult.Append(_L("&type=Int&value="));
+ iVisitorResult.AppendNum(aValue.Int());
+ break;
+ case ETypeUUID:
+ {
+ TUUID uUid = aValue.UUID();
+ TUint intUUid= CT_BTUtil::ConvertUUID32toInt(uUid);
+ INFO_PRINTF2(_L("TSdpElementType is ETypeUUID: Value is %d"),intUUid);
+ iVisitorResult.Append(_L("&type=UUID&value="));
+ iVisitorResult.AppendNum(intUUid);
+ }
+ break;
+ case ETypeString:
+ {
+ string16->Des().Copy(aValue.Des());
+ TPtrC16 tprString = string16->Des();
+ INFO_PRINTF1(_L("TSdpElementType is ETypeString. Value = "));
+ INFO_PRINTF1(tprString);
+ iVisitorResult.Append(_L("&type=String&value="));
+ iVisitorResult.Append(tprString);
+ }
+ break;
+ case ETypeBoolean:
+ INFO_PRINTF2(_L("TSdpElementType is ETypeBoolean. Value = %d"), aValue.Bool());
+ iVisitorResult.Append(_L("&type=Boolean&value="));
+ iVisitorResult.AppendNum(aValue.Bool());
+ break;
+ case ETypeDES:
+ INFO_PRINTF1(_L("TSdpElementType is ETypeDES"));
+ iVisitorResult.Append(_L("&type=DES"));
+ break;
+ case ETypeDEA:
+ INFO_PRINTF1(_L("TSdpElementType is ETypeDEA"));
+ iVisitorResult.Append(_L("&type=DEA"));
+ break;
+ case ETypeURL:
+ {
+ string16->Des().Copy(aValue.Des());
+ TPtrC16 tprStringURL = string16->Des();
+ INFO_PRINTF1(_L("TSdpElementType is ETypeURL. Value = "));
+ INFO_PRINTF1(tprStringURL);
+ iVisitorResult.Append(_L("&type=URL&value="));
+ iVisitorResult.Append(tprStringURL);
+ }
+ break;
+ case ETypeEncoded:
+ INFO_PRINTF1(_L("TSdpElementType is ETypeEncoded"));
+ iVisitorResult.Append(_L("&type=Encoded"));
+ break;
+ default:
+ INFO_PRINTF2(_L("TSdpElementType is Unknown %d"), aType);
+ iVisitorResult.Append(_L("&type=Unknown"));
+ break;
+ }
+ CleanupStack::PopAndDestroy(string16);
+ }
+
+TPtr CT_DataSdpAttrValue::GetVisitorResult()
+ {
+ return iVisitorResult;
+ }
+
+void CT_DataSdpAttrValue::ResetVisitorResult()
+ {
+ iVisitorResult.Zero();
+ }
+
+void CT_DataSdpAttrValue::StartListL(CSdpAttrValueList& /*aList*/)
+ {
+ }
+
+void CT_DataSdpAttrValue::EndListL()
+ {
+ }
+
+void CT_DataSdpAttrValue::DoCmdMSAVV_ExtensionInterfaceL()
+ {
+ INFO_PRINTF1(_L("MSdpAttributeValueVisitor MSAVV_ExtensionInterfaceL call"));
+ void* tmpVoid;
+ TRAPD(err, this->MSAVV_ExtensionInterfaceL(KNullUid, tmpVoid));
+ if(err != KErrNone)
+ {
+ ERR_PRINTF2(_L("MSdpAttributeValueVisitor MSAVV_ExtensionInterfaceL failed with error %d"), err);
+ SetError(err);
+ }
+ }