localconnectivityservice/headset/hidremconbearer/src/hidremconbearerimplementation.cpp
branchRCL_3
changeset 39 4096754ee773
parent 38 3dcb815346df
child 40 52a167391590
--- a/localconnectivityservice/headset/hidremconbearer/src/hidremconbearerimplementation.cpp	Thu Aug 19 10:46:39 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;
-    }