connectivitymodules/SeCon/plugins/hapticsconnplugin/src/hapticsbridgeclient.cpp
branchRCL_3
changeset 42 0aa8cc770c8a
parent 40 453dfc402455
child 43 4a793f564d72
--- a/connectivitymodules/SeCon/plugins/hapticsconnplugin/src/hapticsbridgeclient.cpp	Thu Aug 19 10:44:03 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,317 +0,0 @@
-/*
-* Copyright (c) 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:  Client interface to haptics server for haptics bridge 
-*                commands.
-*
-*/
-
-
-#include <e32svr.h>
-#include <f32file.h>
-#include <data_caging_path_literals.hrh> // KDC_PROGRAMS_DIR
-#include <hwrmhaptics.h>
-#include <hwrmlogicalactuators.h>
-#include <hwrmhapticspacketizer.h>
-
-#include "hapticsbridgeclient.h"
-#include "hapticsconntrace.h"
-
-const TInt KServerVersionMajor       = 1;
-const TInt KServerVersionMinor       = 1;
-const TInt KServerVersionBuild       = 1;
-_LIT( KServerProcessName, "!hwrmhapticsserver" );
-_LIT( KServerExeName, "hwrmhapticsserver.exe" );
-const TInt KAsyncMsgSlots = 10;
-
-const TInt KHWRMHapticsServiceCommand      = 2001;
-const TInt KHWRMHapticsOpenActuatorCommand = 2004;
-const TInt KHWRMHapticsCleanupCommand      = 2008;
-const TInt KHWRMHapticsBridgeCommand       = 2011;
-
-// --------------------------------------------------------------------------
-// Simple constructor
-// 
-// --------------------------------------------------------------------------
-// 
-RHapticsBridgeClient::RHapticsBridgeClient()
-    {
-    TRAP_IGNORE( iPacketizer = 
-                 CHWRMHapticsPacketizer::NewL( EHWRMLogicalActuatorAny ) );
-    }
-
-// --------------------------------------------------------------------------
-// Simple destructor
-// 
-// --------------------------------------------------------------------------
-// 
-RHapticsBridgeClient::~RHapticsBridgeClient()
-    {
-    delete iPacketizer;
-    }
-
-// --------------------------------------------------------------------------
-// Method for connecting (creating a new session) with Haptics Server
-// 
-// --------------------------------------------------------------------------
-// 
-TInt RHapticsBridgeClient::Connect()
-    {
-    COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::Connect()" ) ) );
-    TInt ret = CreateSession( KServerProcessName, 
-                              ServerVersion(), 
-                              KAsyncMsgSlots );
-    if ( ret != KErrNone )
-        {
-        ret = StartServer();
-        if ( ret == KErrNone )
-            {
-            ret = CreateSession( KServerProcessName, 
-                                 ServerVersion(),
-                                 KAsyncMsgSlots );    
-            COMPONENT_TRACE(_L("RHapticsBridgeClient::Connect(), Session created"));
-            }       
-        }
-
-    // Initialize server components.
-    if ( ret == KErrNone )
-        {
-        ret = SendReceive( KHWRMHapticsServiceCommand );
-        }
-
-    // Open the haptic effect ("vibra") device.
-    if ( ret == KErrNone )
-        {
-        ret = OpenHapticsDevice();
-        }
-    
-        
-    COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::Connect - return(%d)" ), ret ) );        
-    return ret;
-    }
-
-// --------------------------------------------------------------------------
-// Method for starting Haptics Server (if not already running)
-// 
-// --------------------------------------------------------------------------
-//
-TInt RHapticsBridgeClient::StartServer() const
-    {
-    COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::StartServer()" ) ) );
-
-    TParse parser;
-    parser.Set( KServerExeName, &KDC_PROGRAMS_DIR, NULL );
-        
-    RProcess server;
-    TInt ret = server.Create( parser.FullName(), KNullDesC );
-
-    if ( ret != KErrNone ) // Loading failed.
-        {
-        return ret;
-        }
-
-    TRequestStatus status;
-    server.Rendezvous( status );
-
-    if ( status != KRequestPending )
-        {
-        server.Kill( 0 ); // Abort startup.
-        server.Close();
-        return KErrGeneral;
-        }
-    else
-        {
-        server.Resume(); // Logon OK - start the server.
-        }
-        
-    User::WaitForRequest( status );
-    server.Close();
-
-    COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::StartServer() - return %d" ), status.Int() ) );
-    return status.Int();    
-    }
-
-// --------------------------------------------------------------------------
-// Method for closing session to haptics server.
-// 
-// --------------------------------------------------------------------------
-//    
-void RHapticsBridgeClient::Close()    
-    {
-    RSessionBase::Close();
-    }
-
-// --------------------------------------------------------------------------
-// Getter method for server version.
-// 
-// --------------------------------------------------------------------------
-//
-TVersion RHapticsBridgeClient::ServerVersion() const 
-    {
-    return TVersion( KServerVersionMajor, 
-                     KServerVersionMinor,
-                     KServerVersionBuild );
-    }
-
-// --------------------------------------------------------------------------
-// Method for sending commands to Haptics Server.
-// 
-// --------------------------------------------------------------------------
-//    
-TInt RHapticsBridgeClient::SendBridgeBuffer( const TDesC8& aReqData, TDes8& aRetDataPckg )
-    {
-    COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::SendBridgeBufferL() - Begin" ) ) );
-
-    TInt retVal( KErrDisconnected );
-    if ( iHandle )
-        {
-        TInt vibeStatus(0);
-        TPckg<TInt> vibeStatusPckg( vibeStatus );
-        retVal = SendReceive( KHWRMHapticsBridgeCommand, 
-                              TIpcArgs( &aReqData, 
-                                        &vibeStatusPckg, 
-                                        &aRetDataPckg ) );
-
-        if ( retVal == KErrNone ) 
-            {
-            TRAP( retVal, HandleOpenDeviceResponseL( aRetDataPckg ) );
-            }
-        }
-    
-    COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::SendBridgeBufferL() - End (%d)" ), retVal ) );    
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// Method for cleaning up session to Haptics Server.
-// 
-// --------------------------------------------------------------------------
-//
-void RHapticsBridgeClient::CleanUp()
-    {
-    COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::CleanUp() - Begin" ) ) );
-    if ( iHandle )
-        {
-        SendReceive ( KHWRMHapticsCleanupCommand );
-        }
-    COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::CleanUp() - End" ) ) );
-    }
-
-// --------------------------------------------------------------------------
-// Method for handling Open Device responses (basically for requesting the 
-// setting of the license key).
-// 
-// --------------------------------------------------------------------------
-//
-void RHapticsBridgeClient::HandleOpenDeviceResponseL( const TDesC8& aResponse )
-    {
-    COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::HandleOpenDeviceResponse() - Begin" ) ) );
-    TInt err( KErrNone );
-    if ( !iPacketizer )
-        {
-        COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::HandleOpenDeviceResponse() - No Packetizer!" ) ) );
-        User::Leave( KErrGeneral );
-        }
-    else    
-        {
-        const TUint8* pRsp ( aResponse.Ptr() );
-        if ( 0x12 == pRsp[0] && 0x00 == pRsp[1] && 0x00 == pRsp[2] )
-            {
-            COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::HandleOpenDeviceResponse() - OPEN DEVICE RESPONSE handling" ) ) );
-            iPacketizer->DecodeMessageL( aResponse, err );
-            if ( !err )
-                {
-                RBuf8 reqBuf;
-                err = iPacketizer->EncSetPlatformLicenseKeyReq( 
-                    iPacketizer->DeviceHandle(), reqBuf );
-                if ( !err )
-                    {
-                    TBuf8<50> dummyRetBuf;
-                    TInt dummyStatus;
-                    TPckg<TInt> dummyStatusPckg( dummyStatus );
-                    err = SendReceive( KHWRMHapticsBridgeCommand, 
-                                       TIpcArgs ( &reqBuf,
-                                                  &dummyStatusPckg, 
-                                                  &dummyRetBuf ) );
-                    COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::HandleOpenDeviceResponse() - Sent set license command (%d)"), err ) );
-                    }
-                reqBuf.Close();
-                }
-            User::LeaveIfError( err );
-            }
-        }
-    COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::HandleOpenDeviceResponse() - End" ) ) );
-    }
-
-
-// --------------------------------------------------------------------------
-// Method for opening haptics device. This is needed since there's possibility
-// that no other haptics client has opened the device prior to this bridge
-// connectivity. This method also call set license key, i.e., completes the
-// device opening. 
-//
-// --------------------------------------------------------------------------
-//
-TInt RHapticsBridgeClient::OpenHapticsDevice()
-    {
-    COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::OpenHapticsDevice - Begin" ) ) );
-    TInt err( KErrGeneral );
-    if ( iPacketizer )
-        {
-        RBuf8 openDevReqBuf;
-        RBuf8 setLicenseReqBuf;
-        TBuf8<50> setLicenseRspBuf;
-        TInt dummyStatus;
-        TPckg<TInt> dummyStatusPckg( dummyStatus );
-        
-        err = iPacketizer->EncOpenDeviceReq( EHWRMLogicalActuatorAny,
-                                             openDevReqBuf );
-
-        COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::OpenHapticsDevice - EncOpenDevice (%d)" ), err ) );
-        if ( !err )
-            {
-            TInt deviceHandle;
-            TPckg<TInt> deviceHandlePckg( deviceHandle );
-            err = SendReceive( KHWRMHapticsOpenActuatorCommand,
-                               TIpcArgs ( &openDevReqBuf, 
-                                          &deviceHandlePckg,
-                                          EHWRMLogicalActuatorAny ) );
-            COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::OpenHapticsDevice - Send OpenDevice (%d)" ), err ) );
-            COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::OpenHapticsDevice - Device handle = %d" ), deviceHandle ) );
-            if ( !err )
-                {
-                err = iPacketizer->EncSetPlatformLicenseKeyReq( 
-                    deviceHandle, setLicenseReqBuf );
-                COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::OpenHapticsDevice - EncSetEmptyLicenseKey (%d)" ), err ) );    
-                if ( !err )
-                    {
-                    TBuf8<50> dummyRspBuf;
-                    TInt dummyStatus;
-                    TPckg<TInt> dummyStatusPckg( dummyStatus );
-                    err = SendReceive( KHWRMHapticsBridgeCommand, 
-                                       TIpcArgs ( &setLicenseReqBuf,
-                                                  &dummyStatusPckg, 
-                                                  &dummyRspBuf ) );
-                    COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::OpenHapticsDevice - Send SetLicense (%d)" ), err ) );
-                    }
-                }
-            }
-
-        openDevReqBuf.Close();
-        setLicenseReqBuf.Close();
-        }
-    COMPONENT_TRACE( ( _L( "RHapticsBridgeClient::OpenHapticsDevice - End (err=%d)" ),err ) );    
-    return err;
-    }
-
-// eof