diff -r 000000000000 -r 29b1cd4cb562 bluetoothmgmt/bluetoothclientlib/btlib/eirpublishermanufacturerspecificdata.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetoothmgmt/bluetoothclientlib/btlib/eirpublishermanufacturerspecificdata.cpp Fri Jan 15 08:13:17 2010 +0200 @@ -0,0 +1,80 @@ +// Copyright (c) 2008-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 +#include + +void Panic(TManufacturerSpecificDataPanics aPanic) + { + User::Panic(KManufacturerSpecificDataPanic, aPanic); + } + + +/** + Constructs an Manufacturer Specific Data publisher object. + +It takes an M-class interface for notifying the client about request result + + @param aNotifier holds a reference of the client, which will be notified about request result + @return Pointer to the created CEirPublisherManufacturerSpecificData object +*/ +EXPORT_C CEirPublisherManufacturerSpecificData* CEirPublisherManufacturerSpecificData::NewL(MManufacturerSpecificDataPublisherNotifier& aNotifier) + { + CEirPublisherManufacturerSpecificData* self = new (ELeave) CEirPublisherManufacturerSpecificData(aNotifier); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + +/** + Client can use this function to request the size of data it wants to publish + @param aSize is the size of data intended to be published + */ +EXPORT_C void CEirPublisherManufacturerSpecificData::RequestPublishDataSize(TUint aSize) + { + iRequestedDataSize = aSize; + iPublisher->PublishData(aSize); + } + +/** + Client can use this function to publish data according to the given available bytes + @param aManufacturerSpecificData is the data to be published + */ +EXPORT_C void CEirPublisherManufacturerSpecificData::SetManufacturerSpecificData(TDesC8& aManufacturerSpecificData) + { + __ASSERT_ALWAYS(aManufacturerSpecificData.Length() <=iBytesAvailable, Panic(EManufacturerSpecificDataOutOfBoundary)); + // aBytesAvailable is not 0 and Client gives the same amount of data as originally requested + iPublisher->SetData(aManufacturerSpecificData, EEirDataComplete); + } + +CEirPublisherManufacturerSpecificData::CEirPublisherManufacturerSpecificData(MManufacturerSpecificDataPublisherNotifier& aNotifier) + : CEirPublisherBase(EEirTagManufacturerSpecific) + , iRequestedDataSize(0) + , iNotifier(aNotifier) + { + } + +// From MEirPublisherNotifier +void CEirPublisherManufacturerSpecificData::MepnSpaceAvailable(TUint aBytesAvailable) + { + iBytesAvailable = aBytesAvailable; + iNotifier.MmsdpnNotifyAvailableDataSize(iBytesAvailable); + } + +void CEirPublisherManufacturerSpecificData::MepnSetDataError(TInt aResult) + { + iNotifier.MmsdpnNotifyError(aResult); + }