📄 tpbulk.lst
字号:
151 1
152 1 #undef cdbRequestSenseSPC
153 1 }
154 unsigned char SPC_TestUnit(void)
155 {
156 1 #define cdbTestUnit RBC_CDB.SpcCdb_TestUnit
157 1 //unsigned char retStatus=FALSE;
158 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
159 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
160 1 TPBulk_CBW.dCBW_DataXferLen=0x00000000;
161 1 TPBulk_CBW.bCBW_Flag=0x00;
162 1 TPBulk_CBW.bCBW_LUN=0;
163 1 TPBulk_CBW.bCBW_CDBLen=sizeof(TEST_UNIT_SPC);
164 1 /////////////////////////////////////
165 1 cdbTestUnit.OperationCode=SPC_CMD_TESTUNITREADY;
166 1 //////////////////////////////////////
167 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
168 1 return FALSE;
169 1
170 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
171 1 return FALSE;
172 1 #undef cdbTestUnit
173 1 ////////////////////////////
174 1 return TRUE;
175 1 }
176 unsigned char SPC_LockMedia(void)
177 {
178 1 #define cdbLockSPC RBC_CDB.SpcCdb_Remove
179 1 //unsigned char retStatus=FALSE;
C51 COMPILER V7.00 TPBULK 09/22/2005 17:15:30 PAGE 4
180 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
181 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
182 1 TPBulk_CBW.dCBW_DataXferLen=0x00000000;
183 1 TPBulk_CBW.bCBW_Flag=0x00;
184 1 TPBulk_CBW.bCBW_LUN=0;
185 1 TPBulk_CBW.bCBW_CDBLen=sizeof(MEDIA_REMOVAL_SPC);
186 1 ///////////////////////////////////////////
187 1 cdbLockSPC.OperationCode=SPC_CMD_PRVENTALLOWMEDIUMREMOVAL;
188 1 cdbLockSPC.Prevent=1;
189 1 ///////////////////////////////////////////
190 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
191 1 return FALSE;
192 1
193 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
194 1 return FALSE;
195 1 #undef cdbLockSPC
196 1 /////////////////////////////
197 1 return TRUE;
198 1 }
199 unsigned char RBC_ReadCapacity(void)
200 {
201 1 #define cdbReadCap RBC_CDB.RbcCdb_ReadCapacity
202 1 //unsigned char retStatus=FALSE;
203 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
204 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
205 1 TPBulk_CBW.bCBW_LUN=0;
206 1 TPBulk_CBW.dCBW_DataXferLen=0x08000000;
207 1 TPBulk_CBW.bCBW_Flag=0x80;
208 1
209 1 TPBulk_CBW.bCBW_CDBLen=sizeof(READ_CAPACITY_RBC);
210 1 /////////////////////////////////////
211 1 cdbReadCap.OperationCode=RBC_CMD_READCAPACITY;
212 1 /////////////////////////////////////
213 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
214 1 return FALSE;
215 1
216 1 if(!epBulkRcv(DBUF,8))
217 1 return FALSE;
218 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
219 1 return FALSE;
220 1 #undef cdbReadCap
221 1 /////////////////////////////
222 1 return TRUE;
223 1 }
224 unsigned char RBC_Read(unsigned long lba,unsigned char len,unsigned char *pBuffer)
225 {
226 1 #define cdbRead RBC_CDB.RbcCdb_Read
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=SwapINT32(len*deviceinfo.BytePerSec);
231 1 TPBulk_CBW.bCBW_Flag=0x80;
232 1 TPBulk_CBW.bCBW_LUN=0;
233 1 TPBulk_CBW.bCBW_CDBLen=sizeof(READ_RBC);
234 1 /////////////////////////////////////
235 1 cdbRead.OperationCode=RBC_CMD_READ10;
236 1 cdbRead.VendorSpecific=0;
237 1 cdbRead.LBA.LBA_W32=lba;
238 1 cdbRead.XferLength=len;
239 1 //cdbRead.Reserved1[0]=0;
240 1 //cdbRead.Reserved1[1]=0;
241 1 //cdbRead.Reserved1[2]=0x40;
C51 COMPILER V7.00 TPBULK 09/22/2005 17:15:30 PAGE 5
242 1 //////////////////////////////////////
243 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
244 1 return FALSE;
245 1
246 1 if(!epBulkRcv(pBuffer,len*deviceinfo.BytePerSec))
247 1 return FALSE;
248 1 //DelayMs(1);
249 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
250 1 return FALSE;
251 1 #undef cdbRead
252 1 /////////////////////////////
253 1 return TRUE;
254 1 }
255
256 unsigned char RBC_Write(unsigned long lba,unsigned char len,unsigned char *pBuffer)
257 {
258 1 #define cdbWrite RBC_CDB.RbcCdb_Write
259 1 //len=2;
260 1 //unsigned int idata temp;
261 1 //unsigned char i;
262 1 //len=1;
263 1 //SPC_TestUnit();
264 1 //unsigned char retStatus=FALSE;
265 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
266 1 TPBulk_CBW.dCBW_Tag=0xb4D977c1;
267 1 TPBulk_CBW.dCBW_DataXferLen=SwapINT32(len*deviceinfo.BytePerSec);
268 1 TPBulk_CBW.bCBW_Flag=0x0;
269 1 TPBulk_CBW.bCBW_LUN=0;
270 1 TPBulk_CBW.bCBW_CDBLen=sizeof(WRITE_RBC);
271 1
272 1 cdbWrite.OperationCode=RBC_CMD_WRITE10;
273 1 cdbWrite.VendorSpecific=0;
274 1 cdbWrite.LBA.LBA_W32=lba;
275 1 cdbWrite.XferLength=len;
276 1 cdbWrite.Reserved2=0;
277 1 cdbWrite.Control=0;
278 1
279 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
280 1 return FALSE;
281 1 DelayMs(35);
282 1
283 1 if(!epBulkSend(pBuffer,len*deviceinfo.BytePerSec))
284 1 return FALSE;
285 1
286 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
287 1 return FALSE;
288 1
289 1 #undef cdbWrite
290 1
291 1 return TRUE;
292 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1073 ----
CONSTANT SIZE = 3 ----
XDATA SIZE = ---- 16
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = 31 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V7.00 TPBULK 09/22/2005 17:15:30 PAGE 6
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -