📄 tpbulk.lst
字号:
112 1 TPBulk_CBW.bCBW_LUN=0;
113 1 TPBulk_CBW.bCBW_CDBLen=sizeof(INQUIRY_SPC);
114 1
115 1 /////////////////////////////////
116 1 cdbInquirySPC.OperationCode=SPC_CMD_INQUIRY;
117 1 cdbInquirySPC.EnableVPD=0;
118 1 cdbInquirySPC.CmdSupportData=0;
119 1 cdbInquirySPC.PageCode=0;
120 1 cdbInquirySPC.AllocationLen=0x24;
121 1 cdbInquirySPC.Control=0;
122 1 ////////////////////////////////
123 1 //if(!epBulkRcv(DBUF,5))
124 1 // return FALSE;
125 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
126 1 return FALSE;
127 1 DelayMs(150);
C51 COMPILER V7.20 TPBULK 12/13/2005 15:27:58 PAGE 5
128 1 //len=36;
129 1 if(!epBulkRcv(DBUF,38))
130 1 return FALSE;
131 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
132 1 return FALSE;
133 1 ////////////////////////////////
134 1 return TRUE;
135 1 #undef cdbInquirySPC
136 1 }
137
138 unsigned char SPC_READLONG(void)
139 {
140 1 #define cdbReadLong RBC_CDB.SpcCdb_ReadLong
141 1 //nsigned char retStatus=FALSE;
142 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
143 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
144 1 TPBulk_CBW.dCBW_DataXferLen=0xfc000000;
145 1 TPBulk_CBW.bCBW_Flag=0x80;
146 1 TPBulk_CBW.bCBW_LUN=0;
147 1 TPBulk_CBW.bCBW_CDBLen=sizeof(READ_LONG_CMD);
148 1
149 1 /////////////////////////////////////
150 1 cdbReadLong.OperationCode=SPC_CMD_READLONG;
151 1 cdbReadLong.LogicalUnitNum=0;
152 1 cdbReadLong.AllocationLen=0xfc;
153 1 //////////////////////////////////////
154 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
155 1 return FALSE;
156 1 DelayMs(5);
157 1 //len=36;
158 1 if(!epBulkRcv(DBUF,0xfc))
159 1 return FALSE;
160 1
161 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
162 1 return FALSE;
163 1 ////////////////////////////
164 1 return TRUE;
165 1 #undef cdbReadLong
166 1 }
167 unsigned char SPC_RequestSense(void)
168 {
169 1 #define cdbRequestSenseSPC RBC_CDB.SpcCdb_RequestSense
170 1 //unsigned char retStatus=FALSE;
171 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
172 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
173 1 TPBulk_CBW.dCBW_DataXferLen=0x0e000000;
174 1 TPBulk_CBW.bCBW_Flag=0x80;
175 1 TPBulk_CBW.bCBW_LUN=0;
176 1 TPBulk_CBW.bCBW_CDBLen=sizeof(REQUEST_SENSE_SPC);
177 1
178 1 /////////////////////////////////////
179 1 cdbRequestSenseSPC.OperationCode=SPC_CMD_REQUESTSENSE;
180 1 cdbRequestSenseSPC.AllocationLen=0x0e;
181 1 //////////////////////////////////////
182 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
183 1 return FALSE;
184 1 DelayMs(5);
185 1 //len=36;
186 1 if(!epBulkRcv(DBUF,18))
187 1 return FALSE;
188 1
189 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
C51 COMPILER V7.20 TPBULK 12/13/2005 15:27:58 PAGE 6
190 1 return FALSE;
191 1 /////////////////////////////
192 1 return TRUE;
193 1
194 1 #undef cdbRequestSenseSPC
195 1 }
196 unsigned char SPC_TestUnit(void)
197 {
198 1 #define cdbTestUnit RBC_CDB.SpcCdb_TestUnit
199 1 //unsigned char retStatus=FALSE;
200 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
201 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
202 1 TPBulk_CBW.dCBW_DataXferLen=0x00000000;
203 1 TPBulk_CBW.bCBW_Flag=0x00;
204 1 TPBulk_CBW.bCBW_LUN=0;
205 1 TPBulk_CBW.bCBW_CDBLen=sizeof(TEST_UNIT_SPC);
206 1 /////////////////////////////////////
207 1 cdbTestUnit.OperationCode=SPC_CMD_TESTUNITREADY;
208 1 //////////////////////////////////////
209 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
210 1 return FALSE;
211 1 DelayMs(5);
212 1
213 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
214 1 return FALSE;
215 1 #undef cdbTestUnit
216 1 ////////////////////////////
217 1 return TRUE;
218 1 }
219 unsigned char SPC_LockMedia(void)
220 {
221 1 #define cdbLockSPC RBC_CDB.SpcCdb_Remove
222 1 //unsigned char retStatus=FALSE;
223 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
224 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
225 1 TPBulk_CBW.dCBW_DataXferLen=0x00000000;
226 1 TPBulk_CBW.bCBW_Flag=0x00;
227 1 TPBulk_CBW.bCBW_LUN=0;
228 1 TPBulk_CBW.bCBW_CDBLen=sizeof(MEDIA_REMOVAL_SPC);
229 1 ///////////////////////////////////////////
230 1 cdbLockSPC.OperationCode=SPC_CMD_PRVENTALLOWMEDIUMREMOVAL;
231 1 cdbLockSPC.Prevent=1;
232 1 ///////////////////////////////////////////
233 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
234 1 return FALSE;
235 1 DelayMs(5);
236 1
237 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
238 1 return FALSE;
239 1 #undef cdbLockSPC
240 1 /////////////////////////////
241 1 return TRUE;
242 1 }
243 unsigned char RBC_ReadCapacity(void)
244 {
245 1 #define cdbReadCap RBC_CDB.RbcCdb_ReadCapacity
246 1 //unsigned char retStatus=FALSE;
247 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
248 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
249 1 TPBulk_CBW.bCBW_LUN=0;
250 1 TPBulk_CBW.dCBW_DataXferLen=0x08000000;
251 1 TPBulk_CBW.bCBW_Flag=0x80;
C51 COMPILER V7.20 TPBULK 12/13/2005 15:27:58 PAGE 7
252 1
253 1 TPBulk_CBW.bCBW_CDBLen=sizeof(READ_CAPACITY_RBC);
254 1 /////////////////////////////////////
255 1 cdbReadCap.OperationCode=RBC_CMD_READCAPACITY;
256 1 /////////////////////////////////////
257 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
258 1 return FALSE;
259 1 DelayMs(10);
260 1 //len=36;
261 1 if(!epBulkRcv(DBUF,8))
262 1 return FALSE;
263 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
264 1 return FALSE;
265 1 #undef cdbReadCap
266 1 /////////////////////////////
267 1 return TRUE;
268 1 }
269 unsigned char RBC_Read(unsigned long lba,unsigned char len,unsigned char *pBuffer)
270 {
271 1 #define cdbRead RBC_CDB.RbcCdb_Read
272 1 //unsigned char retStatus=FALSE;
273 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
274 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
275 1 TPBulk_CBW.dCBW_DataXferLen=SwapINT32(len*DeviceInfo.BPB_BytesPerSec);
276 1 TPBulk_CBW.bCBW_Flag=0x80;
277 1 TPBulk_CBW.bCBW_LUN=0;
278 1 TPBulk_CBW.bCBW_CDBLen=sizeof(READ_RBC);
279 1 /////////////////////////////////////
280 1 cdbRead.OperationCode=RBC_CMD_READ10;
281 1 cdbRead.VendorSpecific=0;
282 1 cdbRead.LBA.LBA_W32=lba;
283 1 cdbRead.XferLength=len;
284 1 //cdbRead.Reserved1[0]=0;
285 1 //cdbRead.Reserved1[1]=0;
286 1 //cdbRead.Reserved1[2]=0x40;
287 1 //////////////////////////////////////
288 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
289 1 return FALSE;
290 1 DelayMs(5);
291 1 //len=36;
292 1 if(!epBulkRcv(pBuffer,len*DeviceInfo.BPB_BytesPerSec))
293 1 return FALSE;
294 1 //DelayMs(1);
295 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
296 1 return FALSE;
297 1 #undef cdbRead
298 1 /////////////////////////////
299 1 return TRUE;
300 1 }
301
302 unsigned char RBC_Write(unsigned long lba,unsigned char len,unsigned char *pBuffer)
303 {
304 1 #define cdbWrite RBC_CDB.RbcCdb_Write
305 1 //len=2;
306 1 //unsigned int idata temp;
307 1 //unsigned char i;
308 1 //len=1;
309 1 //SPC_TestUnit();
310 1 //unsigned char retStatus=FALSE;
311 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
312 1 TPBulk_CBW.dCBW_Tag=0xb4D977c1;
313 1 TPBulk_CBW.dCBW_DataXferLen=SwapINT32(len*DeviceInfo.BPB_BytesPerSec);
C51 COMPILER V7.20 TPBULK 12/13/2005 15:27:58 PAGE 8
314 1 TPBulk_CBW.bCBW_Flag=0x0;
315 1 TPBulk_CBW.bCBW_LUN=0;
316 1 TPBulk_CBW.bCBW_CDBLen=sizeof(WRITE_RBC);
317 1 /////////////////////////////////////
318 1 cdbWrite.OperationCode=RBC_CMD_WRITE10;
319 1 cdbWrite.VendorSpecific=0;
320 1 cdbWrite.LBA.LBA_W32=lba;
321 1 cdbWrite.XferLength=len;
322 1 cdbWrite.Reserved2=0;
323 1 cdbWrite.Control=0;
324 1 //////////////////////////////////////
325 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
326 1 return FALSE;
327 1 DelayMs(15);
328 1
329 1 if(!epBulkSend(pBuffer,DeviceInfo.BPB_BytesPerSec))
330 1 return FALSE;
331 1 //DelayMs(10);
332 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
333 1 return FALSE;
334 1
335 1 #undef cdbWrite
336 1
337 1 /////////////////////////////
338 1 return TRUE;
339 1 }
C51 COMPILATION COMPLETE. 0 WARNING(S), 114 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -