|
1 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of the License "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // |
|
15 |
|
16 /** |
|
17 @file |
|
18 @internalTechnology |
|
19 */ |
|
20 |
|
21 #ifndef TSCSIPRIMARYCMDS_H |
|
22 #define TSCSIPRIMARYCMDS_H |
|
23 |
|
24 |
|
25 /** |
|
26 Encodes SCSI INQUIRY REQUEST |
|
27 Ref SPC-2 7.3.1 |
|
28 Ref SPC-3 6.4 |
|
29 */ |
|
30 class TScsiClientInquiryReq: public TScsiClientReq |
|
31 { |
|
32 public: |
|
33 /** Length of INQUIRY response */ |
|
34 static const TUint KResponseLength = 36; |
|
35 |
|
36 TScsiClientInquiryReq(); |
|
37 TInt EncodeRequestL(TDes8& aBuffer) const; |
|
38 |
|
39 void SetEvpd(TUint8 aPageCode); |
|
40 void SetCmdDt(TUint8 aOperationCode); |
|
41 void SetAllocationLength(TAllocationLength aAllocationLength); |
|
42 |
|
43 public: |
|
44 /** SCSI CmdDt field */ |
|
45 TBool iCmdDt; |
|
46 /** SCSI EVPD field */ |
|
47 TBool iEvpd; |
|
48 /** SCSI PAGE field */ |
|
49 TUint8 iPage; |
|
50 /** SCSI ALLOCATION LENGTH */ |
|
51 TAllocationLength iAllocationLength; |
|
52 }; |
|
53 |
|
54 |
|
55 /** |
|
56 Represents the SCSI INQUIRY RESPONSE PRODUCT IDENTIFICATION information |
|
57 */ |
|
58 class TMassStorageConfig |
|
59 { |
|
60 public: |
|
61 /** SCSI VENDOR ID field */ |
|
62 TBuf<8> iVendorId; |
|
63 /** SCSI PRODUCT ID field */ |
|
64 TBuf<16> iProductId; |
|
65 /** SCSI PRODUCT REVISION field */ |
|
66 TBuf<4> iProductRev; |
|
67 }; |
|
68 |
|
69 /** |
|
70 Represents the SCSI INQUIRY RESPONSE PERIPHERAL device information |
|
71 */ |
|
72 class TPeripheralInfo |
|
73 { |
|
74 public: |
|
75 /** Medium removable flag */ |
|
76 TBool iRemovable; |
|
77 |
|
78 /** SCSI PERIPHERAL QUALIFIER */ |
|
79 TUint8 iPeripheralQualifier; |
|
80 /** SCSI PERIPHEREAL DEVICE TYPE */ |
|
81 TUint8 iPeripheralDeviceType; |
|
82 /** SCSI RESPONSE DATA FORMAT */ |
|
83 TUint8 iResponseDataFormat; |
|
84 /** SCSI VERSION */ |
|
85 TUint8 iVersion; |
|
86 /** Device product information (vendor id, product id, revision) */ |
|
87 TMassStorageConfig iIdentification; |
|
88 }; |
|
89 |
|
90 /** |
|
91 Decodes SCSI INQUIRY REQUEST |
|
92 */ |
|
93 class TScsiClientInquiryResp: public TScsiClientResp |
|
94 { |
|
95 public: |
|
96 /** Length of INQUIRY response */ |
|
97 static const TInt KResponseLength = 36; |
|
98 TScsiClientInquiryResp(TPeripheralInfo& aPeripheralInfo); |
|
99 |
|
100 TInt DataLength() const {return KResponseLength;} |
|
101 void DecodeL(const TDesC8& aPtr); |
|
102 |
|
103 private: |
|
104 void DecodeInquiry(const TDesC8& aPtr); |
|
105 |
|
106 public: |
|
107 /** Device peripheral info fields */ |
|
108 TPeripheralInfo& iPeripheralInfo; |
|
109 }; |
|
110 |
|
111 /** |
|
112 Data type for PREVENT field |
|
113 SPC-2, 7.12 Table 78 |
|
114 SPC-3, 6.13 Table 119 |
|
115 */ |
|
116 typedef TBool TPrevent; |
|
117 |
|
118 /** |
|
119 Encodes SCSI PREVENT MEDIA REMOVAL REQUEST |
|
120 SPC-2 7.12 |
|
121 SPC-3 6.13 |
|
122 */ |
|
123 class TScsiClientPreventMediaRemovalReq: public TScsiClientReq |
|
124 { |
|
125 public: |
|
126 TScsiClientPreventMediaRemovalReq(TPrevent aPrevent); |
|
127 TInt EncodeRequestL(TDes8& aBuffer) const; |
|
128 |
|
129 private: |
|
130 TPrevent iPrevent; |
|
131 }; |
|
132 |
|
133 |
|
134 /** |
|
135 Encodes SCSI REQUEST SENSE REQUEST |
|
136 */ |
|
137 class TScsiClientRequestSenseReq: public TScsiClientReq |
|
138 { |
|
139 public: |
|
140 /** Length of REQUEST SENSE request */ |
|
141 static const TUint KResponseLength = 18; |
|
142 TScsiClientRequestSenseReq(); |
|
143 TInt EncodeRequestL(TDes8& aBuffer) const; |
|
144 |
|
145 private: |
|
146 void SetAllocationLength(TAllocationLength aAllocationLength); |
|
147 |
|
148 public: |
|
149 /** SCSI ALLOCATION LENGTH field */ |
|
150 TAllocationLength iAllocationLength; |
|
151 }; |
|
152 |
|
153 |
|
154 /** |
|
155 Decodes SCSI SENSE RESPONSE |
|
156 */ |
|
157 class TScsiClientRequestSenseResp: public TScsiClientResp |
|
158 { |
|
159 public: |
|
160 /** SCSI Response Code, SBC-3 4.5 */ |
|
161 enum TResponseCode |
|
162 { |
|
163 ECurrentErrors = 0x70, |
|
164 EDeferredErrors = 0x71 |
|
165 }; |
|
166 |
|
167 /** Length of the REQUEST SENSE response */ |
|
168 static const TInt KResponseLength = 18; |
|
169 /** Constructor */ |
|
170 TScsiClientRequestSenseResp() {}; |
|
171 |
|
172 TInt DataLength() const {return KResponseLength;} |
|
173 void DecodeL(const TDesC8& aPtr); |
|
174 |
|
175 private: |
|
176 void DecodeSenseInfo(const TDesC8& aPtr); |
|
177 |
|
178 public: |
|
179 /** Returned SCSI RESPONSE CODE */ |
|
180 TResponseCode iResponseCode; |
|
181 /** Returned SCSI Sense Info */ |
|
182 TSenseInfo iSenseInfo; |
|
183 /** Returned SCSI ADDITIONAL SENSE LENGTH */ |
|
184 TUint iAdditionalSenseLength; |
|
185 }; |
|
186 |
|
187 |
|
188 /** |
|
189 Encodes SCSI TEST UNIT READY REQUEST |
|
190 Ref SPC-2 7.25 |
|
191 Ref SPC-3 6.33 |
|
192 */ |
|
193 class TScsiClientTestUnitReadyReq: public TScsiClientReq |
|
194 { |
|
195 public: |
|
196 TScsiClientTestUnitReadyReq(); |
|
197 TInt EncodeRequestL(TDes8& aBuffer) const; |
|
198 }; |
|
199 |
|
200 |
|
201 #include "tscsiprimarycmds.inl" |
|
202 |
|
203 #endif // TSCSIPRIMARYCMDS_H |