equal
deleted
inserted
replaced
17 @file |
17 @file |
18 @internalTechnology |
18 @internalTechnology |
19 */ |
19 */ |
20 #include "cbulkonlytransport.h" |
20 #include "cbulkonlytransport.h" |
21 #include "cbulkonlytransportusbcldd.h" |
21 #include "cbulkonlytransportusbcldd.h" |
|
22 #if !defined(__WINS__) && !defined(__X86__) |
22 #include "cbulkonlytransportusbcscldd.h" |
23 #include "cbulkonlytransportusbcscldd.h" |
|
24 #endif |
23 #include "usbmsshared.h" |
25 #include "usbmsshared.h" |
24 #include "massstoragedebug.h" |
26 #include "massstoragedebug.h" |
25 #include "cusbmassstorageserver.h" |
27 #include "cusbmassstorageserver.h" |
26 |
28 |
27 |
29 |
50 @param aBuffer Input buffer |
52 @param aBuffer Input buffer |
51 @param aTarget Unpacked header. |
53 @param aTarget Unpacked header. |
52 @return Error. |
54 @return Error. |
53 */ |
55 */ |
54 TInt TUsbRequestHdr::Decode(const TDesC8& aBuffer) |
56 TInt TUsbRequestHdr::Decode(const TDesC8& aBuffer) |
55 |
|
56 { |
57 { |
57 if (aBuffer.Length() < static_cast<TInt>(KRequestHdrSize)) |
58 if (aBuffer.Length() < static_cast<TInt>(KRequestHdrSize)) |
58 { |
59 { |
59 __PRINT1(_L("TUsbRequestHdr::Decode buffer invalid length %d"), aBuffer.Length()); |
60 __PRINT1(_L("TUsbRequestHdr::Decode buffer invalid length %d"), aBuffer.Length()); |
60 return KErrGeneral; |
61 return KErrGeneral; |
111 if (aNumDrives <=0 || static_cast<TUint>(aNumDrives) > KUsbMsMaxDrives) |
112 if (aNumDrives <=0 || static_cast<TUint>(aNumDrives) > KUsbMsMaxDrives) |
112 { |
113 { |
113 User::Leave(KErrArgument); |
114 User::Leave(KErrArgument); |
114 } |
115 } |
115 |
116 |
|
117 #if !defined(__WINS__) && !defined(__X86__) |
116 CBulkOnlyTransportUsbcScLdd* scTransport; |
118 CBulkOnlyTransportUsbcScLdd* scTransport; |
|
119 #endif |
117 CBulkOnlyTransportUsbcLdd* nonscTransport; |
120 CBulkOnlyTransportUsbcLdd* nonscTransport; |
118 switch (aTransportLddFlag) |
121 switch (aTransportLddFlag) |
119 { |
122 { |
120 case 1: |
123 case 1: |
121 nonscTransport = new(ELeave) CBulkOnlyTransportUsbcLdd(aNumDrives, aController); |
124 nonscTransport = new(ELeave) CBulkOnlyTransportUsbcLdd(aNumDrives, aController); |
122 return nonscTransport; |
125 return nonscTransport; |
123 |
126 #if !defined(__WINS__) && !defined(__X86__) |
124 case 2: |
127 case 2: |
125 scTransport = new(ELeave) CBulkOnlyTransportUsbcScLdd(aNumDrives, aController); |
128 scTransport = new(ELeave) CBulkOnlyTransportUsbcScLdd(aNumDrives, aController); |
126 return scTransport; |
129 return scTransport; |
127 default: |
130 #endif |
128 return NULL; |
131 default: |
|
132 __ASSERT_DEBUG(EFalse, User::Panic(KUsbMsSvrPncCat, EMsCBulkOnlyTransportNull)); |
|
133 return NULL; |
129 |
134 |
130 } |
135 } |
131 } |
136 } |
132 |
137 |
133 |
138 |
137 TInt ret = KErrNone; |
142 TInt ret = KErrNone; |
138 MTransportBase* transport; |
143 MTransportBase* transport; |
139 iController.GetTransport(transport); |
144 iController.GetTransport(transport); |
140 switch (aTransportLddFlag) |
145 switch (aTransportLddFlag) |
141 { |
146 { |
|
147 #if !defined(__WINS__) && !defined(__X86__) |
142 case 2: |
148 case 2: |
143 ret = ((CBulkOnlyTransportUsbcScLdd*) transport)->Ldd().Open(0); |
149 ret = ((CBulkOnlyTransportUsbcScLdd*) transport)->Ldd().Open(0); |
144 if (ret != KErrNone) |
150 if (ret != KErrNone) |
145 { |
151 { |
146 return ret; |
152 return ret; |
151 CleanupStack::PushL(transport); |
157 CleanupStack::PushL(transport); |
152 ((CBulkOnlyTransportUsbcScLdd*) transport)->ConstructL(); |
158 ((CBulkOnlyTransportUsbcScLdd*) transport)->ConstructL(); |
153 CleanupStack::Pop(transport); |
159 CleanupStack::Pop(transport); |
154 return ret; |
160 return ret; |
155 } |
161 } |
|
162 #endif |
156 case 1: |
163 case 1: |
157 ret = ((CBulkOnlyTransportUsbcLdd*) transport)->Ldd().Open(0); |
164 ret = ((CBulkOnlyTransportUsbcLdd*) transport)->Ldd().Open(0); |
158 if (ret != KErrNone) |
165 if (ret != KErrNone) |
159 { |
166 { |
160 return ret; |
167 return ret; |
751 |
758 |
752 //check LUN |
759 //check LUN |
753 TInt8 lun = static_cast<TUint8>(iCbwBufPtr[KCbwLunOffset] & 0x0f); |
760 TInt8 lun = static_cast<TUint8>(iCbwBufPtr[KCbwLunOffset] & 0x0f); |
754 if (iMaxLun < lun) |
761 if (iMaxLun < lun) |
755 { |
762 { |
756 __PRINT1(_L("bad lun: %d"), lun); |
763 RDebug::Print(_L("bad lun: %d"), lun); |
757 return EFalse; |
764 return EFalse; |
758 } |
765 } |
759 |
766 |
760 return ETrue; |
767 return ETrue; |
761 } |
768 } |