diff -r 000000000000 -r 29b1cd4cb562 bluetooth/btstack/avdtp/avdtpReportingSession.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetooth/btstack/avdtp/avdtpReportingSession.cpp Fri Jan 15 08:13:17 2010 +0200 @@ -0,0 +1,96 @@ +// Copyright (c) 2003-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: +// Implements the avdtp reporting transport session +// +// + +/** + @file + @internalComponent +*/ + +#include "avdtpReportingSession.h" +#include "avdtp.h" +#include "avdtpStream.h" +#include "avdtpsap.h" + +CReportingSession* CReportingSession::NewLC(CAvdtpProtocol& aProtocol, + CAvdtpSAP& aSAP, CAVStream& aStream) + { + CReportingSession* s = new (ELeave) CReportingSession(aProtocol, aSAP, aStream); + CleanupStack::PushL(s); + s->ConstructL(); + return s; + } + +CReportingSession* CReportingSession::NewL(CAvdtpProtocol& aProtocol, + CAvdtpSAP& aSAP, CAVStream& aStream) + { + CReportingSession* s = CReportingSession::NewLC(aProtocol, aSAP, aStream); + CleanupStack::Pop(); + return s; + } + +CReportingSession::CReportingSession(CAvdtpProtocol& aProtocol, CAvdtpSAP& aSAP, CAVStream& aStream) +: CUserPlaneTransportSession(aProtocol, aSAP, EReporting, aStream) + { + + } + +void CReportingSession::ConstructL() + { + CUserPlaneTransportSession::ConstructL(); + + // Balking is set to true. This allows the circular buffer to wrap + // and overwrite the oldest data. + User::LeaveIfError(iSendPool.Create(4, ETrue)); + User::LeaveIfError(iReceivePool.Create(4, ETrue)); + } + +TInt CReportingSession::DoActiveOpen() + { + __ASSERT_DEBUG(iStream, Panic(EAvdtpTransportSessionBaseNotCheckStream)); + + TInt ret = KErrGeneral; + + // add session to the stream + ret = iStream->AddSession(EReporting,*this,iTransportChannel); + if (ret!=KErrNone) + { + // not erroring the stream, as it's not it's fault + // and it may not exist anyway! + iStream = NULL; + iSAP.Error(ret); + } + + return ret; + } + +TInt CReportingSession::Send(RMBufChain& aData, TUint /*aOptions*/, TSockAddr* /*aAddr*/) + { + TInt wrote = iTransportChannel->SendPacket(EReporting, aData); + if (!wrote) + { + iTransportChannelBlocked = ETrue; + } + return wrote; + } + + +void CReportingSession::CanSend() + { + // drain some pool? or just tell sap? + iTransportChannelBlocked = EFalse; + + }