📄 tpbulk.lst
字号:
176 1 #define cdbRequestSenseSPC RBC_CDB.SpcCdb_RequestSense
177 1 //unsigned char retStatus=FALSE;
178 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
179 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
C51 COMPILER V6.20c TPBULK 08/21/2003 22:51:01 PAGE 4
180 1 TPBulk_CBW.dCBW_DataXferLen=0x0e000000;
181 1 TPBulk_CBW.bCBW_Flag=0x80;
182 1 TPBulk_CBW.bCBW_LUN=0;
183 1 TPBulk_CBW.bCBW_CDBLen=sizeof(REQUEST_SENSE_SPC);
184 1
185 1 /////////////////////////////////////
186 1 cdbRequestSenseSPC.OperationCode=SPC_CMD_REQUESTSENSE;
187 1 cdbRequestSenseSPC.AllocationLen=0x0e;
188 1 //////////////////////////////////////
189 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
190 1 return FALSE;
191 1
192 1 if(!epBulkRcv(DBUF,18))
193 1 return FALSE;
194 1
195 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
196 1 return FALSE;
197 1 /////////////////////////////
198 1 return TRUE;
199 1
200 1 #undef cdbRequestSenseSPC
201 1 }
202 unsigned char SPC_TestUnit(void)
203 {
204 1 #define cdbTestUnit RBC_CDB.SpcCdb_TestUnit
205 1 //unsigned char retStatus=FALSE;
206 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
207 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
208 1 TPBulk_CBW.dCBW_DataXferLen=0x00000000;
209 1 TPBulk_CBW.bCBW_Flag=0x00;
210 1 TPBulk_CBW.bCBW_LUN=0;
211 1 TPBulk_CBW.bCBW_CDBLen=sizeof(TEST_UNIT_SPC);
212 1 /////////////////////////////////////
213 1 cdbTestUnit.OperationCode=SPC_CMD_TESTUNITREADY;
214 1 //////////////////////////////////////
215 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
216 1 return FALSE;
217 1
218 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
219 1 return FALSE;
220 1 #undef cdbTestUnit
221 1 ////////////////////////////
222 1 return TRUE;
223 1 }
224 unsigned char SPC_LockMedia(void)
225 {
226 1 #define cdbLockSPC RBC_CDB.SpcCdb_Remove
227 1 //unsigned char retStatus=FALSE;
228 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
229 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
230 1 TPBulk_CBW.dCBW_DataXferLen=0x00000000;
231 1 TPBulk_CBW.bCBW_Flag=0x00;
232 1 TPBulk_CBW.bCBW_LUN=0;
233 1 TPBulk_CBW.bCBW_CDBLen=sizeof(MEDIA_REMOVAL_SPC);
234 1 ///////////////////////////////////////////
235 1 cdbLockSPC.OperationCode=SPC_CMD_PRVENTALLOWMEDIUMREMOVAL;
236 1 cdbLockSPC.Prevent=1;
237 1 ///////////////////////////////////////////
238 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
239 1 return FALSE;
240 1
241 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
C51 COMPILER V6.20c TPBULK 08/21/2003 22:51:01 PAGE 5
242 1 return FALSE;
243 1 #undef cdbLockSPC
244 1 /////////////////////////////
245 1 return TRUE;
246 1 }
247 unsigned char RBC_ReadCapacity(void)
248 {
249 1 #define cdbReadCap RBC_CDB.RbcCdb_ReadCapacity
250 1 //unsigned char retStatus=FALSE;
251 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
252 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
253 1 TPBulk_CBW.bCBW_LUN=0;
254 1 TPBulk_CBW.dCBW_DataXferLen=0x08000000;
255 1 TPBulk_CBW.bCBW_Flag=0x80;
256 1
257 1 TPBulk_CBW.bCBW_CDBLen=sizeof(READ_CAPACITY_RBC);
258 1 /////////////////////////////////////
259 1 cdbReadCap.OperationCode=RBC_CMD_READCAPACITY;
260 1 /////////////////////////////////////
261 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
262 1 return FALSE;
263 1
264 1 if(!epBulkRcv(DBUF,8))
265 1 return FALSE;
266 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
267 1 return FALSE;
268 1 #undef cdbReadCap
269 1 /////////////////////////////
270 1 return TRUE;
271 1 }
272 unsigned char RBC_Read(unsigned long lba,unsigned char len,unsigned char *pBuffer)
273 {
274 1 #define cdbRead RBC_CDB.RbcCdb_Read
275 1 //unsigned char retStatus=FALSE;
276 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
277 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
278 1 TPBulk_CBW.dCBW_DataXferLen=SwapINT32(len*DeviceInfo.BPB_BytesPerSec);
279 1 TPBulk_CBW.bCBW_Flag=0x80;
280 1 TPBulk_CBW.bCBW_LUN=0;
281 1 TPBulk_CBW.bCBW_CDBLen=sizeof(READ_RBC);
282 1 /////////////////////////////////////
283 1 cdbRead.OperationCode=RBC_CMD_READ10;
284 1 cdbRead.VendorSpecific=0;
285 1 cdbRead.LBA.LBA_W32=lba;
286 1 cdbRead.XferLength=len;
287 1 //cdbRead.Reserved1[0]=0;
288 1 //cdbRead.Reserved1[1]=0;
289 1 //cdbRead.Reserved1[2]=0x40;
290 1 //////////////////////////////////////
291 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
292 1 return FALSE;
293 1
294 1 if(!epBulkRcv(pBuffer,len*DeviceInfo.BPB_BytesPerSec))
295 1 return FALSE;
296 1 //DelayMs(1);
297 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
298 1 return FALSE;
299 1 #undef cdbRead
300 1 /////////////////////////////
301 1 return TRUE;
302 1 }
303
C51 COMPILER V6.20c TPBULK 08/21/2003 22:51:01 PAGE 6
304 unsigned char RBC_Write(unsigned long lba,unsigned char len,unsigned char *pBuffer)
305 {
306 1 #define cdbWrite RBC_CDB.RbcCdb_Write
307 1 //len=2;
308 1 //unsigned int idata temp;
309 1 //unsigned char i;
310 1 //len=1;
311 1 //SPC_TestUnit();
312 1 //unsigned char retStatus=FALSE;
313 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
314 1 TPBulk_CBW.dCBW_Tag=0xb4D977c1;
315 1 TPBulk_CBW.dCBW_DataXferLen=SwapINT32(len*DeviceInfo.BPB_BytesPerSec);
316 1 TPBulk_CBW.bCBW_Flag=0x0;
317 1 TPBulk_CBW.bCBW_LUN=0;
318 1 TPBulk_CBW.bCBW_CDBLen=sizeof(WRITE_RBC);
319 1 /////////////////////////////////////
320 1 cdbWrite.OperationCode=RBC_CMD_WRITE10;
321 1 cdbWrite.VendorSpecific=0;
322 1 cdbWrite.LBA.LBA_W32=lba;
323 1 cdbWrite.XferLength=len;
324 1 cdbWrite.Reserved2=0;
325 1 cdbWrite.Control=0;
326 1 //////////////////////////////////////
327 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
328 1 return FALSE;
329 1 DelayMs(35);
330 1
331 1 if(!epBulkSend(pBuffer,len*DeviceInfo.BPB_BytesPerSec))
332 1 return FALSE;
333 1
334 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
335 1 return FALSE;
336 1
337 1 #undef cdbWrite
338 1
339 1 /////////////////////////////
340 1 return TRUE;
341 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1446 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 22
IDATA SIZE = 31 ----
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 + -