1 // Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
1 // Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). |
2 // All rights reserved. |
2 // All rights reserved. |
3 // This component and the accompanying materials are made available |
3 // This component and the accompanying materials are made available |
4 // under the terms of the License "Eclipse Public License v1.0" |
4 // under the terms of the License "Eclipse Public License v1.0" |
5 // which accompanies this distribution, and is available |
5 // which accompanies this distribution, and is available |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
36 _LIT8(KTxtTestConfig, "C"); |
35 _LIT8(KTxtTestConfig, "C"); |
37 |
36 |
38 |
37 |
39 void TLocalBuffer::Init() |
38 void TLocalBuffer::Init() |
40 { |
39 { |
41 __MSFNSLOG |
|
42 TInt64 rndSeed = 123456789; |
40 TInt64 rndSeed = 123456789; |
43 |
41 |
44 //-- initialize buffer with random rubbish |
42 //-- initialize buffer with random rubbish |
45 iBuffer.SetMax(); |
43 iBuffer.SetMax(); |
46 for (TInt i = 0; i < KSize; ++i) |
44 for (TInt i = 0; i < KSize; ++i) |
63 |
61 |
64 |
62 |
65 RTargetMedia::RTargetMedia(TInt aDriveNumber) |
63 RTargetMedia::RTargetMedia(TInt aDriveNumber) |
66 : iDriveNumber(aDriveNumber) |
64 : iDriveNumber(aDriveNumber) |
67 { |
65 { |
68 __MSFNSLOG |
|
69 } |
66 } |
70 |
67 |
71 |
68 |
72 void RTargetMedia::OpenL() |
69 void RTargetMedia::OpenL() |
73 { |
70 { |
74 __MSFNSLOG |
|
75 User::LeaveIfError(iRawDisk.Open(fsSession, iDriveNumber)); |
71 User::LeaveIfError(iRawDisk.Open(fsSession, iDriveNumber)); |
76 } |
72 } |
77 |
73 |
78 |
74 |
79 void RTargetMedia::Close() |
75 void RTargetMedia::Close() |
80 { |
76 { |
81 __MSFNSLOG |
|
82 iRawDisk.Close(); |
77 iRawDisk.Close(); |
83 } |
78 } |
84 |
79 |
85 |
80 |
86 TInt RTargetMedia::MediaRawWrite(TPos aPos, const TDesC8& aData) |
81 TInt RTargetMedia::MediaRawWrite(TPos aPos, const TDesC8& aData) |
87 { |
82 { |
88 __MSFNSLOG |
|
89 return iRawDisk.Write(aPos, (TDesC8&)aData); |
83 return iRawDisk.Write(aPos, (TDesC8&)aData); |
90 } |
84 } |
91 |
85 |
92 |
86 |
93 TInt RTargetMedia::MediaRawRead(TPos aPos, TUint32 aLen, TDes8& aData) |
87 TInt RTargetMedia::MediaRawRead(TPos aPos, TUint32 aLen, TDes8& aData) |
94 { |
88 { |
95 __MSFNSLOG |
|
96 aData.SetMax(); |
89 aData.SetMax(); |
97 TPtr8 ptr = aData.LeftTPtr(aLen); |
90 TPtr8 ptr = aData.LeftTPtr(aLen); |
98 TInt err = iRawDisk.Read(aPos, ptr); |
91 TInt err = iRawDisk.Read(aPos, ptr); |
99 aData.SetLength(aLen); |
92 aData.SetLength(aLen); |
100 return err; |
93 return err; |
119 } |
111 } |
120 |
112 |
121 |
113 |
122 TInt RTargetDrive::Update(TInt aPos, TUint aLen) |
114 TInt RTargetDrive::Update(TInt aPos, TUint aLen) |
123 { |
115 { |
124 __MSFNSLOG |
|
125 TPtrC8 ptr = iSource.Mid(aPos, aLen); |
116 TPtrC8 ptr = iSource.Mid(aPos, aLen); |
126 TPos targetPos = TargetPos(aPos); |
117 TPos targetPos = TargetPos(aPos); |
127 return MediaRawWrite(targetPos, ptr); |
118 return MediaRawWrite(targetPos, ptr); |
128 } |
119 } |
129 |
120 |
130 |
121 |
131 TInt RTargetDrive::Verify() |
122 TInt RTargetDrive::Verify() |
132 { |
123 { |
133 __MSFNLOG |
|
134 TInt res = MediaRawRead(StartPos(), iSource.Length(), iTmpBuffer); |
124 TInt res = MediaRawRead(StartPos(), iSource.Length(), iTmpBuffer); |
135 if (res) |
125 if (res) |
136 return res; |
126 return res; |
137 |
127 |
138 res = iTmpBuffer.Compare(iSource); |
128 res = iTmpBuffer.Compare(iSource); |
139 return res == 0 ? KErrNone : KErrCorrupt; |
129 return res == 0 ? KErrNone : KErrCorrupt; |
140 } |
130 } |
141 |
131 |
142 TInt RTargetDrive::Verify(TInt aPos, TUint aLen) |
132 TInt RTargetDrive::Verify(TInt aPos, TUint aLen) |
143 { |
133 { |
144 __MSFNSLOG |
|
145 TPos pos = TargetPos(aPos); |
134 TPos pos = TargetPos(aPos); |
146 TInt res = MediaRawRead(pos, aLen, iTmpBuffer); |
135 TInt res = MediaRawRead(pos, aLen, iTmpBuffer); |
147 if (res) |
136 if (res) |
148 return res; |
137 return res; |
149 |
138 |
155 } |
144 } |
156 |
145 |
157 |
146 |
158 TInt RTargetDrive::VerifyBlock(TLba aLba, TLba aBlocks) |
147 TInt RTargetDrive::VerifyBlock(TLba aLba, TLba aBlocks) |
159 { |
148 { |
160 __MSFNSLOG |
|
161 return Verify(TLbaUtils::Pos(aLba), TLbaUtils::Length(aBlocks)); |
149 return Verify(TLbaUtils::Pos(aLba), TLbaUtils::Length(aBlocks)); |
162 } |
150 } |
163 |
151 |
164 |
152 |
165 _LIT(KTxtControlFile, "ControlFile.txt"); |
153 _LIT(KTxtControlFile, "ControlFile.txt"); |
166 static const TChar KFillChar = 'x'; |
154 static const TChar KFillChar = 'x'; |
167 |
155 |
168 TTargetTestArea::TTargetTestArea(RTargetMedia& aMedia) |
156 TTargetTestArea::TTargetTestArea(RTargetMedia& aMedia) |
169 : iTargetMedia(aMedia) |
157 : iTargetMedia(aMedia) |
170 { |
158 { |
171 __MSFNLOG |
|
172 } |
159 } |
173 |
160 |
174 void TTargetTestArea::CreateControlFile() |
161 void TTargetTestArea::CreateControlFile() |
175 { |
162 { |
176 __MSFNLOG |
|
177 iStartLba = -1; |
163 iStartLba = -1; |
178 static const TInt KBlockSize = 0x200; |
164 static const TInt KBlockSize = 0x200; |
179 static const TInt KFileSize = KBlockSize * 8; |
165 static const TInt KFileSize = KBlockSize * 8; |
180 |
166 |
181 RFile file; |
167 RFile file; |
194 } |
180 } |
195 |
181 |
196 |
182 |
197 void TTargetTestArea::RemoveControlFile() |
183 void TTargetTestArea::RemoveControlFile() |
198 { |
184 { |
199 __MSFNLOG |
|
200 TInt err = fsSession.Delete(KTxtControlFile); |
185 TInt err = fsSession.Delete(KTxtControlFile); |
201 test(err == KErrNone); |
186 test(err == KErrNone); |
202 } |
187 } |
203 |
188 |
204 |
189 |
205 void TTargetTestArea::FindBlockStartL() |
190 void TTargetTestArea::FindBlockStartL() |
206 { |
191 { |
207 __MSFNLOG |
|
208 iTargetMedia.OpenL(); |
192 iTargetMedia.OpenL(); |
209 // search for first block |
193 // search for first block |
210 TBuf8<KBlockSize> readBlock; |
194 TBuf8<KBlockSize> readBlock; |
211 TBuf8<KBlockSize> refBlock; |
195 TBuf8<KBlockSize> refBlock; |
212 refBlock.Fill(KFillChar, KBlockSize); |
196 refBlock.Fill(KFillChar, KBlockSize); |
235 } |
219 } |
236 |
220 |
237 |
221 |
238 TInt TTargetTestArea::WriteBlockL(TBuf8<KBlockSize>& aBlock) |
222 TInt TTargetTestArea::WriteBlockL(TBuf8<KBlockSize>& aBlock) |
239 { |
223 { |
240 __MSFNLOG |
|
241 iTargetMedia.OpenL(); |
224 iTargetMedia.OpenL(); |
242 TInt err = iTargetMedia.MediaRawWrite(iStartLba * KBlockSize, aBlock); |
225 TInt err = iTargetMedia.MediaRawWrite(iStartLba * KBlockSize, aBlock); |
243 iTargetMedia.Close(); |
226 iTargetMedia.Close(); |
244 return err; |
227 return err; |
245 } |
228 } |
246 |
229 |
247 |
230 |
248 TInt TTargetTestArea::ReadBlockL(TBuf8<KBlockSize>& aBlock) |
231 TInt TTargetTestArea::ReadBlockL(TBuf8<KBlockSize>& aBlock) |
249 { |
232 { |
250 __MSFNLOG |
|
251 iTargetMedia.OpenL(); |
233 iTargetMedia.OpenL(); |
252 TInt err = iTargetMedia.MediaRawRead(iStartLba * KBlockSize, KBlockSize, aBlock); |
234 TInt err = iTargetMedia.MediaRawRead(iStartLba * KBlockSize, KBlockSize, aBlock); |
253 iTargetMedia.Close(); |
235 iTargetMedia.Close(); |
254 return err; |
236 return err; |
255 } |
237 } |
256 |
238 |
257 |
239 |
258 RBlockTargetMedia::RBlockTargetMedia(TInt aDriveNumber) |
240 RBlockTargetMedia::RBlockTargetMedia(TInt aDriveNumber) |
259 : RTargetMedia(aDriveNumber) |
241 : RTargetMedia(aDriveNumber) |
260 { |
242 { |
261 __MSFNSLOG |
|
262 } |
243 } |
263 |
244 |
264 |
245 |
265 void RBlockTargetMedia::OpenL() |
246 void RBlockTargetMedia::OpenL() |
266 { |
247 { |
267 __MSFNSLOG |
|
268 RTargetMedia::OpenL(); |
248 RTargetMedia::OpenL(); |
269 |
249 |
270 TInt64 rndSeed = 123456789; |
250 TInt64 rndSeed = 123456789; |
271 |
251 |
272 //-- initialize buffer with random rubbish |
252 //-- initialize buffer with random rubbish |
278 } |
258 } |
279 |
259 |
280 |
260 |
281 TInt RBlockTargetMedia::WriteBlock(TLba aLba) |
261 TInt RBlockTargetMedia::WriteBlock(TLba aLba) |
282 { |
262 { |
283 __MSFNSLOG |
|
284 TPos pos = TLbaUtils::Pos(aLba); |
263 TPos pos = TLbaUtils::Pos(aLba); |
285 return iRawDisk.Write(pos, (TDesC8&)iBlockData); |
264 return iRawDisk.Write(pos, (TDesC8&)iBlockData); |
286 } |
265 } |
287 |
266 |
288 |
267 |
289 TInt RBlockTargetMedia::ReadBlock(TLba aLba) |
268 TInt RBlockTargetMedia::ReadBlock(TLba aLba) |
290 { |
269 { |
291 __MSFNSLOG |
|
292 TBuf8<KBlockSize> blockData; |
270 TBuf8<KBlockSize> blockData; |
293 TPos pos = TLbaUtils::Pos(aLba); |
271 TPos pos = TLbaUtils::Pos(aLba); |
294 blockData.SetMax(); |
272 blockData.SetMax(); |
295 TInt err = iRawDisk.Read(pos, blockData); |
273 TInt err = iRawDisk.Read(pos, blockData); |
296 return err; |
274 return err; |
297 } |
275 } |
298 |
276 |
299 |
277 |
300 CBlockDeviceTester* CBlockDeviceTester::NewL(TInt aDriveNumber) |
278 CBlockDeviceTester* CBlockDeviceTester::NewL(TInt aDriveNumber) |
301 { |
279 { |
302 __MSFNSLOG |
280 CBlockDeviceTester* r = new (ELeave) CBlockDeviceTester(aDriveNumber); |
303 CBlockDeviceTester* r = new (ELeave) CBlockDeviceTester(aDriveNumber); |
281 CleanupStack::PushL(r); |
304 CleanupStack::PushL(r); |
282 |
305 |
283 r->ConstructL(); |
306 r->ConstructL(); |
284 CleanupStack::Pop(); |
307 CleanupStack::Pop(); |
285 return r; |
308 return r; |
|
309 } |
286 } |
310 |
287 |
311 |
288 |
312 void CBlockDeviceTester::ConstructL() |
289 void CBlockDeviceTester::ConstructL() |
313 { |
290 { |
314 __MSFNLOG |
|
315 TVolumeInfo volumeInfo; |
291 TVolumeInfo volumeInfo; |
316 |
292 |
317 User::LeaveIfError(fsSession.Volume(volumeInfo, iDriveNumber)); |
293 User::LeaveIfError(fsSession.Volume(volumeInfo, iDriveNumber)); |
318 test.Printf(_L("Drive=%d Size = %lx\n"), iDriveNumber, volumeInfo.iSize); |
294 test.Printf(_L("Drive=%d Size = %lx\n"), iDriveNumber, volumeInfo.iSize); |
319 iDriveSizeInBlocks = volumeInfo.iSize / KBlockSize; |
295 iDriveSizeInBlocks = volumeInfo.iSize / KBlockSize; |
324 |
300 |
325 CBlockDeviceTester::CBlockDeviceTester(TInt aDriveNumber) |
301 CBlockDeviceTester::CBlockDeviceTester(TInt aDriveNumber) |
326 : iDriveNumber(aDriveNumber), |
302 : iDriveNumber(aDriveNumber), |
327 iTargetDrive(aDriveNumber) |
303 iTargetDrive(aDriveNumber) |
328 { |
304 { |
329 __MSFNLOG |
|
330 } |
305 } |
331 |
306 |
332 |
307 |
333 CBlockDeviceTester::~CBlockDeviceTester() |
308 CBlockDeviceTester::~CBlockDeviceTester() |
334 { |
309 { |
335 __MSFNLOG |
|
336 iTargetDrive.Close(); |
310 iTargetDrive.Close(); |
337 } |
311 } |
338 |
312 |
339 |
313 |
340 void CBlockDeviceTester::OpenDriveL() |
314 void CBlockDeviceTester::OpenDriveL() |
349 |
323 |
350 |
324 |
351 |
325 |
352 TInt CBlockDeviceTester::VerifyDrive() |
326 TInt CBlockDeviceTester::VerifyDrive() |
353 { |
327 { |
354 __MSFNLOG |
|
355 return iTargetDrive.Verify(); |
328 return iTargetDrive.Verify(); |
356 } |
329 } |
357 |
330 |
358 |
331 |
359 TInt CBlockDeviceTester::Update(TPos aPos, TUint aLen) |
332 TInt CBlockDeviceTester::Update(TPos aPos, TUint aLen) |
360 { |
333 { |
361 __MSFNLOG |
|
362 iLocalBuffer.Update(aPos, aLen); |
334 iLocalBuffer.Update(aPos, aLen); |
363 return iTargetDrive.Update(aPos, aLen); |
335 return iTargetDrive.Update(aPos, aLen); |
364 } |
336 } |
365 |
337 |
366 |
338 |
367 TInt CBlockDeviceTester::UpdateBlock(TLba aLba, TLba aBlocks) |
339 TInt CBlockDeviceTester::UpdateBlock(TLba aLba, TLba aBlocks) |
368 { |
340 { |
369 __MSFNLOG |
|
370 return Update(TLbaUtils::Pos(aLba), TLbaUtils::Length(aBlocks)); |
341 return Update(TLbaUtils::Pos(aLba), TLbaUtils::Length(aBlocks)); |
371 } |
342 } |
372 |
343 |
373 |
344 |
374 TInt CBlockDeviceTester::Verify(TPos aPos, TUint aLen) |
345 TInt CBlockDeviceTester::Verify(TPos aPos, TUint aLen) |
375 { |
346 { |
376 __MSFNLOG |
|
377 return iTargetDrive.Verify(aPos, aLen); |
347 return iTargetDrive.Verify(aPos, aLen); |
378 } |
348 } |
379 |
349 |
380 TInt CBlockDeviceTester::VerifyBlock(TLba aLba, TLba aBlocks) |
350 TInt CBlockDeviceTester::VerifyBlock(TLba aLba, TLba aBlocks) |
381 { |
351 { |
382 __MSFNLOG |
|
383 return iTargetDrive.VerifyBlock(aLba, aBlocks); |
352 return iTargetDrive.VerifyBlock(aLba, aBlocks); |
384 } |
353 } |
385 |
354 |
386 /** |
355 /** |
387 * CBotTester |
356 * CBotTester |
388 */ |
357 */ |
389 CBotTester* CBotTester::NewL(TInt aDriveNumber) |
358 CBotTester* CBotTester::NewL(TInt aDriveNumber) |
390 { |
359 { |
391 __MSFNSLOG |
360 CBotTester* r = new (ELeave) CBotTester(aDriveNumber); |
392 CBotTester* r = new (ELeave) CBotTester(aDriveNumber); |
361 CleanupStack::PushL(r); |
393 CleanupStack::PushL(r); |
362 |
394 |
363 r->ConstructL(); |
395 r->ConstructL(); |
364 CleanupStack::Pop(); |
396 CleanupStack::Pop(); |
365 return r; |
397 return r; |
|
398 } |
366 } |
399 |
367 |
400 |
368 |
401 void CBotTester::ConstructL() |
369 void CBotTester::ConstructL() |
402 { |
370 { |
403 __MSFNLOG |
|
404 |
371 |
405 CBlockDeviceTester::ConstructL(); |
372 CBlockDeviceTester::ConstructL(); |
406 |
373 |
407 iCmdBuffer.Append(KTxtTestCaseOutPreamble); |
374 iCmdBuffer.Append(KTxtTestCaseOutPreamble); |
408 iCmdBuffer.Append(KTxtTestCase); |
375 iCmdBuffer.Append(KTxtTestCase); |
419 |
386 |
420 |
387 |
421 CBotTester::CBotTester(TInt aDriveNumber) |
388 CBotTester::CBotTester(TInt aDriveNumber) |
422 : CBlockDeviceTester(aDriveNumber) |
389 : CBlockDeviceTester(aDriveNumber) |
423 { |
390 { |
424 __MSFNLOG |
|
425 } |
391 } |
426 |
392 |
427 |
393 |
428 CBotTester::~CBotTester() |
394 CBotTester::~CBotTester() |
429 { |
395 { |
430 __MSFNLOG |
|
431 iTargetDrive.Close(); |
396 iTargetDrive.Close(); |
432 } |
397 } |
433 |
398 |
434 |
399 |
435 TInt CBotTester::SetTest(TTestCase aTestCase) |
400 TInt CBotTester::SetTest(TTestCase aTestCase) |
436 { |
401 { |
437 __MSFNLOG |
|
438 iCmdBuffer[KTestCaseDataOffset] = static_cast<TUint8>(aTestCase); |
402 iCmdBuffer[KTestCaseDataOffset] = static_cast<TUint8>(aTestCase); |
439 |
403 |
440 TPos pos = KSetTestPos; |
404 TPos pos = KSetTestPos; |
441 return iTargetDrive.MediaRawWrite(pos, iCmdBuffer); |
405 return iTargetDrive.MediaRawWrite(pos, iCmdBuffer); |
442 } |
406 } |
443 |
407 |
444 |
408 |
445 TInt CBotTester::WriteEnableFile() |
409 TInt CBotTester::WriteEnableFile() |
446 { |
410 { |
447 __MSFNLOG |
|
448 TPos pos = KWriteEnableFilePos; |
411 TPos pos = KWriteEnableFilePos; |
449 return iTargetDrive.MediaRawWrite(pos, iOutEnableBuffer); |
412 return iTargetDrive.MediaRawWrite(pos, iOutEnableBuffer); |
450 } |
413 } |
451 |
414 |
452 |
415 |
453 TInt CBotTester::InitReadEnableFile() |
416 TInt CBotTester::InitReadEnableFile() |
454 { |
417 { |
455 __MSFNLOG |
|
456 TPos pos = KReadEnableFilePos; |
418 TPos pos = KReadEnableFilePos; |
457 return iTargetDrive.MediaRawWrite(pos, iInEnableBuffer); |
419 return iTargetDrive.MediaRawWrite(pos, iInEnableBuffer); |
458 } |
420 } |
459 |
421 |
460 |
422 |
461 TInt CBotTester::ReadEnableFile() |
423 TInt CBotTester::ReadEnableFile() |
462 { |
424 { |
463 __MSFNLOG |
|
464 TBuf8<KInEnableBufferSize> readBuf(KInEnableBufferSize); |
425 TBuf8<KInEnableBufferSize> readBuf(KInEnableBufferSize); |
465 TPos pos = KReadEnableFilePos; |
426 TPos pos = KReadEnableFilePos; |
466 return iTargetDrive.MediaRawRead(pos, readBuf.Size(), readBuf); |
427 return iTargetDrive.MediaRawRead(pos, readBuf.Size(), readBuf); |
467 } |
428 } |
468 |
429 |
470 /** |
431 /** |
471 * CSbcErrTester |
432 * CSbcErrTester |
472 */ |
433 */ |
473 CSbcErrTester* CSbcErrTester::NewL(TInt aDriveNumber) |
434 CSbcErrTester* CSbcErrTester::NewL(TInt aDriveNumber) |
474 { |
435 { |
475 __MSFNSLOG |
436 CSbcErrTester* r = new (ELeave) CSbcErrTester(aDriveNumber); |
476 CSbcErrTester* r = new (ELeave) CSbcErrTester(aDriveNumber); |
437 CleanupStack::PushL(r); |
477 CleanupStack::PushL(r); |
438 |
478 |
439 r->ConstructL(); |
479 r->ConstructL(); |
440 CleanupStack::Pop(); |
480 CleanupStack::Pop(); |
441 return r; |
481 return r; |
|
482 } |
442 } |
483 |
443 |
484 |
444 |
485 void CSbcErrTester::ConstructL() |
445 void CSbcErrTester::ConstructL() |
486 { |
446 { |
487 __MSFNLOG |
|
488 |
|
489 CBlockDeviceTester::ConstructL(); |
447 CBlockDeviceTester::ConstructL(); |
490 |
448 |
491 iCmdBuffer.Append(KTxtTestCaseOutPreamble); |
449 iCmdBuffer.Append(KTxtTestCaseOutPreamble); |
492 iCmdBuffer.Append(KTxtTestCase); |
450 iCmdBuffer.Append(KTxtTestCase); |
493 iCmdBuffer.AppendFill('t', iCmdBuffer.MaxLength() - iCmdBuffer.Length()); |
451 iCmdBuffer.AppendFill('t', iCmdBuffer.MaxLength() - iCmdBuffer.Length()); |
503 |
461 |
504 |
462 |
505 CSbcErrTester::CSbcErrTester(TInt aDriveNumber) |
463 CSbcErrTester::CSbcErrTester(TInt aDriveNumber) |
506 : CBlockDeviceTester(aDriveNumber) |
464 : CBlockDeviceTester(aDriveNumber) |
507 { |
465 { |
508 __MSFNLOG |
|
509 } |
466 } |
510 |
467 |
511 |
468 |
512 CSbcErrTester::~CSbcErrTester() |
469 CSbcErrTester::~CSbcErrTester() |
513 { |
470 { |
514 __MSFNLOG |
|
515 iTargetDrive.Close(); |
471 iTargetDrive.Close(); |
516 } |
472 } |
517 |
473 |
518 |
474 |
519 TInt CSbcErrTester::WriteTestFile() |
475 TInt CSbcErrTester::WriteTestFile() |
520 { |
476 { |
521 __MSFNLOG |
|
522 TPos pos = KWriteTestFilePos; |
477 TPos pos = KWriteTestFilePos; |
523 return iTargetDrive.MediaRawWrite(pos, iEnableBuffer); |
478 return iTargetDrive.MediaRawWrite(pos, iEnableBuffer); |
524 } |
479 } |
525 |
480 |
526 |
481 |
527 TInt CSbcErrTester::ReadTestFile() |
482 TInt CSbcErrTester::ReadTestFile() |
528 { |
483 { |
529 __MSFNLOG |
|
530 TBuf8<KEnableBufferSize> readBuf(KEnableBufferSize); |
484 TBuf8<KEnableBufferSize> readBuf(KEnableBufferSize); |
531 TPos pos = KReadTestFilePos; |
485 TPos pos = KReadTestFilePos; |
532 TInt err = iTargetDrive.MediaRawRead(pos, readBuf.Size(), readBuf); |
486 TInt err = iTargetDrive.MediaRawRead(pos, readBuf.Size(), readBuf); |
533 return err; |
487 return err; |
534 } |
488 } |
535 |
489 |
536 |
490 |
537 TInt CSbcErrTester::WriteSenseErrorFile(TTestSenseError aTestSenseError) |
491 TInt CSbcErrTester::WriteSenseErrorFile(TTestSenseError aTestSenseError) |
538 { |
492 { |
539 __MSFNLOG |
|
540 iSenseErrorBuffer[KTestCaseDataOffset] = static_cast<TUint8>(aTestSenseError); |
493 iSenseErrorBuffer[KTestCaseDataOffset] = static_cast<TUint8>(aTestSenseError); |
541 TPos pos = KSenseErrorFile; |
494 TPos pos = KSenseErrorFile; |
542 return iTargetDrive.MediaRawWrite(pos, iSenseErrorBuffer); |
495 return iTargetDrive.MediaRawWrite(pos, iSenseErrorBuffer); |
543 } |
496 } |
544 |
497 |
545 |
498 |
546 CWrPrTester* CWrPrTester::NewL(TInt aDriveNumber) |
499 CWrPrTester* CWrPrTester::NewL(TInt aDriveNumber) |
547 { |
500 { |
548 __MSFNSLOG |
501 CWrPrTester* r = new (ELeave) CWrPrTester(aDriveNumber); |
549 CWrPrTester* r = new (ELeave) CWrPrTester(aDriveNumber); |
502 CleanupStack::PushL(r); |
550 CleanupStack::PushL(r); |
503 r->ConstructL(); |
551 r->ConstructL(); |
504 CleanupStack::Pop(); |
552 CleanupStack::Pop(); |
505 return r; |
553 return r; |
|
554 } |
506 } |
555 |
507 |
556 |
508 |
557 void CWrPrTester::ConstructL() |
509 void CWrPrTester::ConstructL() |
558 { |
510 { |
559 __MSFNLOG |
|
560 iCmdBuffer.Append(KTxtTestCaseOutPreamble); |
511 iCmdBuffer.Append(KTxtTestCaseOutPreamble); |
561 iCmdBuffer.Append(KTxtTestConfig); |
512 iCmdBuffer.Append(KTxtTestConfig); |
562 iCmdBuffer.AppendFill('c', iCmdBuffer.MaxLength() - iCmdBuffer.Length()); |
513 iCmdBuffer.AppendFill('c', iCmdBuffer.MaxLength() - iCmdBuffer.Length()); |
563 |
514 |
564 iInCmdBuffer.Append(KTxtTestCaseInPreamble); |
515 iInCmdBuffer.Append(KTxtTestCaseInPreamble); |
572 |
523 |
573 CWrPrTester::CWrPrTester(TInt aDriveNumber) |
524 CWrPrTester::CWrPrTester(TInt aDriveNumber) |
574 : iTargetMedia(aDriveNumber), |
525 : iTargetMedia(aDriveNumber), |
575 iTargetTestArea(iTargetMedia) |
526 iTargetTestArea(iTargetMedia) |
576 { |
527 { |
577 __MSFNLOG |
|
578 } |
528 } |
579 |
529 |
580 |
530 |
581 CWrPrTester::~CWrPrTester() |
531 CWrPrTester::~CWrPrTester() |
582 { |
532 { |
583 __MSFNLOG |
|
584 iTargetTestArea.RemoveControlFile(); |
533 iTargetTestArea.RemoveControlFile(); |
585 } |
534 } |
586 |
535 |
587 |
536 |
588 void CWrPrTester::SetWriteProtectL() |
537 void CWrPrTester::SetWriteProtectL() |
589 { |
538 { |
590 __MSFNLOG |
|
591 // first write WrPr CLR Control block to media to enable setting to be |
539 // first write WrPr CLR Control block to media to enable setting to be |
592 // cleared |
540 // cleared |
593 iInCmdBuffer[KTestCaseDataOffset] = ETestConfigMediaWpClr; |
541 iInCmdBuffer[KTestCaseDataOffset] = ETestConfigMediaWpClr; |
594 TInt err = iTargetTestArea.WriteBlockL(iInCmdBuffer); |
542 TInt err = iTargetTestArea.WriteBlockL(iInCmdBuffer); |
595 User::LeaveIfError(err); |
543 User::LeaveIfError(err); |
621 } |
568 } |
622 |
569 |
623 |
570 |
624 TInt CWrPrTester::SetRemovableL() |
571 TInt CWrPrTester::SetRemovableL() |
625 { |
572 { |
626 __MSFNLOG |
|
627 iCmdBuffer[KTestCaseDataOffset] = ETestConfigMediaRmbSet; |
573 iCmdBuffer[KTestCaseDataOffset] = ETestConfigMediaRmbSet; |
628 iTargetMedia.OpenL(); |
574 iTargetMedia.OpenL(); |
629 TInt err = iTargetMedia.MediaRawWrite(KCmdPos, iCmdBuffer); |
575 TInt err = iTargetMedia.MediaRawWrite(KCmdPos, iCmdBuffer); |
630 iTargetMedia.Close(); |
576 iTargetMedia.Close(); |
631 return err; |
577 return err; |
632 } |
578 } |
633 |
579 |
634 TInt CWrPrTester::ClrRemovableL() |
580 TInt CWrPrTester::ClrRemovableL() |
635 { |
581 { |
636 __MSFNLOG |
|
637 iCmdBuffer[KTestCaseDataOffset] = ETestConfigMediaRmbClr; |
582 iCmdBuffer[KTestCaseDataOffset] = ETestConfigMediaRmbClr; |
638 iTargetMedia.OpenL(); |
583 iTargetMedia.OpenL(); |
639 TInt err = iTargetMedia.MediaRawWrite(KCmdPos, iCmdBuffer); |
584 TInt err = iTargetMedia.MediaRawWrite(KCmdPos, iCmdBuffer); |
640 iTargetMedia.Close(); |
585 iTargetMedia.Close(); |
641 return err; |
586 return err; |
642 } |
587 } |
643 |
588 |
644 |
589 |
645 TInt CWrPrTester::WriteReadTestL() |
590 TInt CWrPrTester::WriteReadTestL() |
646 { |
591 { |
647 __MSFNLOG |
|
648 TInt err = KErrNone; |
592 TInt err = KErrNone; |
649 TBuf8<KCmdBufferSize> wrBuffer; |
593 TBuf8<KCmdBufferSize> wrBuffer; |
650 |
594 |
651 wrBuffer.SetMax(); |
595 wrBuffer.SetMax(); |
652 for (TInt i = 0; i < KCmdBufferSize; i++) |
596 for (TInt i = 0; i < KCmdBufferSize; i++) |