radioengine/utils/tsrc/src/UtilsTestModuleBlocks.cpp
changeset 57 21be958eb3ce
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/src/UtilsTestModuleBlocks.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,902 @@
+/*
+* 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <e32cmn.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include <data_caging_path_literals.hrh>
+#include <centralrepository.h>
+#include<RadioStubManager.h>
+#include <ctsydomainpskeys.h>
+#include <publicruntimeids.hrh>
+#include <sacls.h>
+
+#include "UtilsTestModule.h"
+#include "cradiosystemeventcollector.h"
+#include "radioengineutils.h"
+
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+//_LIT( KStifScriptEmptyString, "EMPTYSTRING" );
+//_LIT( KEmptyString, "" );
+_LIT_SECURITY_POLICY_PASS(KRadioServerReadPolicy);
+_LIT_SECURITY_POLICY_C1(KRadioServerWritePolicy, ECapabilityWriteUserData);
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::Delete
+// Delete here all resources allocated and opened from test methods. 
+// Called from destructor. 
+// -----------------------------------------------------------------------------
+//
+void CUtilsTestModule::Delete() 
+    {
+    FUNC_LOG;
+
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CUtilsTestModule::RunMethodL( 
+    CStifItemParser& aItem ) 
+    {
+    FUNC_LOG;
+
+    static TStifFunctionInfo const KFunctions[] =
+        {  
+        // Copy this line for every implemented function.
+        // First string is the function name used in TestScripter script file.
+        // Second is the actual implementation member function. 
+        ENTRY( "Example", CUtilsTestModule::ExampleL ),
+        // [test cases entries] - Do not remove
+        ENTRY( "CreateSystemEventCollectorL", CUtilsTestModule::CreateSystemEventCollectorL ),
+        ENTRY( "DestroySystemEventCollector", CUtilsTestModule::DestroySystemEventCollector ),
+        ENTRY( "IsNetworkCoverage", CUtilsTestModule::IsNetworkCoverage ),
+        ENTRY( "IsMobileNetworkCoverage", CUtilsTestModule::IsMobileNetworkCoverage ),
+        ENTRY( "IsCallActive", CUtilsTestModule::IsCallActive ),
+        ENTRY( "IsAudioResourcesAvailable", CUtilsTestModule::IsAudioResourcesAvailable ),
+        ENTRY( "IsHeadsetConnectedL", CUtilsTestModule::IsHeadsetConnectedL ),
+        ENTRY( "OOMTestForCreation", CUtilsTestModule::OOMTestForCreation ),
+        ENTRY( "tstSetPropertyValueForHeadset", CUtilsTestModule::tstSetPropertyValueForHeadset ),
+        ENTRY( "tstSetPropertyValueForNetworkStatus", CUtilsTestModule::tstSetPropertyValueForNetworkStatus ),
+        ENTRY( "tstSetPropertyValueForCallState", CUtilsTestModule::tstSetPropertyValueForCallState ),
+        ENTRY( "CreateAudioRouterL", CUtilsTestModule::CreateAudioRouterL ),
+        ENTRY( "DestroyAudioRouter", CUtilsTestModule::DestroyAudioRouter ),
+        ENTRY( "OOMTestForAudioRouterCreation", CUtilsTestModule::OOMTestForAudioRouterCreation ),
+        ENTRY( "CreateRoutableAudioL", CUtilsTestModule::CreateRoutableAudioL ),
+        ENTRY( "DestroyRoutableAudio", CUtilsTestModule::DestroyRoutableAudio ),
+        ENTRY( "OOMTestForRoutableAudioCreation", CUtilsTestModule::OOMTestForRoutableAudioCreation )
+        //ADD NEW ENTRY HERE
+
+        };
+
+    const TInt count = sizeof( KFunctions ) / 
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::ExampleL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CUtilsTestModule::ExampleL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+
+    // Print to UI
+    _LIT( KSettingsTestModule, "UtilsTestModule" );
+    _LIT( KExample, "In Example" );
+    TestModuleIf().Printf( 0, KSettingsTestModule, KExample );
+    // Print to log file
+    iLog->Log( KExample );
+
+    TInt i = 0;
+    TPtrC string;
+    _LIT( KParam, "Param[%i]: %S" );
+    while ( aItem.GetNextString ( string ) == KErrNone )
+        {
+        TestModuleIf().Printf( i, KSettingsTestModule, 
+                                KParam, i, &string );
+        ++i;
+        }
+
+    return KErrNone;
+
+    }
+
+//-----------------------------------------------------------------------------
+// CPresetUtilityTest::CreateSystemEventCollectorL
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::CreateSystemEventCollectorL(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+
+    TInt err(KErrNone);
+    err = InitSharedMemory();
+    if ( KErrNone == err )
+        {
+        tstDefineAndAttachTestProperties();
+        }
+    if ((!iSystemEventCollector) && (KErrNone == err))
+        {
+        TRAP( err, RadioEngineUtils::InitializeL(); );
+        if (KErrNone != err)
+            {
+            INFO_1( "RadioEngineUtils::InitializeL() failed err = %i", err )
+            iRadioStubManagerChunk.Close();
+            }
+        else
+            {
+            TRAP( err, iSystemEventCollector = CRadioSystemEventCollector::NewL(); );
+            if ( KErrNone == err )
+                {
+                TRAP( err, iSystemEventCollector->AddObserverL( this ); );
+                if ( KErrNone != err )
+                    {
+                    INFO_1( "iSystemEventCollector->AddObserverL() failed err = %i", err )
+                    iRadioStubManagerChunk.Close();
+                    delete iSystemEventCollector;
+                    iSystemEventCollector = NULL;
+                    RadioEngineUtils::Release();
+                    }
+                }
+            else
+                {
+                INFO_1( "CRadioSystemEventCollector::NewL() failed err = %i", err )
+                iRadioStubManagerChunk.Close();
+                RadioEngineUtils::Release();
+                }
+            }
+        }
+    if ( KErrNoMemory == err )
+        {
+        User::Leave( err );
+        }
+    MRadioAudioRoutingObserver* observer(NULL);
+    iSystemEventCollector->AsObserver( observer );
+    if (NULL == observer)
+        {
+        INFO("Null pointer got for MRadioAudioRoutingObserver from MRadioAudioRoutingObserver from iSystemEventCollector->AsObserver.");   
+        }
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::DestroySystemEventCollector
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::DestroySystemEventCollector(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+    if (iSystemEventCollector)
+        {
+        iSystemEventCollector->RemoveObserver(this);
+        iRadioStubManagerChunk.Close();
+        delete iSystemEventCollector;
+        iSystemEventCollector = NULL;
+        RadioEngineUtils::Release();
+        iPropertyHeadsetStatus.Delete(KStub_KRadioPSUid, SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected);
+        iPropertyHeadsetStatus.Close();
+        iPropertyNetworkStatus.Delete(KStub_KUidSystemCategory, KUidNetworkStatusValue);
+        iPropertyNetworkStatus.Close();
+        iPropertyCallState.Delete(KStub_KPSUidCtsyCallInformation, KCTsyCallState);
+        iPropertyCallState.Close();
+        }
+    return KErrNone;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::OOMTestForCreation
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::OOMTestForCreation(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    err = InitSharedMemory();
+    if (KErrNone == err)
+        {
+        RadioEngineUtils::InitializeL();
+        TInt i(-1);
+        for (err = KErrNoMemory; KErrNoMemory == err; __UHEAP_MARKEND)
+            {
+            TRAP ( err,
+                        {
+                        ++i;
+                        INFO_1("loop count = %i", i );
+                        __UHEAP_MARK;
+                        __UHEAP_FAILNEXT( i );
+                        TRAP( err, CreateSystemEventCollector2L(); );
+                        if ( iSystemEventCollector )
+                            {
+                            delete iSystemEventCollector;
+                            iSystemEventCollector = NULL;
+                            }
+                        }
+            );
+            }
+        __UHEAP_RESET;
+        RadioEngineUtils::Release();
+        iRadioStubManagerChunk.Close();
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::IsNetworkCoverage()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::IsNetworkCoverage(CStifItemParser& aItem)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    TBool expectedNetworkCoverageStatus(EFalse);
+    // read parameters
+    if (aItem.GetNextInt(expectedNetworkCoverageStatus))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err, "Missing Parameter: expectedNetworkCoverageStatus.");
+        }
+    TBool networkCoverageStatus(iSystemEventCollector->IsNetworkCoverage());
+    if (expectedNetworkCoverageStatus != networkCoverageStatus)
+        {
+        INFO_2(
+                "Failed: networkCoverageStatus=%i, expectedNetworkCoverageStatus=%i.",
+                networkCoverageStatus, expectedNetworkCoverageStatus);
+        err = KErrUnexpectedValue;
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::IsMobileNetworkCoverage()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::IsMobileNetworkCoverage(CStifItemParser& aItem)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    TBool expectedMobileNetworkCoverageStatus(EFalse);
+    // read parameters
+    if (aItem.GetNextInt(expectedMobileNetworkCoverageStatus))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err, "Missing Parameter: expectedMobileNetworkCoverageStatus.");
+        }
+    TBool mobileNetworkCoverageStatus(
+            iSystemEventCollector->IsMobileNetworkCoverage());
+    if (expectedMobileNetworkCoverageStatus != mobileNetworkCoverageStatus)
+        {
+        INFO_2(
+                "Failed: mobileNetworkCoverageStatus=%i, expectedMobileNetworkCoverageStatus=%i.",
+                mobileNetworkCoverageStatus,
+                expectedMobileNetworkCoverageStatus);
+        err = KErrUnexpectedValue;
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::IsCallActive()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::IsCallActive(CStifItemParser& aItem)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    TBool expectedCallActiveStatus(EFalse);
+    // read parameters
+    if (aItem.GetNextInt(expectedCallActiveStatus))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err, "Missing Parameter: expectedCallActiveStatus.");
+        }
+    TBool callActiveStatus(iSystemEventCollector->IsCallActive());
+    if (expectedCallActiveStatus != callActiveStatus)
+        {
+        INFO_2("Failed: callActiveStatus=%i, expectedCallActiveStatus=%i.",
+                callActiveStatus, expectedCallActiveStatus);
+        err = KErrUnexpectedValue;
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::IsAudioResourcesAvailable()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::IsAudioResourcesAvailable(CStifItemParser& aItem)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    TBool expectedAudioResourcesAvailableStatus(EFalse);
+    // read parameters
+    if (aItem.GetNextInt(expectedAudioResourcesAvailableStatus))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err,
+                "Missing Parameter: expectedAudioResourcesAvailableStatus.");
+        }
+    TBool audioResourcesAvailableStatus(
+            iSystemEventCollector->IsAudioResourcesAvailable());
+    if (expectedAudioResourcesAvailableStatus
+            != audioResourcesAvailableStatus)
+        {
+        INFO_2(
+                "Failed: audioResourcesAvailableStatus=%i, expectedAudioResourcesAvailableStatus=%i.",
+                audioResourcesAvailableStatus,
+                expectedAudioResourcesAvailableStatus);
+        err = KErrUnexpectedValue;
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::IsHeadsetConnectedL()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::IsHeadsetConnectedL(CStifItemParser& aItem)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    TBool expectedHeadsetConnectedStatus(EFalse);
+    // read parameters
+    if (aItem.GetNextInt(expectedHeadsetConnectedStatus))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err, "Missing Parameter: expectedHeadsetConnectedStatus.");
+        }
+    TBool
+            headsetConnectedStatus(
+                    iSystemEventCollector->IsHeadsetConnectedL());
+    if (expectedHeadsetConnectedStatus != headsetConnectedStatus)
+        {
+        INFO_2(
+                "Failed: headsetConnectedStatus=%i, expectedHeadsetConnectedStatus=%i.",
+                headsetConnectedStatus, expectedHeadsetConnectedStatus);
+        err = KErrUnexpectedValue;
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::tstSetPropertyValueForHeadset()
+// Returns: System error.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::tstSetPropertyValueForHeadset( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TBool headsetConnectedStatus(EFalse);
+    // read parameters
+    if (aItem.GetNextInt(headsetConnectedStatus))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err, "Missing Parameter: headsetConnectedStatus.");
+        }
+    err = iPropertyHeadsetStatus.Set(KStub_KRadioPSUid, SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected, headsetConnectedStatus);
+    ERROR(err, "Headset property Attach() failed!");
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::tstSetPropertyValueForNetworkStatus()
+// Returns: System error.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::tstSetPropertyValueForNetworkStatus( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TInt networkStatus(NULL);
+    // read parameters
+    if (aItem.GetNextInt(networkStatus))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err, "Missing Parameter: networkStatus.");
+        }
+    err = iPropertyNetworkStatus.Set(KStub_KUidSystemCategory, KUidNetworkStatusValue, networkStatus);
+    ERROR(err, "Network status property Attach() failed!");
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::tstSetPropertyValueForCallState()
+// Returns: System error.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::tstSetPropertyValueForCallState( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TInt callState(EFalse);
+    // read parameters
+    if (aItem.GetNextInt(callState))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err, "Missing Parameter: callState.");
+        }
+    err = iPropertyCallState.Set(KStub_KPSUidCtsyCallInformation, KCTsyCallState, callState);
+    ERROR(err, "Call state property Attach() failed!");
+    return err;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::HandleSystemEventL()
+// Returns: none.
+// -----------------------------------------------------------------------------
+void CUtilsTestModule::HandleSystemEventL(TRadioSystemEventType aEventType)
+    {
+    FUNC_LOG;
+    INFO_1("aEventType = %d", aEventType);
+
+    switch (aEventType)
+        {
+        case ERadioAudioResourcesAvailable:
+            {
+            INFO("ERadioAudioResourcesAvailable");
+            }
+            break;
+
+        case ERadioAudioAutoResumeForbidden:
+            {
+            INFO("ERadioAudioAutoResumeForbidden");
+            }
+            break;
+
+        case ERadioAudioRouteHeadset:
+            {
+            INFO("ERadioAudioRouteHeadset");
+            }
+            break;
+
+        case ERadioAudioRouteSpeaker:
+            {
+            INFO("ERadioAudioRouteSpeaker");
+            }
+            break;
+
+        case ERadioCallActivated:
+            {
+            INFO("ERadioCallActivated");
+            }
+            break;
+
+        case ERadioCallDeactivated:
+            {
+            INFO("ERadioCallDeactivated");
+            }
+            break;
+
+        case ERadioHeadsetConnected:
+            {
+            INFO("ERadioHeadsetConnected");
+            }
+            break;
+
+        case ERadioHeadsetDisconnected:
+            {
+            INFO("ERadioHeadsetDisconnected");
+            }
+            break;
+        default:
+            {
+            INFO("Unexpected event type");
+            break;
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::tstDefineAndAttachTestProperties()
+// Returns: none.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::tstDefineAndAttachTestProperties()
+    {
+    FUNC_LOG;
+    TInt err(RProperty::Define(KStub_KRadioPSUid,
+            SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected,
+            RProperty::EInt, KRadioServerReadPolicy,
+            KRadioServerWritePolicy));
+    ERROR(err, "Property SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected Define() failed!");
+    err = iPropertyHeadsetStatus.Attach(KStub_KRadioPSUid, SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected);
+    ERROR(err, "Property SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected Attach() failed!");
+    err = iPropertyCallState.Set(KStub_KRadioPSUid, SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected, EFalse);
+    ERROR(err, "Property SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected Set() failed!");
+
+    err = RProperty::Define(KStub_KUidSystemCategory,
+            KUidNetworkStatusValue,
+            RProperty::EInt, KRadioServerReadPolicy,
+            KRadioServerWritePolicy);
+    ERROR(err, "Property KUidNetworkStatusValue Define() failed!");
+    err = iPropertyNetworkStatus.Attach(KStub_KUidSystemCategory, KUidNetworkStatusValue);
+    ERROR(err, "Property KUidNetworkStatusValue Attach() failed!");
+    err = iPropertyNetworkStatus.Set(KStub_KUidSystemCategory, KUidNetworkStatusValue, ESANetworkAvailable);
+    ERROR(err, "Property KUidNetworkStatusValue Set() failed!");
+   
+
+    err = RProperty::Define(KStub_KPSUidCtsyCallInformation,
+            KCTsyCallState,
+            RProperty::EInt, KRadioServerReadPolicy,
+            KRadioServerWritePolicy);
+    ERROR(err, "Property KCTsyCallState Define() failed!");
+    err = iPropertyCallState.Attach(KStub_KPSUidCtsyCallInformation, KCTsyCallState);
+    ERROR(err, "Property KCTsyCallState Attach() failed!");
+    err = iPropertyCallState.Set(KStub_KPSUidCtsyCallInformation, KCTsyCallState, EPSCTsyCallStateNone);
+    ERROR(err, "Property KCTsyCallState Set() failed!");
+    
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::InitSharedMemory
+// Returns: errors.
+// -----------------------------------------------------------------------------
+//
+TInt CUtilsTestModule::InitSharedMemory()
+
+    {
+    FUNC_LOG;
+    TInt err = iRadioStubManagerChunk.CreateGlobal(
+            KRadioStubManagerLocalChunkName, sizeof(SRadioStubManager),
+            sizeof(SRadioStubManager), EOwnerThread);
+    if (KErrAlreadyExists == err)
+        {
+        INFO("Memory chunk KRadioStubManagerLocalChunkName already exists.");
+        err = iRadioStubManagerChunk.OpenGlobal(
+                KRadioStubManagerLocalChunkName, EFalse, // == Read | Write
+                EOwnerThread);
+        }
+    if (KErrNone == err)
+        {
+        if (sizeof(SRadioStubManager) > iRadioStubManagerChunk.MaxSize())
+            {
+            err = KErrCorrupt;
+            INFO_1(
+                    "Improper size for memory chunk KRadioStubManagerLocalChunkName. Err = %i",
+                    err);
+            }
+        else
+            {
+            TUint8* basePtr = iRadioStubManagerChunk.Base();
+            if (!basePtr)
+                {
+                err = KErrCorrupt;
+                INFO_1(
+                        "Getting base pointer of memory chunk KRadioStubManagerLocalChunkName failed. Err=%i",
+                        err);
+                }
+            else
+                {
+                iRadioStubManager = (SRadioStubManager*) basePtr;
+                // Zero configuration/control data
+                iRadioStubManager->FillZ();
+                }
+            }
+        }
+    else
+        {
+        INFO_1(
+                "Creation of memory chunk KRadioStubManagerLocalChunkName failed. Err = %i",
+                err);
+        }
+    INFO_1("return value, Err = %i", err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::CreateSystemEventCollector2L
+// Returns: errors.
+// -----------------------------------------------------------------------------
+//
+TInt CUtilsTestModule::CreateSystemEventCollector2L()
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    if (!iSystemEventCollector)
+        {
+        iSystemEventCollector = CRadioSystemEventCollector::NewL();
+        iSystemEventCollector->AddObserverL(this);
+        }
+    else
+        {
+        INFO( "KErrAlreadyExists" )
+        err = KErrAlreadyExists;
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::AudioRouteChangedL
+// Returns: none
+// -----------------------------------------------------------------------------
+//
+void CUtilsTestModule::AudioRouteChangedL( RadioEngine::TRadioAudioRoute aRoute )
+    {
+    FUNC_LOG;
+    INFO_1( "aRoute = %i",  aRoute );
+    iRoute = aRoute;
+    
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::CreateAudioRouterL
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::CreateAudioRouterL(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+
+    TInt err(KErrNone);
+    err = InitSharedMemory();
+    if ((!iAudioRouter) && (KErrNone == err))
+        {
+        TRAP( err, RadioEngineUtils::InitializeL(); );
+        if (KErrNone != err)
+            {
+            INFO_1( "RadioEngineUtils::InitializeL() failed err = %i", err )
+            iRadioStubManagerChunk.Close();
+            }
+        else
+            {
+            TRAP( err, iAudioRouter = CRadioAudioRouter::NewL( *this ); );
+            if ( KErrNone != err )
+                {
+                INFO_1( "CRadioAudioRouter::NewL() failed err = %i", err )
+                iRadioStubManagerChunk.Close();
+                RadioEngineUtils::Release();
+                }
+            }
+        }
+    if ( KErrNoMemory == err )
+        {
+        User::Leave( err );
+        }
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::DestroyAudioRouter
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::DestroyAudioRouter(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+    if (iAudioRouter)
+        {
+        iRadioStubManagerChunk.Close();
+        delete iAudioRouter;
+        iAudioRouter = NULL;
+        RadioEngineUtils::Release();
+        }
+    return KErrNone;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::OOMTestForAudioRouterCreation
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::OOMTestForAudioRouterCreation(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    err = InitSharedMemory();
+    if (KErrNone == err)
+        {
+        RadioEngineUtils::InitializeL();
+        TInt i(-1);
+        for (err = KErrNoMemory; KErrNoMemory == err; __UHEAP_MARKEND)
+            {
+            TRAP ( err,
+                        {
+                        ++i;
+                        INFO_1("loop count = %i", i );
+                        __UHEAP_MARK;
+                        __UHEAP_FAILNEXT( i );
+                        TRAP( err, CreateAudioRouter2L(); );
+                        if ( iAudioRouter )
+                            {
+                            delete iAudioRouter;
+                            iAudioRouter = NULL;
+                            }
+                        }
+            );
+            }
+        __UHEAP_RESET;
+        RadioEngineUtils::Release();
+        iRadioStubManagerChunk.Close();
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::CreateAudioRouter2L
+// Returns: errors.
+// -----------------------------------------------------------------------------
+//
+TInt CUtilsTestModule::CreateAudioRouter2L()
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    if (!iAudioRouter)
+        {
+        iAudioRouter = CRadioAudioRouter::NewL( *this );
+        }
+    else
+        {
+        INFO( "KErrAlreadyExists" )
+        err = KErrAlreadyExists;
+        }
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::CreateRoutableAudioL
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::CreateRoutableAudioL(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+
+    TInt err( CreateRoutableAudio2L() );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::CreateRoutableAudio2L
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::CreateRoutableAudio2L()
+    {
+    FUNC_LOG;
+
+    TInt err(KErrNone);
+    if (!iRoutableAudio)
+        {
+        TRAP( err, iRoutableAudio = new (ELeave) CRadioRoutableAudio( iAudioRouter ); );
+        if ( KErrNone != err )
+            {
+            INFO_1( "new CRadioRoutableAudio failed err = %i", err )
+            }
+        }
+    if ( KErrNoMemory == err )
+        {
+        User::Leave( err );
+        }
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::DestroyRoutableAudio
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::DestroyRoutableAudio(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+    if (iRoutableAudio)
+        {
+        delete iRoutableAudio;
+        iRoutableAudio = NULL;
+        // Note that previous delete call destroyed also Audio Router.
+        iAudioRouter = NULL;
+        iRadioStubManagerChunk.Close();
+        RadioEngineUtils::Release();
+        }
+    return KErrNone;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::OOMTestForRoutableAudioCreation
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::OOMTestForRoutableAudioCreation(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    TInt i(-1);
+    for (err = KErrNoMemory; KErrNoMemory == err; __UHEAP_MARKEND)
+        {
+        ++i;
+        INFO_1("loop count = %i", i );
+        __UHEAP_MARK;
+        __UHEAP_FAILNEXT( i );
+        TRAP( err, CreateRoutableAudio2L(); );
+        if ( iRoutableAudio )
+            {
+            delete iRoutableAudio;
+            iRoutableAudio = NULL;
+            // Note that previous delete call destroyed also Audio Router.
+            iAudioRouter = NULL;
+            iRadioStubManagerChunk.Close();
+            RadioEngineUtils::Release();
+            }
+        }
+    __UHEAP_RESET;
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+/*
+TInt CUtilsTestModule::?member_function(
+   CItemParser& aItem )
+   {
+   FUNC_LOG;
+
+   ?code
+
+   }
+*/
+
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+
+//  [End of File] - Do not remove