--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothapitest/bluetoothsvs/T_BTSdpAPI/src/T_DataRSdpDatabase.cpp Fri Jan 15 08:13:17 2010 +0200
@@ -0,0 +1,372 @@
+/*
+* 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_DataRSdpDatabase.h"
+
+/*@{*/
+
+//Parameters
+_LIT(KObjectName, "objectName");
+_LIT(KInputUUIDHex, "inputUUIDHex");
+_LIT(KInputAttrIDHex, "inputAttrIDHex");
+_LIT(KInputDesCValueEight, "inputDesCValueEight");
+_LIT(KInputDesCValueSixteen, "inputDesCValueSixteen");
+_LIT(KInputInt, "inputInt");
+_LIT(KInputArrayPosition, "inputArrayPosition");
+
+//Commands
+_LIT(KCmdConstructor, "Constructor");
+_LIT(KCmdOpen, "Open");
+_LIT(KCmdClose, "Close");
+_LIT(KCmdCreateServiceRecordL, "CreateServiceRecordL");
+_LIT(KCmdDeleteRecordL, "DeleteRecordL");
+_LIT(KCmdDeleteRecord, "DeleteRecord");
+_LIT(KCmdDeleteAttributeL, "DeleteAttributeL");
+_LIT(KCmdDeleteAttribute, "DeleteAttribute");
+_LIT(KCmdUpdateAttributeL, "UpdateAttributeL");
+/*@}*/
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CT_DataRSdpdatabase* CT_DataRSdpdatabase::NewL()
+ {
+ CT_DataRSdpdatabase* ret=new (ELeave) CT_DataRSdpdatabase();
+ CleanupStack::PushL(ret);
+ ret->ConstructL();
+ CleanupStack::Pop(ret);
+ return ret;
+ }
+
+CT_DataRSdpdatabase::CT_DataRSdpdatabase()
+: iHandleArray(NULL)
+ {
+ }
+
+void CT_DataRSdpdatabase::ConstructL()
+ {
+ }
+
+CT_DataRSdpdatabase::~CT_DataRSdpdatabase()
+ {
+ DestroyData();
+ }
+
+void CT_DataRSdpdatabase::SetObjectL(TAny* aAny)
+ {
+ DestroyData();
+ iHandleArray = static_cast<CRSdpHandleArray*> (aAny);
+ }
+
+void CT_DataRSdpdatabase::DisownObjectL()
+ {
+ iHandleArray = NULL;
+ }
+
+void CT_DataRSdpdatabase::DestroyData()
+ {
+ delete iHandleArray;
+ iHandleArray=NULL;
+ }
+
+inline TCleanupOperation CT_DataRSdpdatabase::CleanupOperation()
+ {
+ return CleanupOperation;
+ }
+
+void CT_DataRSdpdatabase::CleanupOperation(TAny* aAny)
+ {
+ CRSdpHandleArray* handleArray=static_cast<CRSdpHandleArray*>(aAny);
+ delete handleArray;
+ }
+
+/**
+test script command entry point
+@internalAll
+@return ETrue if syncronous command otherwise EFalse
+@param aParam1 descriptor containing the command value
+@param aParam2 descriptor containing the command parameter
+@pre N/A
+@post N/A
+*/
+TBool CT_DataRSdpdatabase::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt /*aAsyncErrorIndex*/)
+ {
+ TBool ret=ETrue;
+
+ if ( aCommand==KCmdConstructor )
+ {
+ DoCmdConstructor();
+ }
+ else if ( aCommand==KCmdOpen )
+ {
+ DoCmdOpen(aSection);
+ }
+ else if( aCommand==KCmdClose )
+ {
+ DoCmdClose();
+ }
+ else if( aCommand==KCmdCreateServiceRecordL )
+ {
+ DoCmdCreateServiceRecordL(aSection);
+ }
+ else if( aCommand==KCmdDeleteRecordL )
+ {
+ DoCmdDeleteRecordL(aSection);
+ }
+ else if( aCommand==KCmdDeleteRecord )
+ {
+ DoCmdDeleteRecord(aSection);
+ }
+ else if( aCommand==KCmdDeleteAttributeL )
+ {
+ DoCmdDeleteAttributeL(aSection);
+ }
+ else if( aCommand==KCmdDeleteAttribute )
+ {
+ DoCmdDeleteAttribute(aSection);
+ }
+ else if( aCommand==KCmdUpdateAttributeL )
+ {
+ DoCmdUpdateAttributeL(aSection);
+ }
+ else
+ {
+ ret=EFalse;
+ }
+
+ return ret;
+ }
+
+
+void CT_DataRSdpdatabase::DoCmdConstructor()
+ {
+ DestroyData();
+
+ TRAPD(err, iHandleArray = new (ELeave) CRSdpHandleArray());
+ if(err != KErrNone)
+ {
+ ERR_PRINTF2(_L("**** RSdpDatabase Constructor failed with error %d"), err);
+ SetError(err);
+ }
+ }
+
+void CT_DataRSdpdatabase::DoCmdOpen(const TDesC& aSection)
+ {
+ TPtrC objectName;
+
+ if( GetStringFromConfig(aSection, KObjectName(), objectName) )
+ {
+ RSdp* rsdp = static_cast<RSdp*>(GetDataObjectL(objectName));
+
+ TInt error = iHandleArray->iDatabase.Open(*rsdp);
+ if(error != KErrNone)
+ {
+ ERR_PRINTF2(_L("**** RSdpDatabase Open failed with error %d"), error);
+ SetError(error);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing parameter %S"), &KObjectName());
+ SetBlockResult(EFail);
+ }
+ }
+
+void CT_DataRSdpdatabase::DoCmdClose()
+ {
+ iHandleArray->iDatabase.Close();
+ }
+
+void CT_DataRSdpdatabase::DoCmdCreateServiceRecordL(const TDesC& aSection)
+ {
+ TInt inputHex=0;
+
+ if( GetHexFromConfig(aSection, KInputUUIDHex(), inputHex))
+ {
+ INFO_PRINTF2(_L("Input Hex = %d"),inputHex);
+
+ TRAPD(errOne, iHandleArray->iDatabase.CreateServiceRecordL(TUUID(TUint32(inputHex)), iRecHandle));
+ if(errOne != KErrNone)
+ {
+ ERR_PRINTF2(_L("**** CreateServiceRecordL failed with error %d"), errOne);
+ SetError(errOne);
+ }
+
+ INFO_PRINTF1(_L("RSdpDatabase::CreateServiceRecordL"));
+ }
+ else
+ {
+ TPtrC objectName;
+
+ if( GetStringFromConfig(aSection, KObjectName(), objectName) )
+ {
+ CSdpAttrValueDES* tempUUIDList = static_cast<CSdpAttrValueDES*>(GetDataObjectL(objectName));
+
+ TRAPD(errTwo, iHandleArray->iDatabase.CreateServiceRecordL(*tempUUIDList, iRecHandle));
+ if(errTwo != KErrNone)
+ {
+ ERR_PRINTF2(_L("**** CreateServiceRecordL failed with error %d"), errTwo);
+ SetError(errTwo);
+ }
+
+ INFO_PRINTF1(_L("RSdpDatabase::CreateServiceRecordL (list)"));
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing parameter %S"), &KObjectName());
+ SetBlockResult(EFail);
+ }
+ }
+
+ INFO_PRINTF2(_L("iRecHandle = %d"), iRecHandle);
+ iHandleArray->iRecHandleArray.Append(iRecHandle);
+ }
+
+void CT_DataRSdpdatabase::DoCmdDeleteRecord(const TDesC& aSection)
+ {
+ TInt temp=0;
+ if( GetIntFromConfig(aSection, KInputArrayPosition(), temp))
+ {
+ iHandleArray->iDatabase.DeleteRecord(iHandleArray->iRecHandleArray[temp]);
+ iHandleArray->iRecHandleArray.Remove(temp);
+ }
+ else
+ {
+ TInt lastPosition=iHandleArray->iRecHandleArray.Count()-1;
+ INFO_PRINTF2(_L("DeleteRecord iRecHandle = %d"), iHandleArray->iRecHandleArray[lastPosition]);
+ iHandleArray->iDatabase.DeleteRecord(iHandleArray->iRecHandleArray[lastPosition]);
+ iHandleArray->iRecHandleArray.Remove(lastPosition);
+ }
+ }
+
+void CT_DataRSdpdatabase::DoCmdDeleteRecordL(const TDesC& aSection)
+ {
+
+ TInt temp=0;
+ if( GetIntFromConfig(aSection, KInputArrayPosition(), temp))
+ {
+ iHandleArray->iDatabase.DeleteRecordL(iHandleArray->iRecHandleArray[temp]);
+ iHandleArray->iRecHandleArray.Remove(temp);
+ }
+ else
+ {
+ TInt lastPosition=iHandleArray->iRecHandleArray.Count()-1;
+ INFO_PRINTF2(_L("DeleteRecord iRecHandle = %d"), iHandleArray->iRecHandleArray[lastPosition]);
+ iHandleArray->iDatabase.DeleteRecordL(iHandleArray->iRecHandleArray[lastPosition]);
+ iHandleArray->iRecHandleArray.Remove(lastPosition);
+ }
+ }
+
+void CT_DataRSdpdatabase::DoCmdDeleteAttribute(const TDesC& aSection)
+ {
+ TInt inputHex=0;
+ if( GetHexFromConfig(aSection, KInputAttrIDHex(), inputHex))
+ {
+ iHandleArray->iDatabase.DeleteAttribute(iRecHandle, inputHex);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing parameter %S"), &KInputAttrIDHex());
+ SetBlockResult(EFail);
+ }
+ }
+
+void CT_DataRSdpdatabase::DoCmdDeleteAttributeL(const TDesC& aSection)
+ {
+ TInt inputHex=0;
+
+ if( GetHexFromConfig(aSection, KInputAttrIDHex(), inputHex))
+ {
+ iHandleArray->iDatabase.DeleteAttributeL(iRecHandle, inputHex);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing parameter %S"), &KInputAttrIDHex());
+ SetBlockResult(EFail);
+ }
+ }
+
+void CT_DataRSdpdatabase::DoCmdUpdateAttributeL(const TDesC& aSection)
+ {
+ TInt inputHex=0;
+ TInt inputInt=0;
+ TPtrC inputStr;
+ TPtrC objectName;
+ CSdpAttrValue* attrVal= NULL;
+
+ if( GetHexFromConfig(aSection, KInputAttrIDHex(), inputHex))
+ {
+ INFO_PRINTF2(_L("Input Hex = %d"),inputHex);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing parameter %S"), &KInputAttrIDHex());
+ SetBlockResult(EFail);
+ }
+
+ TInt err=KErrNone;
+ if( GetIntFromConfig(aSection, KInputInt(), inputInt))
+ {
+ INFO_PRINTF2(_L("Input Int = %d"),inputInt);
+
+ TRAP(err, iHandleArray->iDatabase.UpdateAttributeL(iRecHandle, inputHex, inputInt));
+ INFO_PRINTF1(_L("RSdpDatabase::UpdateAttributeL (Int)"));
+ }
+ else
+ {
+ if( GetStringFromConfig(aSection, KObjectName(), objectName) )
+ {
+ attrVal = static_cast<CSdpAttrValue*>(GetDataObjectL(objectName));
+
+ TRAP(err, iHandleArray->iDatabase.UpdateAttributeL(iRecHandle, inputHex, *attrVal));
+ INFO_PRINTF1(_L("RSdpDatabase::UpdateAttributeL (attribute)"));
+ }
+ else
+ {
+ if( GetStringFromConfig(aSection, KInputDesCValueEight(), inputStr))
+ {
+ HBufC8* tempStr = HBufC8::NewLC(inputStr.Length());
+ tempStr->Des().Copy(inputStr);
+
+ TRAP(err, iHandleArray->iDatabase.UpdateAttributeL(iRecHandle, inputHex, *tempStr));
+ INFO_PRINTF1(_L("RSdpDatabase::UpdateAttributeL (descriptor TDesC8)"));
+ CleanupStack::PopAndDestroy(tempStr);
+ }
+ else
+ {
+ if( GetStringFromConfig(aSection, KInputDesCValueSixteen(), inputStr))
+ {
+ TRAP(err, iHandleArray->iDatabase.UpdateAttributeL(iRecHandle, inputHex, inputStr));
+ INFO_PRINTF1(_L("RSdpDatabase::UpdateAttributeL (descriptor TDesC16)"));
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Missing parameter %S"), &KInputDesCValueSixteen());
+ SetBlockResult(EFail);
+ }
+ }
+ }
+ }
+ if(err != KErrNone)
+ {
+ ERR_PRINTF2(_L("**** UpdateAttributeL failed with error %d"), err);
+ SetError(err);
+ }
+
+ INFO_PRINTF2(_L("iRecHandle = %d"), iRecHandle);
+ }