bluetoothapitest/bluetoothsvs/T_BTSdpAPI/src/T_DataRSdpDatabase.cpp
changeset 0 29b1cd4cb562
equal deleted inserted replaced
-1:000000000000 0:29b1cd4cb562
       
     1 /*
       
     2 * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include "T_DataRSdpDatabase.h"
       
    19 
       
    20 /*@{*/
       
    21 
       
    22 //Parameters
       
    23 _LIT(KObjectName,							"objectName");
       
    24 _LIT(KInputUUIDHex,							"inputUUIDHex");
       
    25 _LIT(KInputAttrIDHex,						"inputAttrIDHex");
       
    26 _LIT(KInputDesCValueEight,					"inputDesCValueEight");
       
    27 _LIT(KInputDesCValueSixteen,				"inputDesCValueSixteen");
       
    28 _LIT(KInputInt,								"inputInt");
       
    29 _LIT(KInputArrayPosition,					"inputArrayPosition");
       
    30 
       
    31 //Commands
       
    32 _LIT(KCmdConstructor,						"Constructor");
       
    33 _LIT(KCmdOpen,								"Open");
       
    34 _LIT(KCmdClose,								"Close");
       
    35 _LIT(KCmdCreateServiceRecordL,				"CreateServiceRecordL");
       
    36 _LIT(KCmdDeleteRecordL,						"DeleteRecordL");
       
    37 _LIT(KCmdDeleteRecord,						"DeleteRecord");
       
    38 _LIT(KCmdDeleteAttributeL,					"DeleteAttributeL");
       
    39 _LIT(KCmdDeleteAttribute,					"DeleteAttribute");
       
    40 _LIT(KCmdUpdateAttributeL,					"UpdateAttributeL");
       
    41 /*@}*/
       
    42 
       
    43 //////////////////////////////////////////////////////////////////////
       
    44 // Construction/Destruction
       
    45 //////////////////////////////////////////////////////////////////////
       
    46 
       
    47 CT_DataRSdpdatabase* CT_DataRSdpdatabase::NewL()
       
    48 	{
       
    49 	CT_DataRSdpdatabase*	ret=new	(ELeave) CT_DataRSdpdatabase();
       
    50 	CleanupStack::PushL(ret);
       
    51 	ret->ConstructL();
       
    52 	CleanupStack::Pop(ret);
       
    53 	return ret;
       
    54 	}
       
    55 
       
    56 CT_DataRSdpdatabase::CT_DataRSdpdatabase()
       
    57 :	iHandleArray(NULL)
       
    58 	{
       
    59 	}
       
    60 
       
    61 void CT_DataRSdpdatabase::ConstructL()
       
    62 	{
       
    63 	}
       
    64 
       
    65 CT_DataRSdpdatabase::~CT_DataRSdpdatabase()
       
    66 	{
       
    67 	DestroyData();
       
    68 	}
       
    69 
       
    70 void CT_DataRSdpdatabase::SetObjectL(TAny* aAny)
       
    71 	{
       
    72 	DestroyData();
       
    73 	iHandleArray = static_cast<CRSdpHandleArray*> (aAny);
       
    74 	}
       
    75 
       
    76 void CT_DataRSdpdatabase::DisownObjectL()
       
    77 	{
       
    78 	iHandleArray = NULL;
       
    79 	}
       
    80 
       
    81 void CT_DataRSdpdatabase::DestroyData()
       
    82 	{
       
    83 	delete iHandleArray;
       
    84 	iHandleArray=NULL;
       
    85 	}
       
    86 
       
    87 inline TCleanupOperation CT_DataRSdpdatabase::CleanupOperation()
       
    88 	{
       
    89 	return CleanupOperation;
       
    90 	}
       
    91 
       
    92 void CT_DataRSdpdatabase::CleanupOperation(TAny* aAny)
       
    93 	{
       
    94 	CRSdpHandleArray* handleArray=static_cast<CRSdpHandleArray*>(aAny);
       
    95 	delete handleArray;
       
    96 	}
       
    97 
       
    98 /**
       
    99 test script	command	entry point
       
   100 @internalAll
       
   101 @return	ETrue if syncronous	command	otherwise EFalse
       
   102 @param aParam1 descriptor containing the command value
       
   103 @param aParam2 descriptor containing the command parameter
       
   104 @pre N/A
       
   105 @post N/A
       
   106 */
       
   107 TBool CT_DataRSdpdatabase::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt /*aAsyncErrorIndex*/)
       
   108 	{
       
   109 	TBool	ret=ETrue;
       
   110 
       
   111 	if ( aCommand==KCmdConstructor )
       
   112 		{
       
   113 		DoCmdConstructor();
       
   114 		}
       
   115 	else if	( aCommand==KCmdOpen )
       
   116 		{
       
   117 		DoCmdOpen(aSection);
       
   118 		}
       
   119 	else if( aCommand==KCmdClose )
       
   120 		{
       
   121 		DoCmdClose();
       
   122 		}
       
   123 	else if( aCommand==KCmdCreateServiceRecordL	)
       
   124 		{
       
   125 		DoCmdCreateServiceRecordL(aSection);
       
   126 		}
       
   127 	else if( aCommand==KCmdDeleteRecordL )
       
   128 		{
       
   129 		DoCmdDeleteRecordL(aSection);
       
   130 		}
       
   131 	else if( aCommand==KCmdDeleteRecord )
       
   132 		{
       
   133 		DoCmdDeleteRecord(aSection);
       
   134 		}
       
   135 	else if( aCommand==KCmdDeleteAttributeL )
       
   136 		{
       
   137 		DoCmdDeleteAttributeL(aSection);
       
   138 		}
       
   139 	else if( aCommand==KCmdDeleteAttribute )
       
   140 		{
       
   141 		DoCmdDeleteAttribute(aSection);
       
   142 		}
       
   143 	else if( aCommand==KCmdUpdateAttributeL )
       
   144 		{
       
   145 		DoCmdUpdateAttributeL(aSection);
       
   146 		}
       
   147 	else
       
   148 		{
       
   149 		ret=EFalse;
       
   150 		}
       
   151 
       
   152 	return ret;
       
   153 	}
       
   154 
       
   155 
       
   156 void CT_DataRSdpdatabase::DoCmdConstructor()
       
   157 	{
       
   158 	DestroyData();
       
   159 
       
   160 	TRAPD(err,	iHandleArray =	new	(ELeave) CRSdpHandleArray());
       
   161 	if(err	!= KErrNone)
       
   162 		{
       
   163 		ERR_PRINTF2(_L("**** RSdpDatabase	Constructor	failed	with error %d"), err);
       
   164 		SetError(err);
       
   165 		}
       
   166 	}
       
   167 
       
   168 void CT_DataRSdpdatabase::DoCmdOpen(const TDesC& aSection)
       
   169 	{
       
   170 	TPtrC		objectName;
       
   171 
       
   172 	if( GetStringFromConfig(aSection, KObjectName(), objectName) )
       
   173 		{
       
   174 		RSdp*	rsdp = static_cast<RSdp*>(GetDataObjectL(objectName));
       
   175 
       
   176 		TInt error	= iHandleArray->iDatabase.Open(*rsdp);
       
   177 		if(error !=	KErrNone)
       
   178 			{
       
   179 			ERR_PRINTF2(_L("**** RSdpDatabase	Open failed	with error %d"), error);
       
   180 			SetError(error);
       
   181 			}
       
   182 		}
       
   183 	else
       
   184 		{
       
   185 		ERR_PRINTF2(_L("Missing parameter %S"), &KObjectName());
       
   186 		SetBlockResult(EFail);
       
   187 		}
       
   188 	}
       
   189 
       
   190 void CT_DataRSdpdatabase::DoCmdClose()
       
   191 	{
       
   192 	iHandleArray->iDatabase.Close();
       
   193 	}
       
   194 
       
   195 void CT_DataRSdpdatabase::DoCmdCreateServiceRecordL(const TDesC& aSection)
       
   196 	{
       
   197 	TInt	inputHex=0;
       
   198 
       
   199 	if(	GetHexFromConfig(aSection, KInputUUIDHex(), inputHex))
       
   200 		{
       
   201 		INFO_PRINTF2(_L("Input Hex = %d"),inputHex);
       
   202 
       
   203 		TRAPD(errOne,	iHandleArray->iDatabase.CreateServiceRecordL(TUUID(TUint32(inputHex)), iRecHandle));
       
   204 		if(errOne	!= KErrNone)
       
   205 			{
       
   206 			ERR_PRINTF2(_L("**** CreateServiceRecordL	failed with	error %d"),	errOne);
       
   207 			SetError(errOne);
       
   208 			}
       
   209 
       
   210 		INFO_PRINTF1(_L("RSdpDatabase::CreateServiceRecordL"));
       
   211 		}
       
   212 	else
       
   213 		{
       
   214 		TPtrC				objectName;
       
   215 
       
   216 		if( GetStringFromConfig(aSection, KObjectName(), objectName) )
       
   217 			{
       
   218 			CSdpAttrValueDES*	tempUUIDList = static_cast<CSdpAttrValueDES*>(GetDataObjectL(objectName));
       
   219 
       
   220 			TRAPD(errTwo,	iHandleArray->iDatabase.CreateServiceRecordL(*tempUUIDList, iRecHandle));
       
   221 			if(errTwo	!= KErrNone)
       
   222 				{
       
   223 				ERR_PRINTF2(_L("**** CreateServiceRecordL	failed with	error %d"),	errTwo);
       
   224 				SetError(errTwo);
       
   225 				}
       
   226 
       
   227 			INFO_PRINTF1(_L("RSdpDatabase::CreateServiceRecordL (list)"));
       
   228 			}
       
   229 		else
       
   230 			{
       
   231 			ERR_PRINTF2(_L("Missing parameter %S"), &KObjectName());
       
   232 			SetBlockResult(EFail);
       
   233 			}
       
   234 		}
       
   235 
       
   236 	INFO_PRINTF2(_L("iRecHandle = %d"), iRecHandle);
       
   237 	iHandleArray->iRecHandleArray.Append(iRecHandle);
       
   238 	}
       
   239 
       
   240 void CT_DataRSdpdatabase::DoCmdDeleteRecord(const TDesC& aSection)
       
   241 	{
       
   242 	TInt	temp=0;
       
   243 	if(	GetIntFromConfig(aSection, KInputArrayPosition(), temp))
       
   244 		{
       
   245 		iHandleArray->iDatabase.DeleteRecord(iHandleArray->iRecHandleArray[temp]);
       
   246 		iHandleArray->iRecHandleArray.Remove(temp);
       
   247 		}
       
   248 	else
       
   249 		{
       
   250 		TInt lastPosition=iHandleArray->iRecHandleArray.Count()-1;
       
   251 		INFO_PRINTF2(_L("DeleteRecord iRecHandle = %d"), iHandleArray->iRecHandleArray[lastPosition]);
       
   252 		iHandleArray->iDatabase.DeleteRecord(iHandleArray->iRecHandleArray[lastPosition]);
       
   253 		iHandleArray->iRecHandleArray.Remove(lastPosition);
       
   254 		}
       
   255 	}
       
   256 
       
   257 void CT_DataRSdpdatabase::DoCmdDeleteRecordL(const TDesC& aSection)
       
   258 	{
       
   259 
       
   260 	TInt	temp=0;
       
   261 	if(	GetIntFromConfig(aSection, KInputArrayPosition(), temp))
       
   262 		{
       
   263 		iHandleArray->iDatabase.DeleteRecordL(iHandleArray->iRecHandleArray[temp]);
       
   264 		iHandleArray->iRecHandleArray.Remove(temp);
       
   265 		}
       
   266 	else
       
   267 		{
       
   268 		TInt lastPosition=iHandleArray->iRecHandleArray.Count()-1;
       
   269 		INFO_PRINTF2(_L("DeleteRecord iRecHandle = %d"), iHandleArray->iRecHandleArray[lastPosition]);
       
   270 		iHandleArray->iDatabase.DeleteRecordL(iHandleArray->iRecHandleArray[lastPosition]);
       
   271 		iHandleArray->iRecHandleArray.Remove(lastPosition);
       
   272 		}
       
   273 	}
       
   274 
       
   275 void CT_DataRSdpdatabase::DoCmdDeleteAttribute(const TDesC& aSection)
       
   276 	{
       
   277 	TInt		inputHex=0;
       
   278 	if(	GetHexFromConfig(aSection, KInputAttrIDHex(), inputHex))
       
   279 		{
       
   280 		iHandleArray->iDatabase.DeleteAttribute(iRecHandle, inputHex);
       
   281 		}
       
   282 	else
       
   283 		{
       
   284 		ERR_PRINTF2(_L("Missing parameter %S"), &KInputAttrIDHex());
       
   285 		SetBlockResult(EFail);
       
   286 		}
       
   287 	}
       
   288 
       
   289 void CT_DataRSdpdatabase::DoCmdDeleteAttributeL(const TDesC& aSection)
       
   290 	{
       
   291 	TInt		inputHex=0;
       
   292 
       
   293 	if(	GetHexFromConfig(aSection, KInputAttrIDHex(), inputHex))
       
   294 		{
       
   295 		iHandleArray->iDatabase.DeleteAttributeL(iRecHandle, inputHex);
       
   296 		}
       
   297 	else
       
   298 		{
       
   299 		ERR_PRINTF2(_L("Missing parameter %S"), &KInputAttrIDHex());
       
   300 		SetBlockResult(EFail);
       
   301 		}
       
   302 	}
       
   303 
       
   304 void CT_DataRSdpdatabase::DoCmdUpdateAttributeL(const TDesC& aSection)
       
   305 	{
       
   306 	TInt				inputHex=0;
       
   307 	TInt				inputInt=0;
       
   308 	TPtrC				inputStr;
       
   309 	TPtrC				objectName;
       
   310 	CSdpAttrValue*		attrVal= NULL;
       
   311 
       
   312 	if(	GetHexFromConfig(aSection, KInputAttrIDHex(), inputHex))
       
   313 		{
       
   314 		INFO_PRINTF2(_L("Input Hex = %d"),inputHex);
       
   315 		}
       
   316 	else
       
   317 		{
       
   318 		ERR_PRINTF2(_L("Missing parameter %S"), &KInputAttrIDHex());
       
   319 		SetBlockResult(EFail);
       
   320 		}
       
   321 
       
   322 	TInt	err=KErrNone;
       
   323 	if(	GetIntFromConfig(aSection, KInputInt(), inputInt))
       
   324 		{
       
   325 		INFO_PRINTF2(_L("Input Int = %d"),inputInt);
       
   326 
       
   327 		TRAP(err, iHandleArray->iDatabase.UpdateAttributeL(iRecHandle, inputHex, inputInt));
       
   328 		INFO_PRINTF1(_L("RSdpDatabase::UpdateAttributeL (Int)"));
       
   329 		}
       
   330 	else
       
   331 		{
       
   332 		if( GetStringFromConfig(aSection, KObjectName(), objectName) )
       
   333 			{
       
   334 			attrVal = static_cast<CSdpAttrValue*>(GetDataObjectL(objectName));
       
   335 
       
   336 			TRAP(err, iHandleArray->iDatabase.UpdateAttributeL(iRecHandle, inputHex, *attrVal));
       
   337 			INFO_PRINTF1(_L("RSdpDatabase::UpdateAttributeL (attribute)"));
       
   338 			}
       
   339 		else
       
   340 			{
       
   341 			if(	GetStringFromConfig(aSection, KInputDesCValueEight(),	inputStr))
       
   342 				{
       
   343 				HBufC8*		tempStr = HBufC8::NewLC(inputStr.Length());
       
   344 				tempStr->Des().Copy(inputStr);
       
   345 
       
   346 				TRAP(err, iHandleArray->iDatabase.UpdateAttributeL(iRecHandle, inputHex, *tempStr));
       
   347 				INFO_PRINTF1(_L("RSdpDatabase::UpdateAttributeL (descriptor TDesC8)"));
       
   348 				CleanupStack::PopAndDestroy(tempStr);
       
   349 				}
       
   350 			else
       
   351 				{
       
   352 				if(	GetStringFromConfig(aSection, KInputDesCValueSixteen(),	inputStr))
       
   353 					{
       
   354 					TRAP(err, iHandleArray->iDatabase.UpdateAttributeL(iRecHandle, inputHex, inputStr));
       
   355 					INFO_PRINTF1(_L("RSdpDatabase::UpdateAttributeL (descriptor TDesC16)"));
       
   356 					}
       
   357 				else
       
   358 					{
       
   359 					ERR_PRINTF2(_L("Missing parameter %S"), &KInputDesCValueSixteen());
       
   360 					SetBlockResult(EFail);
       
   361 					}
       
   362 				}
       
   363 			}
       
   364 		}
       
   365 	if(err	!= KErrNone)
       
   366 		{
       
   367 		ERR_PRINTF2(_L("**** UpdateAttributeL	failed with	error %d"),	err);
       
   368 		SetError(err);
       
   369 		}
       
   370 
       
   371 	INFO_PRINTF2(_L("iRecHandle = %d"), iRecHandle);
       
   372 	}