bluetooth/gavdp/test/tavsrcUtils.cpp
branchRCL_3
changeset 23 5b153be919d4
parent 22 786b94c6f0a4
child 24 e9b924a62a66
--- a/bluetooth/gavdp/test/tavsrcUtils.cpp	Thu Aug 19 11:01:00 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,394 +0,0 @@
-// Copyright (c) 2007-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 "tavsrcUtils.h"
-#include "tavsrcConsole.h"
-
-#include <bluetoothav.h>
-#include <btextnotifiers.h>
-
-#include <f32file.h>
-#include <e32math.h>
-
-void TTavsrcUtils::RegisterSinkSDPRecordL(RSdpDatabase& aDB, TSdpServRecordHandle& aRecHandle,
-										  TBool aHeadphone, TBool aSpeaker, TBool aRecorder,
-										  TBool aAmp)
-	{
-	CSdpAttrValue* attrVal = 0;
-	CSdpAttrValueDES* attrValDES = 0;
-
-	// Set Attr 1 (service class list) to list with UUID = Audio Sink
-	aDB.CreateServiceRecordL(TUUID(KAudioSinkUUID), aRecHandle);
-
-	// Protocol Descriptor List
-	attrValDES = CSdpAttrValueDES::NewDESL(0);
-	CleanupStack::PushL(attrValDES);
-
-	attrValDES->StartListL()
-		->BuildDESL()
-			->StartListL()
-			->BuildUUIDL(TUUID(TUint16(KL2CAPUUID))) // L2CAP
-			->BuildUintL(TSdpIntBuf<TUint16>(KAVDTP)) // PSM = AVDTP
-			->EndListL()
-		->BuildDESL()
-			->StartListL()
-			->BuildUUIDL(TUUID(TUint16(KAvdtpUUID))) // Avdtp UUID
-			->BuildUintL(TSdpIntBuf<TUint16>(0x0100)) // Version
-			->EndListL()
-		->EndListL();
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdProtocolDescriptorList, *attrValDES);
-	CleanupStack::PopAndDestroy(attrValDES);
-	attrValDES = 0;
-	
-	//BrowseGroupList
-	/*
-	This has been added in order to be interoperable with remote devices which only look for the 
-	service in the PublicBrowseGroup (the root of the browse hierarchy). This is not a mandatory feature. 
-	*/
-	attrValDES = CSdpAttrValueDES::NewDESL(0);
-	CleanupStack::PushL(attrValDES);
-	
-	attrValDES->StartListL()
-		->BuildUUIDL(TUUID(TUint16(KPublicBrowseGroupUUID))) // Public browse group (the root)
-	    ->EndListL();
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdBrowseGroupList, *attrValDES); //attribute 5
-	CleanupStack::PopAndDestroy(attrValDES);
-	attrValDES = NULL;
-
-	// Language
-	attrValDES = CSdpAttrValueDES::NewDESL(0);
-	CleanupStack::PushL(attrValDES);
-
-	attrValDES->StartListL()
-		->BuildUintL(TSdpIntBuf<TUint16>(KLanguageEnglish))
-		->BuildUintL(TSdpIntBuf<TUint16>(KSdpAttrIdCharacterEncodingUTF8))
-		->BuildUintL(TSdpIntBuf<TUint16>(KSdpAttrIdBasePrimaryLanguage))
-	->EndListL();
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdLanguageBaseAttributeIDList, *attrValDES);
-	CleanupStack::PopAndDestroy(attrValDES);
-	attrValDES = 0;
-
-	// BT Profile Description
-	attrValDES = CSdpAttrValueDES::NewDESL(0);
-	CleanupStack::PushL(attrValDES);
-
-	attrValDES->StartListL()
-		->BuildDESL()->StartListL()
-			->BuildUUIDL(KAdvancedAudioDistributionUUID)
-			->BuildUintL(TSdpIntBuf<TUint16>(0x0100)) // version
-		->EndListL()
-	->EndListL();
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdBluetoothProfileDescriptorList, *attrValDES);
-
-	CleanupStack::PopAndDestroy(attrValDES);
-	attrValDES = 0;
-	
-	// provider name
-	attrVal = CSdpAttrValueString::NewStringL(_L8("Symbian Software Ltd"));
-	CleanupStack::PushL(attrVal);
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdBasePrimaryLanguage + KSdpAttrIdOffsetProviderName, *attrVal);
-	CleanupStack::PopAndDestroy(attrVal);
-	attrVal = 0;
-
-	// service name
-	attrVal = CSdpAttrValueString::NewStringL(_L8("Advanced audio distribution sink"));
-	CleanupStack::PushL(attrVal);
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdBasePrimaryLanguage + KSdpAttrIdOffsetServiceName, *attrVal);
-	CleanupStack::PopAndDestroy(attrVal);
-	attrVal = 0;
-
-	// service description
-	attrVal = CSdpAttrValueString::NewStringL(_L8("kick back and listen to some fine tunes with this neat service"));
-	CleanupStack::PushL(attrVal);
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdBasePrimaryLanguage + KSdpAttrIdOffsetServiceDescription, *attrVal);
-	CleanupStack::PopAndDestroy(attrVal);
-	attrVal = 0;
-
-	// supported features
-	TUint16 supportedFeatures = aHeadphone ? 1:0;
-	supportedFeatures|=aSpeaker ? 2:0;
-	supportedFeatures|=aRecorder ? 4:0;
-	supportedFeatures|=aAmp ? 8:0;
-	attrVal = CSdpAttrValueUint::NewUintL(TSdpIntBuf<TUint16>(supportedFeatures));
-	CleanupStack::PushL(attrVal);
-	
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdSupportedFeatures, *attrVal);	
-	CleanupStack::PopAndDestroy(attrVal);
-	attrVal = 0;
-	}
-
-void TTavsrcUtils::RegisterSourceSDPRecordL(RSdpDatabase& aDB, TSdpServRecordHandle& aRecHandle,
-											TBool aPlayer, TBool aMic, TBool aTuner, TBool aMixer)
-	{
-	CSdpAttrValue* attrVal = 0;
-	CSdpAttrValueDES* attrValDES = 0;
-
-	// Set Attr 1 (service class list) to list with UUID = Audio Sink
-	aDB.CreateServiceRecordL(TUUID(KAudioSourceUUID), aRecHandle);
-
-	// Protocol Descriptor List
-	attrValDES = CSdpAttrValueDES::NewDESL(0);
-	CleanupStack::PushL(attrValDES);
-
-	attrValDES->StartListL()
-		->BuildDESL()
-			->StartListL()
-			->BuildUUIDL(TUUID(TUint16(KL2CAPUUID))) // L2CAP
-			->BuildUintL(TSdpIntBuf<TUint16>(KAVDTP)) // PSM = AVDTP
-			->EndListL()
-		->BuildDESL()
-			->StartListL()
-			->BuildUUIDL(TUUID(TUint16(KAvdtpUUID))) // Avdtp UUID
-			->BuildUintL(TSdpIntBuf<TUint16>(0x0100)) // Version
-			->EndListL()
-		->EndListL();
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdProtocolDescriptorList, *attrValDES);
-	CleanupStack::PopAndDestroy(attrValDES);
-	attrValDES = 0;
-	
-	//BrowseGroupList
-	/*
-	This has been added in order to be interoperable with remote devices which only look for the 
-	service in the PublicBrowseGroup (the root of the browse hierarchy). This is not a mandatory feature. 
-	*/
-	attrValDES = CSdpAttrValueDES::NewDESL(0);
-	CleanupStack::PushL(attrValDES);
-	
-	attrValDES->StartListL()
-		->BuildUUIDL(TUUID(TUint16(KPublicBrowseGroupUUID))) // Public browse group (the root)
-	    ->EndListL();
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdBrowseGroupList, *attrValDES); //attribute 5
-	CleanupStack::PopAndDestroy(attrValDES);
-	attrValDES = NULL;
-
-	// Language
-	attrValDES = CSdpAttrValueDES::NewDESL(0);
-	CleanupStack::PushL(attrValDES);
-
-	attrValDES->StartListL()
-		->BuildUintL(TSdpIntBuf<TUint16>(KLanguageEnglish))
-		->BuildUintL(TSdpIntBuf<TUint16>(KSdpAttrIdCharacterEncodingUTF8))
-		->BuildUintL(TSdpIntBuf<TUint16>(KSdpAttrIdBasePrimaryLanguage))
-	->EndListL(); 
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdLanguageBaseAttributeIDList, *attrValDES);
-	CleanupStack::PopAndDestroy(attrValDES);
-	attrValDES = 0;
-
-	// BT Profile Description
-	attrValDES = CSdpAttrValueDES::NewDESL(0);
-	CleanupStack::PushL(attrValDES);
-
-	attrValDES->StartListL()
-		->BuildDESL()->StartListL()
-			->BuildUUIDL(KAdvancedAudioDistributionUUID)
-			->BuildUintL(TSdpIntBuf<TUint16>(0x0100)) // version
-		->EndListL()
-	->EndListL(); 
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdBluetoothProfileDescriptorList, *attrValDES);
-
-	CleanupStack::PopAndDestroy(attrValDES);
-	attrValDES = 0;
-	
-	// provider name
-	attrVal = CSdpAttrValueString::NewStringL(_L8("Symbian Software Ltd"));
-	CleanupStack::PushL(attrVal);
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdBasePrimaryLanguage + KSdpAttrIdOffsetProviderName, *attrVal);
-	CleanupStack::PopAndDestroy(attrVal);
-	attrVal = 0;
-
-	// service name
-	attrVal = CSdpAttrValueString::NewStringL(_L8("Advanced audio distribution source"));
-	CleanupStack::PushL(attrVal);
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdBasePrimaryLanguage + KSdpAttrIdOffsetServiceName, *attrVal);
-	CleanupStack::PopAndDestroy(attrVal);
-	attrVal = 0;
-
-	// service description
-	attrVal = CSdpAttrValueString::NewStringL(_L8("plug your wireless cans into me!"));
-	CleanupStack::PushL(attrVal);
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdBasePrimaryLanguage + KSdpAttrIdOffsetServiceDescription, *attrVal);
-	CleanupStack::PopAndDestroy(attrVal);
-	attrVal = 0;
-
-	// supported features									
-	TUint16 supportedFeatures = aPlayer ? 1:0;
-	supportedFeatures|=aMic ? 2:0;
-	supportedFeatures|=aTuner ? 4:0;
-	supportedFeatures|=aMixer ? 8:0;
-	attrVal = CSdpAttrValueUint::NewUintL(TSdpIntBuf<TUint16>(supportedFeatures));
-	CleanupStack::PushL(attrVal);
-	
-	aDB.UpdateAttributeL(aRecHandle, KSdpAttrIdSupportedFeatures, *attrVal);	
-	CleanupStack::PopAndDestroy(attrVal);
-	attrVal = 0;
-	}
-
-TInt TTavsrcUtils::GetIntFromUser(CConsoleBase& aConsole)
-	{
-	TBuf<4> inpb;
-	aConsole.Printf(_L(":"));
-	TInt x = aConsole.WhereX();
-	TInt y = aConsole.WhereY();
-	TRequestStatus stat;
-
-	TChar ch(0); // set it to anything to prevent warning
-	while ((ch!='\n')&&(ch!='\r') && inpb.Length()==0)
-		{
-		aConsole.Read(stat);
-		User::WaitForRequest(stat);
-		ch = aConsole.KeyCode();
-		
-		if ((ch=='\b') && (inpb.Length()>0))
-			{
-			inpb.Delete(inpb.Length()-1,1);
-			}
-			
-		if ((inpb.Length()<4)&&((ch>='0')&&(ch<='9')))
-			{
-			inpb.Append(ch);
-			}
-			
-		aConsole.SetPos(x,y);
-		aConsole.Printf(_L("%S"),&inpb);
-		}
-
-	TLex lex(inpb);
-	TInt res;
-	return (lex.Val(res)==KErrNone) ? res : 0;
-	}
-	
-TBool TTavsrcUtils::GetYNFromUser(CConsoleBase& aConsole, const TDesC& aDes)
-	{
-	TBuf<4> inpb;
-	aConsole.Printf(_L("%S (y/n):"),&aDes);
-	TRequestStatus stat;
-
-	TChar ch(0); // set it to anything to prevent warning
-	while ((ch!='n')&&(ch!='y'))
-		{
-		aConsole.Read(stat);
-		User::WaitForRequest(stat);
-		ch = aConsole.KeyCode();
-		}
-	aConsole.Printf(_L("%c"), static_cast<TUint>(ch));
-	return (ch=='y') ? ETrue : EFalse;
-	}
-
-void TTavsrcUtils::GetDeviceAddressL(TBTDevAddr& aAddr)
-	{
-	//Ask user which device address we should connect to...
-	RNotifier notify;
-	User::LeaveIfError(notify.Connect());
-	TBTDeviceSelectionParamsPckg pckg;
-	TBTDeviceResponseParamsPckg resPckg;
-	TRequestStatus stat;
-	notify.StartNotifierAndGetResponse(stat, KDeviceSelectionNotifierUid, pckg, resPckg);
-	User::WaitForRequest(stat);
-	notify.CancelNotifier(KDeviceSelectionNotifierUid);
-	notify.Close();
-	User::LeaveIfError(stat.Int()); 
-
-	aAddr = resPckg().BDAddr();
-	}
-
-TInt TTavsrcUtils::GetCodecSettingsFromSBCFile(RFile& aFile, TInt aPos, TInt& aChannelMode,
-							TInt& aNumChannels, TInt& aNumSubbands, TInt& aBlkLen,
-							TInt& aBitPool, TInt& aFreq, TInt& aAllocMethod)
-	{
-	TInt err = KErrNone;
-	
-	TBuf8<4> header;
-	aFile.Read(aPos, header);
-	TInt syncWord = header[0];
-	__ASSERT_ALWAYS(syncWord==0x9C, User::Invariant());
-	
-	TInt sampleFreq = (header[1]&0xC0)>>6;
-	TInt blockLen = (header[1]&0x30)>>4;
-	aChannelMode = (header[1]&0x0C)>>2;
-	aAllocMethod = (header[1]&0x02)>>1;
-	TInt subBands = (header[1]&0x01);
-	aBitPool = header[2];
-	
-	aNumChannels = (aChannelMode==0) ? 1 : 2;
-	aNumSubbands = (subBands==1) ? 8 : 4;
-	
-	switch (sampleFreq)
-		{
-		case 0x00:
-			aFreq = 16000;
-			break; 
-		case 0x01:
-			aFreq = 32000;
-			break; 
-		case 0x02:
-			aFreq = 44100;
-			break; 
-		case 0x03:
-			aFreq = 48000;
-			break; 
-		}
-		
-	switch (blockLen)
-		{
-		case 0x00:
-			aBlkLen = 4;
-			break; 
-		case 0x01:
-			aBlkLen = 8;
-			break; 
-		case 0x02:
-			aBlkLen = 12;
-			break; 
-		case 0x03:
-			aBlkLen = 16;
-			break; 
-		}
-		
-	return err;
-	}
-
-TInt TTavsrcUtils::GetCodecSettingsFromSBCFile(const TDesC& aFileName, TInt& aChannelMode,
-							TInt& aNumChannels, TInt& aNumSubbands, TInt& aBlkLen,
-							TInt& aBitPool, TInt& aFreq, TInt& aAllocMethod)
-	{
-	TInt err = KErrNone;
-	
-	RFs fileserver;
-	RFile file;
-	
-	err = fileserver.Connect();
-	if (!err) 
-		{
-		err = file.Open(fileserver,aFileName,EFileRead | EFileShareReadersOnly);			
-		}
-	if (err)
-		{
-		return err;			
-		}
-	
-	err = GetCodecSettingsFromSBCFile(file, 0, aChannelMode, aNumChannels, aNumSubbands,
-										aBlkLen, aBitPool, aFreq, aAllocMethod);	
-	file.Close();
-	fileserver.Close();
-	
-	return err;
-	}
-	
-TInt TTavsrcUtils::CEIL(TReal aX)
-	{
-	TReal frac;
-	Math::Frac(frac,aX);
-	return (frac < 0.5) ? aX :aX+1;
-	}