accessoryservices/accessoryremotecontrol/tsrc/remcontestcontrol/remcontestcontrolplugin/src/remconcore.cpp
changeset 0 4e1aa6a622a0
child 41 c87e5f80c17d
child 60 ccb4f6b3db21
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/accessoryservices/accessoryremotecontrol/tsrc/remcontestcontrol/remcontestcontrolplugin/src/remconcore.cpp	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,320 @@
+/*
+* Copyright (c) 2002-2004 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:  ?Description
+*
+*/
+
+
+// INCLUDE FILES
+#include "remconcontrol.h"
+#include "remconactive.h"
+#include "siftrace.h"
+#include "remconcore.h"
+#include <remconaddress.h>
+
+// -----------------------------------------------------------------------------
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+CRemConCore::CRemConCore()
+    {
+     iEvent     = ETFRemConEvent_None;
+     iParameter = KErrNone;	
+    }
+
+// -----------------------------------------------------------------------------
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+void CRemConCore::ConstructL( CRemConInterfaceSelector* aTargetInterfaceSelector )
+    {
+    iCore = CRemConCoreApiTarget::NewL( *aTargetInterfaceSelector, *this );
+    
+    iCoreController = CRemConCoreApiController::NewL( *aTargetInterfaceSelector, *this );
+
+	iTargetInterfaceSelector =	aTargetInterfaceSelector;
+	
+    iActive = CRemConActive::NewL( *this );
+	}
+
+// -----------------------------------------------------------------------------
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+CRemConCore* CRemConCore::NewL( CRemConInterfaceSelector* aTargetInterfaceSelector )
+    {
+    CRemConCore* self = new( ELeave ) CRemConCore();
+    CleanupStack::PushL( self );
+    self->ConstructL( aTargetInterfaceSelector );
+    CleanupStack::Pop();
+    return self;
+    }
+ 
+// -----------------------------------------------------------------------------
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+CRemConCore::~CRemConCore()
+    {
+    delete iActive;
+    }
+
+
+// -----------------------------------------------------------------------------
+// 
+// 
+// 
+// -----------------------------------------------------------------------------
+void CRemConCore::CompleteResponse( const TInt aError )
+    {
+		if( aError != KErrNone )
+	    {
+    	COMPONENT_TRACE( ( _L( "REMCONTESTCONTROL -  CRemConCore::CompleteResponse( %d)" ), aError) );
+    	}
+    	else
+    	{
+    	
+    	MRemConControl* aControl = GetRemConControl();
+    	aControl->CompleteKeyEventResponse( iEvent, iParameter, aError );	
+    	}
+	 
+	 iEvent     = ETFRemConEvent_None;
+     iParameter = KErrNone;	
+	}
+// -----------------------------------------------------------------------------
+// 
+// 
+// 
+// -----------------------------------------------------------------------------	
+void CRemConCore::MrccatoCommand(TRemConCoreApiOperationId aOperationId, 
+			TRemConCoreApiButtonAction aButtonAct)
+{
+    
+	iParameter = (TInt)aButtonAct;
+	
+	switch ( aOperationId )
+        {       	
+        case ERemConCoreApiVolumeUp:
+            {
+            iEvent = ETFRemConEvent_VolumeUp;
+            break;
+            }
+        case ERemConCoreApiVolumeDown:
+        	{
+			iEvent = ETFRemConEvent_VolumeDown;
+        	break;
+        	}        
+        case ERemConCoreApiStop:
+        	{
+			iEvent = ETFRemConEvent_CodeStop;
+        	break;
+        	}
+        case ERemConCoreApiFastForward:
+        	{
+			iEvent = ETFRemConEvent_CodeForward;
+        	break;
+        	}
+        case ERemConCoreApiRewind:
+        	{
+			iEvent = ETFRemConEvent_CodeBack;
+        	break;
+        	}
+		case ERemConCoreApiForward:
+        	{
+			iEvent = ETFRemConEvent_CodeForward;
+        	break;
+        	}
+		
+		case ERemConCoreApiBackward:
+        	{
+			iEvent = ETFRemConEvent_CodeBack;
+        	break;
+        	}
+        	
+        case ERemConCoreApiPausePlayFunction:
+        	{
+			iEvent = ETFRemConEvent_CoreApiPlaybackSpeedX1; //event not used in real implementation
+        	break;
+        	}
+        	
+        case ERemConCoreApiMute:
+        	{
+        	iEvent = ETFRemConEvent_Mute;
+        	break;
+        	} 
+
+     	default:
+     	    iEvent = ETFRemConEvent_None;
+            break;      
+        }
+    MRemConControl* aControl = GetRemConControl();
+	aControl->NotifyKeyEvent(iEvent, aButtonAct);
+	
+	iEvent     = ETFRemConEvent_None;
+    iParameter = KErrNone;	
+
+}
+
+// -----------------------------------------------------------------------------
+// 
+// 
+// 
+// -----------------------------------------------------------------------------		
+void CRemConCore::MrccatoPlay(TRemConCoreApiPlaybackSpeed aSpeed, 
+			TRemConCoreApiButtonAction aButtonAct)
+{
+	
+	//TTFRemConkeyEvent aKeyCode;
+	iParameter = (TInt)aButtonAct;
+	
+	switch ( aSpeed )
+        {       	
+        case ERemConCoreApiPlaybackSpeedX1:
+            {
+            iEvent = ETFRemConEvent_CoreApiPlaybackSpeedX1;
+            break;
+            }
+
+     	default:
+     	    iEvent = ETFRemConEvent_None;
+            break;      
+        }
+	MRemConControl* aControl = GetRemConControl();
+	aControl->NotifyKeyEvent(iEvent, aButtonAct);
+	
+	iEvent     = ETFRemConEvent_None;
+    iParameter = KErrNone;	
+	
+}
+
+// -----------------------------------------------------------------------------
+// 
+// 
+// 
+// -----------------------------------------------------------------------------
+void CRemConCore::MrccatoTuneFunction(TBool /*aTwoPart*/, 
+			TUint /*aMajorChannel*/, 
+			TUint /*aMinorChannel*/,
+			TRemConCoreApiButtonAction /*aButtonAct*/)
+{
+}
+
+// -----------------------------------------------------------------------------
+// 
+// 
+// 
+// -----------------------------------------------------------------------------
+void CRemConCore::MrccatoSelectDiskFunction(TUint /*aDisk*/,
+			TRemConCoreApiButtonAction /*aButtonAct*/)
+{
+}
+
+// -----------------------------------------------------------------------------
+// 
+// 
+// 
+// -----------------------------------------------------------------------------		
+void CRemConCore::MrccatoSelectAvInputFunction(TUint8 /*aAvInputSignalNumber*/,
+			TRemConCoreApiButtonAction /*aButtonAct*/)
+{
+}
+
+// -----------------------------------------------------------------------------
+// 
+// 
+// 
+// -----------------------------------------------------------------------------
+void CRemConCore::MrccatoSelectAudioInputFunction(TUint8 /*aAudioInputSignalNumber*/,
+			TRemConCoreApiButtonAction /*aButtonAct*/)
+{
+}
+
+// -----------------------------------------------------------------------------
+// 
+// 
+// 
+// -----------------------------------------------------------------------------
+void CRemConCore::Response(TRemConCoreApiOperationId /*aOperationId*/, TInt /*aError*/)
+{
+	
+}
+
+// -----------------------------------------------------------------------------
+// 
+// 
+// 
+// -----------------------------------------------------------------------------
+void CRemConCore::Play()
+{
+		TUint numRemotes;		
+ 		iCoreController->Play(iActive->iStatus, numRemotes, ERemConCoreApiButtonPress);
+ 		iActive->iStatus = KRequestPending;
+		iActive->SetActive();
+}
+ 
+ // -----------------------------------------------------------------------------
+// 
+// 
+// 
+// -----------------------------------------------------------------------------
+
+void CRemConCore::Stop()
+{		
+		TUint numRemotes;
+		TRemConAddress* aConnection;
+		TSglQue<TRemConAddress> aConnections;		
+		const TInt KBearerUid = 0x10205083;	
+					
+		iTargetInterfaceSelector->GetConnections(aConnections);
+		
+		aConnection = aConnections.First();					
+
+		if(aConnection->IsNull() == EFalse)
+		{			
+			//
+			// Should check also last element...
+			//
+			while (aConnection->BearerUid() == TUid::Uid(KBearerUid))
+	        {
+	        aConnection = (TRemConAddress*)aConnection->iLink.iNext;        
+	        };
+	        
+	 		if(aConnection->IsNull() == EFalse)
+	 			{
+	 			iTargetInterfaceSelector->GoConnectionOrientedL(*aConnection);	
+	 			}
+            
+            iActive->iStatus = KRequestPending;					
+			iCoreController->Stop(iActive->iStatus, numRemotes, ERemConCoreApiButtonPress);		
+			iActive->SetActive();	
+		}
+}
+
+// -----------------------------------------------------------------------------
+// 
+// 
+// 
+// -----------------------------------------------------------------------------
+void CRemConCore::Cancel()
+{
+		TUint numRemotes;		
+ 		iCoreController->Play(iActive->iStatus, numRemotes, ERemConCoreApiButtonPress); 		
+ 		iCoreController->Cancel();
+ 		iActive->SetActive();
+}
+