--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothapitest/bluetoothsvs/T_BTUserAPI/src/T_AvdtpSockAddrData.cpp Fri Jan 15 08:13:17 2010 +0200
@@ -0,0 +1,580 @@
+/*
+* 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 <bluetoothav.h>
+
+// User Includes
+#include "T_AvdtpSockAddrData.h"
+#include "T_BTSockAddrData.h"
+#include "T_BTServiceSecurityData.h"
+#include "T_BTDevAddrData.h"
+#include "T_BTUtil.h"
+/*@{*/
+//Parameters
+
+//Fields
+_LIT(KFldExpected, "expected");
+
+_LIT(KFldSockAddr, "sockaddr");
+_LIT(KFldSession, "session");
+_LIT(KFldSeid, "seid");
+
+_LIT(KFldFamily, "family");
+_LIT(KFldBTAddr, "btaddr");
+_LIT(KFldUserlen, "userlen");
+_LIT(KFldPort, "port");
+_LIT(KFldSecurity, "security");
+_LIT(KFldTBTDevAddr, "tbtdevaddr");
+
+_LIT(KFldHexBTAddrL, "hex_btaddr_l");
+_LIT(KFldHexBTAddrR, "hex_btaddr_r");
+
+_LIT(KFldSection, "section");
+_LIT(KFldConfigHexBTAddrL, "hex_btaddr_l");
+_LIT(KFldConfigHexBTAddrR, "hex_btaddr_r");
+
+//Commands
+_LIT(KCmdnew, "new");
+_LIT(KCmdBTAddr, "BTAddr");
+_LIT(KCmdBTSecurity, "BTSecurity");
+_LIT(KCmdCast, "Cast");
+_LIT(KCmdFamily, "Family");
+_LIT(KCmdGetUserLen, "GetUserLen");
+_LIT(KCmdPort, "Port");
+_LIT(KCmdSetSession, "SetSession");
+_LIT(KCmdSession, "Session");
+_LIT(KCmdSetSEID, "SetSEID");
+_LIT(KCmdSEID, "SEID");
+_LIT(KCmdDestructor, "~");
+
+// Logging
+_LIT(KLogMissingParameter, "Missing parameter '%S'");
+_LIT(KLogError, "Error=%d");
+/*@}*/
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CT_AvdtpSockAddrData* CT_AvdtpSockAddrData::NewL()
+ {
+ CT_AvdtpSockAddrData* ret=new (ELeave) CT_AvdtpSockAddrData();
+ CleanupStack::PushL(ret);
+ ret->ConstructL();
+ CleanupStack::Pop(ret);
+ return ret;
+ }
+
+CT_AvdtpSockAddrData::CT_AvdtpSockAddrData()
+: iData(NULL), iDataOwned(EFalse)
+ {
+ }
+
+void CT_AvdtpSockAddrData::ConstructL()
+ {
+ }
+
+CT_AvdtpSockAddrData::~CT_AvdtpSockAddrData()
+ {
+ DestroyData();
+ }
+
+TAny* CT_AvdtpSockAddrData::GetObject()
+ {
+ return iData;
+ }
+
+
+void CT_AvdtpSockAddrData::SetObject(TAvdtpSockAddr* aAvdtpSockAddr, TBool aTransferOwnership)
+ {
+ DestroyData();
+ iData = aAvdtpSockAddr;
+ iDataOwned = aTransferOwnership;
+ }
+
+void CT_AvdtpSockAddrData::DisownObjectL()
+ {
+ iData = NULL;
+ }
+
+void CT_AvdtpSockAddrData::DestroyData()
+ {
+ if(iDataOwned)
+ {
+ delete iData;
+ }
+
+ iData=NULL;
+ }
+
+inline TCleanupOperation CT_AvdtpSockAddrData::CleanupOperation()
+ {
+ return CleanupOperation;
+ }
+
+void CT_AvdtpSockAddrData::CleanupOperation(TAny* aAny)
+ {
+ //may be unnecessary
+ TAvdtpSockAddr* arg=static_cast<TAvdtpSockAddr*>(aAny);
+ delete arg;
+ }
+
+
+TBool CT_AvdtpSockAddrData::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt /*aAsyncErrorIndex*/)
+ {
+ TBool ret = ETrue;
+
+ if ( aCommand==KCmdnew )
+ {
+ DoCmdnewL(aSection);
+ }
+ else if( aCommand== KCmdCast)
+ {
+ DoCmdCast(aSection);
+ }
+ else if( aCommand== KCmdSetSession)
+ {
+ DoCmdSetSession(aSection);
+ }
+ else if( aCommand== KCmdSession)
+ {
+ DoCmdSession(aSection);
+ }
+ else if( aCommand== KCmdSetSEID)
+ {
+ DoCmdSetSEID(aSection);
+ }
+ else if( aCommand== KCmdSEID)
+ {
+ DoCmdSEID(aSection);
+ }
+ else if( aCommand== KCmdFamily)
+ {
+ DoCmdFamily(aSection);
+ }
+ else if( aCommand== KCmdGetUserLen)
+ {
+ DoCmdGetUserLen(aSection);
+ }
+ else if( aCommand== KCmdPort)
+ {
+ DoCmdPort(aSection);
+ }
+ else if( aCommand== KCmdBTAddr)
+ {
+ DoCmdBTAddr(aSection);
+ }
+ else if( aCommand== KCmdBTSecurity)
+ {
+ DoCmdBTSecurity(aSection);
+ }
+ else if ( aCommand==KCmdDestructor )
+ {
+ DestroyData();
+ }
+ else
+ {
+ ret=EFalse;
+ }
+
+ return ret;
+ }
+
+/**
+Test TAvdtpSockAddr()
+*/
+void CT_AvdtpSockAddrData::DoCmdnewL(const TDesC& aSection)
+ {
+ INFO_PRINTF1(_L("TAvdtpSockAddr constructor call"));
+ DestroyData();
+
+ TInt err = KErrNone;
+ TSockAddr* sockAddr = NULL;
+ TPtrC strSockAddr;
+
+ if ( GetStringFromConfig(aSection, KFldSockAddr, strSockAddr) )
+ {
+ INFO_PRINTF1(_L("TAvdtpSockAddr construct with TSockAddr object"));
+ sockAddr = static_cast<TSockAddr*>(GetDataObjectL(strSockAddr));
+ }
+
+ if(sockAddr != NULL)
+ {
+ TRAP(err, iData = new ( ELeave ) TAvdtpSockAddr( *sockAddr ));
+ }
+ else
+ {
+ INFO_PRINTF1(_L("TAvdtpSockAddr default constructor"));
+ TRAP(err, iData = new ( ELeave ) TAvdtpSockAddr());
+ }
+
+ if (err!= KErrNone)
+ {
+ ERR_PRINTF2(KLogError, err);
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ iDataOwned = ETrue;
+ }
+ }
+
+/**
+Test Cast()
+*/
+void CT_AvdtpSockAddrData::DoCmdCast(const TDesC& aSection)
+ {
+ INFO_PRINTF1(_L("TAvdtpSockAddr Cast from TSockAddr Call"));
+ TPtrC myTSockAddrName;
+ TSockAddr* myTSockAddr=NULL;
+ if ( !GetStringFromConfig(aSection, KFldSockAddr(), myTSockAddrName) )
+ {
+ ERR_PRINTF2(KLogMissingParameter, &KFldSockAddr());
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ myTSockAddr=static_cast<TSockAddr*>(GetDataObjectL(myTSockAddrName));
+
+ if ( myTSockAddr!=NULL )
+ {
+ DestroyData();
+ iData = &TAvdtpSockAddr::Cast(*myTSockAddr);
+ iDataOwned = EFalse;
+ }
+ else
+ {
+ ERR_PRINTF1(_L("TSockAddr pointer is NULL"));
+ SetBlockResult(EFail);
+ }
+ }
+ }
+
+/**
+Test SetSession()
+*/
+void CT_AvdtpSockAddrData::DoCmdSetSession(const TDesC& aSection)
+ {
+ INFO_PRINTF1(_L("TAvdtpSockAddr SetSession call"));
+
+ TAvdtpTransportSessionType session;
+
+ if(CT_BTUtil::ReadAvdtpTransportSessionType(*this, aSection, KFldSession, session))
+ {
+ INFO_PRINTF2(_L("TAvdtpSockAddr SetSession: session = %d"),session);
+ iData->SetSession(session);
+ }
+ else
+ {
+ ERR_PRINTF2(KLogMissingParameter, &KFldSession());
+ SetBlockResult(EFail);
+ }
+ }
+
+/**
+Test Session()
+*/
+void CT_AvdtpSockAddrData::DoCmdSession(const TDesC& aSection)
+ {
+ TAvdtpTransportSessionType actual;
+ TAvdtpTransportSessionType expected;
+
+ INFO_PRINTF1(_L("TAvdtpSockAddr Session call"));
+ actual = iData->Session();
+
+ if (CT_BTUtil::ReadAvdtpTransportSessionType(*this, aSection, KFldExpected, expected))
+ {
+ if ( actual != expected )
+ {
+ ERR_PRINTF1(_L("Session not match as expected"));
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(KLogMissingParameter, &KFldExpected());
+ SetBlockResult(EFail);
+ }
+ }
+
+/**
+Test SetSEID()
+*/
+void CT_AvdtpSockAddrData::DoCmdSetSEID(const TDesC& aSection)
+ {
+ INFO_PRINTF1(_L("TAvdtpSockAddr SetSEID call"));
+ TSEID* seid = NULL;
+ TPtrC strSeid;
+
+ if(GetStringFromConfig(aSection, KFldSeid, strSeid))
+ {
+ seid = static_cast<TSEID*>(GetDataObjectL(strSeid));
+
+ if (seid != NULL)
+ {
+ iData->SetSEID(*seid);
+ }
+ else
+ {
+ ERR_PRINTF1(_L("TSEID pointer is NULL"));
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(KLogMissingParameter, &KFldSeid());
+ SetBlockResult(EFail);
+ }
+
+
+
+ }
+
+/**
+Test SEID()
+*/
+void CT_AvdtpSockAddrData::DoCmdSEID(const TDesC& aSection)
+ {
+ INFO_PRINTF1(_L("TAvdtpSockAddr SEID call"));
+ TSEID* expectedSEID = NULL;
+ TPtrC strSeid;
+
+ if(GetStringFromConfig(aSection, KFldExpected, strSeid))
+ {
+ expectedSEID = static_cast<TSEID*>(GetDataObjectL(strSeid));
+
+ if(expectedSEID != NULL)
+ {
+ TSEID actual = iData->SEID();
+ if(*expectedSEID != actual)
+ {
+ ERR_PRINTF1(_L("Result is not as expected"));
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("TSEID pointer is NULL"));
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(KLogMissingParameter, &KFldExpected());
+ SetBlockResult(EFail);
+ }
+ }
+
+void CT_AvdtpSockAddrData::DoCmdFamily(const TDesC& aSection)
+ {
+ INFO_PRINTF1(_L("TAvdtpSockAddr Family call"));
+ TInt family;
+
+ TInt familyReceived = static_cast<TInt>(iData->Family());
+ INFO_PRINTF2(_L("TBTSockAddr Family: actual (%d)" ), familyReceived);
+
+ if( GetIntFromConfig(aSection, KFldFamily(), family))
+ {
+ INFO_PRINTF2(_L("TBTSockAddr Family: expected (%d)" ), family);
+
+ if(family != familyReceived)
+ {
+ ERR_PRINTF1(_L("Family is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("TBTSockAddrFamily GetIntFromConfig failed"));
+ SetBlockResult(EFail);
+ }
+ }
+
+void CT_AvdtpSockAddrData::DoCmdGetUserLen(const TDesC& aSection)
+ {
+ INFO_PRINTF1(_L("TAvdtpSockAddr GetUserLen call"));
+
+ TInt userLen;
+
+ TInt userLenReceived = static_cast<TInt>(iData->GetUserLen());
+ INFO_PRINTF2(_L("TBTSockAddr Protected UserLen: actual (%d)"), userLenReceived);
+
+ if( GetIntFromConfig(aSection, KFldUserlen(), userLen))
+ {
+ INFO_PRINTF2(_L("TBTSockAddr Protected UserLen: expected (%d)" ), userLen);
+ if(userLen != userLenReceived)
+ {
+ ERR_PRINTF1(_L("UserLen is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("TBTSockAddrGetUserLen GetIntFromConfig failed"));
+ SetBlockResult(EFail);
+ }
+ }
+void CT_AvdtpSockAddrData::DoCmdPort(const TDesC& aSection)
+ {
+ INFO_PRINTF1(_L("TAvdtpSockAddr Port call"));
+
+ TInt port;
+
+ TInt portReceived = static_cast<TInt>(iData->Port());
+ INFO_PRINTF2(_L("TBTSockAddr Port: actual (%d)" ), portReceived);
+
+ if( GetIntFromConfig(aSection, KFldPort(), port))
+ {
+ INFO_PRINTF2(_L("TBTSockAddr Port: expected (%d)" ), port);
+ if(port != portReceived)
+ {
+ ERR_PRINTF1(_L("Port is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("TBTSockAddrPort GetIntFromConfig failed"));
+ SetBlockResult(EFail);
+ }
+ }
+void CT_AvdtpSockAddrData::DoCmdBTAddr(const TDesC& aSection)
+ {
+ INFO_PRINTF1(_L("TAvdtpSockAddr BTAddr call"));
+
+ TInt devId;
+
+ TBTDevAddr retrivedDevAddr = iData->BTAddr();
+ TBuf<KMaxSockAddrSize> tmpBuf;
+ retrivedDevAddr.GetReadable(tmpBuf);
+ INFO_PRINTF2(_L("Bluetooth address: actual = 0x%S"),&tmpBuf);
+
+ if( GetIntFromConfig(aSection, KFldBTAddr(), devId))
+ {
+ TBTDevAddr devAddr= TBTDevAddr(devId);
+ TBuf<KMaxSockAddrSize> tmpBuf2;
+ devAddr.GetReadable(tmpBuf2);
+ INFO_PRINTF2(_L("Bluetooth address: expected = 0x%S"),&tmpBuf2);
+
+
+ if(devAddr != retrivedDevAddr)
+ {
+ ERR_PRINTF1(_L("BTAddr is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("TBTSockAddr BTAddr as expected"));
+ }
+ }
+ else
+ {
+ TPtrC configSectionName;
+ if( GetStringFromConfig(aSection, KFldSection(), configSectionName))
+ {
+ INFO_PRINTF2(_L("Getting BT Adress from config section: (%S)"), &configSectionName);
+ TInt lhs;
+ TInt rhs;
+ if ( !GetHexFromConfig(configSectionName, KFldConfigHexBTAddrL(), lhs ))
+ {
+ ERR_PRINTF1(_L("TBTSockAddrSetBTAddr GetHexFromConfig failed"));
+ SetBlockResult(EFail);
+ }
+ if ( !GetHexFromConfig(configSectionName, KFldConfigHexBTAddrR(), rhs ))
+ {
+ ERR_PRINTF1(_L("TBTSockAddrSetBTAddr GetHexFromConfig failed"));
+ SetBlockResult(EFail);
+ }
+ TBTDevAddr devAddr (MAKE_TINT64(lhs, rhs));
+ if(devAddr != retrivedDevAddr)
+ {
+ ERR_PRINTF1(_L("BTAddr is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("TBTSockAddr BTAddr as expected"));
+ }
+ }
+
+ else
+ {
+ TPtrC myTBTDevAddrName;
+ if( GetStringFromConfig(aSection, KFldTBTDevAddr(), myTBTDevAddrName))
+ {
+ CT_BTDevAddrData* myTBTDevAddrData=static_cast<CT_BTDevAddrData*>(GetDataWrapperL(myTBTDevAddrName));
+ TBTDevAddr btDevAddr = *myTBTDevAddrData->GetAddress();
+ TBuf<KMaxSockAddrSize> tmpBuf2;
+ btDevAddr.GetReadable(tmpBuf2);
+ if (tmpBuf2 != tmpBuf)
+ {
+ ERR_PRINTF3(_L("Expected address (%S) != actual address (%S)"),&tmpBuf2,&tmpBuf);
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ TInt lhs;
+ TInt rhs;
+ if ( GetHexFromConfig(aSection, KFldHexBTAddrL(), lhs ))
+ {
+ if ( !GetHexFromConfig(aSection, KFldHexBTAddrR(), rhs ))
+ {
+ ERR_PRINTF1(_L("TBTSockAddrBTAddr GetHexFromConfig failed"));
+ SetBlockResult(EFail);
+ }
+ TBTDevAddr devAddr (MAKE_TINT64(lhs, rhs));
+ if(devAddr != retrivedDevAddr)
+ {
+ ERR_PRINTF1(_L("BTAddr is not as expected!"));
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("TBTSockAddr BTAddr as expected"));
+ }
+ }
+ }
+ }
+ }
+ }
+void CT_AvdtpSockAddrData::DoCmdBTSecurity(const TDesC& aSection)
+ {
+ INFO_PRINTF1(_L("TAvdtpSockAddr BTSecurity call"));
+
+ TPtrC myBTServiceSecurityName;
+ CT_BTServiceSecurityData* myBTServiceSecurityData=NULL;
+ if ( !GetStringFromConfig(aSection, KFldSecurity(), myBTServiceSecurityName) )
+ {
+ ERR_PRINTF2(_L("No %S"), &KFldSecurity());
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ myBTServiceSecurityData=static_cast<CT_BTServiceSecurityData*>(GetDataWrapperL(myBTServiceSecurityName));
+ }
+ if ( myBTServiceSecurityData!=NULL )
+ {
+ TBTServiceSecurity tmp = iData->BTSecurity();
+ myBTServiceSecurityData->CopyObjectL(&tmp);
+ }
+ else
+ {
+ ERR_PRINTF1(_L("TBTSockAddrBTSecurity BTServiceSecurity is NULL"));
+ SetBlockResult(EFail);
+ }
+ }