kerneltest/f32test/shostmassstorage/testclient/usbtestmsclient/drivepublisher.cpp
author hgs
Tue, 26 Oct 2010 12:49:20 +0100
changeset 297 b2826f67641f
parent 0 a41df078684a
permissions -rw-r--r--
201043_03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
     1
// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     2
// All rights reserved.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     3
// This component and the accompanying materials are made available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     4
// under the terms of the License "Eclipse Public License v1.0"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     5
// which accompanies this distribution, and is available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     7
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     8
// Initial Contributors:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    10
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    11
// Contributors:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    12
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    13
// Description:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    14
// Class implementation of the drive publishing classes -
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    15
// RDriveMediaErrorPublisher,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    16
// RDriveStateChangedPublisher,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    17
// CDriveTransferPublisher,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    18
// CDriveWriteTransferPublisher,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    19
// CDriveReadTransferPublisher,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    20
// CUsbTransferPublisher,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    21
// CUsbReadTransferPublisher,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    22
// CUsbReadTransferPublisher.
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    23
//
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    24
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    25
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    26
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    27
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    28
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    29
 @file
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    30
 @internalTechnology
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    31
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    32
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    33
#include <e32std.h>
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    34
#include <e32base.h>
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    35
#include <e32property.h>
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    36
#include <f32file.h>
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    37
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    38
#include "mstypes.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    39
#include "msctypes.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    40
#include "usbmsshared.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    41
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    42
#include "drivepublisher.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    43
#include "drivemanager.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    44
#include "debug.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    45
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    46
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    47
// Use Lookup table to translate from the internal pair of state variables
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    48
// to the externally published drive state code.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    49
//
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    50
LOCAL_D const TUint8 table[][5] =
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    51
{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    52
//TMountState=EDisconnected
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    53
    {EUsbMsDriveState_Disconnected,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    54
     EUsbMsDriveState_Disconnected,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    55
     EUsbMsDriveState_Disconnected,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    56
     EUsbMsDriveState_Disconnected,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    57
     EUsbMsDriveState_Disconnected},
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    58
//TMountState=EConnecting
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    59
    {EUsbMsDriveState_Connecting,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    60
     EUsbMsDriveState_Connecting,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    61
     EUsbMsDriveState_Connecting,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    62
     EUsbMsDriveState_Connecting,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    63
     EUsbMsDriveState_Connecting},
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    64
//TMountState=EConnected
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    65
    //EIdle,EActive,ELocked,EMediaNotPresent,EErrDisMounted
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    66
    {EUsbMsDriveState_Connected,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    67
     EUsbMsDriveState_Active,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    68
     EUsbMsDriveState_Locked,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    69
     EUsbMsDriveState_MediaNotPresent,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    70
     EUsbMsDriveState_Removed},
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    71
//TMountState=EDisconnecting
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    72
    {EUsbMsDriveState_Disconnecting,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    73
     EUsbMsDriveState_Disconnecting,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    74
     EUsbMsDriveState_Disconnecting,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    75
     EUsbMsDriveState_Disconnecting,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    76
     EUsbMsDriveState_Disconnecting}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    77
};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    78
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    79
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    80
//----------------------------------------------------------------------------
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    81
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    82
Constructor
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    83
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    84
RDriveMediaErrorPublisher::RDriveMediaErrorPublisher()
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    85
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    86
    _LIT_SECURITY_POLICY_PASS(KMassStorageReadPolicy);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    87
    _LIT_SECURITY_POLICY_S0(KMassStorageWritePolicy, KUsbMsDriveState_Category.iUid);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    88
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    89
    TInt result = RProperty::Define(EUsbMsDriveState_MediaError, RProperty::EInt,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    90
                                    KMassStorageReadPolicy, KMassStorageWritePolicy);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    91
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    92
    __ASSERT_DEBUG(result == KErrAlreadyExists || result == KErrNone, User::Invariant());
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    93
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    94
    result = iMediaErrorProperty.Attach(KUsbMsDriveState_Category, EUsbMsDriveState_MediaError);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    95
    __ASSERT_DEBUG(result == KErrNone, User::Invariant());
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
    96
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    97
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    98
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    99
RDriveMediaErrorPublisher::~RDriveMediaErrorPublisher()
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   100
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   101
    iMediaErrorProperty.Close();
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   102
    RProperty::Delete(KUsbMsDriveState_Category, EUsbMsDriveState_MediaError);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   103
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   104
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   105
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   106
Publishing method
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   107
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   108
Publishes the Media Error property event
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   109
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   110
@param aError ETrue if drive media has an error else EFalse for no error
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   111
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   112
void RDriveMediaErrorPublisher::PublishErrorL(TBool aError)
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   113
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   114
    __PRINT1(_L("<< RDriveMediaErrorPublisher::PublishError %x"), aError);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   115
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   116
    TInt oldValue;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   117
    iMediaErrorProperty.Get(oldValue);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   118
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   119
    if (oldValue != aError)
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   120
        {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   121
        User::LeaveIfError(iMediaErrorProperty.Set(aError));
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   122
        }
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   123
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   124
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   125
//----------------------------------------------------------------------------
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   126
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   127
Constructor
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   128
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   129
@param aDrives
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   130
@param aDriveMap
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   131
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   132
RDriveStateChangedPublisher::RDriveStateChangedPublisher(const TMsDriveList& aDrives,
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   133
                                                         const TLunToDriveMap& aDriveMap)
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   134
    :
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   135
    iDrives(aDrives),
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   136
    iDriveMap(aDriveMap)
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   137
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   138
    _LIT_SECURITY_POLICY_PASS(KMassStorageReadPolicy);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   139
    _LIT_SECURITY_POLICY_S0(KMassStorageWritePolicy, KUsbMsDriveState_Category.iUid);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   140
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   141
    TInt result = RProperty::Define(KUsbMsDriveState_Category,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   142
                                    EUsbMsDriveState_DriveStatus, RProperty::EByteArray,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   143
                                    KMassStorageReadPolicy, KMassStorageWritePolicy,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   144
                                    KUsbMsMaxDrives*2);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   145
    __ASSERT_DEBUG(result == KErrAlreadyExists || result == KErrNone, User::Invariant());
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   146
    result = result;    // remove urel warning
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   147
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   148
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   149
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   150
RDriveStateChangedPublisher::~RDriveStateChangedPublisher()
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   151
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   152
    RProperty::Delete(KUsbMsDriveState_Category, EUsbMsDriveState_DriveStatus);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   153
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   154
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   155
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   156
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   157
Publishing method
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   158
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   159
Sends a property event on behalf of CMassStorageDrive, with the mountstate and drivestate
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   160
values encoded into one 32-bit word.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   161
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   162
void RDriveStateChangedPublisher::DriveStateChanged()
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   163
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   164
    TUsbMsDrivesStatus allDrivesStatus;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   165
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   166
    for(TUint8 i = 0; i < iDrives.Count(); i++)
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   167
        {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   168
        allDrivesStatus.Append(iDriveMap[i]);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   169
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   170
        CMassStorageDrive::TMountState ms = iDrives[i]->MountState();
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   171
        TLocalDriveRef::TDriveState ds = iDrives[i]->DriveState();
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   172
        TInt driveStatus = EUsbMsDriveState_Error;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   173
        if((TUint8)ds < sizeof(table[0]) && (TUint8)ms < sizeof(table)/sizeof(table[0]))
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   174
            {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   175
            driveStatus = table[ms][ds];
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   176
            __PRINT3(_L("ms=%d ds=%d %d"), ms, ds, driveStatus);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   177
            }
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   178
        allDrivesStatus.Append(driveStatus);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   179
        }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   180
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   181
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   182
    __PRINT1(_L("Publishing EUsbMsDriveState_DriveStatus for %d drives\n"),
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   183
                allDrivesStatus.Length()/2);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   184
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   185
    if(KErrNone != RProperty::Set(KUsbMsDriveState_Category,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   186
                                  EUsbMsDriveState_DriveStatus,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   187
                                  allDrivesStatus))
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   188
        {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   189
        __ASSERT_DEBUG(EFalse,User::Invariant());
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   190
        }
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   191
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   192
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   193
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   194
//----------------------------------------------------------------------------
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   195
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   196
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   197
Private default constructor to ensure that NewL is used
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   198
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   199
@param aSubKey
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   200
@param aArray
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   201
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   202
CUsbTransferPublisher::CUsbTransferPublisher(TUsbMsDriveState_Subkey aSubKey,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   203
                                             const TBytesTransferedList& aArray)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   204
:   iSubKey(aSubKey),
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   205
    iArray(aArray)
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   206
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   207
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   208
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   209
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   210
void CUsbTransferPublisher::ConstructL()
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   211
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   212
    _LIT_SECURITY_POLICY_PASS(KMassStorageReadPolicy);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   213
    _LIT_SECURITY_POLICY_S0(KMassStorageWritePolicy, KUsbMsDriveState_Category.iUid);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   214
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   215
    TInt r = RProperty::Define(iSubKey, RProperty::EByteArray,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   216
                               KMassStorageReadPolicy, KMassStorageWritePolicy,
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   217
                               KUsbMsMaxDrives*sizeof(TInt));
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   218
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   219
    if (r != KErrAlreadyExists)
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   220
        {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   221
        User::LeaveIfError(r);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   222
        }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   223
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   224
    // Attach to the properties here. Only do this once, continuously attaching
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   225
    // will currently cause a memory leak
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   226
    User::LeaveIfError(iProperty.Attach(KUsbMsDriveState_Category, iSubKey));
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   227
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   228
    // Create the EDataTransferred timer
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   229
    iTimer = CPeriodic::NewL(CActive::EPriorityStandard);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   230
    iTimerRunning = EFalse;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   231
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   232
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   233
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   234
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   235
Destructor
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   236
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   237
CUsbTransferPublisher::~CUsbTransferPublisher()
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   238
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   239
    if(iTimer)
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   240
        {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   241
        iTimer->Cancel();
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   242
        }
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   243
    delete iTimer;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   244
    iProperty.Close();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   245
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   246
    RProperty::Delete(KUsbMsDriveState_Category, iSubKey);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   247
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   248
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   249
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   250
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   251
A static wrapper for the DoPublishDataTransferredEvent member function
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   252
for use as a timer callback function.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   253
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   254
@param obj 'this' pointer
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   255
@return not used in CPeriodic callback (see TCallback)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   256
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   257
TInt CUsbTransferPublisher::PublishDataTransferredEvent(TAny* obj)
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   258
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   259
    static_cast<CUsbTransferPublisher*>(obj)->DoPublishDataTransferredEvent();
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   260
    return 1;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   261
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   262
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   263
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   264
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   265
Update the data transferred properties if the counts have changed since
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   266
the last update.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   267
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   268
void CUsbTransferPublisher::DoPublishDataTransferredEvent()
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   269
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   270
    if (PublishDataTransferred())
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   271
        {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   272
        // some data has been transfered so reset the counter
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   273
        iTimerCancelCnt = ETimerCancelDelay;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   274
        }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   275
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   276
    // Update the cancel count if no data was transferred the last
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   277
    // (few) times this has been called
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   278
    if (--iTimerCancelCnt == 0)
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   279
        {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   280
        StopTimer();
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   281
        iTimerCancelCnt = ETimerCancelDelay;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   282
        }
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   283
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   284
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   285
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   286
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   287
Update the data transferred properties if the counts have changed since
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   288
the last update.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   289
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   290
TBool CUsbTransferPublisher::PublishDataTransferred()
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   291
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   292
    TUsbMsBytesTransferred bytesTransferred;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   293
    TBool dataTransferred = EFalse;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   294
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   295
    for (TInt i = 0; i < iArray.Count(); i++)
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   296
        {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   297
        bytesTransferred[i] = GetBytesTransferred(i);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   298
        }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   299
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   300
    // Update the properties only if they have changed
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   301
    // (or if there's an error reading the old value.)
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   302
    // Possible optimisation: keep a copy of the value
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   303
    // as a member variable so we don't need the Get.
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   304
    TUsbMsBytesTransferred oldValue;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   305
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   306
    if ((iProperty.Get(oldValue) != KErrNone) || (oldValue != bytesTransferred))
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   307
        {
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   308
#ifdef __PRINT3
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   309
        // trace of the bytes transferred
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   310
        for (TInt j=0; j < iArray.Count(); j++)
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   311
            {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   312
            if(oldValue[j] != bytesTransferred[j])
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   313
                {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   314
                __PRINT3(_L("CDrivePublisher: KBytes[%d] %d->%d\n"), j, oldValue[j], bytesTransferred[j]);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   315
                }
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   316
            }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   317
#endif
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   318
        if (KErrNone != iProperty.Set(bytesTransferred))
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   319
            {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   320
            __ASSERT_DEBUG(EFalse, User::Invariant());
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   321
            }
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   322
        dataTransferred = ETrue;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   323
        }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   324
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   325
    return dataTransferred;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   326
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   327
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   328
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   329
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   330
Starts timer to periodically publish results.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   331
If the timer is not yet running then start it.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   332
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   333
void CUsbTransferPublisher::StartTimer()
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   334
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   335
    if (!iTimerRunning)
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   336
        {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   337
        // EDataTransferred event every second
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   338
        const TTimeIntervalMicroSeconds32 interval = 1 * 1000 * 1000;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   339
        TCallBack callback(PublishDataTransferredEvent, this);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   340
        __PRINT(_L("Starting timer"));
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   341
        iTimer->Start(interval, interval, callback);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   342
        iTimerRunning = ETrue;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   343
        }
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   344
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   345
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   346
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   347
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   348
Ensure that the Timer is stopped
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   349
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   350
void CUsbTransferPublisher::StopTimer()
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   351
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   352
    if (iTimerRunning)
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   353
        {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   354
        __PRINT(_L("Stopping timer"));
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   355
        iTimer->Cancel();
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   356
        iTimerRunning = EFalse;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   357
        }
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   358
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   359
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   360
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   361
//----------------------------------------------------------------------------
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   362
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   363
Constructor for Write property
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   364
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   365
@param aArray
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   366
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   367
CUsbWriteTransferPublisher* CUsbWriteTransferPublisher::NewL(const TBytesTransferedList& aArray)
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   368
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   369
    CUsbWriteTransferPublisher* self = new (ELeave) CUsbWriteTransferPublisher(aArray);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   370
    CleanupStack::PushL(self);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   371
    self->ConstructL();
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   372
    CleanupStack::Pop();
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   373
    return self;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   374
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   375
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   376
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   377
CUsbWriteTransferPublisher::CUsbWriteTransferPublisher(const TBytesTransferedList& aArray)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   378
:   CUsbTransferPublisher(EUsbMsDriveState_KBytesWritten, aArray)
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   379
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   380
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   381
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   382
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   383
//----------------------------------------------------------------------------
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   384
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   385
Constructor for Read property
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   386
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   387
@param aArray
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   388
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   389
CUsbReadTransferPublisher* CUsbReadTransferPublisher::NewL(const TBytesTransferedList& aArray)
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   390
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   391
    CUsbReadTransferPublisher* self = new (ELeave) CUsbReadTransferPublisher(aArray);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   392
    CleanupStack::PushL(self);
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   393
    self->ConstructL();
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   394
    CleanupStack::Pop();
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   395
    return self;
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   396
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   397
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   398
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   399
CUsbReadTransferPublisher::CUsbReadTransferPublisher(const TBytesTransferedList& aArray)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   400
:   CUsbTransferPublisher(EUsbMsDriveState_KBytesRead, aArray)
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   401
    {
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   402
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   403
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   404
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   405
Transfer function for the property
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   406
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   407
@return Cumulative bytes read since the host connected to the drive,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   408
        in multiples of KBytesPerKilobyte rounded to nearest integer value.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   409
        The KBytes refer to multiples of 1000, not 1024.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   410
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   411
TUint CUsbTransferPublisher::GetBytesTransferred(TLun aLun) const
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   412
{
297
b2826f67641f 201043_03
hgs
parents: 0
diff changeset
   413
    return I64LOW(iArray[aLun] / (TUint64)1000);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   414
}