--- a/systemswstubs/asyreference/src/ASYReferenceMainServiceBase.cpp Tue Sep 07 08:19:48 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,497 +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: Used as an reference implementation
-*
-*/
-
-
-
-// INCLUDE FILES
-#include <AccessoryControl.h>
-#include <AccessoryServer.h>
-#include <AccConGenericID.h>
-#include <AccConfigFileParser.h>
-#include <AccPolProprietaryNameValuePairs.h>
-#include "ASYReferenceMainServiceBase.h"
-#include "acc_debug.h"
-
-// EXTERNAL DATA STRUCTURES
-
-// EXTERNAL FUNCTION PROTOTYPES
-
-// CONSTANTS
-
-// MACROS
-
-// LOCAL CONSTANTS AND MACROS
-
-// MODULE DATA STRUCTURES
-
-// LOCAL FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-//
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CASYReferenceMainServiceBase::CASYReferenceMainServiceBase()
- : iAccessoryControl()
- , iAccConfigFileParser( NULL )
- , iState( EStateUnknown )
- , iConnectedAccessory( NULL )
- {
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::CASYReferenceMainServiceBase() - Enter" );
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::CASYReferenceMainServiceBase() - Return" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-void CASYReferenceMainServiceBase::ConstructL()
- {
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::ConstructL() - Enter" );
-
- // ConfigFileParser instance is created for GID parsing.
- iAccConfigFileParser = CAccConfigFileParser::NewL( KNullDesC );
-
- // AccessoryControl instance is created for Accessory Connection / Disconnection handling.
- iAccessoryControl = new ( ELeave ) RAccessoryControl();
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::ConstructL() - Return" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CASYReferenceMainServiceBase* CASYReferenceMainServiceBase::NewL()
- {
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::NewL() - Enter" );
-
- CASYReferenceMainServiceBase * self = new ( ELeave ) CASYReferenceMainServiceBase();
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::NewL() - Return" );
-
- return self;
- }
-
-// -----------------------------------------------------------------------------
-//
-// destructor.
-// -----------------------------------------------------------------------------
-//
-CASYReferenceMainServiceBase::~CASYReferenceMainServiceBase()
- {
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::~CASYReferenceMainServiceBase() - Enter" );
-
- if( iAccessoryControl )
- {
- iAccessoryControl->CloseSubSession();
- }
-
- delete iConnectedAccessory;
- iConnectedAccessory = NULL;
-
- delete iAccessoryControl;
- iAccessoryControl = NULL;
-
- delete iAccConfigFileParser;
- iAccConfigFileParser = NULL;
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::~CASYReferenceMainServiceBase() - Return" );
-
- }
-
-// ----------------------------------------------------------------------------------
-// CASYReferenceMainServiceBase::StartL
-// ----------------------------------------------------------------------------------
-//
-TInt CASYReferenceMainServiceBase::StartL()
- {
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::StartL() - Enter" );
-
- //
- //CASYReferenceMainServiceBase internal state is change to InitWait
- //
- StateChangeL( EStateInitWait );
-
- TInt err ( KErrNone );
-
-
- //
- // Following syntax is used from now on to illustrate ASY sequences.
- //
-
- //
- // Comments of initialization sequence during terminal boot are marked as [A.n].
- //
-
- //
- // Comments of accessory connection sequence are marked as [B.n]
- //
-
- //
- // Comments of accessory disconnection sequence are marked as [C.n]
- //
-
- //
- // Comments of internal state change of accessory feature are marked as [D.n]
- // Example external headphones are connected to headset control unit.
-
- //
- // Comments of getting/setting accessory internal state are marked as [E.n]
- //
-
- // [A.1] Signals Accessory Server that ASY implementation is ready to receive commands.
- // Process command by init parameter is received after signal method call
- // (Receiver in this example is CASYReferenceCmdHandlerBase class).
- Signal();
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::StartL() - Return" );
-
- return err;
- }
-
-// -----------------------------------------------------------------------------
-// CASYReferenceMainServiceBase::ProcessResponseL
-// -----------------------------------------------------------------------------
-//
-void CASYReferenceMainServiceBase::ProcessResponseL( TASYMessage& /*aMessage*/ )
- {
-
- }
-
-// -----------------------------------------------------------------------------
-// CASYReferenceMainServiceBase::ProcessErrorResponseL
-// -----------------------------------------------------------------------------
-//
-void CASYReferenceMainServiceBase::ProcessErrorResponseL(
- TInt aErrorCode,
- TASYMessage& aMessage )
- {
-
- (void) aMessage;
- (void) aErrorCode;
-
- }
-
-// -----------------------------------------------------------------------------
-// CASYReferenceMainServiceBase::RaiseEventL
-// -----------------------------------------------------------------------------
-//
-void CASYReferenceMainServiceBase::RaiseEventL( TASYMessage& aMessage )
- {
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::RaiseEventL() - Enter" );
-
- //
- // [B.1], [C.1], [D.1] Accessory events are received from Accessory Driver/Domestic OS.
- //
- if( aMessage.GroupId() == KASYMessageGroupAccessoryEvent )
- {
- // Event processing according the accessory event.
- switch( aMessage.MessageId() )
- {
- case KASYMsgAccessoryConnectionStateChangedEvent:
- {
-
- // Accessory connection state is changed.
- TASYMsgAccessoryConnectionStateChangedEventBuf package;
- package.Copy( aMessage.Data() );
-
- ConnectionStateChangedL( package() );
- }
- break;
- case KASYMsgAccessoryFeatureStateChangedEvent:
- {
-
- // State of accessory feature is changed.
- TASYMsgAccessoryFeatureStateChangedEventBuf package;
- package.Copy( aMessage.Data() );
-
- AccessoryFeatureStateBooleanChangedL( package() );
- }
- break;
- default:
- User::Leave( KErrGeneral );
- break;
- };
- }
- else
- {
- User::Leave( KErrGeneral );
- }
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::RaiseEventL() - Return" );
- }
-
-
-// -----------------------------------------------------------------------------
-// CASYReferenceMainServiceBase::StateChangeL
-// -----------------------------------------------------------------------------
-//
-void CASYReferenceMainServiceBase::StateChangeL( TState aState )
- {
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::StateChangeL() - Enter" );
-
- TInt err ( KErrGeneral );
-
- switch ( aState )
- {
- case EStateInitWait:
- {
-
- if ( iState != EStateUnknown )
- {
- User::Leave( KErrGeneral );
- }
- else
- {
- //
- // initialization of event subscribe(s) can be done here.
- //
- }
- }
- break;
- case EStateInitOngoing:
- {
-
- if ( iState != EStateInitWait )
- {
- User::Leave( KErrGeneral );
- }
- //
- // Current state extra handling can be added here, if needed.
- //
- }
- break;
- case EStateInitOk:
- {
- if ( iState != EStateInitOngoing )
- {
- User::Leave( KErrGeneral );
- }
- else
- {
- //
- // Initialized sequence is ready, and session can be created to accessory control.
- //
- err = iAccessoryControl->CreateSubSession( CASYMainServiceBase::Session() );
-
- if ( err != KErrNone )
- {
- User::Leave( err );
- }
- }
- }
- break;
-
- default:
- {
- User::Leave( KErrGeneral );
- }
- break;
- }
-
- //
- // Example class state change.
- //
- iState = aState;
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::StateChangeL() - Return" );
-
- }
-
-
-// -----------------------------------------------------------------------------
-// CASYReferenceMainServiceBase::ConnectionStateChangedL
-// -----------------------------------------------------------------------------
-//
-void CASYReferenceMainServiceBase::ConnectionStateChangedL( AccessoryConnection::TConnectionStateInfoStruct& aState )
- {
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::ConnectionStateChangedL() - Enter" );
- //
- // Accessory Connection handling example.
- //
- TRequestStatus status;
-
- switch( aState.iState )
- {
- case AccessoryConnection::EStateConnected:
- {
-
- //
- // [B.2] Event of an accessory connection is raised to ASY from a Accessory Driver/Domestic OS.
- //
-
- // Delete old Generic ID
- if( iConnectedAccessory )
- {
-
- delete iConnectedAccessory;
- iConnectedAccessory = NULL;
- }
-
- TUint64 accessoryId( aState.iAccessoryId );
-
-
- iConnectedAccessory = CAccConGenericID::NewL();
-
- // [B.3] Parse a new Generic ID according to the accessory spesific ID.
- iAccConfigFileParser->FindL( iConnectedAccessory, accessoryId, KNullDesC );
-
- // Check if accessory is not supported
- if( ( iConnectedAccessory->GenericID().UniqueID() ) < 0 )
- {
- // Accessory is not supported. Debug purpose.
- }
- else
- {
- // Accessory is supported. Debug purpose.
- }
-
- // [B.4] Send connect accessory request to Accessory Server
- iAccessoryControl->ConnectAccessory( status, iConnectedAccessory, EFalse );
-
- // the WaitForRequest method can be used because ConnectAccessory is immediately complete by
- // Accessory Server.
- User::WaitForRequest( status );
-
- }
- break;
- case AccessoryConnection::EStateNotConnected:
- {
-
- //
- // [C.2] Event of an accessory disconnection is raised to ASY from a Accessory Driver/Domestic OS.
- //
-
- // [C.3] Get current Generic ID.
- TAccPolGenericID genericId = iConnectedAccessory->GenericID();
-
- // [C.4] Send disconnect request to Accessory Server.
- iAccessoryControl->DisconnectAccessory( status, genericId );
-
- // the WaitForRequest can be used because DisconnectAccessory is immediately complete by
- // Accessory Server.
- User::WaitForRequest( status );
-
- delete iConnectedAccessory;
- iConnectedAccessory = NULL;
- }
- break;
- default:
- {
- User::Leave( KErrGeneral );
- }
- break;
- }
-
- if ( status.Int() != KErrNone )
- {
-
- }
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::ConnectionStateChangedL() - Return" );
- }
-
-
-// -----------------------------------------------------------------------------
-// CASYReferenceMainServiceBase::AccessoryFeatureStateBooleanChangedL
-// -----------------------------------------------------------------------------
-void CASYReferenceMainServiceBase::AccessoryFeatureStateBooleanChangedL( AccessoryFeature::TFeatureStateBooleanStruct& aState )
- {
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::AccessoryFeatureStateBooleanChangedL() - Enter" );
-
- // [D.2] the accessory internal state is change.
-
- TASYCommandParamRecord record;
-
- // See accessory feature example --> MapAccessoryFeatureL method.
- MapAccessoryFeatureL( aState.iFeature, record );
-
- TAccValueTypeTBool state;
- state.iValue = aState.iState;
-
- //Current Generic ID
- TAccPolGenericID genericId = iConnectedAccessory->GenericID();
-
- // [D.4] Accessory internal state change is indicated to Accessory Server.
- iAccessoryControl->AccessoryValueChangedNotifyL( genericId, record.iNameRecord, state );
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::AccessoryFeatureStateBooleanChangedL() - Return" );
-
- }
-
-// -----------------------------------------------------------------------------
-// CASYReferenceMainServiceBase::MapAccessoryFeatureL
-// -----------------------------------------------------------------------------
-void CASYReferenceMainServiceBase::MapAccessoryFeatureL( AccessoryFeature::TAccessoryFeature& aAccessoryFeature,
- TASYCommandParamRecord& aCommandParamRecord )
- {
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::AccessoryFeatureStateBooleanChangedL() - Enter" );
-
- // Couple feature examples
- switch( aAccessoryFeature )
- {
-
- // [D.3]
- //A headphone is not connected to the sound adapter which means that the accessory is not detected as a control connection (the headset icon is not shown on the phone display).
- //Audio Out Connector capability value is updated by ASY when the headphone is connected to the sound adapter, which means that the accessory connection is updated as a control connection.
-
- case AccessoryFeature::EHeadphonesConnected:
- {
- aCommandParamRecord.iNameRecord.SetNameL( KAccAudioOutConnector );
- }
- break;
- case AccessoryFeature::EExternalPowerSourceConnected:
- {
- aCommandParamRecord.iNameRecord.SetNameL( KAccExtPowerSupply );
- }
- break;
-
- default:
- {
- User::Leave( KErrGeneral );
- }
- break;
- }
-
- COM_TRACE_( "[AccFW:AsyReference] CASYReferenceMainServiceBase::AccessoryFeatureStateBooleanChangedL() - Return" );
-
- }
-
-// End of file
-