bluetoothmgmt/bluetoothclientlib/btlib/eirpublishermanufacturerspecificdata.cpp
changeset 0 29b1cd4cb562
--- /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 <e32base.h>
+#include <bluetooth/eirpublishermanufacturerspecificdata.h>
+
+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);
+	}