deviceupdatesui/adapters/devdetail/src/nsmldmdevdetailutils_ARM.cpp
author hgs
Fri, 19 Mar 2010 04:28:07 +0530
changeset 33 7464c1e21dae
permissions -rw-r--r--
201008_internal
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     1
/*
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     2
* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). 
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     3
* All rights reserved.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     8
*
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     9
* Initial Contributors:
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    11
*
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    12
* Contributors:
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    13
*
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    14
* Description:    DM DevDetail Adapter Source Code, ARM implementation
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    15
*
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    16
*/
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    17
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    18
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    19
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    20
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    21
// INCLUDES
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    22
#include <sysutil.h>
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    23
#include "nsmldmdevdetailadapter.h"
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    24
#include "nsmldebug.h"
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    25
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    26
#if defined (_ENABLE_MULTIROFS_SUPPORT)
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    27
#include <sysversioninfo.h>
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    28
#else
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    29
// CONSTANTS
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    30
_LIT8( KNSmlSwVersionSeparator, " " );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    31
#endif
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    32
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    33
// ---------------------------------------------------------------------------
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    34
// CNSmlDmDevDetailAdapter::GetDevDetailDataL( )
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    35
// Fetches device specific data using EInfo interface.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    36
// ---------------------------------------------------------------------------
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    37
void CNSmlDmDevDetailAdapter::GetDevDetailDataL( 
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    38
                                CBufBase& aObject, 
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    39
                                TNSmlDevDetailData aElement ) const
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    40
    {
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    41
    _DBG_FILE("CNSmlDmDevDetailAdapter::GetDevDetailDataL(): begin (MARM)");
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    42
    
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    43
    aObject.Reset();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    44
    
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    45
    switch( aElement )
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    46
        {
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    47
        case ESwVersion:
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    48
            {
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    49
            // buffers for data fetched from sysutil
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    50
#if defined (_ENABLE_MULTIROFS_SUPPORT)
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    51
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    52
            TBuf16<KSysVersionInfoTextLength> temp;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    53
			TBuf8<KSysVersionInfoTextLength> temp8;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    54
			temp.Zero();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    55
			temp8.Zero();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    56
            SysVersionInfo::TVersionInfoType what = SysVersionInfo::EFWVersion;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    57
            TInt error = SysVersionInfo::GetVersionInfo(what,temp);
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    58
			
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    59
			User::LeaveIfError(error);
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    60
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    61
			//Ascii copy which is required
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    62
			temp8.Copy(temp);
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    63
			aObject.InsertL(0,temp8);
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    64
			//Unicode copy if required
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    65
			//aObject.InsertL(0,temp.Ptr(),temp.Length());
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    66
#else
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    67
            HBufC* verBuf = HBufC::NewLC( KSysUtilVersionTextLength );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    68
            HBufC8* verBuf8 = HBufC8::NewLC( KSysUtilVersionTextLength );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    69
            
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    70
            TPtr ver = verBuf->Des();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    71
            TPtr8 ver8 = verBuf8->Des();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    72
            // fetch software version (sw.txt) from sysutil
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    73
        	SysUtil::GetSWVersion( ver );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    74
        	ver8.Copy( ver );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    75
        	
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    76
            // parse sw fields and append to aObject
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    77
        	TChar separator('\n');
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    78
        	TInt pos = ver8.Locate( separator );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    79
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    80
            if ( pos == KErrNotFound )
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    81
                {
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    82
                User::Leave( KErrNotFound );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    83
                }
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    84
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    85
            // insert version (1st field) and separator to beginning
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    86
        	aObject.InsertL( 0, ver8.Mid( 0, pos ) );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    87
        	aObject.InsertL( 0, KNSmlSwVersionSeparator );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    88
        	
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    89
        	// locate type designator (3rd field)
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    90
        	ver8 = ver8.Mid( pos + 1 );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    91
        	pos = ver8.Locate( separator );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    92
        	ver8 = ver8.Mid( pos + 1 );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    93
        	pos = ver8.Locate( separator );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    94
        	
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    95
        	if ( pos == KErrNotFound )
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    96
        	    {
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    97
                // type designator (the rest of the string, since there was no \n found) 
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    98
            	aObject.InsertL( 0, ver8 );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    99
        	    }
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   100
        	else
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   101
        	    {
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   102
                // type designator to beginning
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   103
            	aObject.InsertL( 0, ver8.Mid( 0, pos ) );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   104
        	    }
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   105
        	
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   106
        	// fetch variant (lang.txt) from sysutil
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   107
        	ver.Zero();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   108
        	SysUtil::GetLangVersion( ver );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   109
        	ver8.Copy( ver );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   110
        	
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   111
            // insert separator and variant to the end
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   112
        	aObject.InsertL( aObject.Size(), KNSmlSwVersionSeparator );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   113
        	aObject.InsertL( aObject.Size(), ver8 );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   114
            
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   115
            CleanupStack::PopAndDestroy( verBuf8 );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   116
            CleanupStack::PopAndDestroy( verBuf );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   117
#endif //_ENABLE_MULTIROFS_SUPPORT
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   118
            break;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   119
            }
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   120
        case EHwVersion:
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   121
            {
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   122
            break;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   123
            }
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   124
        default:
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   125
            User::Panic( KNSmlDevDetailPanic, KErrArgument );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   126
            break;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   127
        }
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   128
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   129
    _DBG_FILE("CNSmlDmDevDetailAdapter::GetDevDetailDataL(): end (MARM)");
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   130
    }
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   131
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   132