diff -r 000000000000 -r d6fe6244b863 memspyui/source/MemSpyViewSystemConfig.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/memspyui/source/MemSpyViewSystemConfig.cpp Tue Feb 02 00:17:27 2010 +0200 @@ -0,0 +1,883 @@ +/* +* 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: +* +*/ + +#include "MemSpyViewSystemConfig.h" + +// System includes +#include +#include +#include +#ifdef __EPOC32__ +#include +#endif + +// Engine includes +#include +#include +#include +#include +#include +#include +#include +#include + +// User includes +#include "MemSpyUiUtils.h" +#include "MemSpyViewMainMenu.h" +#include "MemSpyContainerObserver.h" + +// Literal constants +_LIT( KMemSpyItemValueNotKnown, "Unknown" ); + + + +CMemSpyViewSystemConfig::CMemSpyViewSystemConfig( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver ) +: CMemSpyViewBase( aEngine, aObserver ) + { + } + + +CMemSpyViewSystemConfig::~CMemSpyViewSystemConfig() + { + delete iModel; + } + + +void CMemSpyViewSystemConfig::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune ) + { + _LIT( KTitle, "System Configuration" ); + SetTitleL( KTitle ); + // + CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune ); + } + + +void CMemSpyViewSystemConfig::RefreshL() + { + SetListBoxModelL(); + CMemSpyViewBase::RefreshL(); + } + + +TMemSpyViewType CMemSpyViewSystemConfig::ViewType() const + { + return EMemSpyViewTypeSystemConfig; + } + + +CMemSpyViewBase* CMemSpyViewSystemConfig::PrepareParentViewL() + { + CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver ); + CleanupStack::PushL( parent ); + parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() ); + CleanupStack::Pop( parent ); + return parent; + } + + +CMemSpyViewBase* CMemSpyViewSystemConfig::PrepareChildViewL() + { + CMemSpyViewBase* child = NULL; + return child; + } + + +void CMemSpyViewSystemConfig::SetListBoxModelL() + { + CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5); + delete iModel; + iModel = model; + + TBuf<128> valueBuf; + TInt value = 0; + TInt value2 = 0; + TMemSpySizeText sizeBuf; + + // + _LIT(KItem1Format, "Manufacturer"); + GetManufacturer( valueBuf ); + AddItemL( KItem1Format, valueBuf ); + + // + _LIT(KItem2Format, "Machine Uid"); + GetMachineUid( valueBuf ); + AddItemL( KItem2Format, valueBuf ); + + // + _LIT(KItem1aFormat, "Model Uid"); + GetHALValueAsHexL( HALData::EModel, KItem1aFormat ); + + // + _LIT(KItem2aFormat, "Device Family"); + GetDeviceFamily( valueBuf ); + AddItemL( KItem2aFormat, valueBuf ); + + // + _LIT(KItem2bFormat, "Device Family Rev."); + GetHALValueAsNumericL( HALData::EDeviceFamilyRev, KItem2bFormat ); + + // + _LIT(KItem3Format, "Hardware Rev."); + GetHALValueAsNumericL( HALData::EManufacturerHardwareRev, KItem3Format ); + + // + _LIT(KItem4Format, "Software Rev."); + GetHALValueAsNumericL( HALData::EManufacturerSoftwareRev, KItem4Format ); + + // + _LIT(KItem5Format, "Software Build"); + GetHALValueAsNumericL( HALData::EManufacturerSoftwareBuild, KItem5Format ); + + // + _LIT(KItem6Format, "CPU"); + GetCPU( valueBuf ); + AddItemL( KItem6Format, valueBuf ); + + // + _LIT(KItem7Format, "CPU ABI"); + GetCPUABI( valueBuf ); + AddItemL( KItem7Format, valueBuf ); + + // + _LIT(KItem8Format, "CPU Speed"); + _LIT(KItem8Suffix, "KHz"); + GetHALValueAsNumericL( HALData::ECPUSpeed, KItem8Format, &KItem8Suffix ); + + // + _LIT(KItem8aFormat, "Floating Point Support"); + GetHALValueAsYesNoL( HALData::EHardwareFloatingPoint, KItem8aFormat ); + + // + _LIT(KItem8bFormat, "System Tick Period"); + _LIT(KItem8bSuffix, "ms"); + GetHALValueAsNumericL( HALData::ESystemTickPeriod, KItem8bFormat, &KItem8bSuffix ); + + // + _LIT(KItem8cFormat, "Nano Tick Period"); + _LIT(KItem8cSuffix, "us"); + GetHALValueAsNumericL( HALData::ENanoTickPeriod, KItem8cFormat, &KItem8cSuffix ); + + // + _LIT(KItem9Format, "Startup Reason"); + GetStartupReason( valueBuf ); + AddItemL( KItem9Format, valueBuf ); + + // + _LIT(KItem10Format, "Language"); + GetHALValueAsNumericL( HALData::ELanguageIndex, KItem10Format, NULL, 4 ); + + // + _LIT(KItem10aFormat, "Locale"); + GetHALValueAsNumericL( HALData::ELocaleLoaded, KItem10aFormat, NULL, 4 ); + + // + _LIT(KItem11aFormat, "Clipboard Drive"); + GetHALValueAsDriveLetterL( HALData::EClipboardDrive, KItem11aFormat ); + + // + _LIT(KItem11bFormat, "System Drive (Hal)"); + GetHALValueAsDriveLetterL( HALData::ESystemDrive, KItem11bFormat ); + + // + _LIT(KItem11cFormat, "System Drive (F32)"); + TDriveNumber systemDrive = CMemSpyEngineHelperFileSystem::GetSystemDrive(); + AddItemL( systemDrive, KItem11cFormat ); + + // + _LIT(KItem11dFormat, "System Drive (Bafl)"); + value = BaflUtils::GetSystemDrive( systemDrive ); + if ( value == KErrNone ) + { + AddItemL( systemDrive, KItem11dFormat ); + } + else + { + MemSpyUiUtils::GetErrorText( valueBuf, value ); + AddItemL( KItem11dFormat, valueBuf ); + } + + // + _LIT(KItem12Format, "Display Type"); + GetDisplayType( valueBuf ); + AddItemL( KItem12Format, valueBuf ); + // + _LIT(KItem12aCaption, "Display Size"); + _LIT(KItem12aFormat, "%d x %d"); + value = value2 = 0; + GetHALValue( HALData::EDisplayXPixels, value ); + GetHALValue( HALData::EDisplayYPixels, value2 ); + valueBuf.Format( KItem12aFormat, value, value2 ); + AddItemL( KItem12aCaption, valueBuf ); + + // + _LIT(KItem13Format, "Display Depth"); + _LIT(KItem13Suffix, "bpp"); + GetHALValueAsNumericL( HALData::EDisplayBitsPerPixel, KItem13Format, &KItem13Suffix ); + + // + _LIT(KItem14Format, "Display Mode Count"); + GetHALValueAsNumericL( HALData::EDisplayNumModes, KItem14Format ); + + // + _LIT(KItem14aFormat, "Current Mode"); + GetHALValueAsNumericL( HALData::EDisplayMode, KItem14aFormat ); + + // + _LIT(KItem15Format, "Display Address"); + GetHALValueAsHexL( HALData::EDisplayMemoryAddress, KItem15Format ); + + // + _LIT(KItem16Format, "Screen Count"); + GetHALValueAsNumericL( HALData::EDisplayNumberOfScreens, KItem16Format ); + + // + _LIT(KItem17Format, "Eikon Def. Disp. Mode"); + GetDisplayMode( valueBuf, static_cast( CEikonEnv::Static()->DefaultDisplayMode() ) ); + AddItemL( KItem17Format, valueBuf ); + + // Set up list box + CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox ); + listbox->Model()->SetItemTextArray( model ); + listbox->Model()->SetOwnershipType( ELbmOwnsItemArray ); + iModel = NULL; + } + + +void CMemSpyViewSystemConfig::GetManufacturer( TDes& aBuf ) + { + TInt value = KErrGeneral; + GetHALValue( HALData::EManufacturer, value ); + // + switch( value ) + { + case HALData::EManufacturer_Ericsson: + { + _LIT( KName, "Ericsson" ); + aBuf.Copy( KName ); + } + break; + case HALData::EManufacturer_Motorola: + { + _LIT( KName, "Motorola" ); + aBuf.Copy( KName ); + } + break; + case HALData::EManufacturer_Nokia: + { + _LIT( KName, "Nokia" ); + aBuf.Copy( KName ); + } + break; + case HALData::EManufacturer_Panasonic: + { + _LIT( KName, "Panasonic" ); + aBuf.Copy( KName ); + } + break; + case HALData::EManufacturer_Psion: + { + _LIT( KName, "Psion" ); + aBuf.Copy( KName ); + } + break; + case HALData::EManufacturer_Intel: + { + _LIT( KName, "Intel" ); + aBuf.Copy( KName ); + } + break; + case HALData::EManufacturer_Cogent: + { + _LIT( KName, "Cogent" ); + aBuf.Copy( KName ); + } + break; + case HALData::EManufacturer_Cirrus: + { + _LIT( KName, "Cirrus" ); + aBuf.Copy( KName ); + } + break; + case HALData::EManufacturer_Linkup: + { + _LIT( KName, "Linkup" ); + aBuf.Copy( KName ); + } + break; + case HALData::EManufacturer_TexasInstruments: + { + _LIT( KName, "Texas Instruments" ); + aBuf.Copy( KName ); + } + break; + default: + aBuf.Copy( KMemSpyItemValueNotKnown ); + break; + } + } + + +void CMemSpyViewSystemConfig::GetDisplayMode( TDes& aBuf, TMemSpyDisplayMode aMode ) + { + switch( aMode ) + { + case ENone: + { + _LIT( KName, "ENone" ); + aBuf.Copy( KName ); + } + case EGray2: + { + _LIT( KName, "EGray2" ); + aBuf.Copy( KName ); + } + case EGray4: + { + _LIT( KName, "EGray4" ); + aBuf.Copy( KName ); + } + case EGray16: + { + _LIT( KName, "EGray16" ); + aBuf.Copy( KName ); + } + case EGray256: + { + _LIT( KName, "EGray256" ); + aBuf.Copy( KName ); + } + case EColor16: + { + _LIT( KName, "EColor16" ); + aBuf.Copy( KName ); + } + case EColor256: + { + _LIT( KName, "EColor256" ); + aBuf.Copy( KName ); + } + case EColor64K: + { + _LIT( KName, "EColor64K" ); + aBuf.Copy( KName ); + } + case EColor16M: + { + _LIT( KName, "EColor16M" ); + aBuf.Copy( KName ); + } + case ERgb: + { + _LIT( KName, "ERgb" ); + aBuf.Copy( KName ); + } + break; + case EColor4K: + { + _LIT( KName, "EColor4K" ); + aBuf.Copy( KName ); + } + break; + case EColor16MU: + { + _LIT( KName, "EColor16MU" ); + aBuf.Copy( KName ); + } + break; + case EColor16MA: + { + _LIT( KName, "EColor16MA" ); + aBuf.Copy( KName ); + } + break; + case EColor16MAP: + { + _LIT( KName, "EColor16MAP" ); + aBuf.Copy( KName ); + } + break; + default: + aBuf.Copy( KMemSpyItemValueNotKnown ); + break; + } + } + + +void CMemSpyViewSystemConfig::GetDeviceFamily( TDes& aBuf ) + { + TInt value = KErrGeneral; + GetHALValue( HALData::EDeviceFamily, value ); + // + switch( value ) + { + case HALData::EDeviceFamily_Crystal: + { + _LIT( KName, "Crystal" ); + aBuf.Copy( KName ); + } + break; + case HALData::EDeviceFamily_Pearl: + { + _LIT( KName, "Pearl" ); + aBuf.Copy( KName ); + } + break; + case HALData::EDeviceFamily_Quartz: + { + _LIT( KName, "Quartz" ); + aBuf.Copy( KName ); + } + break; + default: + aBuf.Copy( KMemSpyItemValueNotKnown ); + break; + } + } + + +void CMemSpyViewSystemConfig::GetCPU( TDes& aBuf ) + { + TInt value = KErrGeneral; + GetHALValue( HALData::ECPU, value ); + // + switch( value ) + { + case HALData::ECPU_ARM: + { + _LIT( KName, "ARM" ); + aBuf.Copy( KName ); + } + break; + case HALData::ECPU_MCORE: + { + _LIT( KName, "mCORE" ); + aBuf.Copy( KName ); + } + break; + case HALData::ECPU_X86: + { + _LIT( KName, "X86" ); + aBuf.Copy( KName ); + } + break; + default: + aBuf.Copy( KMemSpyItemValueNotKnown ); + break; + } + } + + +void CMemSpyViewSystemConfig::GetCPUABI( TDes& aBuf ) + { + TInt value = KErrGeneral; + GetHALValue( HALData::ECPUABI, value ); + // + switch( value ) + { + case HALData::ECPUABI_ARM4: + { + _LIT( KName, "ARM4" ); + aBuf.Copy( KName ); + } + break; + case HALData::ECPUABI_ARMI: + { + _LIT( KName, "ARMI" ); + aBuf.Copy( KName ); + } + break; + case HALData::ECPUABI_THUMB: + { + _LIT( KName, "ARM4" ); + aBuf.Copy( KName ); + } + break; + case HALData::ECPUABI_MCORE: + { + _LIT( KName, "mCORE" ); + aBuf.Copy( KName ); + } + break; + case HALData::ECPUABI_MSVC: + { + _LIT( KName, "MSVC" ); + aBuf.Copy( KName ); + } + break; + case HALData::ECPUABI_ARM5T: + { + _LIT( KName, "ARM5T" ); + aBuf.Copy( KName ); + } + break; + case HALData::ECPUABI_X86: + { + _LIT( KName, "X86" ); + aBuf.Copy( KName ); + } + break; + default: + aBuf.Copy( KMemSpyItemValueNotKnown ); + break; + } + } + + +void CMemSpyViewSystemConfig::GetStartupReason( TDes& aBuf ) + { + TInt value = KErrGeneral; + GetHALValue( HALData::ESystemStartupReason, value ); + // + switch( value ) + { + case HALData::ESystemStartupReason_Cold: + { + _LIT( KName, "Cold" ); + aBuf.Copy( KName ); + } + break; + case HALData::ESystemStartupReason_Warm: + { + _LIT( KName, "Warm" ); + aBuf.Copy( KName ); + } + break; + case HALData::ESystemStartupReason_Fault: + { + _LIT( KName, "Fault" ); + aBuf.Copy( KName ); + } + break; + default: + aBuf.Copy( KMemSpyItemValueNotKnown ); + break; + } + } + + +void CMemSpyViewSystemConfig::GetKeyboard( TDes& aBuf ) + { + _LIT(KComma, ", "); + TInt value = KErrGeneral; + GetHALValue( HALData::EKeyboard, value ); + // + aBuf.Zero(); + if ( value & EKeyboard_Keypad ) + { + _LIT( KName, "Keypad" ); + aBuf.Copy( KName ); + } + + + if ( value & EKeyboard_Full ) + { + if ( aBuf.Length() ) + { + aBuf.Append( KComma ); + } + + _LIT( KName, "Full Keyboard" ); + aBuf.Copy( KName ); + } + + if ( !aBuf.Length() ) + { + aBuf.Copy( KMemSpyItemValueNotKnown ); + } + } + + +void CMemSpyViewSystemConfig::GetMachineUid( TDes& aBuf ) + { + TInt value = KErrGeneral; + GetHALValue( HALData::EMachineUid, value ); + // + switch( value ) + { + case HALData::EMachineUid_Series5mx: + { + _LIT( KName, "Series 5mx" ); + aBuf.Copy( KName ); + } + break; + case HALData::EMachineUid_Brutus: + { + _LIT( KName, "Brutus" ); + aBuf.Copy( KName ); + } + break; + case HALData::EMachineUid_Cogent: + { + _LIT( KName, "Cogent" ); + aBuf.Copy( KName ); + } + break; + case HALData::EMachineUid_Win32Emulator: + { + _LIT( KName, "Win32 Emulator" ); + aBuf.Copy( KName ); + } + break; + case HALData::EMachineUid_WinC: + { + _LIT( KName, "WINC" ); + aBuf.Copy( KName ); + } + break; + case HALData::EMachineUid_CL7211_Eval: + { + _LIT( KName, "CL7211" ); + aBuf.Copy( KName ); + } + break; + case HALData::EMachineUid_LinkUp: + { + _LIT( KName, "LinkUp" ); + aBuf.Copy( KName ); + } + break; + case HALData::EMachineUid_Assabet: + { + _LIT( KName, "Assabet" ); + aBuf.Copy( KName ); + } + break; + case HALData::EMachineUid_IQ80310: + { + _LIT( KName, "IQ80310" ); + aBuf.Copy( KName ); + } + break; + case HALData::EMachineUid_Lubbock: + { + _LIT( KName, "Lubbock" ); + aBuf.Copy( KName ); + } + break; + case HALData::EMachineUid_Integrator: + { + _LIT( KName, "Integrator" ); + aBuf.Copy( KName ); + } + break; + case HALData::EMachineUid_Helen: + { + _LIT( KName, "Helen" ); + aBuf.Copy( KName ); + } + break; + case HALData::EMachineUid_X86PC: + { + _LIT( KName, "X86PC" ); + aBuf.Copy( KName ); + } + break; + case HALData::EMachineUid_OmapH2: + { + _LIT( KName, "OmapH2" ); + aBuf.Copy( KName ); + } + break; + case HALData::EMachineUid_OmapH4: + { + _LIT( KName, "OmapH4" ); + aBuf.Copy( KName ); + } + break; + default: + { + _LIT( KName, "0x%08x" ); + aBuf.Format( KName, value ); + } + break; + } + } + + +void CMemSpyViewSystemConfig::GetDisplayType( TDes& aBuf ) + { + TInt value = KErrGeneral; + GetHALValue( HALData::EDisplayIsMono, value ); + // + if ( value == 0 ) + { + _LIT( KName, "Colour" ); + aBuf.Copy( KName ); + } + else if ( value == 1 ) + { + _LIT( KName, "Mono" ); + aBuf.Copy( KName ); + } + else + { + MemSpyUiUtils::GetErrorText( aBuf, value ); + } + } + + +TInt CMemSpyViewSystemConfig::GetHALValue( HALData::TAttribute aAttribute, TInt& aValue ) + { + aValue = KErrGeneral; + const TInt error = HAL::Get( aAttribute, aValue ); + +#ifdef _DEBUG + if ( error != KErrNone ) + { + RDebug::Printf("CMemSpyViewSystemConfig::GetHALValue() - aAttribute: %3d, error: %d, value: %d", aAttribute, error, aValue); + } +#endif + + return error; + } + + +TInt CMemSpyViewSystemConfig::GetHALValueAsNumericL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix, TInt aWidth ) + { + TBuf<20> valueBuf; + TInt value = 0; + // + const TInt error = GetHALValue( aAttribute, value ); + if ( error == KErrNone ) + { + if ( aWidth > 0 && aWidth < 12 ) + { + valueBuf.NumFixedWidthUC( (TUint) value, EDecimal, aWidth ); + } + else + { + valueBuf.Num( value ); + } + + AddItemL( aCaption, valueBuf, aSuffix ); + } + else + { + MemSpyUiUtils::GetErrorText( valueBuf, error ); + AddItemL( aCaption, valueBuf ); + } + // + return error; + } + + +TInt CMemSpyViewSystemConfig::GetHALValueAsHexL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix ) + { + TBuf<20> valueBuf; + TInt value = 0; + // + const TInt error = GetHALValue( aAttribute, value ); + if ( error == KErrNone ) + { + MemSpyEngineUtils::FormatHex( valueBuf, value ); + AddItemL( aCaption, valueBuf, aSuffix ); + } + else + { + MemSpyUiUtils::GetErrorText( valueBuf, error ); + AddItemL( aCaption, valueBuf ); + } + // + return error; + } + + +TInt CMemSpyViewSystemConfig::GetHALValueAsYesNoL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix ) + { + TBuf<20> valueBuf; + TInt value = 0; + // + const TInt error = GetHALValue( aAttribute, value ); + if ( error == KErrNone || error == KErrNotSupported ) + { + _LIT(KYes, "Yes"); + _LIT(KNo, "No"); + _LIT(KError, "Error: %d"); + + if ( error < KErrNone ) + { + valueBuf.Format( KError, error ); + } + else if ( value == EFalse ) + { + valueBuf.Copy( KNo ); + } + else if ( error == KErrNone ) + { + valueBuf.Copy( KYes ); + } + + AddItemL( aCaption, valueBuf, aSuffix ); + } + else + { + MemSpyUiUtils::GetErrorText( valueBuf, error ); + AddItemL( aCaption, valueBuf ); + } + // + return error; + } + + +TInt CMemSpyViewSystemConfig::GetHALValueAsDriveLetterL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix ) + { + TInt value = 0; + const TInt error = GetHALValue( aAttribute, value ); + // + if ( error == KErrNone && ( value >= EDriveA && value <= EDriveZ ) ) + { + AddItemL( (TDriveNumber) value, aCaption, aSuffix ); + } + else + { + _LIT( KItemNotSet, "Not Defined"); + AddItemL( aCaption, KItemNotSet ); + } + // + return error; + } + + +void CMemSpyViewSystemConfig::AddItemL( const TDesC& aCaption, const TDesC& aValue, const TDesC* aSuffix ) + { + _LIT(KItemFormat, "\t%S\t\t%S"); + // + TBuf item; + item.Format( KItemFormat, &aCaption, &aValue ); + if ( aSuffix ) + { + _LIT(KSpace, " "); + item.Append( KSpace ); + item.Append( *aSuffix ); + } + // + iModel->AppendL( item ); + } + + +void CMemSpyViewSystemConfig::AddItemL( TDriveNumber aDrive, const TDesC& aCaption, const TDesC* aSuffix ) + { + TBuf<20> valueBuf; + // + const TDriveUnit drive( aDrive ); + valueBuf.Copy( drive.Name() ); + // + AddItemL( aCaption, valueBuf, aSuffix ); + } + + +