diff -r f742655b05bf -r d38647835c2e convergedconnectionhandler/cchclient/src/cchclient.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/convergedconnectionhandler/cchclient/src/cchclient.cpp Wed Sep 01 12:29:57 2010 +0100 @@ -0,0 +1,460 @@ +/* +* Copyright (c) 2006-2007 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: RCCHClient implementation +* +*/ + + +// INCLUDE FILES +#include "cchclient.h" +#include "cchlogger.h" +#include "cchclientserver.h" +#include "cchclientserverinternal.h" + +// EXTERNAL DATA STRUCTURES +// None + +// EXTERNAL FUNCTION PROTOTYPES +// None + +// CONSTANTS +// None + +// MACROS +// None + +// LOCAL CONSTANTS AND MACROS +// None + +// MODULE DATA STRUCTURES +// None + +// LOCAL FUNCTION PROTOTYPES +// None + +// FORWARD DECLARATIONS +// None + +// ============================= LOCAL FUNCTIONS ============================= + +// ============================ MEMBER FUNCTIONS ============================= + +// --------------------------------------------------------------------------- +// RCCHClient::RCCHClient +// C++ default constructor can NOT contain any code, that might leave. +// --------------------------------------------------------------------------- +// +EXPORT_C RCCHClient::RCCHClient() + { + // No implementation required + iService = NULL; + } + +EXPORT_C RCCHClient::~RCCHClient() + { + delete iService; + } + +// --------------------------------------------------------------------------- +// RCCHClient::Open +// Open subsession +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C TInt RCCHClient::Open( const RCCHServer& aRCCHServer ) + { + CCHLOGSTRING( "RCCHClient::Open" ); + return RSubSessionBase::CreateSubSession( + aRCCHServer, ECCHOpenSubSession ); + } + +// ----------------------------------------------------------------------------- +// RCCHClient::Close +// Close subsession +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void RCCHClient::Close() + { + CCHLOGSTRING( "RCCHClient::Close" ); + RSubSessionBase::CloseSubSession( ECCHCloseSubSession ); + } + +// --------------------------------------------------------------------------- +// RCCHClient::RegisterToServer +// Send register message to server. +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void RCCHClient::RegisterToServer( TRequestStatus& aReqStatus ) const + { + const TIpcArgs args( TIpcArgs::ENothing ); + SendReceive( ECCHServerRegister, args, aReqStatus ); + } + +// --------------------------------------------------------------------------- +// RCCHClient::RegisterToServerCancel +// Cancel register server request +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void RCCHClient::RegisterToServerCancel( ) const + { + const TIpcArgs args( TIpcArgs::ENothing ); + SendReceive( ECCHServerRegisterCancel, args ); + } + + +// --------------------------------------------------------------------------- +// RCCHClient::SubscribeToEvents +// Subscribe to specific service events. +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void RCCHClient::SubscribeToEvents( + const TServiceSelection& aServiceSelection, + TPckgBuf& aServiceStatus, + TRequestStatus& aReqStatus ) const + { + const TIpcArgs args( + aServiceSelection.iServiceId, aServiceSelection.iType, + &aServiceStatus ); + SendReceive( ECCHSubscribeToEvents, args, aReqStatus ); + } + +// --------------------------------------------------------------------------- +// RCCHClient::SubscribeToEvents +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void RCCHClient::SubscribeToEventsCancel() const + { + const TIpcArgs args( TIpcArgs::ENothing ); + SendReceive( ECCHSubscribeToEventsCancel, args ); + } + +// --------------------------------------------------------------------------- +// RCCHClient::GetServicesL +// Client queries for all services and sub-services. +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void RCCHClient::GetServicesL( + CArrayFixFlat& aServices, + TRequestStatus& aReqStatus ) + { + TUint32 count( 0 ); + TPckgBuf countPckg( count ); + User::LeaveIfError( + SendReceive( ECCHServiceCount, TIpcArgs( + &countPckg, ECCHUnknown ) ) ); + + for ( TInt i( 0 ); i < countPckg(); i++ ) + { + TCCHService service; + aServices.AppendL( service ); + } + + if ( countPckg() ) + { + TUint32 length = countPckg() * sizeof( TCCHService ); + + if ( !iService ) + { + iService = new (ELeave) TPtr8( reinterpret_cast( + &aServices[ 0 ] ), length, length ); + } + else + { + iService->Set( reinterpret_cast( + &aServices[ 0 ] ), length, length ); + } + + const TIpcArgs args( KErrNotFound, ECCHUnknown, iService ); + SendReceive( ECCHGetServices, args, aReqStatus ); + } + else + { + const TIpcArgs args( TIpcArgs::ENothing ); + SendReceive( ECCHGetServices, args, aReqStatus ); + } + } + +// --------------------------------------------------------------------------- +// RCCHClient::GetServicesL +// Get services which contains this type of sub-services +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void RCCHClient::GetServicesL( + const TServiceSelection& aServiceSelection, + CArrayFixFlat& aServices, + TRequestStatus& aReqStatus ) + { + TUint32 count( 0 ); + TPckgBuf countPckg( count ); + + // If some Service has selected Service count must be one, + // otherwise we have to ask how many Services is enough + if ( aServiceSelection.iServiceId != 0 ) + { + countPckg = 1; + } + else + { + User::LeaveIfError( + SendReceive( ECCHServiceCount, TIpcArgs( &countPckg, + aServiceSelection.iType ) ) ); + } + + for ( TInt i( 0 ); i < countPckg(); i++ ) + { + TCCHService service; + aServices.AppendL( service ); + } + + if ( countPckg() ) + { + TUint32 length = countPckg() * sizeof( TCCHService ); + + if ( !iService ) + { + iService = new (ELeave) TPtr8( reinterpret_cast( + &aServices[ 0 ] ), length, length ); + } + else + { + iService->Set( reinterpret_cast( + &aServices[ 0 ] ), length, length ); + } + + const TIpcArgs args( aServiceSelection.iServiceId, + aServiceSelection.iType, + iService ); + SendReceive( ECCHGetServices, args, aReqStatus ); + } + else + { + const TIpcArgs args( TIpcArgs::ENothing ); + SendReceive( ECCHGetServices, args, aReqStatus ); + } + } + +// --------------------------------------------------------------------------- +// RCCHClient::GetServicesCancel +// Cancel get services request +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void RCCHClient::GetServicesCancel() const + { + const TIpcArgs args( TIpcArgs::ENothing ); + SendReceive( ECCHGetServicesCancel, args ); + } + +// --------------------------------------------------------------------------- +// RCCHClient::GetServiceState +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C TInt RCCHClient::GetServiceState( + const TServiceSelection& aServiceSelection, + TCCHSubserviceState& aState ) const + { + TPckgBuf statePckg( aState ); + const TIpcArgs args( + aServiceSelection.iServiceId, aServiceSelection.iType, &statePckg ); + TInt error = SendReceive( ECCHGetServiceState, args ); + aState = statePckg(); + return error; + } + +// --------------------------------------------------------------------------- +// RCCHClient::EnableService +// Enable services. All sub-services under the service are enabled. +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void RCCHClient::EnableService( + const TServiceSelection& aServiceSelection, + TRequestStatus& aReqStatus, + TBool aConnectivityCheck ) const + { + const TIpcArgs args( + aServiceSelection.iServiceId, aServiceSelection.iType, + aConnectivityCheck ); + SendReceive( ECCHEnableService, args, aReqStatus ); + } + +// --------------------------------------------------------------------------- +// RCCHClient::EnableServiceCancel +// Cancels enable services request. +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void RCCHClient::EnableServiceCancel() const + { + const TIpcArgs args( TIpcArgs::ENothing ); + SendReceive( ECCHEnableServiceCancel, args ); + } + +// --------------------------------------------------------------------------- +// RCCHClient::DisableService +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void RCCHClient::DisableService( + const TServiceSelection& aServiceSelection, + TRequestStatus& aReqStatus ) const + { + const TIpcArgs args( + aServiceSelection.iServiceId, aServiceSelection.iType ); + SendReceive( ECCHDisableService, args, aReqStatus ); + } + +// --------------------------------------------------------------------------- +// RCCHClient::DisableServiceCancel +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void RCCHClient::DisableServiceCancel() const + { + const TIpcArgs args( TIpcArgs::ENothing ); + SendReceive( ECCHDisableServiceCancel, args ); + } + +// --------------------------------------------------------------------------- +// RCCHClient::GetServiceInfo +// Get service specifics information about service and protocol +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C TInt RCCHClient::GetServiceInfo( + const TServiceSelection& aServiceSelection, + TDes& aBuffer ) const + { + TPckgBuf serviceConnInfoPckg; + serviceConnInfoPckg().SetServiceId( aServiceSelection.iServiceId ); + serviceConnInfoPckg().SetType( aServiceSelection.iType ); + serviceConnInfoPckg().SetParameter( aServiceSelection.iParameter ); + + // only service id, type and parameter values are used from + // TServiceConnectionInfo + const TIpcArgs args( &serviceConnInfoPckg, &aBuffer ); + return SendReceive( ECCHGetServiceInfo, args ); + } + +// --------------------------------------------------------------------------- +// RCCHClient::SetConnectionInfo +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void RCCHClient::SetConnectionInfo( + const TPckgBuf& aServiceConnInfo, + TRequestStatus& aReqStatus ) + { + const TIpcArgs args( &aServiceConnInfo ); + SendReceive( ECCHSetConnectionInfo, args, aReqStatus ); + } + +// ----------------------------------------------------------------------------- +// RCCHClient::SetConnectionInfoCancel +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void RCCHClient::SetConnectionInfoCancel() const + { + const TIpcArgs args( TIpcArgs::ENothing ); + SendReceive( ECCHSetConnectionInfoCancel, args ); + } + +// ----------------------------------------------------------------------------- +// RCCHClient::GetConnectionInfo +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// + +EXPORT_C void RCCHClient::GetConnectionInfo( + const TServiceSelection& aServiceSelection, + TPckgBuf& aServiceConnInfo, + TRequestStatus& aReqStatus ) const + { + aServiceConnInfo().SetServiceId( aServiceSelection.iServiceId ); + aServiceConnInfo().SetType( aServiceSelection.iType ); + aServiceConnInfo().SetParameter( aServiceSelection.iParameter ); + // only service id, type and parameter values are used from + // TServiceConnectionInfo + const TIpcArgs args( &aServiceConnInfo ); + SendReceive( ECCHGetConnectionInfo, args, aReqStatus ); + } + +// ----------------------------------------------------------------------------- +// RCCHClient::GetConnectionInfoCancel +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// + +EXPORT_C void RCCHClient::GetConnectionInfoCancel() const + { + const TIpcArgs args( TIpcArgs::ENothing ); + SendReceive( ECCHGetConnectionInfoCancel, args ); + } + +// --------------------------------------------------------------------------- +// RCCHClient::ReserveService +// Reserves the service for exclusive use +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C TInt RCCHClient::ReserveService( + const TServiceSelection& aServiceSelection ) + { + const TIpcArgs args( + aServiceSelection.iServiceId, aServiceSelection.iType ); + return SendReceive( ECCHReserveService, args ); + } + +// --------------------------------------------------------------------------- +// RCCHClient::FreeService +// Frees the exclusive service reservation +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C TInt RCCHClient::FreeService( + const TServiceSelection& aServiceSelection ) + { + const TIpcArgs args( + aServiceSelection.iServiceId, aServiceSelection.iType ); + return SendReceive( ECCHFreeService, args ); + } + +// --------------------------------------------------------------------------- +// RCCHClient::IsReserved +// Returns true if the service is reserved for exclusive use +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C TBool RCCHClient::IsReserved( + const TServiceSelection& aServiceSelection ) const + { + TPckgBuf reserved; + const TIpcArgs args( + aServiceSelection.iServiceId, aServiceSelection.iType,&reserved ); + SendReceive( ECCHIsReserved, args ); + return reserved(); + } + +// ========================== OTHER EXPORTED FUNCTIONS ========================= + +// End of File