diff -r c1f20ce4abcf -r 3e88ff8f41d5 kerneltest/e32test/system/d_khal.cpp --- a/kerneltest/e32test/system/d_khal.cpp Tue Aug 31 16:34:26 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,284 +0,0 @@ -// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32test\system\d_khal.cpp -// LDD for testing class Kern HAL APIs -// Kern::AddHalEntry(), Kern::RemoveHalEntry(), Kern::FindHalEntry() -// -// - -#include - -#include "d_khal.h" - -#define KMaxDeviceNumber 8 // same as KMaxHalEntries - -TUint gDeviceNumber=1; // Device Number -TUint gRegisteredDeviceNumber; // Holds the device number which we managed to register for -TBool gEntryForDevice0Registered; // indicator whether the device0 got registered -TBool gEntryForDeviceXRegistered; // States HAL Entry Successfully registered or not -TBool gFirstCall=ETrue; // for add function, this tells if this is first call or not - -class DKHalLDDTestFactory : public DLogicalDevice -// -// Test LDD factory -// - { -public: - DKHalLDDTestFactory(); - virtual TInt Install(); //overriding pure virtual - virtual void GetCaps(TDes8& aDes) const; //overriding pure virtual - virtual TInt Create(DLogicalChannelBase*& aChannel); //overriding pure virtual - }; - -class DKHalLDDTestChannel : public DLogicalChannelBase -// -// Test logical channel -// - { -public: - virtual ~DKHalLDDTestChannel(); -protected: - virtual TInt DoCreate(TInt aUnit, const TDesC8* anInfo, const TVersion& aVer); - virtual TInt Request(TInt aReqNo, TAny* a1, TAny* a2); - }; - - -LOCAL_C TInt halFunction0(TAny* /*aPtr*/, TInt aFunction, TAny* /*a1*/, TAny* /*a2*/) - { - TInt r=KErrNotSupported; - - switch(aFunction) - { - case RLddKHalTest::ETestHalFunc: - Kern::Printf("HAL function0 called successfully !"); - r=KErrNone; // just return KErrNone - break; - default: - break; - } - return r; - } - - -LOCAL_C TInt halFunctionX(TAny* /*aPtr*/, TInt aFunction, TAny* /*a1*/, TAny* /*a2*/) - { - TInt r=KErrNotSupported; - - switch(aFunction) - { - case RLddKHalTest::ETestHalFunc: - Kern::Printf("HAL functionX called successfully !"); - r=KErrNone; // just return KErrNone - break; - default: - break; - } - return r; - } - -DECLARE_STANDARD_LDD() - { - return new DKHalLDDTestFactory; - } - -// -// Constructor -// -DKHalLDDTestFactory::DKHalLDDTestFactory() - { - } - -TInt DKHalLDDTestFactory::Create(DLogicalChannelBase*& aChannel) - { -// -// Create new channel -// - aChannel=new DKHalLDDTestChannel; - return aChannel?KErrNone:KErrNoMemory; - } - -TInt DKHalLDDTestFactory::Install() -// -// Install the LDD - overriding pure virtual - { - return SetName(&KLddName); - } - -void DKHalLDDTestFactory::GetCaps(TDes8& /*aDes*/) const -// -// Get capabilities - overriding pure virtual -// - { - } - -TInt DKHalLDDTestChannel::DoCreate(TInt /*aUnit*/, const TDesC8* /*aInfo*/, const TVersion& /*aVer*/) -// -// Create channel -// - { - return KErrNone; - } - -DKHalLDDTestChannel::~DKHalLDDTestChannel() -// -// Destructor -// - { - } - -TInt DKHalLDDTestChannel::Request(TInt aReqNo, TAny* /*a1*/, TAny* /*a2*/) - { - TInt r=KErrNone; - switch(aReqNo) - { - case RLddKHalTest::EAddHalEntryDevice0: - { - // try to register the halfunction for PlatformSpecific category, device 0 - NKern::ThreadEnterCS(); - r=Kern::AddHalEntry(EHalGroupPlatformSpecific2,halFunction0,this); - NKern::ThreadLeaveCS(); - //this function gets called twice, second time must not changed these values - if (gFirstCall) - { - if (r==KErrNone) - { - gEntryForDevice0Registered=ETrue; - } - else - { - gEntryForDevice0Registered=EFalse; - } - gFirstCall=EFalse; - } - - break; - } - case RLddKHalTest::EAddHalEntryDeviceX: - { - // try to register the halfunction for PlatformSpecific category, device x - NKern::ThreadEnterCS(); - do - { - r=Kern::AddHalEntry(EHalGroupPlatformSpecific2,halFunctionX,this,gDeviceNumber); - } - while((r==KErrInUse) && (++gDeviceNumber < KMaxDeviceNumber)); - NKern::ThreadLeaveCS(); - - if((gDeviceNumber < KMaxDeviceNumber) && (r==KErrNone)) - { - gEntryForDeviceXRegistered=ETrue; - gRegisteredDeviceNumber=gDeviceNumber; - } - else - { - gEntryForDeviceXRegistered=EFalse; - r=KErrInUse; - } - - break; - } - case RLddKHalTest::EAddHalEntryForExistingFixed: - { - // try to add HAL entry for Kernel, should fail - NKern::ThreadEnterCS(); - r=Kern::AddHalEntry(EHalGroupKernel,halFunction0,this); - NKern::ThreadLeaveCS(); - break; - } - case RLddKHalTest::ERemoveHalEntryDevice0: - { - // try to remove the registered halfunction for device 0 - if(gEntryForDevice0Registered) - r=Kern::RemoveHalEntry(EHalGroupPlatformSpecific2); - - break; - } - case RLddKHalTest::ERemoveHalEntryDeviceX: - { - // try to remove the registered halfunction for device x - if(gEntryForDeviceXRegistered) - r=Kern::RemoveHalEntry(EHalGroupPlatformSpecific2,gRegisteredDeviceNumber); - break; - } - case RLddKHalTest::ERemoveHalEntryExistingFixed: - { - // try to remove EGroupHalKernel. This operation should return an error - r=Kern::RemoveHalEntry(EHalGroupKernel); - break; - } - case RLddKHalTest::EGetRegisteredDeviceNumber: - { - // return the device number which we managed to register - if(gEntryForDeviceXRegistered) - { - r=gRegisteredDeviceNumber; - } - else - { - r=KErrNotFound; - } - break; - } - case RLddKHalTest::EFindHalEntryDevice0: - { - SHalEntry* pEntry=Kern::FindHalEntry(EHalGroupPlatformSpecific2); - // returns valid pEntry if EAddHalEntryForDevice0 managed to register - // an entry earlier - if (pEntry && pEntry->iFunction!=NULL) - { - r=KErrNone; - } - else - { - r=KErrNotFound; - } - break; - } - case RLddKHalTest::EFindHalEntryDevice0Other: - { - SHalEntry* pEntry=Kern::FindHalEntry(EHalGroupKernel); - //try to find an existing HAL group (kernel must exist) - if (pEntry && pEntry->iFunction!=NULL) - { - r=KErrNone; - } - else - { - r=KErrNotFound; - } - break; - } - case RLddKHalTest::EFindHalEntryDeviceX: - { - SHalEntry* pEntry=Kern::FindHalEntry(EHalGroupPlatformSpecific2,gRegisteredDeviceNumber); - // Should return valid pEntry if EAddHalEntryForDeviceX managed to register - // one earlier - if (pEntry && pEntry->iFunction!=NULL) - { - r=KErrNone; - } - else - { - r=KErrNotFound; - } - break; - } - - default: - r=KErrNotSupported; - break; - } - - return r; - }