javauis/m2g_qt/src/M2GGeneral.cpp
author hgs
Fri, 29 Oct 2010 11:49:32 +0300
changeset 87 1627c337e51e
parent 80 d6dafc5d983f
permissions -rw-r--r--
v2.2.21_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     1
/*
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
     2
* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     3
* All rights reserved.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     8
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    11
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    12
* Contributors:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    13
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    14
* Description:  General methods
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    15
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    16
*/
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    17
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    18
// INCLUDE FILES
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    19
#include <s32strm.h> // RWriteStream
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    20
#include "M2GUtils.h"
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    21
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    22
#ifdef M2G_INFO_POPUP
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    23
#include <eikenv.h> // CEikonEnv::InfoWinL
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    24
#endif
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    25
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    26
#include <jni.h>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    27
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    28
#include <SvgJavaInterfaceImpl.h>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    29
#include "M2GGeneral.h"
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    30
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    31
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    32
M2G_NS_START
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    33
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    34
// EXTERNAL DATA STRUCTURES
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    35
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    36
// EXTERNAL FUNCTION PROTOTYPES
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    37
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    38
// CONSTANTS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    39
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    40
// MACROS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    41
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    42
// LOCAL CONSTANTS AND MACROS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    43
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    44
// MODULE DATA STRUCTURES
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    45
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    46
// LOCAL FUNCTION PROTOTYPES
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    47
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    48
// FORWARD DECLARATIONS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    49
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    50
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    51
// M2GGeneral::RaiseException
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    52
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    53
void M2GGeneral::RaiseException(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    54
    JNIEnv* aEnv, const TDesC8& aName, const TUint8* aMsg)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    55
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    56
    M2G_DEBUG_0("#### M2G_DEBUG: M2GGeneral::RaiseException() ####");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    57
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    58
    if (aEnv)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    59
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    60
        jclass clazz = aEnv->FindClass(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    61
                           REINTERPRET_CAST(const char*, aName.Ptr()));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    62
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    63
        if (!clazz)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    64
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    65
            // if exception class not found, then use java.lang.Exception
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    66
            clazz = aEnv->FindClass(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    67
                        REINTERPRET_CAST(const char*, KJavaExceptionClass().Ptr()));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    68
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    69
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    70
        aEnv->ThrowNew(clazz, REINTERPRET_CAST(const char*, aMsg));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    71
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    72
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    73
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    74
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    75
// M2GGeneral::CheckErrorCode
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    76
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    77
TInt M2GGeneral::CheckErrorCode(JNIEnv* aEnv, TInt aErrorCode)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    78
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    79
    M2G_DEBUG_1("M2G_DEBUG: M2GGeneral::CheckErrorCode: %d - begin", aErrorCode);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    80
    TInt code = aErrorCode;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    81
    const TUint8* msg = (STATIC_CAST(const TDesC8&, KM2GEmptyString8)).Ptr();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    82
    jcfcommon::auto_ptr<MJavaError> error;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    83
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    84
    // Check if an error object
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    85
    if (aErrorCode > 0)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    86
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    87
        M2G_DEBUG_0("M2G_DEBUG: M2GGeneral::CheckErrorCode(), is MJavaError");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    88
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    89
        // Error object need to be deleted here and the auto_ptr takes care of that!!
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    90
        error.reset(JavaUnhand< MJavaError >(aErrorCode));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    91
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    92
        // Get an error description through the MJavaError object
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    93
        msg = error->Description().Ptr();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    94
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    95
        switch (error->ErrorCode())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    96
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    97
        case KM2GIOException:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    98
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    99
            code = error->ErrorCode();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   100
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   101
        default:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   102
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   103
            code = error->ErrorCode();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   104
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   105
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   106
        M2G_DEBUG_1("M2G_DEBUG: M2GGeneral::CheckErrorCode(), MJavaError: error code=%d", code);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   107
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   108
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   109
    switch (code)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   110
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   111
    case KM2GMemoryNotOk:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   112
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   113
        M2G_DEBUG_0("#### M2G_DEBUG: M2GGeneral::CheckErrorCode() - OutOfMemoryError ####");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   114
        M2GGeneral::RaiseException(aEnv, KJavaOutOfMemoryErrorClass, msg);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   115
        return code;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   116
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   117
    case KM2GIOException:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   118
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   119
        M2G_DEBUG_0("#### M2G_DEBUG: M2GGeneral::CheckErrorCode() - IOException ####");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   120
        M2GGeneral::RaiseException(aEnv, KJavaIOExceptionClass, msg);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   121
        return code;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   122
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   123
    case KM2GHandleNotOk:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   124
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   125
        M2G_DEBUG_0("#### M2G_DEBUG: M2GGeneral::CheckErrorCode() - NullPointerException ####");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   126
        M2GGeneral::RaiseException(aEnv, KJavaNullPointerException, msg);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   127
        return code;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   128
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   129
    default:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   130
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   131
        M2G_DEBUG_1("M2G_DEBUG: M2GGeneral::CheckErrorCode() error code=%d - end", code);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   132
        return code;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   133
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   134
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   135
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   136
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   137
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   138
// M2GGeneral::CheckHandle
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   139
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   140
TInt M2GGeneral::CheckHandle(JNIEnv* aEnv, TInt aHandle)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   141
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   142
    if (aHandle == M2G_INVALID_HANDLE)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   143
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   144
        M2GGeneral::RaiseException(aEnv, KJavaNullPointerException);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   145
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   146
    if (aHandle < 0)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   147
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   148
        M2GGeneral::CheckErrorCode(aEnv, aHandle);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   149
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   150
    return aHandle;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   151
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   152
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   153
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   154
// M2GGeneral::CheckErrorCodeAndHandle
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   155
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   156
TInt M2GGeneral::CheckErrorCodeAndHandle(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   157
    JNIEnv* aEnv, TInt aErrorCode, TInt aHandle, TInt aErrorResult)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   158
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   159
    if ((aErrorCode == KM2GOk) && (aHandle != M2G_INVALID_HANDLE))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   160
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   161
        return aHandle;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   162
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   163
    if (aErrorCode != KM2GOk)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   164
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   165
        M2GGeneral::CheckErrorCode(aEnv, aErrorCode);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   166
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   167
    else if (aHandle == M2G_INVALID_HANDLE)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   168
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   169
        M2GGeneral::RaiseException(aEnv, KJavaOutOfMemoryErrorClass);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   170
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   171
    return aErrorResult;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   172
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   173
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   174
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   175
// M2GGeneral::PopupInfo
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   176
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   177
#ifdef M2G_INFO_POPUP
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   178
void M2GGeneral::PopupInfo(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   179
    const TDesC& aLine1,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   180
    const TDesC& aLine2)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   181
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   182
    TInt err = KM2GOk;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   183
    TRAP(err, CEikonEnv::InfoWinL(aLine1, aLine2));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   184
    if (err == KM2GOk)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   185
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   186
        // DUMMY
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   187
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   188
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   189
#endif // M2G_INFO_POPUP
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   190
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   191
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   192
#ifdef M2G_STATISTIC_DEBUG
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   193
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   194
// M2GGeneral::TM2GStatistic::TM2GStatistic
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   195
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   196
M2GGeneral::TM2GStatistic::TM2GStatistic()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   197
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   198
    Reset();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   199
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   200
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   201
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   202
// M2GGeneral::TM2GStatistic::Reset()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   203
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   204
void M2GGeneral::TM2GStatistic::Reset()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   205
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   206
    // Time
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   207
    iStartTime.UniversalTime();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   208
    iEndTime.UniversalTime();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   209
    // Thread
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   210
    iId = RThread().Id();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   211
    RThread thread;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   212
    if (thread.Open(iId) == KM2GOk)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   213
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   214
        iThreadName = thread.Name();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   215
        thread.Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   216
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   217
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   218
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   219
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   220
// M2GGeneral::TM2GStatistic::Print()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   221
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   222
void M2GGeneral::TM2GStatistic::Print(TBool aPrintElapsedTime)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   223
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   224
    TInt totalRom = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   225
    TInt totalRam = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   226
    TInt freeRam = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   227
    HAL::Get(HALData::EMemoryROM, totalRom);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   228
    HAL::Get(HALData::EMemoryRAM, totalRam);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   229
    HAL::Get(HALData::EMemoryRAMFree, freeRam);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   230
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   231
    // Update time
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   232
    iEndTime.UniversalTime();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   233
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   234
    M2G_DEBUG_0("====================================================");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   235
    // Write memory info
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   236
    if (aPrintElapsedTime)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   237
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   238
        M2G_DEBUG_5(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   239
            "Rom size:%d, ram size:%d, ram free:%d, ram used:%d, elapsed time:%d",
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   240
            totalRom >> 10,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   241
            totalRam >> 10,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   242
            freeRam >> 10,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   243
            (totalRam - freeRam) >> 10,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   244
            iEndTime.MicroSecondsFrom(iStartTime).Int64());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   245
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   246
    else
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   247
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   248
        M2G_DEBUG_4(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   249
            "Rom size:%d, ram size:%d, ram free:%d, ram used:%d",
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   250
            totalRom >> 10,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   251
            totalRam >> 10,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   252
            freeRam >> 10,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   253
            (totalRam - freeRam) >> 10);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   254
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   255
    // Write thread info
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   256
    RThread thread;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   257
    if (thread.Open(iId) == KM2GOk)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   258
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   259
        TThreadStackInfo stackInfo;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   260
        thread.StackInfo(stackInfo);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   261
        thread.Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   262
        TUint id = iId;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   263
        M2G_DEBUG_2("Thread id:%d, size:%d", id, (stackInfo.iBase - stackInfo.iLimit) >> 10);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   264
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   265
    M2G_DEBUG_0("====================================================");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   266
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   267
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   268
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   269
// M2GGeneral::TM2GStatistic::Print()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   270
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   271
void M2GGeneral::TM2GStatistic::Print(RWriteStream& /*aStream*/)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   272
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   273
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   274
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   275
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   276
// M2GGeneral::TM2GStatistic::Log()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   277
// -----------------------------------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   278
void M2GGeneral::TM2GStatistic::Log()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   279
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   280
    M2G_DEBUG_0("M2GGeneral::TM2GStatistic::Log()");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   281
    M2GGeneral::TM2GStatistic statistic;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   282
    statistic.Print();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   283
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   284
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   285
#endif // M2G_STATISTIC_DEBUG
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   286
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   287
M2G_NS_END