📄 bulk_only.lst
字号:
171 1 bulk_CSW[5] = Bulk_Out_Buf[5];
172 1 bulk_CSW[6] = Bulk_Out_Buf[6];
173 1 bulk_CSW[7] = Bulk_Out_Buf[7];
174 1
175 1 // for(i=0;i<4;i++) bulk_CBW.dCBWDataTransferLength = (bulk_CBW.dCBWDataTransferLength<<8) +*(EpBuf+11-i);
176 1 // bulk_CBW.bmCBWFlags = *(EpBuf+12);
177 1 // bulk_CBW.bCBWLUN = *(EpBuf+13)&0x0f;
178 1 // bulk_CBW.bCBWCBLength = *(EpBuf+14)&0x1f;
179 1
C51 COMPILER V6.23a BULK_ONLY 11/27/2003 16:46:10 PAGE 4
180 1 for(i=0;i<12;i++)
181 1 bulk_CBW.CBWCB [i] = Bulk_Out_Buf[i+15];
182 1 // printu("\n\nSCSI:");
183 1 // for(j=0;j<12;j++) {printuf("%x ",bulk_CBW.CBWCB[j]);}
184 1
185 1 switch(bulk_CBW.CBWCB[0]){
186 2 // case 0x04 :SCSI_Reserved();break;
187 2 case Inquiry :SCSI_Inquiry();break;
188 2 // case 0x55 :SCSI_Reserved();break;
189 2 case Mode_Sense :SCSI_Mode_Sense();break;
190 2 case Read10 :SCSI_Read10();break;
191 2 // case 0xA8 :SCSI_Reserved();break;
192 2 case Read_Capacity :SCSI_Read_Capacity();break;
193 2 case Read_Format_Capacities :SCSI_Read_Format_Capacities();break;
194 2 // case 0x03 :SCSI_Reserved();break;
195 2 // case 0x01 :SCSI_Reserved();break;
196 2 // case 0x2B :SCSI_Reserved();break;
197 2 // case 0x1D :SCSI_Reserved();break;
198 2 // case 0x1B :SCSI_Reserved();break;
199 2 case Test_Unit_Ready :SCSI_Test_Unit_Ready();break;
200 2 case Verify :SCSI_Verify();break;
201 2 case Write10 :SCSI_Write10();break;
202 2 // case 0xAA :SCSI_Reserved();break;
203 2 // case 0x2E :SCSI_Reserved();break;
204 2 case Medium_Removal :SCSI_Medium_Removal();break;
205 2 default :SCSI_Reserved();break;
206 2 }
207 1
208 1 }
209
210 void SCSI_Inquiry()
211 {
212 1 printu("SCSI_Inquiry\n");
213 1 bulk_state = BULK_DATA_END;
214 1 WriteEpBulk(1, sizeof(B_InquiryData), B_InquiryData);
215 1
216 1 }
217
218
219 void SCSI_Read_Format_Capacities()
220 {
221 1 printu("SCSI_Read_Format_Capacities\n");
222 1 if(bulk_CBW.CBWCB[7]==0 && bulk_CBW.CBWCB[8]==0)
223 1 return;
224 1 bulk_state = BULK_DATA_END;
225 1 WriteEpBulk(1, sizeof(B_Read_Format_capacities), B_Read_Format_capacities);
226 1 }
227
228
229 void SCSI_Read_Capacity()
230 {
231 1 printu("SCSI_Read_Capacity\n");
232 1 bulk_state = BULK_DATA_END;
233 1 WriteEpBulk(1, sizeof(B_Read_Capacity), B_Read_Capacity);
234 1
235 1 }
236
237 void SCSI_Read10()
238 {
239 1 printu("SCSI_Read10\n");
240 1
241 1 }
C51 COMPILER V6.23a BULK_ONLY 11/27/2003 16:46:10 PAGE 5
242
243 void TransDataGoOn()
244 {
245 1 printu("TransDataGoOn\n");
246 1
247 1 }
248
249 void SCSI_Write10()
250 {
251 1 printu("SCSI_Write10\n");
252 1 }
253
254
255 void RecieveData()
256 {
257 1 printu("RecieveData\n");
258 1
259 1 }
260
261 void SCSI_Mode_Sense()
262 {
263 1 printu("SCSI_Mode_Sense\n");
264 1 dDataResiduce=bulk_CBW.dCBWDataTransferLength;
265 1
266 1 if(bulk_CBW.CBWCB[2] == SCSI_MSPGCD_TPP){ //Page Code=Timer and Potect Page
267 2 bulk_state = BULK_DATA_END;
268 2 WriteEpBulk(1, sizeof(B_Mode_Sense_TPP), B_Mode_Sense_TPP);
269 2 }
270 1 else if(bulk_CBW.CBWCB[2] == SCSI_MSPGCD_RETALL){
271 2 bulk_state = BULK_DATA_END;
272 2 WriteEpBulk(1, sizeof(B_Mode_Sense_ALL), B_Mode_Sense_ALL);
273 2 }
274 1 else {
275 2 bulk_state = BULK_DATA_END;
276 2 WriteEpBulk(1, sizeof(B_Mode_Sense_ZERO), B_Mode_Sense_ZERO);
277 2 }
278 1 }
279
280 void SCSI_Medium_Removal()
281 {
282 1 printu("SCSI_Medium_Removal\n");
283 1 TransmitCSW();
284 1 }
285
286 void SCSI_Test_Unit_Ready()
287 {
288 1 printu("SCSI_Test_Unit_Ready\n");
289 1 TransmitCSW();
290 1 }
291
292
293 void TransmitCSW()
294 {
295 1 printu("TransmitCSW\n");
296 1 WriteEpBulk(1, sizeof(bulk_CSW), bulk_CSW);
297 1 bulk_state = BULK_CSW_END;
298 1
299 1 }
300
301
302
303 void TransRequestGoOn()
C51 COMPILER V6.23a BULK_ONLY 11/27/2003 16:46:10 PAGE 6
304 {
305 1 printu("TransRequestGoOn\n");
306 1 if(dDataResiduce>0x40) {
307 2 dDataResiduce -= 0x40;
308 2 bulk_state = BULK_REQEST_TRANS;
309 2 nBufCount +=0x40;
310 2 WriteEpBulk(1, 64, pCurrentBuf+nBufCount);
311 2 }
312 1 else {
313 2 bulk_state = BULK_DATA_END;
314 2 nBufCount +=0x40;
315 2 WriteEpBulk(1, dDataResiduce, pCurrentBuf+nBufCount);
316 2 nBufCount=0; //prepare for nexe into
317 2 }
318 1 }
319
320
321
322
323
324
325 void SCSI_Reserved()
326 {
327 1 printuf("\nUFI Function 0x%x doesn't Defined!",bulk_CBW.CBWCB[0]);
328 1
329 1 }
330
331
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 651 ----
CONSTANT SIZE = 372 ----
XDATA SIZE = 654 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -