telephonyserverplugins/common_tsy/commontsy/src/mmutility/CMmTsyBase.cpp
branchopencode
changeset 24 6638e7f4bd8f
parent 0 3553901f7fa8
--- 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
+