--- a/telephonyserverplugins/common_tsy/commontsy/src/mmutility/CMmTsyBase.cpp Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/common_tsy/commontsy/src/mmutility/CMmTsyBase.cpp Thu May 06 15:10:38 2010 +0100
@@ -1,295 +1,295 @@
-// Copyright (c) 2006-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:
-//
-
-
-
-// INCLUDE FILES
-#include "CMmTsyBase.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-CMmTsyBase::~CMmTsyBase()
- {
- }
-
-CMmTsyBase::CMmTsyBase()
- {
- }
-
-// ---------------------------------------------------------------------------
-// CMmTsyBase::Init
-// Initialisation method that is called from ETel Server.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CMmTsyBase::Init()
- {
- TInt iMax = GetMaxNumberOfSubsystems();
- CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
-
- for ( TInt i = 0; iMax > i; i++ )
- {
- if( NULL != subTsyPtr[i] )
- {
- subTsyPtr[i]->Init();
- }
- }
- return;
- }
-
-// ---------------------------------------------------------------------------
-// CMmTsyBase::Init
-// RegisterNotification is called when the server recognises
-// that this notification is being posted for the first time on this sub-
-// session object. It enables the TSY to "turn on" any regular notification
-// messages that it may receive from DOS.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-TInt CMmTsyBase::RegisterNotification(
- const TInt aIpc )
- {
- TInt ret = KErrNotSupported;
- TInt iMax = GetMaxNumberOfSubsystems();
- CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
-
- for ( TInt i = 0; iMax > i; i++ )
- {
- if ( ( NULL != subTsyPtr[i] )
- && ( EFalse != subTsyPtr[i]->SupportingIPC( aIpc ) ) )
- {
- ret = subTsyPtr[i]->RegisterNotification( aIpc );
- break;
- }
- }
- return ret;
- }
-
-// ---------------------------------------------------------------------------
-// CMmTsyBase::OpenNewObjectByNameL
-// Creates new CTelObject object and returns a pointer to it. Not supported
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-CTelObject* CMmTsyBase::OpenNewObjectByNameL(
- const TDesC& //aName
- )
- {
- //Not supported
- User::Leave( KErrNotSupported );
- return NULL;
- }
-
-// ---------------------------------------------------------------------------
-// CMmTsyBase::OpenNewObjectL
-// Opens a new Object by newname (not supported by CUSTOM)
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-CTelObject* CMmTsyBase::OpenNewObjectL(
- TDes& /*aNewName*/ )
- {
- User::Leave(KErrNotSupported);
- return NULL;
- }
-
-// ---------------------------------------------------------------------------
-// CMmTsyBase::DeregisterNotification
-// DeregisterNotification is called when the server recognises that this
-// notification will not be posted again because the last client to have
-// a handle on this sub-session object has just closed the handle. It
-// enables the TSY to "turn off" any regular notification messages that
-// it may receive from DOS.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-TInt CMmTsyBase::DeregisterNotification(
- const TInt aIpc )
- {
- TInt ret = KErrNotSupported;
- TInt iMax = GetMaxNumberOfSubsystems();
- CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
-
- for ( TInt i = 0; iMax > i; i++ )
- {
- if ( ( NULL != subTsyPtr[i] )
- && ( EFalse != subTsyPtr[i]->SupportingIPC( aIpc ) ) )
- {
- ret = subTsyPtr[i]->DeregisterNotification( aIpc );
- break;
- }
- }
- return ret;
- }
-
-// ---------------------------------------------------------------------------
-// CMmTsyBase::DoBaseExtFuncL
-// Dispatches extension function requests. At the beginning of this method,
-// packaged pointers are unpacked. Then the correct function is selected
-// using the IPC number.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-TInt CMmTsyBase::DoBaseExtFuncL(
- const TTsyReqHandle aTsyReqHandle,
- const TInt aIpc,
- const TDataPackage& aPackage )
- {
- TInt ret = KErrNotSupported;
- TInt iMax = GetMaxNumberOfSubsystems();
- CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
-
- for ( TInt i = 0; iMax > i; i++ )
- {
- if ( ( NULL != subTsyPtr[i] )
- && ( EFalse != subTsyPtr[i]->SupportingIPC( aIpc ) ) )
- {
- ret = subTsyPtr[i]->DoExtFuncL( aTsyReqHandle, aIpc, aPackage );
- break;
- }
- }
- return ret;
- }
-
-// ---------------------------------------------------------------------------
-// CMmTsyBase::ReqModeL
-// Returns request mode for given IPC. If the IPC number belongs to some of
-// the Custom API functions.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-CTelObject::TReqMode CMmTsyBase::ReqModeL(
- const TInt aIpc )
- {
- CTelObject::TReqMode ret=0;
- TInt i = 0;
- TInt iMax = GetMaxNumberOfSubsystems();
- CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
-
- for ( i = 0; iMax > i; i++ )
- {
- if ( ( NULL != subTsyPtr[i] )
- && ( EFalse != subTsyPtr[i]->SupportingIPC( aIpc ) ) )
- {
- ret = subTsyPtr[i]->ReqModeL( aIpc );
- break;
- }
- }
- if ( i >= iMax )
- {
- User::Leave(KErrNotSupported);
- }
- return ret;
- }
-
-// ---------------------------------------------------------------------------
-// CMmTsyBase::NumberOfSlotsL
-// Returns number of slots to be used for given IPC.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-TInt CMmTsyBase::NumberOfSlotsL(
- const TInt aIpc )
- {
- TInt numberOfSlots = 0;
- TInt i = 0;
- TInt iMax = GetMaxNumberOfSubsystems();
- CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
-
- for ( i = 0; iMax > i; i++ )
- {
- if ( ( NULL != subTsyPtr[i] )
- && ( EFalse != subTsyPtr[i]->SupportingIPC( aIpc ) ) )
- {
- numberOfSlots = subTsyPtr[i]->NumberOfSlotsL( aIpc );
- break;
- }
- }
- if ( i >= iMax )
- {
- User::Leave(KErrNotSupported);
- }
- return numberOfSlots;
- }
-
-// ---------------------------------------------------------------------------
-// CMmTsyBase::CancelService
-// When the clients close their subsessions (eg. by calling RPhone::Close),
-// they may not have cancelled all their outstanding asynchronous requests
-// before closing. It is up to the ETel server to clean up in this situation,
-// so the server will find the list of outstanding requests related to that
-// sub-session object and pass these outstanding IPC request numbers, one at
-// a time, to the CancelService function in the TSY.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-TInt CMmTsyBase::CancelService(
- const TInt aIpc,
- const TTsyReqHandle aTsyReqHandle )
- {
- TInt ret = KErrNone;
- TInt i = 0;
- TInt iMax = GetMaxNumberOfSubsystems();
- CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
-
- for ( i = 0; iMax > i; i++ )
- {
- if ( ( NULL != subTsyPtr[i] )
- && ( EFalse != subTsyPtr[i]->SupportingIPC( aIpc ) ) )
- {
- ret = subTsyPtr[i]->CancelService( aIpc, aTsyReqHandle );
- break;
- }
- }
- if ( i >= iMax )
- {
- ret = KErrGeneral;
- }
- return ret;
- }
-
-#ifdef REQHANDLE_TIMER
-
-// ---------------------------------------------------------------------------
-// CMmTsyBase::Complete
-// Completes the request due timer expiration
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CMmTsyBase::Complete(
- TInt aReqHandleType,
- TInt aError,
- TInt aIPC )
- {
- TInt max = GetMaxNumberOfSubsystems();
- CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
-
- for ( TInt i = 0; max > i; i++ )
- {
- //check which custom object handles this IPC
- if ( ( NULL != subTsyPtr[i] )
- && ( EFalse != subTsyPtr[i]->SupportingIPC( aIPC ) ) )
- {
- //call complete method of the right custom object
- subTsyPtr[i]->Complete( aReqHandleType, aError );
- i = max;
- }
- }
- }
-
-#endif
-
-// End of File
-
+// Copyright (c) 2006-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:
+//
+
+
+
+// INCLUDE FILES
+#include "CMmTsyBase.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+CMmTsyBase::~CMmTsyBase()
+ {
+ }
+
+CMmTsyBase::CMmTsyBase()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CMmTsyBase::Init
+// Initialisation method that is called from ETel Server.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CMmTsyBase::Init()
+ {
+ TInt iMax = GetMaxNumberOfSubsystems();
+ CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
+
+ for ( TInt i = 0; iMax > i; i++ )
+ {
+ if( NULL != subTsyPtr[i] )
+ {
+ subTsyPtr[i]->Init();
+ }
+ }
+ return;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmTsyBase::Init
+// RegisterNotification is called when the server recognises
+// that this notification is being posted for the first time on this sub-
+// session object. It enables the TSY to "turn on" any regular notification
+// messages that it may receive from DOS.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmTsyBase::RegisterNotification(
+ const TInt aIpc )
+ {
+ TInt ret = KErrNotSupported;
+ TInt iMax = GetMaxNumberOfSubsystems();
+ CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
+
+ for ( TInt i = 0; iMax > i; i++ )
+ {
+ if ( ( NULL != subTsyPtr[i] )
+ && ( EFalse != subTsyPtr[i]->SupportingIPC( aIpc ) ) )
+ {
+ ret = subTsyPtr[i]->RegisterNotification( aIpc );
+ break;
+ }
+ }
+ return ret;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmTsyBase::OpenNewObjectByNameL
+// Creates new CTelObject object and returns a pointer to it. Not supported
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+CTelObject* CMmTsyBase::OpenNewObjectByNameL(
+ const TDesC& //aName
+ )
+ {
+ //Not supported
+ User::Leave( KErrNotSupported );
+ return NULL;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmTsyBase::OpenNewObjectL
+// Opens a new Object by newname (not supported by CUSTOM)
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+CTelObject* CMmTsyBase::OpenNewObjectL(
+ TDes& /*aNewName*/ )
+ {
+ User::Leave(KErrNotSupported);
+ return NULL;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmTsyBase::DeregisterNotification
+// DeregisterNotification is called when the server recognises that this
+// notification will not be posted again because the last client to have
+// a handle on this sub-session object has just closed the handle. It
+// enables the TSY to "turn off" any regular notification messages that
+// it may receive from DOS.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmTsyBase::DeregisterNotification(
+ const TInt aIpc )
+ {
+ TInt ret = KErrNotSupported;
+ TInt iMax = GetMaxNumberOfSubsystems();
+ CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
+
+ for ( TInt i = 0; iMax > i; i++ )
+ {
+ if ( ( NULL != subTsyPtr[i] )
+ && ( EFalse != subTsyPtr[i]->SupportingIPC( aIpc ) ) )
+ {
+ ret = subTsyPtr[i]->DeregisterNotification( aIpc );
+ break;
+ }
+ }
+ return ret;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmTsyBase::DoBaseExtFuncL
+// Dispatches extension function requests. At the beginning of this method,
+// packaged pointers are unpacked. Then the correct function is selected
+// using the IPC number.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmTsyBase::DoBaseExtFuncL(
+ const TTsyReqHandle aTsyReqHandle,
+ const TInt aIpc,
+ const TDataPackage& aPackage )
+ {
+ TInt ret = KErrNotSupported;
+ TInt iMax = GetMaxNumberOfSubsystems();
+ CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
+
+ for ( TInt i = 0; iMax > i; i++ )
+ {
+ if ( ( NULL != subTsyPtr[i] )
+ && ( EFalse != subTsyPtr[i]->SupportingIPC( aIpc ) ) )
+ {
+ ret = subTsyPtr[i]->DoExtFuncL( aTsyReqHandle, aIpc, aPackage );
+ break;
+ }
+ }
+ return ret;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmTsyBase::ReqModeL
+// Returns request mode for given IPC. If the IPC number belongs to some of
+// the Custom API functions.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+CTelObject::TReqMode CMmTsyBase::ReqModeL(
+ const TInt aIpc )
+ {
+ CTelObject::TReqMode ret=0;
+ TInt i = 0;
+ TInt iMax = GetMaxNumberOfSubsystems();
+ CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
+
+ for ( i = 0; iMax > i; i++ )
+ {
+ if ( ( NULL != subTsyPtr[i] )
+ && ( EFalse != subTsyPtr[i]->SupportingIPC( aIpc ) ) )
+ {
+ ret = subTsyPtr[i]->ReqModeL( aIpc );
+ break;
+ }
+ }
+ if ( i >= iMax )
+ {
+ User::Leave(KErrNotSupported);
+ }
+ return ret;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmTsyBase::NumberOfSlotsL
+// Returns number of slots to be used for given IPC.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmTsyBase::NumberOfSlotsL(
+ const TInt aIpc )
+ {
+ TInt numberOfSlots = 0;
+ TInt i = 0;
+ TInt iMax = GetMaxNumberOfSubsystems();
+ CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
+
+ for ( i = 0; iMax > i; i++ )
+ {
+ if ( ( NULL != subTsyPtr[i] )
+ && ( EFalse != subTsyPtr[i]->SupportingIPC( aIpc ) ) )
+ {
+ numberOfSlots = subTsyPtr[i]->NumberOfSlotsL( aIpc );
+ break;
+ }
+ }
+ if ( i >= iMax )
+ {
+ User::Leave(KErrNotSupported);
+ }
+ return numberOfSlots;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmTsyBase::CancelService
+// When the clients close their subsessions (eg. by calling RPhone::Close),
+// they may not have cancelled all their outstanding asynchronous requests
+// before closing. It is up to the ETel server to clean up in this situation,
+// so the server will find the list of outstanding requests related to that
+// sub-session object and pass these outstanding IPC request numbers, one at
+// a time, to the CancelService function in the TSY.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmTsyBase::CancelService(
+ const TInt aIpc,
+ const TTsyReqHandle aTsyReqHandle )
+ {
+ TInt ret = KErrNone;
+ TInt i = 0;
+ TInt iMax = GetMaxNumberOfSubsystems();
+ CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
+
+ for ( i = 0; iMax > i; i++ )
+ {
+ if ( ( NULL != subTsyPtr[i] )
+ && ( EFalse != subTsyPtr[i]->SupportingIPC( aIpc ) ) )
+ {
+ ret = subTsyPtr[i]->CancelService( aIpc, aTsyReqHandle );
+ break;
+ }
+ }
+ if ( i >= iMax )
+ {
+ ret = KErrGeneral;
+ }
+ return ret;
+ }
+
+#ifdef REQHANDLE_TIMER
+
+// ---------------------------------------------------------------------------
+// CMmTsyBase::Complete
+// Completes the request due timer expiration
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CMmTsyBase::Complete(
+ TInt aReqHandleType,
+ TInt aError,
+ TInt aIPC )
+ {
+ TInt max = GetMaxNumberOfSubsystems();
+ CMmSubTsyBase** subTsyPtr = GetSubsystemArrayPtr();
+
+ for ( TInt i = 0; max > i; i++ )
+ {
+ //check which custom object handles this IPC
+ if ( ( NULL != subTsyPtr[i] )
+ && ( EFalse != subTsyPtr[i]->SupportingIPC( aIPC ) ) )
+ {
+ //call complete method of the right custom object
+ subTsyPtr[i]->Complete( aReqHandleType, aError );
+ i = max;
+ }
+ }
+ }
+
+#endif
+
+// End of File
+