--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btaudioman/src/basrvaccfwconn.cpp Mon Jan 18 20:28:57 2010 +0200
@@ -0,0 +1,296 @@
+/*
+* Copyright (c) 2005-2006 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:
+* This class communicates with Nokia "Accessory Framework"
+* to for e.g., get permission to attach/detach a remote bluetooth
+* device and also recieves requests to open/close audio connections.
+* Version : %version: 2.2.3 %
+*
+*/
+
+
+// INCLUDE FILES
+#include "BTAccInfo.h"
+#include "basrvaccfwconn.h"
+#include "debug.h"
+
+#include <AccPolCommonNameValuePairs.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// -----------------------------------------------------------------------------
+// CBasrvAccfwConn::CBasrvAccfwConn
+// C++ default constructor can NOT contain any code that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CBasrvAccfwConn::CBasrvAccfwConn()
+ {
+ }
+
+// ---------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------
+//
+CBasrvAccfwConn::~CBasrvAccfwConn()
+ {
+ iAccessoryBTControlSession.CloseSubSession();
+ iAccessoryServerSession.Close();
+ TRACE_FUNC
+ }
+
+// ---------------------------------------------------------
+// CBasrvAccfwIf::NewL
+// ---------------------------------------------------------
+//
+CBasrvAccfwIf* CBasrvAccfwIf::NewL(const TAccInfo* /*aInfo*/)
+{
+ return CBasrvAccfwConn::NewL();
+}
+
+// ---------------------------------------------------------
+// CBasrvAccfwConn::NewL
+// ---------------------------------------------------------
+//
+CBasrvAccfwIf* CBasrvAccfwConn::NewL()
+ {
+ CBasrvAccfwConn* self = new(ELeave) CBasrvAccfwConn();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+
+// ---------------------------------------------------------
+// ConstructL
+// ---------------------------------------------------------
+//
+void CBasrvAccfwConn::ConstructL()
+ {
+ User::LeaveIfError( iAccessoryServerSession.Connect() );
+ User::LeaveIfError( iAccessoryBTControlSession.CreateSubSession( iAccessoryServerSession ) );
+ TRACE_FUNC
+ }
+
+// ---------------------------------------------------------
+// CBasrvAccfwConn::CompleteReq
+// ---------------------------------------------------------
+//
+void CBasrvAccfwConn::CompleteReq(TBool /*aUse*/)
+ {
+ // Dos related implementation
+ }
+
+// ---------------------------------------------------------
+// CBasrvAccfwConn::AttachAccessory
+// ---------------------------------------------------------
+//
+void CBasrvAccfwConn::AttachAccessory(const TBTDevAddr& aBDAddr, TRequestStatus &aStatus)
+ {
+ TRACE_INFO_SEG(
+ {
+ TBuf<12> buf;
+ aBDAddr.GetReadable(buf);
+ TRACE_INFO((_L("CBasrvAccfwConn::AttachAccessory, BTAddr: %S"), &buf))
+ });
+ iAccessoryBTControlSession.ConnectAccessory( aStatus, aBDAddr );
+ }
+
+// ---------------------------------------------------------
+// CBasrvAccfwConn::CancelAttachAccessory
+// ---------------------------------------------------------
+//
+void CBasrvAccfwConn::CancelAttachAccessory(const TBTDevAddr& /*aBDAddr*/)
+ {
+ iAccessoryBTControlSession.CancelConnectAccessory();
+ TRACE_FUNC
+ }
+
+// ---------------------------------------------------------
+// CBasrvAccfwConn::DetatchAccessory
+// ---------------------------------------------------------
+//
+void CBasrvAccfwConn::DetatchAccessory( const TBTDevAddr& aBDAddr, TRequestStatus &aStatus )
+ {
+ TRACE_INFO_SEG(
+ {
+ TBuf<12> buf;
+ aBDAddr.GetReadable(buf);
+ TRACE_INFO((_L("CBasrvAccfwConn::DetatchAccessory, BTAddr: %S"), &buf))
+ });
+ iAccessoryBTControlSession.DisconnectAccessory( aStatus, aBDAddr );
+ }
+
+// -----------------------------------------------------------------------------
+// CBasrvAccfwConn::NotifyBTAudioLinkOpenReq
+// -----------------------------------------------------------------------------
+//
+void CBasrvAccfwConn::NotifyBTAudioLinkOpenReq(TBTDevAddr& aBDAddress,
+ TRequestStatus& aStatus, TAccAudioType& aType )
+ {
+ TRACE_FUNC
+ iAccessoryBTControlSession.NotifyBluetoothAudioLinkOpenReq( aStatus, aBDAddress, aType );
+ }
+
+// -----------------------------------------------------------------------------
+// CBasrvAccfwConn::NotifyBTAudioLinkCloseReq
+// -----------------------------------------------------------------------------
+//
+void CBasrvAccfwConn::NotifyBTAudioLinkCloseReq(TBTDevAddr& aBDAddress,
+ TRequestStatus& aStatus, TAccAudioType& aType )
+ {
+ TRACE_FUNC
+ iAccessoryBTControlSession.NotifyBluetoothAudioLinkCloseReq( aStatus, aBDAddress, aType );
+ }
+
+// -----------------------------------------------------------------------------
+// CBasrvAccfwConn::CancelNotifyBTAudioLinkOpenReq
+// -----------------------------------------------------------------------------
+//
+void CBasrvAccfwConn::CancelNotifyBTAudioLinkOpenReq()
+ {
+ iAccessoryBTControlSession.CancelNotifyBluetoothAudioLinkOpenReq();
+ TRACE_FUNC
+ }
+
+// -----------------------------------------------------------------------------
+// CBasrvAccfwConn::CancelNotifyBTAudioLinkCloseReq
+// -----------------------------------------------------------------------------
+//
+void CBasrvAccfwConn::CancelNotifyBTAudioLinkCloseReq()
+ {
+ iAccessoryBTControlSession.CancelNotifyBluetoothAudioLinkCloseReq();
+ TRACE_FUNC
+ }
+
+
+// -----------------------------------------------------------------------------
+// CBasrvAccfwConn::AudioConnectionOpenComplete
+// -----------------------------------------------------------------------------
+//
+void CBasrvAccfwConn::AudioConnectionOpenCompleteL( const TBTDevAddr& aBDAddress,
+ TInt aResp, TInt aLatency )
+ {
+
+ TAccValueTypeTInt value;
+ value.iValue = aLatency;
+
+ TRACE_INFO_SEG(
+ {
+ TBuf<12> buf;
+ aBDAddress.GetReadable(buf);
+ TRACE_INFO((_L("CBasrvAccfwConn::AudioConnectionOpenCompleteL, BTAddr: %S LATENCY: %d"), &buf, value.iValue))
+ });
+ iAccessoryBTControlSession.BluetoothAudioLinkOpenRespL( aBDAddress, aResp ) ;
+ TAccPolNameRecord nameRecord;
+ TRAPD(ret, nameRecord.SetNameL(KAccAudioLatency));
+ if ( !ret )
+ {
+ TRAP_IGNORE(iAccessoryBTControlSession.AccessoryValueChangedNotifyL(aBDAddress, nameRecord, value));
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CBasrvAccfwConn::AudioConnectionCloseComplete
+// -----------------------------------------------------------------------------
+//
+void CBasrvAccfwConn::AudioConnectionCloseCompleteL( const TBTDevAddr& aBDAddress,
+ TInt aResp )
+ {
+ TRACE_INFO_SEG(
+ {
+ TBuf<12> buf;
+ aBDAddress.GetReadable(buf);
+ TRACE_INFO((_L("CBasrvAccfwConn::AudioConnectionCloseCompleteL, BTAddr: %S"), &buf))
+ });
+ iAccessoryBTControlSession.BluetoothAudioLinkCloseRespL( aBDAddress, aResp ) ;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CBasrvAccfwConn::NotifyAudioLinkOpen
+// -----------------------------------------------------------------------------
+//
+void CBasrvAccfwConn::NotifyAudioLinkOpenL( const TBTDevAddr& aBDAddress, TAccAudioType aType )
+ {
+ TRACE_INFO_SEG(
+ {
+ TBuf<12> buf;
+ aBDAddress.GetReadable(buf);
+ TRACE_INFO((_L("CBasrvAccfwConn::NotifyAudioLinkOpenL, BTAddr: %S"), &buf))
+ });
+ iAccessoryBTControlSession.BluetoothAudioLinkOpenedNotifyL( aBDAddress, aType ) ;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CBasrvAccfwConn::NotifyAudioLinkClose
+// -----------------------------------------------------------------------------
+//
+void CBasrvAccfwConn::NotifyAudioLinkCloseL( const TBTDevAddr& aBDAddress, TAccAudioType aType )
+ {
+ TRACE_INFO_SEG(
+ {
+ TBuf<12> buf;
+ aBDAddress.GetReadable(buf);
+ TRACE_INFO((_L("CBasrvAccfwConn::NotifyAudioLinkCloseL, BTAddr: %S"), &buf))
+ });
+ iAccessoryBTControlSession.BluetoothAudioLinkClosedNotifyL( aBDAddress, aType ) ;
+ }
+
+// -----------------------------------------------------------------------------
+// CBasrvAccfwConn::DisableNREC
+// -----------------------------------------------------------------------------
+//
+TInt CBasrvAccfwConn::DisableNREC(const TBTDevAddr& aBDAddress)
+ {
+ TRACE_INFO_SEG(
+ {
+ TBuf<12> buf;
+ aBDAddress.GetReadable(buf);
+ TRACE_INFO((_L("CBasrvAccfwConn::DisableNREC, BTAddr: %S"), &buf))
+ });
+
+ TAccValueTypeTBool value;
+ value.iValue = ETrue;
+ TAccPolNameRecord nameRecord;
+
+ // Echo cancellation
+ TRAPD(ret, nameRecord.SetNameL(KAccAcousticEchoControl));
+ if (!ret)
+ {
+ TRAP(ret, iAccessoryBTControlSession.AccessoryValueChangedNotifyL( aBDAddress,
+ nameRecord,
+ value ));
+ }
+ if (!ret)
+ {
+ // Noise Reduction
+ TRAP(ret, nameRecord.SetNameL(KAccNoiseReduction));
+ if (!ret)
+ {
+ TRAP(ret, iAccessoryBTControlSession.AccessoryValueChangedNotifyL( aBDAddress,
+ nameRecord,
+ value ));
+ }
+ }
+ return ret;
+ }
+
+// End of file