📄 rbc.lst
字号:
862 3 TPBulksup_ErrorHandler(CASE13,BOTXfer_wResidue);
863 3 RBC_BuildSenseData(SCSI_SENSE_ILLEGAL_REQUEST,SCSI_ADSENSE_INVALID_PARAMETER,0);
864 3
865 3 //retStatus = FALSE;
866 3 TPBulk_CSWHandler();// Goto USBFSM4BOT_CSWPROC;
867 3 return retStatus;
868 3 }
869 2 else if(CBW_wXferLen == BOTXfer_wResidue)
870 2 {
871 3 TPBulksup_ErrorHandler(CASE12,BOTXfer_wResidue);
872 3 RBC_BuildSenseData(SCSI_SENSE_NO_SENSE,0,0);
873 3 retStatus = TRUE;
874 3 }
875 2 else
876 2 {
877 3 TPBulksup_ErrorHandler(CASE11,BOTXfer_wResidue);
878 3 RBC_BuildSenseData(SCSI_SENSE_NO_SENSE,0,0);
879 3 retStatus = TRUE;
880 3 }
881 2
882 2 BOTFSMstate = USBFSM4BOT_DATAOUT;
883 2 }
884 1 else
885 1 {
886 2 BOTXfer_wResidue = CBW_wXferLen;
887 2 TPBulksup_ErrorHandler(CASECMDFAIL,BOTXfer_wResidue);
888 2 RBC_BuildSenseData(SCSI_SENSE_ILLEGAL_REQUEST,SCSI_ADSENSE_INVALID_CDB,0);
889 2
890 2 //retStatus = FALSE;
891 2 TPBulk_CSWHandler();// Goto USBFSM4BOT_CSWPROC;
892 2 }
893 1
894 1 return retStatus;
895 1
896 1 #undef cdbModeSelectSPC
897 1 }
898
899 BOOLEAN SPC_ModeSense(void)
900 {
901 1 #define cdbModeSenseSPC RBC_CDB.SpcCdb_ModeSense
902 1 BOOLEAN retStatus = FALSE;
903 1
904 1 if(cdbModeSenseSPC.PageCode == MODE_PAGE_RBC_DEVICE_PARAMETERS )
905 1 {
906 2 switch(cdbModeSenseSPC.PageControl)
907 2 {
908 3 case PAGECTRL_CHANGEABLE:
909 3
910 3 BOTXfer_pData =(PINT8) &ParaHeadMask;
911 3 BOTXfer_wResidue = sizeof(PARAMETER_LIST_LENGTH);
912 3 break;
913 3
914 3 case PAGECTRL_DEFAULT:
915 3 case PAGECTRL_CURRENT:
916 3
917 3 BOTXfer_pData =(PINT8) &DefaultParaHead;
918 3 BOTXfer_wResidue = sizeof(PARAMETER_LIST_LENGTH);
919 3 break;
920 3
921 3 case PAGECTRL_SAVED:
922 3 default:
923 3 //retStatus = FALSE;
C51 COMPILER V7.06 RBC 02/17/2004 14:42:23 PAGE 16
924 3 TPBulksup_ErrorHandler(CASECMDFAIL,BOTXfer_wResidue);
925 3 RBC_BuildSenseData(SCSI_SENSE_ILLEGAL_REQUEST,SCSI_ADSENSE_SAVE_ERROR,0);
926 3 TPBulk_CSWHandler();// Goto USBFSM4BOT_CSWPROC;
927 3 break;
928 3 }
929 2
930 2 if(CBW_wXferLen < BOTXfer_wResidue)
931 2 {
932 3 BOTXfer_wResidue = CBW_wXferLen;
933 3 TPBulksup_ErrorHandler(CASE6,BOTXfer_wResidue);
934 3 RBC_BuildSenseData(SCSI_SENSE_NO_SENSE,0,0);
935 3 }
936 2 else if(CBW_wXferLen == BOTXfer_wResidue)
937 2 {
938 3 TPBulksup_ErrorHandler(CASE6,BOTXfer_wResidue);
939 3 RBC_BuildSenseData(SCSI_SENSE_NO_SENSE,0,0);
940 3 }
941 2 else
942 2 {
943 3 TPBulksup_ErrorHandler(CASE5,BOTXfer_wResidue);
944 3 RBC_BuildSenseData(SCSI_SENSE_NO_SENSE,0,0);
945 3 }
946 2
947 2 retStatus = TRUE;
948 2 BOTFSMstate = USBFSM4BOT_DATAIN;// Goto USBFSM4BOT_DATAIN
949 2 }
950 1 else
951 1 {
952 2 //retStatus = FALSE;
953 2 TPBulksup_ErrorHandler(CASECMDFAIL,BOTXfer_wResidue);
954 2 RBC_BuildSenseData(SCSI_SENSE_ILLEGAL_REQUEST,SCSI_ADSENSE_INVALID_CDB,0);
955 2 TPBulk_CSWHandler();// Goto USBFSM4BOT_CSWPROC;
956 2 }
957 1
958 1 return retStatus;
959 1 #undef cdbModeSenseSPC
960 1 }
961
962 BOOLEAN SPC_LockMedia(void)
963 {
964 1 #define cdbLockSPC RBC_CDB.SpcCdb_Remove
965 1
966 1
967 1 RBC_PropertyData.bits.MediumRemovFlag = cdbLockSPC.Prevent;
968 1
969 1 if (RBC_PropertyData.bits.MediumRemovFlag == 01)
970 1 IDE_CS = 0;
971 1 else
972 1 IDE_CS = 1;
973 1 TPBulksup_ErrorHandler(CASE1,0);
974 1 RBC_BuildSenseData(SCSI_SENSE_NO_SENSE,0,0);
975 1 TPBulk_CSWHandler();// Goto USBFSM4BOT_CSWPROC;
976 1 return TRUE;
977 1
978 1 #undef cdbLockSPC
979 1 }
980
981 BOOLEAN SPC_TestUnit(void)
982 {
983 1 #define cdbTestUnit RBC_CDB.SpcCdb_TestUnit
984 1
985 1
C51 COMPILER V7.06 RBC 02/17/2004 14:42:23 PAGE 17
986 1 if( ATABF_IsAttached )
987 1 {
988 2 TPBulksup_ErrorHandler(CASE1,0);
989 2 RBC_BuildSenseData(SCSI_SENSE_NO_SENSE,0,0);
990 2 }
991 1 else
992 1 {
993 2 TPBulksup_ErrorHandler(CASECMDFAIL,0);
994 2 RBC_BuildSenseData(SCSI_SENSE_NOT_READY,SCSI_ADSENSE_NO_MEDIA_IN_DEVICE,0);
995 2 }
996 1
997 1 TPBulk_CSWHandler();// Goto USBFSM4BOT_CSWPROC;
998 1 return TRUE;
999 1
1000 1 #undef cdbTestUnit
1001 1 }
1002
1003 BOOLEAN SPC_RequestSense(void)
1004 {
1005 1 #define cdbRequestSenseSPC RBC_CDB.SpcCdb_RequestSense
1006 1
1007 1 /*
1008 1 // Adjust TPBulkXfer Paras
1009 1 */
1010 1
1011 1 Xfer_Space &= BOTXFERSPACE_MASK;
1012 1 // BOTXfer_atRAM = 1;
1013 1 BOTXfer_atROM = 1;
1014 1
1015 1 BOTXfer_pData =(PINT8)&Req_SenseData ;
1016 1 BOTXfer_wResidue = sizeof(Req_SenseData);
1017 1
1018 1 TPBulksup_ErrorHandler(CASE6,BOTXfer_wResidue);
1019 1
1020 1 BOTFSMstate = USBFSM4BOT_DATAIN;
1021 1
1022 1 return TRUE;
1023 1 #undef cdbRequestSenseSPC
1024 1 }
1025
1026 //Optional
1027 BOOLEAN RBC_Format(void)
1028 {
1029 1 TPBulksup_ErrorHandler(CASECMDFAIL,0);
1030 1 RBC_BuildSenseData(SCSI_SENSE_MEDIUM_ERROR,SCSI_ADSENSE_FORMAT_ERROR,0x01);
1031 1 TPBulk_CSWHandler();// Goto USBFSM4BOT_CSWPROC;
1032 1 return TRUE;
1033 1
1034 1 }
1035
1036 BOOLEAN SPC_Reserve6(void)
1037 {
1038 1 TPBulksup_ErrorHandler(CASECMDFAIL,0);
1039 1 RBC_BuildSenseData(SCSI_SENSE_ILLEGAL_REQUEST,SCSI_ADSENSE_ILLEGAL_COMMAND,0);
1040 1 TPBulk_CSWHandler();// Goto USBFSM4BOT_CSWPROC;
1041 1 return TRUE;
1042 1 }
1043
1044 BOOLEAN SPC_Release6(void)
1045 {
1046 1 TPBulksup_ErrorHandler(CASECMDFAIL,0);
1047 1 RBC_BuildSenseData(SCSI_SENSE_ILLEGAL_REQUEST,SCSI_ADSENSE_ILLEGAL_COMMAND,0);
C51 COMPILER V7.06 RBC 02/17/2004 14:42:23 PAGE 18
1048 1 TPBulk_CSWHandler();// Goto USBFSM4BOT_CSWPROC;
1049 1 return TRUE;
1050 1 }
1051
1052 BOOLEAN SPC_PersisReserveIn(void)
1053 {
1054 1 TPBulksup_ErrorHandler(CASECMDFAIL,0);
1055 1 RBC_BuildSenseData(SCSI_SENSE_ILLEGAL_REQUEST,SCSI_ADSENSE_ILLEGAL_COMMAND,0);
1056 1 TPBulk_CSWHandler();// Goto USBFSM4BOT_CSWPROC;
1057 1 return TRUE;
1058 1
1059 1 }
1060
1061 BOOLEAN SPC_PersisReserveOut(void)
1062 {
1063 1
1064 1 //Just Retrieve and discard data from USB FIFO
1065 1
1066 1 Xfer_Space &= BOTXFERSPACE_MASK;
1067 1 BOTXfer_atROM = 1;
1068 1
1069 1 BOTXfer_pData = (PINT8)0;
1070 1 BOTXfer_wResidue = CBW_wXferLen;
1071 1
1072 1 TPBulksup_ErrorHandler(CASECMDFAIL,BOTXfer_wResidue);
1073 1 RBC_BuildSenseData(SCSI_SENSE_ILLEGAL_REQUEST,SCSI_ADSENSE_ILLEGAL_COMMAND,0);
1074 1
1075 1 BOTFSMstate = USBFSM4BOT_DATAOUT;
1076 1
1077 1 return TRUE;
1078 1 }
1079
1080 BOOLEAN SPC_WriteBuff(void)
1081 {
1082 1 #define cdbWriteBuff RBC_CDB.SpcCdb_WriteBuffer
1083 1
1084 1 //Just Retrieve and discard data from USB FIFO
1085 1
1086 1 Xfer_Space &= BOTXFERSPACE_MASK;
1087 1 BOTXfer_atROM = 1;
1088 1
1089 1 BOTXfer_pData = (PINT8)0;
1090 1 BOTXfer_wResidue = CBW_wXferLen;
1091 1
1092 1 TPBulksup_ErrorHandler(CASECMDFAIL,BOTXfer_wResidue);
1093 1 RBC_BuildSenseData(SCSI_SENSE_ILLEGAL_REQUEST,SCSI_ADSENSE_CMDSEQ_ERROR,0);
1094 1
1095 1 BOTFSMstate = USBFSM4BOT_DATAOUT;
1096 1
1097 1 return TRUE;
1098 1 #undef cdbWriteBuff
1099 1 }
1100
1101
1102
1103 void RBC_BuildSenseData(INT8 SenseKey, INT8 ASC, INT8 ASCQ)
1104 {
1105 1
1106 1 /*
1107 1 RBC_SenseData.ResponseCode = SCSI_RESPONSECODE_CURRENT_ERROR;
1108 1 RBC_SenseData.Valid = 0;
1109 1 //RBC_SenseData.SegmentNum = 0;
C51 COMPILER V7.06 RBC 02/17/2004 14:42:23 PAGE 19
1110 1 RBC_SenseData.SenseKey = SenseKey;
1111 1 //RBC_SenseData.Reserved0 = 0;
1112 1 //RBC_SenseData.WrongLenIndicator = 0;
1113 1 //RBC_SenseData.EndofMedium = 0;
1114 1 //RBC_SenseData.FileMark = 0;
1115 1 //RBC_SenseData.Info_0 = 0;
1116 1 //RBC_SenseData.Info_1 = 0;
1117 1 //RBC_SenseData.Info_2 = 0;
1118 1 //RBC_SenseData.Info_3 = 0;
1119 1 RBC_SenseData.AdditionalSenseLen = 0xa;
1120 1 //RBC_SenseData.CommandSpecInfo_0 = 0;
1121 1 //RBC_SenseData.CommandSpecInfo_1 = 0;
1122 1 //RBC_SenseData.CommandSpecInfo_2 = 0;
1123 1 //RBC_SenseData.CommandSpecInfo_3 = 0;
1124 1 RBC_SenseData.ASC = ASC;
1125 1 RBC_SenseData.ASCQ = ASCQ;
1126 1 //RBC_SenseData.FieldReplacableUnitCode = 0;
1127 1 //RBC_SenseData.SenseKeySpec_0 = 0;
1128 1 //RBC_SenseData.SenseKeySpecValid = 0;
1129 1 //RBC_SenseData.SenseKeySpec_1 = 0;
1130 1 //RBC_SenseData.SenseKeySpec_2 = 0;
1131 1 */
1132 1 }
*** WARNING C280 IN LINE 1103 OF RBC.C: 'SenseKey': unreferenced local variable
*** WARNING C280 IN LINE 1103 OF RBC.C: 'ASC': unreferenced local variable
*** WARNING C280 IN LINE 1103 OF RBC.C: 'ASCQ': unreferenced local variable
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1427 ----
CONSTANT SIZE = 216 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 3
IDATA SIZE = ---- ----
BIT SIZE = ---- 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 3 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -