?? rbc.lst
字號:
283 0x00,
284 0x00,
285 0x00
286 },
287
288 0xFF, /*Power/Peformance*/
289
290 0, /*LockDisable*/
291 0, /*FormatDisable*/
292 0, /*WriteDisable*/
293 0, /*ReadDisable*/
294 0x0, /*Reserved*/
295
296 0x00 /*Reserved*/
297 };
298
299 code VPD_SERIAL_PAGE SerialPage =
300 {
301 RBC_DEVICE,
302 0x00,
303
C51 COMPILER V7.06 RBC 02/17/2004 14:42:23 PAGE 6
304 VPDPAGE_SERIAL_NUMBER,
305
306 0x00,
307
308 24, //size of SerialNumber
309
310 {
311 // SerialNumber
312 '0',0,
313 '0',0,
314 '0',0,
315 '0',0,
316
317 '0',0,
318 '0',0,
319 '0',0,
320 '0',0,
321
322 '0',0,
323 '0',0,
324 '0',0,
325 '0',0
326 }
327 };
328
329 code VPD_DEVICE_ID_PAGE DeviceIDPage =
330 {
331 RBC_DEVICE,
332 0x00,
333
334 VPDPAGE_DEVICE_IDENTITY,
335
336 0x00,
337
338 sizeof(ASCII_ID_DESCRIPTOR),
339 {
340 0x02,
341 0x00,
342
343 0x01,
344 0x00,
345 0x00,
346
347 0x00,
348
349 sizeof(ASCII_ID_STRING),
350
351 {
352 // ASCII_ID_STRING
353 'P','h','i','l',
354 'i','p','s',' ',
355 'S','u','p','e',
356 'r',' ','D','i',
357 's','k',' '
358 }
359 }
360 };
361
362 code STD_INQUIRYDATA inquiryData =
363 {
364 0x00,// RBC_DEVICE,
365 0,//INT8 Reserved0 : 3;
C51 COMPILER V7.06 RBC 02/17/2004 14:42:23 PAGE 7
366
367 0,//INT8 Reserved1 : 7;
368 1,//INT8 RemovableMedia : 1;
369
370 2,//INT8 Reserved2;
371
372 2,//INT8 Reserved3 : 5;
373 0,//INT8 NormACA : 1;
374 0,//INT8 Obsolete0 : 1;
375 0,//INT8 AERC : 1;
376
377 //INT8 Reserved4[3];
378 {
379 0x1F,0,0
380 },
381
382 0,//INT8 SoftReset : 1;
383 0,//INT8 CommandQueue : 1;
384 0,//INT8 Reserved5 : 1;
385 0,//INT8 LinkedCommands : 1;
386 0,//INT8 Synchronous : 1;
387 0,//INT8 Wide16Bit : 1;
388 0,//INT8 Wide32Bit : 1;
389 0,//INT8 RelativeAddressing : 1;
390
391 //INT8 VendorId[8];
392 {
393 'P','H','I','L',
394 'I','P','S',' '
395 },
396
397 //INT8 ProductId[16];
398 {
399 'U','S','B','-',
400 'I','D','E',' ',
401 'A','d','a','p',
402 't','e','r',' '
403 },
404
405 //INT8 ProductRevisionLevel[4];
406 {
407 '0','.','0','0'
408 },
409
410
411 // Above is 36 bytes
412 // can be tranmitted by Bulk
413
414
415
416 //INT8 VendorSpecific[20]; out[64 bytes] within one packet only.
417 {
418 0, 0, 0, 0,
419 0, 0, 0, 0,
420 0, 0, 0, 0,
421 0, 0, 0, 0,
422 0, 0, 0, 0
423 },
424
425
426 0,//INT8 InfoUnitSupport : 1;
427 0,//INT8 QuickArbitSupport : 1;
C51 COMPILER V7.06 RBC 02/17/2004 14:42:23 PAGE 8
428 0,//INT8 Clocking : 2;
429 0,//INT8 Reserved1 : 4;
430 0,//INT8 Reserved2 ;
431
432 //USHORT VersionDescriptor[8] ;
433 {
434 0, 0, 0, 0,
435 0, 0, 0, 0
436 },
437
438
439 //INT8 Reserved3[22];
440 {
441 0, 0, 0, 0,
442 0, 0, 0, 0,
443 0, 0, 0, 0,
444 0, 0, 0, 0,
445 0, 0, 0, 0,
446 0, 0
447 }
448
449 };
450
451
452 /*
453 //*************************************************************************
454 // Subroutines
455 //*************************************************************************
456 */
457
458 BOOLEAN RBC_Handler( void )
459 {
460 1
461 1 #define cdbGeneric RBC_CDB.RbcCdb_Generic
462 1 BOOLEAN retStatus = FALSE;
463 1
464 1 BOTXfer_wResidue = 0;
465 1
466 1 switch(cdbGeneric.OperationCode)
467 1 {
468 2 /* required command */
469 2 case RBC_CMD_READ10:
470 2 retStatus = RBC_Read();
471 2 break;
472 2 case RBC_CMD_READCAPACITY:
473 2 retStatus = RBC_ReadCapacity();
474 2 break;
475 2 case RBC_CMD_STARTSTOPUNIT:
476 2 retStatus = RBC_OnOffUnit();
477 2 break;
478 2 case RBC_CMD_SYNCCACHE:
479 2 retStatus = RBC_SyncCache();
480 2 break;
481 2 case RBC_CMD_VERIFY10:
482 2 retStatus = RBC_Verify();
483 2 break;
484 2 case RBC_CMD_WRITE10:
485 2 retStatus = RBC_Write();
486 2 break;
487 2 case SPC_CMD_INQUIRY:
488 2 retStatus = SPC_Inquiry();
489 2 break;
C51 COMPILER V7.06 RBC 02/17/2004 14:42:23 PAGE 9
490 2 case SPC_CMD_MODESELECT6://0x15
491 2 retStatus = SPC_ModeSelect();
492 2 break;
493 2 case SPC_CMD_MODESENSE6:
494 2 retStatus = SPC_ModeSense();//0x1A
495 2 break;
496 2 case SPC_CMD_PRVENTALLOWMEDIUMREMOVAL:
497 2 retStatus = SPC_LockMedia();
498 2 break;
499 2 case SPC_CMD_TESTUNITREADY: //0x00
500 2 retStatus = SPC_TestUnit();
501 2 break;
502 2 case SPC_CMD_REQUESTSENSE: //0x03
503 2 retStatus = SPC_RequestSense();
504 2 break;
505 2 /* optional commands */
506 2 case RBC_CMD_FORMAT:
507 2 retStatus = RBC_Format();
508 2 break;
509 2 case SPC_CMD_RESERVE6:
510 2 retStatus = SPC_Reserve6();
511 2 break;
512 2 case SPC_CMD_RELEASE6:
513 2 retStatus = SPC_Release6();
514 2 break;
515 2 case SPC_CMD_PERSISTANTRESERVIN:
516 2 retStatus = SPC_PersisReserveIn();
517 2 break;
518 2 case SPC_CMD_PERSISTANTRESERVOUT:
519 2 retStatus = SPC_PersisReserveOut();
520 2 break;
521 2 case SPC_CMD_WRITEBUFFER:
522 2 retStatus = SPC_WriteBuff();
523 2 break;
524 2 case SPC_CMD_READLONG:
525 2 retStatus = SPC_READLONG();//0x23
526 2 break;
527 2 default:
528 2 // Invalid CBW
529 2 TPBulksup_ErrorHandler(CASECBW,0);
530 2 //SCSI_SENSE_ILLEGAL_REQUEST=0x05
531 2 //SCSI_ADSENSE_ILLEGAL_COMMAND=0x20
532 2 RBC_BuildSenseData(SCSI_SENSE_ILLEGAL_REQUEST,SCSI_ADSENSE_ILLEGAL_COMMAND,0);
533 2 TPBulk_CSWHandler();// Goto USBFSM4BOT_CSWPROC;
534 2 break;
535 2 }
536 1
537 1 return retStatus;
538 1 #undef cdbGeneric
539 1 }
540
541
542 /*
543 ////////////////////////////////////////////////////////////////////////////////////
544 // Reduced Block Command Support
545 ////////////////////////////////////////////////////////////////////////////////////
546 */
547
548 BOOLEAN SPC_READLONG(void)
549 {
550 1 BOTXfer_wResidue = CBW_wXferLen;
551 1 TPBulksup_ErrorHandler(CASECMDFAIL,BOTXfer_wResidue);
C51 COMPILER V7.06 RBC 02/17/2004 14:42:23 PAGE 10
552 1 RBC_BuildSenseData(SCSI_SENSE_ILLEGAL_REQUEST,SCSI_ADSENSE_INVALID_CDB,0);
553 1
554 1 TPBulk_CSWHandler();// Goto USBFSM4BOT_CSWPROC;
555 1 return 1;
556 1 }
557
558
559
560 BOOLEAN RBC_Read(void)
561 {
562 1
563 1 #define cdbRead RBC_CDB.RbcCdb_Read
564 1
565 1 Hal4ATA_SectCntInBlk = ATADevExt_IDData.MaximumBlockTransfer << BITNUM4EP2PKT_PER_SECTOR;
566 1 /*
567 1 // Setting ATA Hardware
568 1 */
569 1 ATABF_IDEXfer_dir = 1;
570 1 Hal4ATA_ReadWriteSetting();
571 1
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -