--- a/localconnectivityservice/headset/hidremconbearer/src/hidremconbearerimplementation.cpp Tue Aug 31 16:03:15 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,522 +0,0 @@
-/*
-* 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: Bearer plugin API Implementation file
- *
-*/
-
-#include <e32def.h>
-#include <remcon/remconbearerobserver.h>
-#include <remcon/remconconverterplugin.h>
-#include <remconaddress.h>
-#include <remconcoreapi.h>
-#include <RemConExtensionApi.h>
-#include <PSVariables.h> // Property values
-#include <coreapplicationuisdomainpskeys.h>
-#include "hidremconbearerinternalpskeys.h"
-#include "hidremconbearerscancodes.h"
-#include "hidremconbearerimplementation.h"
-#include "hidremconbearerobserver.h"
-#include "debug.h"
-
-_LIT8(KFormatString,"%c");
-_LIT8(KVoiceFormatString,"%d");
-_LIT_SECURITY_POLICY_C1(KHidRemconBearerReadPolicy, ECapability_None);
-_LIT_SECURITY_POLICY_C1(KHidRemconBearerWritePolicy, ECapability_None);
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::NewL()
-// Description: Factory function.
-// return: Ownership of a new CHidRemconBearer.
-// ---------------------------------------------------------------------------
-//
-CHidRemconBearer* CHidRemconBearer::NewL( TBearerParams& aParams )
- {
- CHidRemconBearer* self = new ( ELeave ) CHidRemconBearer( aParams );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::~CHidRemconBearer()
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CHidRemconBearer::~CHidRemconBearer()
- {
- delete iMediaKeyObserver;
- delete iAccessoryVolKeyObserver;
- delete iMuteKeyObserver;
- delete iHookKeyObserver;
- }
-
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::CHidRemconBearer()
-// construction.
-// ---------------------------------------------------------------------------
-//
-CHidRemconBearer::CHidRemconBearer( TBearerParams& aParams ) :
- CRemConBearerPlugin( aParams )
- {
- //Pass
- }
-
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::ConstructL()
-// 2nd-phase construction.
-// ---------------------------------------------------------------------------
-//
-void CHidRemconBearer::ConstructL()
- {
- TRACE_FUNC_ENTRY
- // throw an indication up to RemCon.
- TRemConAddress addr;
- addr.BearerUid() = Uid();
- TInt err = Observer().ConnectIndicate( addr );
-
- //Define the P&S for Volume keys and Media Keys
- RProperty::Define( KPSUidHidEventNotifier, KHidControlKeyEvent,
- RProperty::EInt, KHidRemconBearerReadPolicy,
- KHidRemconBearerWritePolicy );
- // Define P&S Key for Volume keys from Accessory device
- RProperty::Define( KPSUidHidEventNotifier, KHidAccessoryVolumeEvent,
- RProperty::EInt, KHidRemconBearerReadPolicy,
- KHidRemconBearerWritePolicy );
- // Define P&S Key for Mute key from Accessory device
- RProperty::Define( KPSUidHidEventNotifier, KHidMuteKeyEvent,
- RProperty::EInt, KHidRemconBearerReadPolicy,
- KHidRemconBearerWritePolicy );
-
- // Define P&S Key for phone keys from Accessory device
- RProperty::Define( KPSUidHidEventNotifier, KHidHookKeyEvent,
- RProperty::EInt, KHidRemconBearerReadPolicy,
- KHidRemconBearerWritePolicy );
-
- // Start Active object for listening key events from P&S
-
- iMediaKeyObserver = CHidRemconBearerObserver::NewL( *this, EMediaKeys );
- iAccessoryVolKeyObserver = CHidRemconBearerObserver::NewL( *this,
- EAccessoryVolumeKeys );
-
- iMuteKeyObserver = CHidRemconBearerObserver::NewL( *this, EMuteKey );
-
- iHookKeyObserver = CHidRemconBearerObserver::NewL( *this, EHookKeys );
- }
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::ConnectRequest()
-// Rem Con server send connect request to Bearer Plugin
-// ---------------------------------------------------------------------------
-//
-void CHidRemconBearer::ConnectRequest( const TRemConAddress& /*aAddr*/)
- {
- TRACE_FUNC
- // Pass
- }
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::DisconnectRequest()
-// Rem Con server send disconnect request to Bearer Plugin
-// ---------------------------------------------------------------------------
-//
-void CHidRemconBearer::DisconnectRequest( const TRemConAddress& /*aAddr*/)
- {
- TRACE_FUNC
- // Pass
- }
-
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::SendResponse()
-//
-// ---------------------------------------------------------------------------
-//
-TInt CHidRemconBearer::SendResponse( TUid /* aInterfaceUid */,
- TUint /*aOperationId*/,
- TUint /*aTransactionId*/, // we don't care about this transaction ID
- RBuf8& aData,
- const TRemConAddress& /*aAddr*/)
- {
- TRACE_FUNC
- aData.Close();
- return KErrNone;
- }
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::SendCommand()
-//
-// ---------------------------------------------------------------------------
-//
-TInt CHidRemconBearer::SendCommand( TUid /* aInterfaceUid */,
- TUint /* aOperationId */, TUint /* aTransactionId */,
- RBuf8& /* aData */, const TRemConAddress& /*aAddr*/)
- {
- TRACE_FUNC
- return KErrNone;
- }
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::GetResponse()
-//
-// ---------------------------------------------------------------------------
-//
-TInt CHidRemconBearer::GetResponse( TUid& /* aInterfaceUid */,
- TUint& /* aTransactionId*/, TUint& /* aOperationId */,
- RBuf8& /* aData */, TRemConAddress& /*aAddr */)
- {
- TRACE_FUNC
- return KErrNone;
- }
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::GetCommand()
-//
-// ---------------------------------------------------------------------------
-//
-TInt CHidRemconBearer::GetCommand( TUid& aInterfaceUid,
- TUint& aTransactionId, TUint& aOperationId, RBuf8& aData,
- TRemConAddress& aAddr )
- {
- TRACE_FUNC
- aInterfaceUid = iInterfaceUid;
- aOperationId = iOperationId;
- // Pass ownership of this to RemCon.
- TRAPD(retTrap, aData.CreateL(iData));
- if ( retTrap != KErrNone )
- {
- return retTrap;
- }
- aAddr.BearerUid() = Uid();
- aAddr.Addr() = KNullDesC8();
- aTransactionId = iTransactionId;
- return KErrNone;
- }
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::SetSVKOperationIdAndData()
-// ---------------------------------------------------------------------------
-//
-void CHidRemconBearer::SetSVKOperationIdAndData( TInt aEnumValue )
- {
- TRACE_FUNC
- // 1. Interface ID is required when Getcommand is called
- iInterfaceUid = TUid::Uid( KRemConCoreApiUid ); // from Remconcoreapi.h
- switch ( aEnumValue )
- {
- case KPSVolumeUpPressed:
- iOperationId = ERemConCoreApiVolumeUp;
- iData.Format( KFormatString, ERemConCoreApiButtonPress );
- break;
- case KPSVolumeUpReleased:
- iOperationId = ERemConCoreApiVolumeUp;
- iData.Format( KFormatString, ERemConCoreApiButtonRelease );
- break;
- case KPSVolumeUpClicked:
- iOperationId = ERemConCoreApiVolumeUp;
- iData.Format( KFormatString, ERemConCoreApiButtonClick );
- break;
- case KPSVolumeDownPressed:
- iOperationId = ERemConCoreApiVolumeDown;
- iData.Format( KFormatString, ERemConCoreApiButtonPress );
- break;
- case KPSVolumeDownReleased:
- iOperationId = ERemConCoreApiVolumeDown;
- iData.Format( KFormatString, ERemConCoreApiButtonRelease );
- break;
- case KPSVolumeDownClicked:
- iOperationId = ERemConCoreApiVolumeDown;
- iData.Format( KFormatString, ERemConCoreApiButtonClick );
- break;
- case KPSVolumeNoKey: // This should never execute
- break;
- default:
- iOperationId = aEnumValue;
- iData.Format( KFormatString, ERemConCoreApiButtonClick );
- break;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::SetMuteKeyOperationIdAndData
-// ---------------------------------------------------------------------------
-//
-void CHidRemconBearer::SetMuteKeyOperationIdAndData( TInt aEnumValue )
- {
- TRACE_INFO((_L("[HID]\tCHidRemconBearer::SetMuteKeyOperation \
- IdAndData( %d )"), aEnumValue));
- // 1. Interface ID is required when Getcommand is called
- iInterfaceUid = TUid::Uid( KRemConCoreApiUid ); // from Remconcoreapi.h
- switch ( aEnumValue )
- {
- case KPSMutePressed:
- iOperationId = ERemConCoreApiMute;
- iData.Format( KFormatString, ERemConCoreApiButtonPress );
- break;
- case KPSMuteReleased:
- iOperationId = ERemConCoreApiMute;
- iData.Format( KFormatString, ERemConCoreApiButtonRelease );
- break;
- case KPSMuteClicked:
- iOperationId = ERemConCoreApiMute;
- iData.Format( KFormatString, ERemConCoreApiButtonClick );
- break;
- default:
- TRACE_INFO(_L("CHidRemconBearer::SetMuteKeyOperationIdAndData : \
- Not supported"))
- ;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::SetMediaKeyOperationIdAndData()
-// ---------------------------------------------------------------------------
-//
-void CHidRemconBearer::SetMediaKeyOperationIdAndData( TInt aEnumValue )
- {
- TRACE_FUNC
- // 1. Interface ID is required when Getcommand is called
- iInterfaceUid = TUid::Uid( KRemConCoreApiUid ); // from Remconcoreapi.h
- switch ( aEnumValue )
- {
- case EPlayReleased:
- iOperationId = ERemConCoreApiPausePlayFunction;
- iData.Format( KFormatString, ERemConCoreApiButtonRelease );
- break;
- case EPlayPressed:
- iOperationId = ERemConCoreApiPausePlayFunction;
- iData.Format( KFormatString, ERemConCoreApiButtonPress );
- break;
- case EPlayClicked:
- iOperationId = ERemConCoreApiPausePlayFunction;
- iData.Format( KFormatString, ERemConCoreApiButtonClick );
- break;
- case EStopReleased:
- iOperationId = ERemConCoreApiStop;
- iData.Format( KFormatString, ERemConCoreApiButtonRelease );
- break;
- case EStopPressed:
- iOperationId = ERemConCoreApiStop;
- iData.Format( KFormatString, ERemConCoreApiButtonPress );
- break;
- case EStopClicked:
- iOperationId = ERemConCoreApiStop;
- iData.Format( KFormatString, ERemConCoreApiButtonClick );
- break;
- case EForwardReleased:
- iOperationId = ERemConCoreApiForward;
- iData.Format( KFormatString, ERemConCoreApiButtonRelease );
- break;
- case EForwardPressed:
- iOperationId = ERemConCoreApiForward;
- iData.Format( KFormatString, ERemConCoreApiButtonPress );
- break;
- case EForwardClicked:
- iOperationId = ERemConCoreApiForward;
- iData.Format( KFormatString, ERemConCoreApiButtonClick );
- break;
- case ERewindReleased:
- iOperationId = ERemConCoreApiRewind;
- iData.Format( KFormatString, ERemConCoreApiButtonRelease );
- break;
- case ERewindPressed:
- iOperationId = ERemConCoreApiRewind;
- iData.Format( KFormatString, ERemConCoreApiButtonPress );
- break;
- case ERewindClicked:
- iOperationId = ERemConCoreApiRewind;
- iData.Format( KFormatString, ERemConCoreApiButtonClick );
- break;
- case EFastForwardReleased:
- iOperationId = ERemConCoreApiFastForward;
- iData.Format( KFormatString, ERemConCoreApiButtonRelease );
- break;
- case EFastForwardPressed:
- iOperationId = ERemConCoreApiFastForward;
- iData.Format( KFormatString, ERemConCoreApiButtonPress );
- break;
- case EFastForwardClicked:
- iOperationId = ERemConCoreApiFastForward;
- iData.Format( KFormatString, ERemConCoreApiButtonClick );
- break;
- case EBackwardReleased:
- iOperationId = ERemConCoreApiBackward;
- iData.Format( KFormatString, ERemConCoreApiButtonRelease );
- break;
- case EBackwardPressed:
- iOperationId = ERemConCoreApiBackward;
- iData.Format( KFormatString, ERemConCoreApiButtonPress );
- break;
- case EBackwardClicked:
- iOperationId = ERemConCoreApiBackward;
- iData.Format( KFormatString, ERemConCoreApiButtonClick );
- break;
- // This should never execute
- default:
- iOperationId = aEnumValue;
- iData.Format( KFormatString, ERemConCoreApiButtonClick );
- break;
-
- }
- }
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::ReceivedKeyEvent()
-// ---------------------------------------------------------------------------
-//
-void CHidRemconBearer::SetPhoneKeyOperationIdAndData( TInt aEnumValue )
- {
- TRACE_FUNC_ENTRY
- iInterfaceUid = TUid::Uid( KRemConExtCallHandlingApiUid );
- switch ( aEnumValue )
- {
- case KPSAnsweClicked:
- TRACE_INFO((_L("[HID]\tCHidRemconBearer::SetPhoneKey \
- OperationIdAndData Answer")));
- iOperationId = ERemConExtAnswerCall;
- iData.Format( KFormatString, ERemConCoreApiButtonClick );
- break;
- case KPSHangUpClicked:
- iOperationId = ERemConExtEndCall;
- iData.Format( KFormatString, ERemConCoreApiButtonClick );
- break;
- case KPSRedial:
- iOperationId = ERemConExtLastNumberRedial;
- iData.Format( KFormatString, ERemConCoreApiButtonClick );
- break;
- case KPSVoiceDial:
- iOperationId = ERemConExtVoiceDial;
- iData.Format( KVoiceFormatString, ERemConCoreApiButtonRelease );
- break;
- default:
- TRACE_INFO(_L("CHidRemconBearer::SetPhoneKeyOperationIdAndData \
- : Not supported")); }
- TRACE_FUNC_EXIT
- }
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::ReceivedKeyEvent()
-// ---------------------------------------------------------------------------
-//
-void CHidRemconBearer::ReceivedKeyEvent( TInt aEnumValue, TInt aKeyType )
- {
- TRACE_INFO((_L("[HID]\tCHidRemconBearer::ReceivedKeyEvent: value %d, \
- type %d )"), aEnumValue, aKeyType));
-
- /* To keep the background light on */
- User::ResetInactivityTime();
-
- // 2. Transaction ID
- iTransactionId = Observer().NewTransactionId();
-
- // 3. Addr
- TRemConAddress addr;
- addr.BearerUid() = Uid();
- addr.Addr() = KNullDesC8();
-
- // 4 & 5. Operation ID and Data
- HandleKeyOperation( aEnumValue, aKeyType );
-
- // Msgtype is ERemConCommand
- TInt error = Observer().NewCommand( addr );
- TRACE_INFO((_L("[HID]\tCHidRemconBearer::ReceivedKeyEvent: error %d )"),
- error));
- //Start the listener once again
- RestartKeyObeserver( aKeyType );
-
- }
-
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::RestartKeyObeserver
-// ---------------------------------------------------------------------------
-//
-void CHidRemconBearer::RestartKeyObeserver( TInt aKeyType )
- {
- TRACE_FUNC_ENTRY
- switch ( aKeyType )
- {
- case EMediaKeys:
- iMediaKeyObserver->Start();
- break;
- case EAccessoryVolumeKeys:
- iAccessoryVolKeyObserver->Start();
- break;
- case EMuteKey:
- iMuteKeyObserver->Start();
- break;
- case EHookKeys:
- iHookKeyObserver->Start();
- break;
- default:
- TRACE_INFO(_L("CHidRemconBearer::RestartKeyObeserver : Not supported"))
- ;
- }
- TRACE_FUNC_EXIT
- }
-
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::RestartObexserver
-// ---------------------------------------------------------------------------
-//
-void CHidRemconBearer::HandleKeyOperation( TInt aEnumValue, TInt aKeyType )
- {
- TRACE_FUNC_ENTRY
- switch ( aKeyType )
- {
- case EAccessoryVolumeKeys:
- SetSVKOperationIdAndData( aEnumValue );
- break;
- case EMuteKey:
- SetMuteKeyOperationIdAndData( aEnumValue );
- break;
- case EMediaKeys:
- SetMediaKeyOperationIdAndData( aEnumValue );
- break;
- case EHookKeys:
- SetPhoneKeyOperationIdAndData( aEnumValue );
- break;
- default:
- TRACE_INFO(_L("CHidRemconBearer::HandleKeyOperation : Not \
- supported"))
- ;
- }
- TRACE_FUNC_EXIT
- }
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::SecurityPolicy()
-// ---------------------------------------------------------------------------
-//
-TSecurityPolicy CHidRemconBearer::SecurityPolicy() const
- {
- return TSecurityPolicy( ECapabilityLocalServices );
- }
-
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::ClientStatus()
-// ---------------------------------------------------------------------------
-//
-void CHidRemconBearer::ClientStatus( TBool /*aControllerPresent*/, TBool /*aTargetPresent*/)
- {
- //Pass
- TRACE_FUNC
- }
-
-// ---------------------------------------------------------------------------
-// CHidRemconBearer::GetInterface()
-// ---------------------------------------------------------------------------
-//
-TAny* CHidRemconBearer::GetInterface( TUid aUid )
- {
- TRACE_FUNC
- TAny* ret = NULL;
- if ( aUid == TUid::Uid( KRemConBearerInterface1 ) )
- {
- ret = reinterpret_cast<TAny*> (
- static_cast<MRemConBearerInterface*> ( this ) );
- }
- return ret;
- }