55 _LIT(KTestCaseId,"PBASE-T_USBDI-0493"); |
59 _LIT(KTestCaseId,"PBASE-T_USBDI-0493"); |
56 const TFunctorTestCase<CUT_PBASE_T_USBDI_0493,TBool> CUT_PBASE_T_USBDI_0493::iFunctor(KTestCaseId); |
60 const TFunctorTestCase<CUT_PBASE_T_USBDI_0493,TBool> CUT_PBASE_T_USBDI_0493::iFunctor(KTestCaseId); |
57 |
61 |
58 CUT_PBASE_T_USBDI_0493* CUT_PBASE_T_USBDI_0493::NewL(TBool aHostRole) |
62 CUT_PBASE_T_USBDI_0493* CUT_PBASE_T_USBDI_0493::NewL(TBool aHostRole) |
59 { |
63 { |
|
64 OstTraceFunctionEntry1( CUT_PBASE_T_USBDI_0493_NEWL_ENTRY, aHostRole ); |
60 CUT_PBASE_T_USBDI_0493* self = new (ELeave) CUT_PBASE_T_USBDI_0493(aHostRole); |
65 CUT_PBASE_T_USBDI_0493* self = new (ELeave) CUT_PBASE_T_USBDI_0493(aHostRole); |
61 CleanupStack::PushL(self); |
66 CleanupStack::PushL(self); |
62 self->ConstructL(); |
67 self->ConstructL(); |
63 CleanupStack::Pop(self); |
68 CleanupStack::Pop(self); |
|
69 OstTraceFunctionExit1( CUT_PBASE_T_USBDI_0493_NEWL_EXIT, ( TUint )( self ) ); |
64 return self; |
70 return self; |
65 } |
71 } |
66 |
72 |
67 |
73 |
68 CUT_PBASE_T_USBDI_0493::CUT_PBASE_T_USBDI_0493(TBool aHostRole) |
74 CUT_PBASE_T_USBDI_0493::CUT_PBASE_T_USBDI_0493(TBool aHostRole) |
69 : CBaseBulkTestCase(KTestCaseId,aHostRole), |
75 : CBaseBulkTestCase(KTestCaseId,aHostRole), |
70 iNumTransferBytes(KStartNumTransferBytes), |
76 iNumTransferBytes(KStartNumTransferBytes), |
71 iCaseStep(EInProgress) |
77 iCaseStep(EInProgress) |
72 { |
78 { |
|
79 OstTraceFunctionEntryExt( CUT_PBASE_T_USBDI_0493_CUT_PBASE_T_USBDI_0493_ENTRY, this ); |
|
80 OstTraceFunctionExit1( CUT_PBASE_T_USBDI_0493_CUT_PBASE_T_USBDI_0493_EXIT, this ); |
73 } |
81 } |
74 |
82 |
75 |
83 |
76 void CUT_PBASE_T_USBDI_0493::ConstructL() |
84 void CUT_PBASE_T_USBDI_0493::ConstructL() |
77 { |
85 { |
|
86 OstTraceFunctionEntry1( CUT_PBASE_T_USBDI_0493_CONSTRUCTL_ENTRY, this ); |
78 BaseBulkConstructL(); |
87 BaseBulkConstructL(); |
|
88 OstTraceFunctionExit1( CUT_PBASE_T_USBDI_0493_CONSTRUCTL_EXIT, this ); |
79 } |
89 } |
80 |
90 |
81 |
91 |
82 CUT_PBASE_T_USBDI_0493::~CUT_PBASE_T_USBDI_0493() |
92 CUT_PBASE_T_USBDI_0493::~CUT_PBASE_T_USBDI_0493() |
83 { |
93 { |
84 LOG_FUNC |
94 OstTraceFunctionEntry1( CUT_PBASE_T_USBDI_0493_CUT_PBASE_T_USBDI_0493_ENTRY_DUP01, this ); |
|
95 OstTraceFunctionExit1( CUT_PBASE_T_USBDI_0493_CUT_PBASE_T_USBDI_0493_EXIT_DUP01, this ); |
85 } |
96 } |
86 |
97 |
87 void CUT_PBASE_T_USBDI_0493::Ep0TransferCompleteL(TInt aCompletionCode) |
98 void CUT_PBASE_T_USBDI_0493::Ep0TransferCompleteL(TInt aCompletionCode) |
88 { |
99 { |
89 LOG_FUNC |
100 OstTraceFunctionEntryExt( CUT_PBASE_T_USBDI_0493_EP0TRANSFERCOMPLETEL_ENTRY, this ); |
90 |
101 |
91 RDebug::Printf("Ep0TransferCompleteL with aCompletionCode = %d",aCompletionCode); |
102 OstTrace1(TRACE_NORMAL, CUT_PBASE_T_USBDI_0493_EP0TRANSFERCOMPLETEL, "Ep0TransferCompleteL with aCompletionCode = %d",aCompletionCode); |
92 |
103 |
93 if(aCompletionCode != KErrNone) |
104 if(aCompletionCode != KErrNone) |
94 { |
105 { |
95 if(iCaseStep == EFailed) |
106 if(iCaseStep == EFailed) |
96 {// todo, cope with errors |
107 {// todo, cope with errors |
97 } |
108 } |
98 else |
109 else |
99 { |
110 { |
100 TBuf<256> msg; |
111 TBuf<256> msg; |
101 msg.Format(_L("<Error %d> Transfer to control endpoint 0 was not successful"),aCompletionCode); |
112 msg.Format(_L("<Error %d> Transfer to control endpoint 0 was not successful"),aCompletionCode); |
102 RDebug::Print(msg); |
113 OstTrace0(TRACE_NORMAL, CUT_PBASE_T_USBDI_0493_EP0TRANSFERCOMPLETEL_DUP01, msg); |
103 iCaseStep = EFailed; |
114 iCaseStep = EFailed; |
104 TTestCaseFailed request(aCompletionCode,msg); |
115 TTestCaseFailed request(aCompletionCode,msg); |
105 iControlEp0->SendRequest(request,this); |
116 iControlEp0->SendRequest(request,this); |
|
117 OstTraceFunctionExit1( CUT_PBASE_T_USBDI_0493_EP0TRANSFERCOMPLETEL_EXIT, this ); |
106 return; |
118 return; |
107 } |
119 } |
108 } |
120 } |
109 |
121 |
110 switch(iCaseStep) |
122 switch(iCaseStep) |
118 case EFailed: |
130 case EFailed: |
119 TestFailed(KErrCompletion); |
131 TestFailed(KErrCompletion); |
120 break; |
132 break; |
121 |
133 |
122 case ETransferOut: |
134 case ETransferOut: |
123 RDebug::Printf("Try to send %d bytes of data", iNumTransferBytes); |
135 OstTrace1(TRACE_NORMAL, CUT_PBASE_T_USBDI_0493_EP0TRANSFERCOMPLETEL_DUP02, "Try to send %d bytes of data", iNumTransferBytes); |
124 RDebug::RawPrint(KLiteralEnglish8().Mid(0*KHostNumWriteBytes, KHostNumWriteBytes)); |
136 { |
|
137 const TPtrC8& midKLiteralEnglish = KLiteralEnglish8().Mid(0*KHostNumWriteBytes, KHostNumWriteBytes); |
|
138 OstTraceData(TRACE_NORMAL, CUT_PBASE_T_USBDI_0493_EP0TRANSFERCOMPLETEL_DUP52, "", midKLiteralEnglish.Ptr(), midKLiteralEnglish.Length()); |
|
139 } |
125 iOutTransfer[0]->TransferOut(KLiteralEnglish8().Mid(0*KHostNumWriteBytes, KHostNumWriteBytes), EFalse); |
140 iOutTransfer[0]->TransferOut(KLiteralEnglish8().Mid(0*KHostNumWriteBytes, KHostNumWriteBytes), EFalse); |
126 iOutTransfer[1]->TransferOut(KLiteralEnglish8().Mid(1*KHostNumWriteBytes, KHostNumWriteBytes), EFalse); |
141 iOutTransfer[1]->TransferOut(KLiteralEnglish8().Mid(1*KHostNumWriteBytes, KHostNumWriteBytes), EFalse); |
127 iOutTransfer[2]->TransferOut(KLiteralEnglish8().Mid(2*KHostNumWriteBytes, KHostNumWriteBytes), EFalse); |
142 iOutTransfer[2]->TransferOut(KLiteralEnglish8().Mid(2*KHostNumWriteBytes, KHostNumWriteBytes), EFalse); |
128 iOutTransfer[3]->TransferOut(KLiteralEnglish8().Mid(3*KHostNumWriteBytes, iNumTransferBytes - 3*KHostNumWriteBytes), ETrue); |
143 iOutTransfer[3]->TransferOut(KLiteralEnglish8().Mid(3*KHostNumWriteBytes, iNumTransferBytes - 3*KHostNumWriteBytes), ETrue); |
129 break; |
144 break; |
130 |
145 |
131 case ETransferIn: |
146 case ETransferIn: |
132 RDebug::Printf("Try to receive max %d bytes of data", 3*KHostNumReadBytes + KHostFinalNumReadBytes); |
147 OstTrace1(TRACE_NORMAL, CUT_PBASE_T_USBDI_0493_EP0TRANSFERCOMPLETEL_DUP03, "Try to receive max %d bytes of data", 3*KHostNumReadBytes + KHostFinalNumReadBytes); |
133 iInTransfer[0]->TransferIn(KHostNumReadBytes); |
148 iInTransfer[0]->TransferIn(KHostNumReadBytes); |
134 iInTransfer[1]->TransferIn(KHostNumReadBytes); |
149 iInTransfer[1]->TransferIn(KHostNumReadBytes); |
135 iInTransfer[2]->TransferIn(KHostNumReadBytes); |
150 iInTransfer[2]->TransferIn(KHostNumReadBytes); |
136 iInTransfer[3]->TransferIn(KHostFinalNumReadBytes); |
151 iInTransfer[3]->TransferIn(KHostFinalNumReadBytes); |
137 break; |
152 break; |
138 |
153 |
139 default: |
154 default: |
140 RDebug::Printf("<Error> Unknown test step"); |
155 OstTrace0(TRACE_NORMAL, CUT_PBASE_T_USBDI_0493_EP0TRANSFERCOMPLETEL_DUP04, "<Error> Unknown test step"); |
141 TestFailed(KErrUnknown); |
156 TestFailed(KErrUnknown); |
142 break; |
157 break; |
143 } |
158 } |
|
159 OstTraceFunctionExit1( CUT_PBASE_T_USBDI_0493_EP0TRANSFERCOMPLETEL_EXIT_DUP01, this ); |
144 } |
160 } |
145 |
161 |
146 void CUT_PBASE_T_USBDI_0493::TransferCompleteL(TInt aTransferId,TInt aCompletionCode) |
162 void CUT_PBASE_T_USBDI_0493::TransferCompleteL(TInt aTransferId,TInt aCompletionCode) |
147 { |
163 { |
148 LOG_FUNC |
164 OstTraceFunctionEntryExt( CUT_PBASE_T_USBDI_0493_TRANSFERCOMPLETEL_ENTRY, this ); |
149 Cancel(); |
165 Cancel(); |
150 |
166 |
151 TInt err(KErrNone); |
167 TInt err(KErrNone); |
152 TBuf<256> msg; |
168 TBuf<256> msg; |
153 RDebug::Printf("Transfer completed (id=%d), aCompletionCode = %d",aTransferId, aCompletionCode); |
169 OstTraceExt2(TRACE_NORMAL, CUT_PBASE_T_USBDI_0493_TRANSFERCOMPLETEL, "Transfer completed (id=%d), aCompletionCode = %d",aTransferId, aCompletionCode); |
154 |
170 |
155 switch(iCaseStep) |
171 switch(iCaseStep) |
156 { |
172 { |
157 case ETransferOut: |
173 case ETransferOut: |
158 if(aCompletionCode != KErrNone) |
174 if(aCompletionCode != KErrNone) |
205 case KBulkTransferInId3: |
221 case KBulkTransferInId3: |
206 iTransferComplete |= aTransferId; |
222 iTransferComplete |= aTransferId; |
207 break; //switch(aTransferId) |
223 break; //switch(aTransferId) |
208 |
224 |
209 default: |
225 default: |
210 RDebug::Printf("Bad Transfer ID"); |
226 OstTrace0(TRACE_NORMAL, CUT_PBASE_T_USBDI_0493_TRANSFERCOMPLETEL_DUP03, "Bad Transfer ID"); |
211 iTransferComplete = 0; //reset |
227 iTransferComplete = 0; //reset |
212 err = KUnexpectedTransferID; |
228 err = KUnexpectedTransferID; |
213 msg.Format(_L("<Error %d> Unexpected transfer ID, wanted %d or %d or %d or %d, got %d"), |
229 msg.Format(_L("<Error %d> Unexpected transfer ID, wanted %d or %d or %d or %d, got %d"), |
214 err, KBulkTransferInId0, KBulkTransferInId1, KBulkTransferInId2, KBulkTransferInId3, aTransferId); |
230 err, KBulkTransferInId0, KBulkTransferInId1, KBulkTransferInId2, KBulkTransferInId3, aTransferId); |
215 break; //switch(aTransferId) |
231 break; //switch(aTransferId) |
282 break; //switch(iCaseStep) |
298 break; //switch(iCaseStep) |
283 } |
299 } |
284 |
300 |
285 if(err!=KErrNone) |
301 if(err!=KErrNone) |
286 { |
302 { |
287 RDebug::Print(msg); |
303 OstTrace0(TRACE_NORMAL, CUT_PBASE_T_USBDI_0493_TRANSFERCOMPLETEL_DUP05, msg); |
288 iCaseStep = EFailed; |
304 iCaseStep = EFailed; |
289 TTestCaseFailed request(err,msg); |
305 TTestCaseFailed request(err,msg); |
290 iControlEp0->SendRequest(request,this); |
306 iControlEp0->SendRequest(request,this); |
|
307 OstTraceFunctionExit1( CUT_PBASE_T_USBDI_0493_TRANSFERCOMPLETEL_EXIT, this ); |
291 return; |
308 return; |
292 } |
309 } |
|
310 OstTraceFunctionExit1( CUT_PBASE_T_USBDI_0493_TRANSFERCOMPLETEL_EXIT_DUP01, this ); |
293 } |
311 } |
294 |
312 |
295 |
313 |
296 void CUT_PBASE_T_USBDI_0493::DeviceInsertedL(TUint aDeviceHandle) |
314 void CUT_PBASE_T_USBDI_0493::DeviceInsertedL(TUint aDeviceHandle) |
297 { |
315 { |
298 LOG_FUNC |
316 OstTraceFunctionEntryExt( CUT_PBASE_T_USBDI_0493_DEVICEINSERTEDL_ENTRY, this ); |
299 Cancel(); |
317 Cancel(); |
300 RDebug::Printf("****** Father William Pattern Length is %d bytes! *********", KLiteralEnglish8Length); |
318 OstTrace1(TRACE_NORMAL, CUT_PBASE_T_USBDI_0493_DEVICEINSERTEDL, "****** Father William Pattern Length is %d bytes! *********", KLiteralEnglish8Length); |
301 if(BaseBulkDeviceInsertedL(aDeviceHandle) == EDeviceConfigurationError) |
319 if(BaseBulkDeviceInsertedL(aDeviceHandle) == EDeviceConfigurationError) |
302 // Prepare for response from control transfer to client |
320 // Prepare for response from control transfer to client |
303 { |
321 { |
304 iCaseStep = EFailed; |
322 iCaseStep = EFailed; |
305 } |
323 } |
306 |
324 |
307 // Create the bulk transfers |
325 // Create the bulk transfers |
308 RDebug::Printf("Trying to create the bulk transfers - size 0x%u", KBulkTransferMaxSize); |
326 OstTrace1(TRACE_NORMAL, CUT_PBASE_T_USBDI_0493_DEVICEINSERTEDL_DUP01, "Trying to create the bulk transfers - size 0x%u", KBulkTransferMaxSize); |
309 iInTransfer[0] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkIn,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferInId0); |
327 iInTransfer[0] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkIn,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferInId0); |
310 iInTransfer[1] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkIn,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferInId1); |
328 iInTransfer[1] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkIn,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferInId1); |
311 iInTransfer[2] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkIn,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferInId2); |
329 iInTransfer[2] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkIn,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferInId2); |
312 iInTransfer[3] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkIn,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferInId3); |
330 iInTransfer[3] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkIn,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferInId3); |
313 iOutTransfer[0] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkOut,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferOutId0); |
331 iOutTransfer[0] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkOut,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferOutId0); |
314 iOutTransfer[1] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkOut,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferOutId1); |
332 iOutTransfer[1] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkOut,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferOutId1); |
315 iOutTransfer[2] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkOut,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferOutId2); |
333 iOutTransfer[2] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkOut,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferOutId2); |
316 iOutTransfer[3] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkOut,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferOutId3); |
334 iOutTransfer[3] = new (ELeave) CBulkTransfer(iTestPipeInterface1BulkOut,iUsbInterface1,KBulkTransferMaxSize,*this,KBulkTransferOutId3); |
317 |
335 |
318 // Initialise the descriptors for transfer |
336 // Initialise the descriptors for transfer |
319 RDebug::Printf("Initialising the transfer descriptors"); |
337 OstTrace0(TRACE_NORMAL, CUT_PBASE_T_USBDI_0493_DEVICEINSERTEDL_DUP02, "Initialising the transfer descriptors"); |
320 TInt err = iUsbInterface1.InitialiseTransferDescriptors(); |
338 TInt err = iUsbInterface1.InitialiseTransferDescriptors(); |
321 if(err != KErrNone) |
339 if(err != KErrNone) |
322 { |
340 { |
323 TBuf<256> msg; |
341 TBuf<256> msg; |
324 msg.Format(_L("<Error %d> Unable to initialise transfer descriptors"),err); |
342 msg.Format(_L("<Error %d> Unable to initialise transfer descriptors"),err); |
325 RDebug::Print(msg); |
343 OstTrace0(TRACE_NORMAL, CUT_PBASE_T_USBDI_0493_DEVICEINSERTEDL_DUP03, msg); |
326 iCaseStep = EFailed; |
344 iCaseStep = EFailed; |
327 TTestCaseFailed request(err,msg); |
345 TTestCaseFailed request(err,msg); |
328 iControlEp0->SendRequest(request,this); |
346 iControlEp0->SendRequest(request,this); |
|
347 OstTraceFunctionExit1( CUT_PBASE_T_USBDI_0493_DEVICEINSERTEDL_EXIT, this ); |
329 return; |
348 return; |
330 } |
349 } |
331 |
350 |
332 RDebug::Printf("Ask client to read %d bytes of data", KClientNumReadBytes); |
351 OstTrace1(TRACE_NORMAL, CUT_PBASE_T_USBDI_0493_DEVICEINSERTEDL_DUP04, "Ask client to read %d bytes of data", KClientNumReadBytes); |
333 iCaseStep = ETransferOut; |
352 iCaseStep = ETransferOut; |
334 TEndpointReadUntilShortRequest request(1,1,KClientNumReadBytes);// EP1 because 1st reader EP |
353 TEndpointReadUntilShortRequest request(1,1,KClientNumReadBytes);// EP1 because 1st reader EP |
335 iControlEp0->SendRequest(request,this); |
354 iControlEp0->SendRequest(request,this); |
|
355 OstTraceFunctionExit1( CUT_PBASE_T_USBDI_0493_DEVICEINSERTEDL_EXIT_DUP01, this ); |
336 } |
356 } |
337 |
357 |
338 } //end namespace |
358 } //end namespace |