您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ Bot_Abort函数代码示例

51自学网 2021-06-01 19:55:34
  C++
这篇教程C++ Bot_Abort函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中Bot_Abort函数的典型用法代码示例。如果您正苦于以下问题:C++ Bot_Abort函数的具体用法?C++ Bot_Abort怎么用?C++ Bot_Abort使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了Bot_Abort函数的22个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: Mass_Storage_Out

/******************************************************************************** Function Name  : Mass_Storage_Out* Description    : Mass Storage OUT transfer.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void Mass_Storage_Out (void){  u8 CMD;  CMD = CBW.CB[0];  Data_Len = GetEPRxCount(ENDP2);  PMAToUserBufferCopy(Bulk_Data_Buff, ENDP2_RXADDR, Data_Len);  switch (Bot_State)  {    case BOT_IDLE:      CBW_Decode();      break;    case BOT_DATA_OUT:      if (CMD == SCSI_WRITE10)      {        SCSI_Write10_Cmd(SCSI_LBA , SCSI_BlkLen);        break;      }      Bot_Abort(DIR_OUT);      Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);      Set_CSW (CSW_PHASE_ERROR, SEND_CSW_DISABLE);      break;    default:      Bot_Abort(BOTH_DIR);      Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);      Set_CSW (CSW_PHASE_ERROR, SEND_CSW_DISABLE);      break;  }}
开发者ID:matthiasbock,项目名称:DSOQuad_SourceCode,代码行数:37,


示例2: Mass_Storage_Out

/******************************************************************************** Function Name  : Mass_Storage_Out* Description    : Mass Storage OUT transfer.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void Mass_Storage_Out (void){  uint8_t CMD;  CMD = CBW.CB[0];  Data_Len = USB_SIL_Read(EP5_OUT, Bulk_Data_Buff);  switch (Bot_State)  {    case BOT_IDLE:      CBW_Decode();      break;    case BOT_DATA_OUT:      if (CMD == SCSI_WRITE10)      {        SCSI_Write10_Cmd(CBW.bLUN , SCSI_LBA , SCSI_BlkLen);        break;      }      Bot_Abort(DIR_OUT);      Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);      Set_CSW (CSW_PHASE_ERROR, SEND_CSW_DISABLE);      break;    default:      Bot_Abort(BOTH_DIR);      Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);      Set_CSW (CSW_PHASE_ERROR, SEND_CSW_DISABLE);      break;  }  //az#ifndef STM32F10X_CL  /* Enable the receive of data on EP3 */  SetEPRxValid(ENDP5);#endif /* STM32F10X_CL */}
开发者ID:AndrewZamansky,项目名称:uCProjects,代码行数:42,


示例3: SCSI_Address_Management

/******************************************************************************** Function Name  : SCSI_Address_Management* Description    : Test the received address.* Input          : u8 Cmd : the command can be SCSI_READ10 or SCSI_WRITE10.* Output         : None.* Return         : Read/Write status (bool).*******************************************************************************/bool SCSI_Address_Management(u8 Cmd , u32 LBA , u32 BlockNbr){  if ((LBA + BlockNbr) > Mass_Block_Count )  {    if (Cmd == SCSI_WRITE10)    {      Bot_Abort(BOTH_DIR);    }    Bot_Abort(DIR_IN);    Set_Scsi_Sense_Data(ILLEGAL_REQUEST, ADDRESS_OUT_OF_RANGE);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);    return false;  }  if (CBW.dDataLength != BlockNbr * Mass_Block_Size)  {    if (Cmd == SCSI_WRITE10)    {      Bot_Abort(BOTH_DIR);    }    else    {      Bot_Abort(DIR_IN);    }    Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);    return false;  }  return true;}
开发者ID:PetteriAimonen,项目名称:dsoquad-BIOS,代码行数:39,


示例4: Mass_Storage_Out

/******************************************************************************** Function Name  : Mass_Storage_Out* Description    : Mass Storage OUT transfer.* Input          : None.* Output         : None.* Return         : None.//USB->设备*******************************************************************************/void Mass_Storage_Out (void){	u8 CMD;	USB_STATUS_REG|=0X10;//标记轮询		CMD = CBW.CB[0];	Data_Len = GetEPRxCount(ENDP4);	PMAToUserBufferCopy(Bulk_Data_Buff, ENDP4_RXADDR, Data_Len);//printf("Bot_State_out:%d;Data_Len=%d",Bot_State,Data_Len);	switch (Bot_State)	{		case BOT_IDLE:			CBW_Decode();			break;		case BOT_DATA_OUT://USB发送数据到设备			if (CMD == SCSI_WRITE10)			{				USB_STATUS_REG|=0X01;//标记正在写数据				SCSI_Write10_Cmd(CBW.bLUN , SCSI_LBA , SCSI_BlkLen);				break;			}			Bot_Abort(DIR_OUT);			Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);			Set_CSW (CSW_PHASE_ERROR, SEND_CSW_DISABLE);			break;		default:			Bot_Abort(BOTH_DIR);			Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);			Set_CSW (CSW_PHASE_ERROR, SEND_CSW_DISABLE);			break;	}}
开发者ID:blackmiaool,项目名称:cattyware,代码行数:40,


示例5: SCSI_Address_Management

/******************************************************************************** Function Name  : SCSI_Address_Management* Description    : Test the received address.* Input          : uint8_t Cmd : the command can be SCSI_READ10 or SCSI_WRITE10.* Output         : None.* Return         : Read/Write status (bool).*******************************************************************************/bool SCSI_Address_Management(uint8_t lun , uint8_t Cmd , uint32_t LBA , uint32_t BlockNbr){  if ((LBA + BlockNbr) > Mass_Block_Count[lun] )  {    if (Cmd == SCSI_WRITE10)    {      Bot_Abort(BOTH_DIR);    }    Bot_Abort(DIR_IN);    Set_Scsi_Sense_Data(lun, ILLEGAL_REQUEST, ADDRESS_OUT_OF_RANGE);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);    return (FALSE);  }  if (CBW.dDataLength != BlockNbr * Mass_Block_Size[lun])  {    if (Cmd == SCSI_WRITE10)    {      Bot_Abort(BOTH_DIR);    }    else    {      Bot_Abort(DIR_IN);    }    Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);    return (FALSE);  }  return (TRUE);}
开发者ID:crystalfontz,项目名称:cfa_735_simple,代码行数:39,


示例6: Mass_Storage_Out

/******************************************************************************** Function Name  : Mass_Storage_Out* Description    : Mass Storage OUT transfer.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void Mass_Storage_Out (void){  u8 CMD;  CMD = CBW.CB[0];  Data_Len = USB_SIL_Read(EP2_OUT, Bulk_Data_Buff);  switch (Bot_State)  {    case BOT_IDLE:      CBW_Decode();      break;    case BOT_DATA_OUT:      if (CMD == SCSI_WRITE10)      {        SCSI_Write10_Cmd(CBW.bLUN , SCSI_LBA , SCSI_BlkLen);        break;      }      Bot_Abort(DIR_OUT);      Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);      Set_CSW (CSW_PHASE_ERROR, SEND_CSW_DISABLE);      break;    default:      Bot_Abort(BOTH_DIR);      Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);      Set_CSW (CSW_PHASE_ERROR, SEND_CSW_DISABLE);      break;  }}
开发者ID:joe3501,项目名称:BlueRing,代码行数:36,


示例7: SCSI_Write10_Cmd

/******************************************************************************** Function Name  : SCSI_Write10_Cmd* Description    : SCSI Write10 Command routine.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void SCSI_Write10_Cmd(u32 LBA , u32 BlockNbr){  if (Bot_State == BOT_IDLE)  {    if (!(SCSI_Address_Management(SCSI_WRITE10 , LBA, BlockNbr)))/*address out of range*/    {      return;    }    if ((CBW.bmFlags & 0x80) == 0)    {      Bot_State = BOT_DATA_OUT;      SetEPRxStatus(ENDP2, EP_RX_VALID);    }    else    {      Bot_Abort(DIR_IN);      Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);      Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);    }    return;  }  else if (Bot_State == BOT_DATA_OUT)  {    Write_Memory(LBA , BlockNbr);  }}
开发者ID:PetteriAimonen,项目名称:dsoquad-BIOS,代码行数:35,


示例8: SCSI_Write10_Cmd

/******************************************************************************** Function Name  : SCSI_Write10_Cmd* Description    : SCSI Write10 Command routine.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void SCSI_Write10_Cmd(uint8_t lun , uint32_t LBA , uint32_t BlockNbr){  if (Bot_State == BOT_IDLE)  {    if (!(SCSI_Address_Management(CBW.bLUN, SCSI_WRITE10 , LBA, BlockNbr)))/*address out of range*/    {      return;    }    if ((CBW.bmFlags & 0x80) == 0)    {      Bot_State = BOT_DATA_OUT;    #ifndef STM32F10X_CL      SetEPRxStatus(ENDP2, EP_RX_VALID);    #endif /* STM32F10X_CL */    }    else    {      Bot_Abort(DIR_IN);      Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);      Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);    }    return;  }  else if (Bot_State == BOT_DATA_OUT)  {    Write_Memory(lun , LBA , BlockNbr);  }}
开发者ID:crystalfontz,项目名称:cfa_735_simple,代码行数:37,


示例9: SCSI_Read10_Cmd

/******************************************************************************** Function Name  : SCSI_Read10_Cmd* Description    : SCSI Read10 Command routine.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void SCSI_Read10_Cmd(uint8_t lun , uint32_t LBA , uint32_t BlockNbr){  if (Bot_State == BOT_IDLE)  {    if (!(SCSI_Address_Management(CBW.bLUN, SCSI_READ10, LBA, BlockNbr)))/*address out of range*/    {      return;    }    if ((CBW.bmFlags & 0x80) != 0)    {      Bot_State = BOT_DATA_IN;      Read_Memory(lun, LBA , BlockNbr);    }    else    {      Bot_Abort(BOTH_DIR);      Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);      Set_CSW (CSW_CMD_FAILED, SEND_CSW_ENABLE);    }    return;  }  else if (Bot_State == BOT_DATA_IN)  {    Read_Memory(lun , LBA , BlockNbr);  }}
开发者ID:crystalfontz,项目名称:cfa_735_simple,代码行数:35,


示例10: Mass_Storage_ClearFeature

/******************************************************************************** Function Name  : Mass_Storage_ClearFeature* Description    : Handle the ClearFeature request.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void Mass_Storage_ClearFeature(void){  /* when the host send a CBW with invalid signature or invalid length the two     Endpoints (IN & OUT) shall stall until receiving a Mass Storage Reset     */  if (CBW.dSignature != BOT_CBW_SIGNATURE)    Bot_Abort(BOTH_DIR);}
开发者ID:a-c-t-i-n-i-u-m,项目名称:HY-STM32F103,代码行数:14,


示例11: Address_Management_Test

/******************************************************************************** Function Name  : Address_Management_Test* Description    : Test the received address. * Input          : u8 Cmd : the command can be SCSI_READ10 or SCSI_WRITE10.* Output         : None.* Return         : Read/Write status (bool).*******************************************************************************/bool Address_Management_Test(u8 Cmd){  vu32 temp1;  vu32 temp2;  GPIO_SetBits(GPIOB, GPIO_Pin_5);  /* Logical Block Address of First Block */  temp1 = (CBW.CB[2] << 24) |          (CBW.CB[3] << 16) |          (CBW.CB[4] <<  8) |          (CBW.CB[5] <<  0);  /* Number of Blocks to transfer */  temp2 = (CBW.CB[7] <<  8) |          (CBW.CB[8] <<  0);  Memory_Offset = temp1 * Mass_Block_Size;  Transfer_Length = temp2 * Mass_Block_Size;  if ((Memory_Offset + Transfer_Length) > Mass_Memory_Size)  {    if (Cmd == SCSI_WRITE10)    {      Bot_Abort(BOTH_DIR);    }    Bot_Abort(DIR_IN);    Set_Scsi_Sense_Data(ILLEGAL_REQUEST, ADDRESS_OUT_OF_RANGE);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);    return (FALSE);  }  if (CBW.dDataLength != Transfer_Length)  {    if (Cmd == SCSI_WRITE10)    {      Bot_Abort(BOTH_DIR);    }    else    {      Bot_Abort(DIR_IN);    }    Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);    return (FALSE);  }  return (TRUE);}
开发者ID:HamsterReserved,项目名称:STM32-NAND-Programmer,代码行数:53,


示例12: SCSI_Format_Cmd

/******************************************************************************** Function Name  : SCSI_Format_Cmd* Description    : Format Commands routine.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void SCSI_Format_Cmd(uint8_t lun){  if (MAL_GetStatus(lun))  {    Set_Scsi_Sense_Data(CBW.bLUN, NOT_READY, MEDIUM_NOT_PRESENT);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_ENABLE);    Bot_Abort(DIR_IN);    return;  }}
开发者ID:MBARM,项目名称:MatchboxARM,代码行数:17,


示例13: SCSI_Invalid_Cmd

/******************************************************************************** Function Name  : SCSI_Invalid_Cmd* Description    : Invalid Commands routine* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void SCSI_Invalid_Cmd(uint8_t lun){  if (CBW.dDataLength == 0)  {    Bot_Abort(DIR_IN);  }  else  {    if ((CBW.bmFlags & 0x80) != 0)    {      Bot_Abort(DIR_IN);    }    else    {      Bot_Abort(BOTH_DIR);    }  }  Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_COMMAND);  Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);}
开发者ID:crystalfontz,项目名称:cfa_735_simple,代码行数:27,


示例14: SCSI_Valid_Cmd

/******************************************************************************** Function Name  : SCSI_Valid_Cmd* Description    : Valid Commands routine.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void SCSI_Valid_Cmd(uint8_t lun){  if (CBW.dDataLength != 0)  {    Bot_Abort(BOTH_DIR);    Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_COMMAND);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);  }  else    Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);}
开发者ID:crystalfontz,项目名称:cfa_735_simple,代码行数:18,


示例15: USB_APP_ClearFeature

/******************************************************************************** Function Name  : Mass_Storage_ClearFeature* Description    : Handle the ClearFeature request.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void USB_APP_ClearFeature(void){#if(USB_DEVICE_CONFIG & _USE_USB_MASS_STOARGE_DEVICE)	/* when the host send a CBW with invalid signature or invalid length the two	Endpoints (IN & OUT) shall stall until receiving a Mass Storage Reset     */	if (g_usb_type == USB_MASSSTORAGE)	{		if (CBW.dSignature != BOT_CBW_SIGNATURE)			Bot_Abort(BOTH_DIR);	}#endif}
开发者ID:joe3501,项目名称:BTPrinter,代码行数:20,


示例16: SCSI_Verify10_Cmd

/******************************************************************************** Function Name  : SCSI_Verify10_Cmd* Description    : SCSI Verify10 Command routine.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void SCSI_Verify10_Cmd(uint8_t lun){  if ((CBW.dDataLength == 0) && !(CBW.CB[1] & BLKVFY))/* BLKVFY not set*/  {    Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);  }  else  {    Bot_Abort(BOTH_DIR);    Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);  }}
开发者ID:crystalfontz,项目名称:cfa_735_simple,代码行数:20,


示例17: SCSI_TestUnitReady_Cmd

/******************************************************************************** Function Name  : SCSI_Valid_Cmd* Description    : Valid Commands routine.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void SCSI_TestUnitReady_Cmd(u8 lun){  if (MAL_GetStatus(lun))  {    Set_Scsi_Sense_Data(CBW.bLUN, NOT_READY, MEDIUM_NOT_PRESENT);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_ENABLE);    Bot_Abort(DIR_IN);    return;  }  else  {    Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);  }}
开发者ID:chenghongyao,项目名称:gitprogram,代码行数:21,


示例18: SCSI_Format_Cmd

/******************************************************************************** Function Name  : SCSI_Format_Cmd* Description    : Format Commands routine.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void SCSI_Format_Cmd(uint8_t lun){  if (MAL_GetStatus(lun))  {    Set_Scsi_Sense_Data(CBW.bLUN, NOT_READY, MEDIUM_NOT_PRESENT);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_ENABLE);    Bot_Abort(DIR_IN);    return;  }#ifdef USE_STM3210E_EVAL  else  {    NAND_Format();    Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);  }#endif}
开发者ID:crystalfontz,项目名称:cfa_735_simple,代码行数:24,


示例19: SCSI_ReadFormatCapacity_Cmd

/******************************************************************************** Function Name  : SCSI_ReadFormatCapacity_Cmd* Description    : SCSI ReadFormatCapacity Command routine.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void SCSI_ReadFormatCapacity_Cmd(uint8_t lun){  if (MAL_GetStatus(lun) != 0 )  {    Set_Scsi_Sense_Data(CBW.bLUN, NOT_READY, MEDIUM_NOT_PRESENT);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_ENABLE);    Bot_Abort(DIR_IN);    return;  }  ReadFormatCapacity_Data[4] = (uint8_t)(Mass_Block_Count[lun] >> 24);  ReadFormatCapacity_Data[5] = (uint8_t)(Mass_Block_Count[lun] >> 16);  ReadFormatCapacity_Data[6] = (uint8_t)(Mass_Block_Count[lun] >>  8);  ReadFormatCapacity_Data[7] = (uint8_t)(Mass_Block_Count[lun]);  ReadFormatCapacity_Data[9] = (uint8_t)(Mass_Block_Size[lun] >>  16);  ReadFormatCapacity_Data[10] = (uint8_t)(Mass_Block_Size[lun] >>  8);  ReadFormatCapacity_Data[11] = (uint8_t)(Mass_Block_Size[lun]);  Transfer_Data_Request(ReadFormatCapacity_Data, READ_FORMAT_CAPACITY_DATA_LEN);}
开发者ID:12019,项目名称:STM32F103_USB_CDC,代码行数:26,


示例20: SCSI_ReadCapacity10_Cmd

/******************************************************************************** Function Name  : SCSI_ReadCapacity10_Cmd* Description    : SCSI ReadCapacity10 Command routine.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void SCSI_ReadCapacity10_Cmd(u8 lun){  if (MAL_GetStatus(lun))  {    Set_Scsi_Sense_Data(CBW.bLUN, NOT_READY, MEDIUM_NOT_PRESENT);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_ENABLE);    Bot_Abort(DIR_IN);    return;  }  ReadCapacity10_Data[0] = (u8)(Mass_Block_Count[lun] - 1 >> 24);  ReadCapacity10_Data[1] = (u8)(Mass_Block_Count[lun] - 1 >> 16);  ReadCapacity10_Data[2] = (u8)(Mass_Block_Count[lun] - 1 >>  8);  ReadCapacity10_Data[3] = (u8)(Mass_Block_Count[lun] - 1);  ReadCapacity10_Data[4] = (u8)(Mass_Block_Size[lun] >>  24);  ReadCapacity10_Data[5] = (u8)(Mass_Block_Size[lun] >>  16);  ReadCapacity10_Data[6] = (u8)(Mass_Block_Size[lun] >>  8);  ReadCapacity10_Data[7] = (u8)(Mass_Block_Size[lun]);  Transfer_Data_Request(ReadCapacity10_Data, READ_CAPACITY10_DATA_LEN);}
开发者ID:chenghongyao,项目名称:gitprogram,代码行数:29,


示例21: SCSI_ReadCapacity10_Cmd

/******************************************************************************** Function Name  : SCSI_ReadCapacity10_Cmd* Description    : SCSI ReadCapacity10 Command routine.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void SCSI_ReadCapacity10_Cmd(uint8_t lun){  if (DRV_MSp_UpdateStatus(lun))  {    Set_Scsi_Sense_Data(CBW.bLUN, NOT_READY, MEDIUM_NOT_PRESENT);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_ENABLE);    Bot_Abort(DIR_IN);    return;  }  ReadCapacity10_Data[0] = (uint8_t)((DRV_MS_MemDevice[lun].Block_Count - 1) >> 24);  ReadCapacity10_Data[1] = (uint8_t)((DRV_MS_MemDevice[lun].Block_Count - 1) >> 16);  ReadCapacity10_Data[2] = (uint8_t)((DRV_MS_MemDevice[lun].Block_Count - 1) >>  8);  ReadCapacity10_Data[3] = (uint8_t)(DRV_MS_MemDevice[lun].Block_Count - 1);  ReadCapacity10_Data[4] = (uint8_t)(DRV_MS_MemDevice[lun].Block_Size >>  24);  ReadCapacity10_Data[5] = (uint8_t)(DRV_MS_MemDevice[lun].Block_Size >>  16);  ReadCapacity10_Data[6] = (uint8_t)(DRV_MS_MemDevice[lun].Block_Size >>  8);  ReadCapacity10_Data[7] = (uint8_t)(DRV_MS_MemDevice[lun].Block_Size);  Transfer_Data_Request(ReadCapacity10_Data, READ_CAPACITY10_DATA_LEN);}
开发者ID:St0rmingBr4in,项目名称:wallig,代码行数:30,


示例22: CBW_Decode

/******************************************************************************** Function Name  : CBW_Decode* Description    : Decode the received CBW and call the related SCSI command*                 routine.* Input          : None.* Output         : None.* Return         : None.*******************************************************************************/void CBW_Decode(void){  u32 Counter;  for (Counter = 0; Counter < Data_Len; Counter++)  {    *((u8 *)&CBW + Counter) = Bulk_Data_Buff[Counter];  }  CSW.dTag = CBW.dTag;  CSW.dDataResidue = CBW.dDataLength;  if (Data_Len != BOT_CBW_PACKET_LENGTH)  {    Bot_Abort(BOTH_DIR);    /* reset the CBW.dSignature to desible the clear feature until receiving a Mass storage reset*/    CBW.dSignature = 0;    Set_Scsi_Sense_Data(ILLEGAL_REQUEST, PARAMETER_LIST_LENGTH_ERROR);    Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);    return;  }  if ((CBW.CB[0] == SCSI_READ10 ) || (CBW.CB[0] == SCSI_WRITE10 ))  {    /* Calculate Logical Block Address */    SCSI_LBA = (CBW.CB[2] << 24) | (CBW.CB[3] << 16) | (CBW.CB[4] <<  8) | CBW.CB[5];    /* Calculate the Number of Blocks to transfer */    SCSI_BlkLen = (CBW.CB[7] <<  8) | CBW.CB[8];  }  if (CBW.dSignature == BOT_CBW_SIGNATURE)  {    /* Valid CBW */    if ((CBW.bLUN > Max_Lun) || (CBW.bCBLength < 1) || (CBW.bCBLength > 16))    {      Bot_Abort(BOTH_DIR);      Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);      Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);    }    else    {      switch (CBW.CB[0])      {        case SCSI_REQUEST_SENSE:          SCSI_RequestSense_Cmd ();          break;        case SCSI_INQUIRY:          SCSI_Inquiry_Cmd();          break;        case SCSI_START_STOP_UNIT:          SCSI_Start_Stop_Unit_Cmd();          break;        case SCSI_ALLOW_MEDIUM_REMOVAL:          SCSI_Start_Stop_Unit_Cmd();          break;        case SCSI_MODE_SENSE6:          SCSI_ModeSense6_Cmd ();          break;        case SCSI_MODE_SENSE10:          SCSI_ModeSense10_Cmd ();          break;        case SCSI_READ_FORMAT_CAPACITIES:          SCSI_ReadFormatCapacity_Cmd();          break;        case SCSI_READ_CAPACITY10:          SCSI_ReadCapacity10_Cmd();          break;        case SCSI_TEST_UNIT_READY:          SCSI_TestUnitReady_Cmd();          break;        case SCSI_READ10:          SCSI_Read10_Cmd(SCSI_LBA , SCSI_BlkLen);          break;        case SCSI_WRITE10:          SCSI_Write10_Cmd(SCSI_LBA , SCSI_BlkLen);          break;        case SCSI_VERIFY10:          SCSI_Verify10_Cmd();          break;        case SCSI_FORMAT_UNIT:          SCSI_Format_Cmd();          break;          /*Unsupported command*/        case SCSI_MODE_SELECT10:          SCSI_Mode_Select10_Cmd();          break;        case SCSI_MODE_SELECT6:          SCSI_Mode_Select6_Cmd();          break;        case SCSI_SEND_DIAGNOSTIC:          SCSI_Send_Diagnostic_Cmd();          break;//.........这里部分代码省略.........
开发者ID:matthiasbock,项目名称:DSOQuad_SourceCode,代码行数:101,



注:本文中的Bot_Abort函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ Bound函数代码示例
C++ BotSetTeamStatus函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。