userlibandfileserver/fileserver/smassstorage/inc/scsiprot.h
author hgs
Mon, 11 Oct 2010 17:54:41 +0100
changeset 286 48e57fb1237e
parent 90 947f0dc9f7a8
permissions -rw-r--r--
201039_11
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
     1
// Copyright (c) 2004-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
// SCSI Protocol layer for USB Mass Storage
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    15
//
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    16
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    17
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    18
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    19
 @file
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    20
 @internalTechnology
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    21
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    22
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    23
#ifndef __SCSIPROT_H__
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    24
#define __SCSIPROT_H__
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
// Header files
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    28
#include "drivemanager.h"
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    29
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    30
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    31
// Define MSDC_MULTITHREADED to use Mass Storage multi-threaded (Double-buffering) disk read/writes.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    32
// smassstorage_db.mmp defines this macro.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    33
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    34
#if defined MSDC_MULTITHREADED
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    35
class CWriteDriveThread;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    36
class CReadDriveThread;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    37
#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    38
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    39
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    40
// Display time taken to write data to disk
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    41
//#define MEASURE_AND_DISPLAY_WRITE_TIME
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    42
// Display time taken to read data from disk
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    43
//#define MEASURE_AND_DISPLAY_READ_TIME
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    44
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
// Maximum size for SCSI Read10 Write10 and Verify10 commands
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    47
// Windows requests size of 64K whereas MAC requests size of 128K
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    48
static const TUint32 KMaxBufSize = 128 * 1024;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    49
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    50
// Write to media when data is available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    51
static const TUint32 KDefaultMediaWriteSize = 4 * 1024;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    52
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    53
// Use in the HS case a write size of 64KB
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    54
static const TUint32 KHsMediaWriteSize = 64 * 1024;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    55
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    56
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    57
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    58
Sense Info
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    59
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    60
class TSenseInfo
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    61
    {
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    62
public:
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    63
    // Spec: SCSI Primary Commands 3 (SPC-3)
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    64
    // Section 4.5.6 Sense key and sense code defintions
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    65
    // Table 27 - Sense key descriptions
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    66
    enum TSenseCode
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    67
        {
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    68
        ENoSense        = 0,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    69
        ERecoveredError = 1,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    70
        ENotReady       = 2,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    71
        EMediumError    = 3,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    72
        EHardwareError  = 4,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    73
        EIllegalRequest = 5,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    74
        EUnitAttention  = 6,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    75
        EDataProtection = 7,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    76
        EBlankCheck     = 8,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    77
        EVendorSpecific = 9,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    78
        ECopyAborted    = 10,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    79
        EAbortedCommand = 11,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    80
        EDataOverflow   = 13,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    81
        EMisCompare     = 14
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    82
        };
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    83
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    84
    // Table 28 - ASC and ASQ assignments
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    85
    enum TAdditionalCode
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    86
        {
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    87
        EAscNull                                 = 0x00,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    88
        EAscLogicalUnitNotReady                  = 0x04,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    89
        EAscLogicalUnitDoesNotRespondToSelection = 0x05,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    90
        EInvalidCmdCode                          = 0x20,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    91
        ELbaOutOfRange                           = 0x21,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    92
        EInvalidFieldInCdb                       = 0x24,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    93
        ELuNotSupported                          = 0x25,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    94
        EWriteProtected                          = 0x27,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    95
        ENotReadyToReadyChange                   = 0x28,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    96
        EMediaNotPresent                         = 0x3A,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    97
        EInsufficientRes                         = 0x55
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
    98
        };
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    99
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   100
    enum TAdditionalSenseCodeQualifier
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   101
        {
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   102
        EAscqNull                                  = 0x00,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   103
        EAscqLogicalUnitIsInProcessOfBecomingReady = 0x01
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   104
        };
0
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
public:
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   107
    TSenseInfo();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   108
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   109
    void SetSense(TSenseCode aSenseCode);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   110
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   111
    void SetSense(TSenseCode aSenseCode,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   112
                  TAdditionalCode aAdditional);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   113
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   114
    void SetSense(TSenseCode aSenseCode,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   115
                  TAdditionalCode aAdditional,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   116
                  TAdditionalSenseCodeQualifier aQualifier);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   117
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   118
    TBool SenseOk();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   119
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   120
public:
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   121
    TUint8 iSenseCode;
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   122
    TUint8 iAdditional;
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   123
    TUint8 iQualifier;
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   124
    };
0
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
/**
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   128
Returns EFalse if a sense code has been set.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   129
Note that ENoSense indicates that there is no specific sense key infotmation
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   130
to be reported and the command was successful.
0
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
inline TBool TSenseInfo::SenseOk()
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   133
    {
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   134
    return (iSenseCode == ENoSense);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   135
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   136
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   137
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   138
const TUint KModeSense6CommandLength = 4;
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   139
const TUint KModeSense10CommandLength = 8;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   140
const TUint KReadCapacityCommandLength = 8;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   141
const TUint KReadFormatCapacitiesCommandLength = 12;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   142
const TUint KRequestSenseCommandLength = 18;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   143
const TUint KInquiryCommandLength = 36;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   144
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   145
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   146
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   147
The CScsiProtocol is responsible for interpreting the data received from the Transpor layer
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   148
and where appropriate routing specific requests through to the appropriate drive unit.
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
@internalTechnology
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   151
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   152
class CScsiProtocol : public CBase, public MProtocolBase
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   153
    {
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   154
public:
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   155
    enum TCommand
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   156
    {
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   157
    ETestUnitReady          = 0x00,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   158
    ERequestSense           = 0x03,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   159
    EInquiry                = 0x12,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   160
    EModeSense6             = 0x1A,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   161
    EStartStopUnit          = 0x1B,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   162
    EPreventMediaRemoval    = 0x1E,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   163
    EReadFormatCapacities   = 0x23,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   164
    EReadCapacity           = 0x25,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   165
    ERead10                 = 0x28,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   166
    EWrite10                = 0x2A,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   167
    EVerify10               = 0x2f,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   168
    EModeSense10            = 0x5A,
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   169
    EUndefinedCommand       = 0xFF
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   170
    };
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   171
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   172
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   173
public:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   174
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   175
    static CScsiProtocol* NewL(CDriveManager& aDriveManager);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   176
    void RegisterTransport(MTransportBase* aTransport);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   177
    void ReportHighSpeedDevice();
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   178
    TBool DecodePacket(TPtrC8& aData, TUint aLun);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   179
    TInt ReadComplete(TInt aError);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   180
    TInt SetScsiParameters(TMassStorageConfig aConfig);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   181
    TInt Cancel();
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   182
    ~CScsiProtocol();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   183
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   184
#ifdef MSDC_MULTITHREADED
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   185
    void InitializeBufferPointers(TPtr8& aDes1, TPtr8& aDes2);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   186
    static void ProcessWriteComplete (TUint8* aAddress, TAny* aPtr); //todo const
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   187
#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   188
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   189
private:
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   190
    CScsiProtocol(CDriveManager& aDriveManager);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   191
    void  ConstructL();
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   192
    CMassStorageDrive* GetCheckDrive(TUint aLun);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   193
    TBool HandleUnitReady(TUint aLun);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   194
    TBool HandleRequestSense(TPtrC8& aData);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   195
    TBool HandleInquiry(TPtrC8& aData, TUint aLun);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   196
    TBool HandleStartStopUnit(TPtrC8& aData, TUint aLun);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   197
    TBool HandlePreventMediaRemoval(TPtrC8& aData, TUint aLun);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   198
    TBool HandleReadCapacity(TPtrC8& aData, TUint aLun);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   199
    TBool HandleRead10(TPtrC8& aData, TUint aLun);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   200
    TBool HandleWrite10(TPtrC8& aData, TUint aLun);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   201
    TBool HandleVerify10(TPtrC8& aData, TUint aLun);
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   202
    TBool HandleModeSense6(TPtrC8& aData, TUint aLun);
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   203
    TBool HandleModeSense10(TPtrC8& aData, TUint aLun);
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   204
    TBool HandleReadFormatCapacities(TUint aLun);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   205
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   206
private:
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   207
    /** Configuration data for INQUIRY command*/
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   208
    TMassStorageConfig iConfig;
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   209
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   210
    /** reference to the Drive Manager */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   211
    CDriveManager& iDriveManager;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   212
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   213
    /** pointer to the transport level */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   214
    MTransportBase* iTransport;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   215
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   216
    /** Sense Info */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   217
    TSenseInfo iSenseInfo;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   218
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   219
#ifdef MSDC_MULTITHREADED
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   220
    /** Sense Info */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   221
    TSenseInfo iDeferredSenseInfo;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   222
#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   223
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   224
    /** Start offset (in bytes) for Write/Verify */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   225
    TInt64 iOffset;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   226
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   227
    /** Last command for SetupRead (Write or Verify) */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   228
    TUint8 iLastCommand;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   229
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   230
    /** LUN for SetupRead */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   231
    TUint iLastLun;
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
#ifdef SIMDISK
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   234
    CArrayFixFlat<TUint8>* iSimDisk;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   235
#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   236
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   237
    /** The number of bytes remaining to be read from the host for write operations */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   238
    TUint32 iBytesRemain;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   239
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   240
    /** Write to the media when this amount of data is available */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   241
    TUint32 iMediaWriteSize;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   242
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   243
#ifdef MSDC_MULTITHREADED
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   244
    /** Ptr to Write Thread instance */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   245
    CWriteDriveThread* iWriteDriveThread;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   246
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   247
    /** Ptr to Read Thread instance */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   248
    CReadDriveThread* iReadDriveThread;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   249
#endif // MSDC_MULTITHREADED
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
#ifdef USB_TRANSFER_PUBLISHER
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   252
    /**
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   253
    Publish and subscribe properties for tracking data transfer volume
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   254
    */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   255
    CUsbWriteTransferPublisher* iWriteTransferPublisher;
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   256
    CUsbReadTransferPublisher* iReadTransferPublisher;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   257
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   258
    /**
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   259
    Cumulative bytes read
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   260
    */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   261
    TFixedArray<TInt64, KUsbMsMaxDrives> iBytesRead;
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   262
    /**
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   263
    Cumulative bytes written
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   264
    */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   265
    TFixedArray<TInt64, KUsbMsMaxDrives> iBytesWritten;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   266
#else
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   267
    /**
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   268
    Publish and subscribe properties for tracking data transfer volume
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   269
    */
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   270
    CDriveWriteTransferPublisher* iWriteTransferPublisher;
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   271
    CDriveReadTransferPublisher* iReadTransferPublisher;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   272
#endif
286
48e57fb1237e 201039_11
hgs
parents: 90
diff changeset
   273
    };
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   274
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   275
#endif // __SCSIPROT_H__