--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testapps/rschandler/Common/src/ResourceHandler_ResourceDetails.cpp Wed Sep 01 12:30:50 2010 +0100
@@ -0,0 +1,405 @@
+// Copyright (c) 2004-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 "ResourceHandler.h"
+
+/**
+Gets process details for a process with the given name - assumed to be a valid process
+name.
+*/
+void TResourceDetails::GetProcessData(TDesC& aProcessName)
+ {
+ RProcess process;
+ process.Open(aProcessName);
+
+ // ID
+ iProcessData.iIdString.Format(KFormatDec,process.Id().Id());
+
+ // Store Process Name
+ iProcessData.iProcessName.Copy(aProcessName);
+ //to increase readability of resource table
+ AppendDotsToResourceName(iProcessData.iProcessName);
+
+ // Priority
+ iProcessData.iPriorityString.Format(KFormatDec,process.Priority());
+
+ // Protected
+
+ // System
+
+ // Owner
+ RProcess owner;
+ TInt err = KErrNotSupported;
+ if (err == KErrNone)
+ {
+ iProcessData.iOwnerIdString.Format(KFormatHex,owner.Id().Id());
+ }
+ else
+ {
+ iProcessData.iOwnerIdString.Format(KFormatHex,0);
+ }
+
+ // Exit Type
+ TExitType et = process.ExitType();
+ switch(et)
+ {
+ case(0): iProcessData.iExitTypeString.Copy((_L("Kill"))); break;
+ case(1): iProcessData.iExitTypeString.Copy((_L("Terminate"))); break;
+ case(2): iProcessData.iExitTypeString.Copy((_L("Panic"))); break;
+ case(3): iProcessData.iExitTypeString.Copy((_L("Pending"))); break;
+ default: iProcessData.iExitTypeString.Copy((_L("Error!"))); break;
+ };
+
+ // Exit Reason
+ TInt er = process.ExitReason();
+ if (er==0) iProcessData.iExitReasonString.Copy(_L("n/a"));
+ else
+ {
+ iProcessData.iExitReasonString.Format(KFormatHex,(TInt)er);
+ }
+
+ // Exit Category
+ TExitCategoryName ec;
+ ec = process.ExitCategory();
+ if (ec.Length() == 0) iProcessData.iExitCategoryName.Copy(_L("n/a"));
+ else iProcessData.iExitCategoryName.Copy(ec);
+
+ // UIDs
+ TUidType uids = process.Type();
+ iProcessData.iUidType0String.Format(KFormatHex, uids[0].iUid);
+ iProcessData.iUidType1String.Format(KFormatHex, uids[1].iUid);
+ iProcessData.iUidType2String.Format(KFormatHex, uids[2].iUid);
+
+ // File
+ iProcessData.iFileName = process.FileName();
+
+ process.Close();
+ }
+
+/**
+Gets process details for a drive with the properties. These properties are assumed
+to be a valid.
+*/
+void TResourceDetails::GetDriveData(TInt aValidDriveNum, TDriveUnit aDriveUnit, TVolumeInfo aVolumeInfo)
+ {
+ iDriveData.iDriveName.Copy(aDriveUnit.Name());
+ iDriveData.iVolumeName.Copy(aVolumeInfo.iName);
+ iDriveData.iDriveNumberString.Format(KFormatDec, aValidDriveNum);
+
+ TBufC<20> mediaInfo;
+ switch (aVolumeInfo.iDrive.iType)
+ {
+ case EMediaNotPresent:mediaInfo=_L("EMediaNotPresent");break;
+ case EMediaUnknown:mediaInfo=_L("EMediaUnknown");break;
+ case EMediaFloppy:mediaInfo=_L("EMediaFloppy");break;
+ case EMediaHardDisk:mediaInfo=_L("EMediaHardDisk");break;
+ case EMediaCdRom:mediaInfo=_L("EMediaCdRom");break;
+ case EMediaRam:mediaInfo=_L("EMediaRam");break;
+ case EMediaFlash:mediaInfo=_L("EMediaFlash");break;
+ case EMediaRom:mediaInfo=_L("EMediaRom");break;
+ case EMediaRemote:mediaInfo=_L("EMediaRemote");break;
+ default:mediaInfo=_L("Other");break;
+ }
+
+ iDriveData.iMediaString.Copy(mediaInfo);
+ iDriveData.iAttributesString.Format(KFormatHex,aVolumeInfo.iDrive.iDriveAtt);
+ iDriveData.iSpaceString.Format(KFormatDec64,aVolumeInfo.iSize);
+ #if defined(WINS)
+ iDriveData.iFreeSpaceString.Copy(_L("Unavail."));
+ #else
+ if (aVolumeInfo.iFree.GetTInt() > aVolumeInfo.iSize.GetTInt()) // this value is odd on wins
+ {
+ iDriveData.iFreeSpaceString.Format(KFormatDec,aVolumeInfo.iSize.GetTInt());
+ }
+ else if (aVolumeInfo.iFree.GetTInt() < 0)
+ {
+ iDriveData.iFreeSpaceString.Copy(_L("InvalidVal"));
+ }
+ else
+ {
+ iDriveData.iFreeSpaceString.Format(KFormatDec,aVolumeInfo.iFree.GetTInt());
+ }
+ #endif
+ }
+
+/**
+Gets thread details for a thread with the given name - assumed to be a valid name.
+*/
+void TResourceDetails::GetThreadData(TDesC& aThreadName)
+ {
+ RThread thread;
+ TInt err = thread.Open(aThreadName);
+ if (err == KErrNone)
+ {
+ // ID
+ iThreadData.iIdString.Format(KFormatDec,thread.Id().Id());
+
+ // Name
+ iThreadData.iThreadName.Copy(aThreadName);
+
+ //to increase readability of resource table
+ AppendDotsToResourceName(iThreadData.iThreadName);
+
+ // Priority
+ iThreadData.iPriorityString.Format(KFormatDec,thread.Priority());
+
+ // Owner Process
+ RProcess owner;
+ thread.Process(owner);
+ iThreadData.iOwnerIdString.Format(KFormatDec,owner.Id().Id());
+
+ owner.Close();
+
+ // Stack Size
+
+ TInt aHeapSize = 0, aStackSize = 0;
+ iThreadData.iStackSizeString.Format(KFormatHex,aStackSize);
+ iThreadData.iHeapSizeString.Format(KFormatHex,aHeapSize);
+
+ // Protected
+
+ // System
+
+ // Exit Type
+ TExitType et = thread.ExitType();
+ switch(et)
+ {
+ case(0): iThreadData.iExitTypeString.Copy((_L("Kill"))); break;
+ case(1): iThreadData.iExitTypeString.Copy((_L("Terminate"))); break;
+ case(2): iThreadData.iExitTypeString.Copy((_L("Panic"))); break;
+ case(3): iThreadData.iExitTypeString.Copy((_L("Pending"))); break;
+ default: iThreadData.iExitTypeString.Copy((_L("Error!"))); break;
+ };
+
+ // Exit Reason
+
+ TInt er = thread.ExitReason();
+ if (er==0) iThreadData.iExitReasonString.Copy(_L("n/a"));
+ else iThreadData.iExitReasonString.Format(KFormatHex,(TInt)er);
+
+ // Exit Category
+
+ TExitCategoryName ec;
+ ec = thread.ExitCategory();
+ if (ec.Length() == 0) iThreadData.iExitCategoryName.Copy(_L("n/a"));
+ else iThreadData.iExitCategoryName.Copy(ec);
+
+ thread.Close();
+ }
+ }
+
+/**
+Gets details for a chunk using the given TFindChunk and name.
+*/
+void TResourceDetails::GetChunkData(TFindChunk findHb, TDesC& aChunkName)
+ {
+ RChunk chunk;
+ chunk.Open(findHb);
+
+ // Name
+ iChunkData.iChunkName.Copy(aChunkName);
+
+ //to increase readability of resource table
+ AppendDotsToResourceName(iChunkData.iChunkName);
+
+ // Size
+ TInt chunkSize = 0;
+ iChunkData.iSizeString.Format(KFormatHex,chunkSize);
+
+ // Max Size
+
+ TInt chunkMaxSize = 0;
+ iChunkData.iMaxSizeString.Format(KFormatHex,chunkMaxSize);
+
+ // Readable
+ if (chunk.IsReadable()) iChunkData.iReadableIndicator.Copy(_L("R"));
+ else iChunkData.iReadableIndicator.Copy(_L("-"));
+
+ // Writeable
+ if (chunk.IsWritable()) iChunkData.iWritableIndicator.Copy(_L("W"));
+ else iChunkData.iWritableIndicator.Copy(_L("-"));
+
+ chunk.Close();
+ }
+
+/**
+Gets details for a mutex using the given TFindMutex and name.
+*/
+void TResourceDetails::GetMutexData(TFindMutex& findHb, TDesC& aMutexName)
+ {
+ RMutex mutex;
+
+ // Name
+ iMutexData.iMutexName.Copy(aMutexName);
+
+ //to increase readability of resource table
+ AppendDotsToResourceName(iMutexData.iMutexName);
+
+ // Count
+ mutex.Open(findHb);
+ TInt count = 0;
+ iMutexData.iHexCountString.Format(KFormatHex, count);
+ iMutexData.iDecCountString.Format(KFormatDec, count);
+ mutex.Close();
+ }
+
+/**
+Gets details for a mutex using the given TFindSemaphore and name.
+*/
+void TResourceDetails::GetSemaphoreData(TFindSemaphore& findHb, TDesC& aSemaphoreName)
+ {
+ RSemaphore sem;
+ // Name
+ iSemaphoreData.iSemaphoreName.Copy(aSemaphoreName);
+ //to increase readability of resource table
+ AppendDotsToResourceName(iSemaphoreData.iSemaphoreName);
+ iSemaphoreData.iSemaphoreName.AppendFill('.', KMaxFullName - iSemaphoreData.iSemaphoreName.Length());
+
+ // Count
+ sem.Open(findHb);
+ TInt count = 0;
+ iSemaphoreData.iHexCountString.Format(KFormatHex,count);
+
+ iSemaphoreData.iDecCountString.Format(KFormatDec,count);
+
+ sem.Close();
+ }
+
+/**
+Gets details for a HAL entry. Assumes that the parameters are valid.
+*/
+void TResourceDetails::GetHalData(TInt aValidEntryNum, HAL::SEntry* aSEntry)
+ {
+ iHalData.iNumberString.Format(KFormatDec,aValidEntryNum);
+
+ TBuf<100> halName;
+ switch (aValidEntryNum)
+ {
+ case HALData::EManufacturer: halName=_L("EManufacturer");break;
+ case HALData::EManufacturerHardwareRev: halName=_L("EManufacturerHardwareRev");break;
+ case HALData::EManufacturerSoftwareRev: halName=_L("EManufacturerSoftwareRev");break;
+ case HALData::EManufacturerSoftwareBuild: halName=_L("EManufacturerSoftwareBuild");break;
+ case HALData::EModel: halName=_L("EModel");break;
+ case HALData::EMachineUid: halName=_L("EMachineUid");break;
+ case HALData::EDeviceFamily: halName=_L("EDeviceFamily");break;
+ case HALData::EDeviceFamilyRev: halName=_L("EDeviceFamilyRev");break;
+ case HALData::ECPU: halName=_L("ECPU");break;
+ case HALData::ECPUArch: halName=_L("ECPUArch");break;
+ case HALData::ECPUABI: halName=_L("ECPUABI");break;
+ case HALData::ECPUSpeed: halName=_L("ECPUSpeed");break;
+ case HALData::ESystemStartupReason: halName=_L("ESystemStartupReason");break;
+ case HALData::ESystemException: halName=_L("ESystemException");break;
+ case HALData::ESystemTickPeriod: halName=_L("ESystemTickPeriod");break;
+ case HALData::EMemoryRAM: halName=_L("EMemoryRAM");break;
+ case HALData::EMemoryRAMFree: halName=_L("EMemoryRAMFree");break;
+ case HALData::EMemoryROM: halName=_L("EMemoryROM");break;
+ case HALData::EMemoryPageSize: halName=_L("EMemoryPageSize");break;
+ case HALData::EPowerGood: halName=_L("EPowerGood");break;
+ case HALData::EPowerBatteryStatus: halName=_L("EPowerBatteryStatus");break;
+ case HALData::EPowerBackup: halName=_L("EPowerBackup");break;
+ case HALData::EPowerBackupStatus: halName=_L("EPowerBackupStatus");break;
+ case HALData::EPowerExternal: halName=_L("EPowerExternal");break;
+ case HALData::EKeyboard: halName=_L("EKeyboard");break;
+ case HALData::EKeyboardDeviceKeys: halName=_L("EKeyboardDeviceKeys");break;
+ case HALData::EKeyboardAppKeys: halName=_L("EKeyboardAppKeys");break;
+ case HALData::EKeyboardClick: halName=_L("EKeyboardClick");break;
+ case HALData::EKeyboardClickState: halName=_L("EKeyboardClickState");break;
+ case HALData::EKeyboardClickVolume: halName=_L("EKeyboardClickVolume");break;
+ case HALData::EKeyboardClickVolumeMax: halName=_L("EKeyboardClickVolumeMax");break;
+ case HALData::EDisplayXPixels: halName=_L("EDisplayXPixels");break;
+ case HALData::EDisplayYPixels: halName=_L("EDisplayYPixels");break;
+ case HALData::EDisplayXTwips: halName=_L("EDisplayXTwips");break;
+ case HALData::EDisplayYTwips: halName=_L("EDisplayYTwips");break;
+ case HALData::EDisplayColors: halName=_L("EDisplayColors");break;
+ case HALData::EDisplayState: halName=_L("EDisplayState");break;
+ case HALData::EDisplayContrast: halName=_L("EDisplayContrast");break;
+ case HALData::EDisplayContrastMax: halName=_L("EDisplayContrastMax");break;
+ case HALData::EBacklight: halName=_L("EBacklight");break;
+ case HALData::EBacklightState: halName=_L("EBacklightState");break;
+ case HALData::EPen: halName=_L("EPen");break;
+ case HALData::EPenX: halName=_L("EPenX");break;
+ case HALData::EPenY: halName=_L("EPenY");break;
+ case HALData::EPenDisplayOn: halName=_L("EPenDisplayOn");break;
+ case HALData::EPenClick: halName=_L("EPenClick");break;
+ case HALData::EPenClickState: halName=_L("EPenClickState");break;
+ case HALData::EPenClickVolume: halName=_L("EPenClickVolume");break;
+ case HALData::EPenClickVolumeMax: halName=_L("EPenClickVolumeMax");break;
+ case HALData::EMouse: halName=_L("EMouse");break;
+ case HALData::EMouseX: halName=_L("EMouseX");break;
+ case HALData::EMouseY: halName=_L("EMouseY");break;
+ case HALData::EMouseState: halName=_L("EMouseState");break;
+ case HALData::EMouseSpeed: halName=_L("EMouseSpeed");break;
+ case HALData::EMouseAcceleration: halName=_L("EMouseAcceleration");break;
+ case HALData::EMouseButtons: halName=_L("EMouseButtons");break;
+ case HALData::EMouseButtonState: halName=_L("EMouseButtonState");break;
+ case HALData::ECaseState: halName=_L("ECaseState");break;
+ case HALData::ECaseSwitch: halName=_L("ECaseSwitch");break;
+ case HALData::ECaseSwitchDisplayOn: halName=_L("ECaseSwitchDisplayOn");break;
+ case HALData::ECaseSwitchDisplayOff: halName=_L("ECaseSwitchDisplayOff");break;
+ case HALData::ELEDs: halName=_L("ELEDs");break;
+ case HALData::ELEDmask: halName=_L("ELEDmask");break;
+ case HALData::EIntegratedPhone: halName=_L("EIntegratedPhone");break;
+ case HALData::EDisplayBrightness: halName=_L("EDisplayBrightness");break;
+ case HALData::EDisplayBrightnessMax: halName=_L("EDisplayBrightnessMax");break;
+ case HALData::EKeyboardBacklightState: halName=_L("EKeyboardBacklightState");break;
+ case HALData::EAccessoryPower: halName=_L("EAccessoryPower");break;
+ case HALData::ELanguageIndex: halName=_L("ELanguageIndex");break;
+ case HALData::EKeyboardIndex: halName=_L("EKeyboardIndex");break;
+ case HALData::EMaxRAMDriveSize: halName=_L("EMaxRAMDriveSize");break;
+ case HALData::EKeyboardState: halName=_L("EKeyboardState");break;
+ case HALData::ESystemDrive: halName=_L("ESystemDrive");break;
+ case HALData::EPenState: halName=_L("EPenState");break;
+ case HALData::EDisplayIsMono: halName=_L("EDisplayIsMono");break;
+ case HALData::EDisplayIsPalettized: halName=_L("EDisplayIsPalettized");break;
+ case HALData::EDisplayBitsPerPixel: halName=_L("EDisplayBitsPerPixel");break;
+ case HALData::EDisplayNumModes: halName=_L("EDisplayNumModes");break;
+ case HALData::EDisplayMemoryAddress: halName=_L("EDisplayMemoryAddress");break;
+ case HALData::EDisplayOffsetToFirstPixel: halName=_L("EDisplayOffsetToFirstPixel");break;
+ case HALData::EDisplayOffsetBetweenLines: halName=_L("EDisplayOffsetBetweenLines");break;
+ case HALData::EDisplayPaletteEntry: halName=_L("EDisplayPaletteEntry");break;
+ case HALData::EDisplayIsPixelOrderRGB: halName=_L("EDisplayIsPixelOrderRGB");break;
+ case HALData::EDisplayIsPixelOrderLandscape: halName=_L("EDisplayIsPixelOrderLandscape");break;
+ case HALData::EDisplayMode: halName=_L("EDisplayMode");break;
+ case HALData::ESwitches: halName=_L("ESwitches");break;
+ case HALData::EDebugPort: halName=_L("EDebugPort");break;
+ case HALData::ELocaleLoaded: halName=_L("ELocaleLoaded");break;
+ case HALData::ENumHalAttributes: halName=_L("ENumHalAttributes");break;
+ default:halName=_L("Unknown");break;
+ }
+
+ iHalData.iName.Copy(halName);
+
+ if (aSEntry[aValidEntryNum].iProperties & HAL::EEntryDynamic)
+ iHalData.iDynamicIndicator=_L("D");
+ else iHalData.iDynamicIndicator=_L("-");
+
+ iHalData.iDecValString.Format(KFormatDec,aSEntry[aValidEntryNum].iValue);
+
+ iHalData.iHexValString.Format(KFormatHex,aSEntry[aValidEntryNum].iValue);
+ }
+
+/**
+Appends dots (after 3 spaces) to a resource name.
+Used for names of resources in a table - so you can follow the dots to read the
+resource details.
+*/
+void TResourceDetails::AppendDotsToResourceName(TFullName& aResourceName)
+ {
+ if (aResourceName.Length() < KMaxFullName - 3)
+ aResourceName.AppendFill(' ', 3);
+ aResourceName.AppendFill('.', KMaxFullName - aResourceName.Length());
+ }
+