diff -r 000000000000 -r 29b1cd4cb562 bluetooth/gavdp/test/tavsrcSDP.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetooth/gavdp/test/tavsrcSDP.cpp Fri Jan 15 08:13:17 2010 +0200 @@ -0,0 +1,233 @@ +// 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 "tavsrc.h" + +void CAVTestApp::RegisterSinkSDPRecordL(RSdpDatabase& aDB, 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), iSnkHandle); + + // Protocol Descriptor List + attrValDES = CSdpAttrValueDES::NewDESL(0); + CleanupStack::PushL(attrValDES); + + attrValDES->StartListL() + ->BuildDESL() + ->StartListL() + ->BuildUUIDL(TUUID(TUint16(KL2CAPUUID))) // L2CAP + ->BuildUintL(TSdpIntBuf(KAVDTP)) // PSM = AVDTP + ->EndListL() + ->BuildDESL() + ->StartListL() + ->BuildUUIDL(TUUID(TUint16(KAvdtpUUID))) // Avdtp UUID + ->BuildUintL(TSdpIntBuf(0x0100)) // Version + ->EndListL() + ->EndListL(); + aDB.UpdateAttributeL(iSnkHandle, 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(iSnkHandle, KSdpAttrIdBrowseGroupList, *attrValDES); //attribute 5 + CleanupStack::PopAndDestroy(attrValDES); + attrValDES = NULL; + + // Language + attrValDES = CSdpAttrValueDES::NewDESL(0); + CleanupStack::PushL(attrValDES); + + attrValDES->StartListL() + ->BuildUintL(TSdpIntBuf(KLanguageEnglish)) + ->BuildUintL(TSdpIntBuf(KSdpAttrIdCharacterEncodingUTF8)) + ->BuildUintL(TSdpIntBuf(KSdpAttrIdBasePrimaryLanguage)) + ->EndListL(); + aDB.UpdateAttributeL(iSnkHandle, 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(0x0100)) // version + ->EndListL() + ->EndListL(); + aDB.UpdateAttributeL(iSnkHandle, KSdpAttrIdBluetoothProfileDescriptorList, *attrValDES); + + CleanupStack::PopAndDestroy(attrValDES); + attrValDES = 0; + + + // provider name + attrVal = CSdpAttrValueString::NewStringL(_L8("Symbian Software Ltd")); + CleanupStack::PushL(attrVal); + aDB.UpdateAttributeL(iSnkHandle, KSdpAttrIdBasePrimaryLanguage + KSdpAttrIdOffsetProviderName, *attrVal); + CleanupStack::PopAndDestroy(attrVal); + attrVal = 0; + + // service name + attrVal = CSdpAttrValueString::NewStringL(_L8("Advanced audio distribution sink")); + CleanupStack::PushL(attrVal); + aDB.UpdateAttributeL(iSnkHandle, 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(iSnkHandle, 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(supportedFeatures)); + CleanupStack::PushL(attrVal); + + aDB.UpdateAttributeL(iSnkHandle, KSdpAttrIdSupportedFeatures, *attrVal); + CleanupStack::PopAndDestroy(attrVal); + attrVal = 0; + } + + +void CAVTestApp::RegisterSourceSDPRecordL(RSdpDatabase& aDB, 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), iSrcHandle); + + // Protocol Descriptor List + attrValDES = CSdpAttrValueDES::NewDESL(0); + CleanupStack::PushL(attrValDES); + + attrValDES->StartListL() + ->BuildDESL() + ->StartListL() + ->BuildUUIDL(TUUID(TUint16(KL2CAPUUID))) // L2CAP + ->BuildUintL(TSdpIntBuf(KAVDTP)) // PSM = AVDTP + ->EndListL() + ->BuildDESL() + ->StartListL() + ->BuildUUIDL(TUUID(TUint16(KAvdtpUUID))) // Avdtp UUID + ->BuildUintL(TSdpIntBuf(0x0100)) // Version + ->EndListL() + ->EndListL(); + aDB.UpdateAttributeL(iSrcHandle, 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(iSrcHandle, KSdpAttrIdBrowseGroupList, *attrValDES); //attribute 5 + CleanupStack::PopAndDestroy(attrValDES); + attrValDES = NULL; + + // Language + attrValDES = CSdpAttrValueDES::NewDESL(0); + CleanupStack::PushL(attrValDES); + + attrValDES->StartListL() + ->BuildUintL(TSdpIntBuf(KLanguageEnglish)) + ->BuildUintL(TSdpIntBuf(KSdpAttrIdCharacterEncodingUTF8)) + ->BuildUintL(TSdpIntBuf(KSdpAttrIdBasePrimaryLanguage)) + ->EndListL(); + aDB.UpdateAttributeL(iSrcHandle, 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(0x0100)) // version + ->EndListL() + ->EndListL(); + aDB.UpdateAttributeL(iSrcHandle, KSdpAttrIdBluetoothProfileDescriptorList, *attrValDES); + + CleanupStack::PopAndDestroy(attrValDES); + attrValDES = 0; + + + // provider name + attrVal = CSdpAttrValueString::NewStringL(_L8("Symbian Software Ltd")); + CleanupStack::PushL(attrVal); + aDB.UpdateAttributeL(iSrcHandle, KSdpAttrIdBasePrimaryLanguage + KSdpAttrIdOffsetProviderName, *attrVal); + CleanupStack::PopAndDestroy(attrVal); + attrVal = 0; + + // service name + attrVal = CSdpAttrValueString::NewStringL(_L8("Advanced audio distribution source")); + CleanupStack::PushL(attrVal); + aDB.UpdateAttributeL(iSrcHandle, 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(iSrcHandle, 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(supportedFeatures)); + CleanupStack::PushL(attrVal); + + aDB.UpdateAttributeL(iSrcHandle, KSdpAttrIdSupportedFeatures, *attrVal); + CleanupStack::PopAndDestroy(attrVal); + attrVal = 0; + } +