亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? scsi.c

?? NXP LPC系列AMR7的開發程序源碼(LCD
?? C
?? 第 1 頁 / 共 3 頁
字號:
}

/*************************************************************************
 * Function Name: ScsiMediaRemovalImp
 * Parameters:  none
 *
 * Return: none
 *
 * Description: PREVENT ALLOW MEDIUM REMOVAL command implement
 *
 *************************************************************************/
inline
void ScsiMediaRemovalImp(void)
{
pSpc3MediaRemoval_t pMediaRemoval = (pSpc3MediaRemoval_t)Cbw.CBWCB;
  if (Cbw.dCBWDataTransferLength == 0)
  {
    if ((pMediaRemoval->Prevent == 0) || (pMediaRemoval->Prevent == 1))
    {
      // Clear condition code info
      ScsiCmdStatus(ScsiCommandNoKey);
      BotSendStatus();
    }
    else
    {
      ScsiCmdStatus(ScsiInvalidCbd);
      BotSendStatus();
    }
    return;
  }
  else
  {
    ScsiCmdStatus(ScsiFatalError);
  }
  UsbBotRstInterface();
}

/*************************************************************************
 * Function Name: ScsiReadCapacity10Imp
 * Parameters:  none
 *
 * Return: none
 *
 * Description: READ CAPACITY (10) command implement
 *
 *************************************************************************/
inline
void ScsiReadCapacity10Imp (void)
{
  if ((Cbw.bmCBWFlags.Dir == BotDataFormDevToHost) &&
      (Cbw.dCBWDataTransferLength >= sizeof(Sbc2ReadCapacity10Response_t)))
  {
    ScsiDrv[Lun].Message[0] = LunReadCapacity10ReqMsg;
    pScsiMessage[Lun] = ScsiDrv[Lun].Message;
    // Clear condition code info
    ScsiDrv[Lun].Status = ScsiCommandNoKey;
    return;
  }
  else
  {
    ScsiCmdStatus(ScsiFatalError);
  }
  BotStatus.BotStatus = TRUE;
  BotInEpStall();
}

/*************************************************************************
 * Function Name: ScsiReadCapacityData
 * Parameters:  Int32U LogBlockAdd, Int32U BlockSize
 *
 * Return: none
 *
 * Description: Prepare Read capacity data for sending
 *
 *************************************************************************/
void ScsiReadCapacityData (Int32U LogBlockAdd, Int32U BlockSize)
{
pSbc2ReadCapacity10Response_t pReadCapacity = (pSbc2ReadCapacity10Response_t)&Cbw;

  // clear buffer
  memset(pReadCapacity,0,sizeof(Sbc2ReadCapacity10Response_t));

  pReadCapacity->LogicalBlockAddress[0] = (LogBlockAdd >> 24) & 0xFF;
  pReadCapacity->LogicalBlockAddress[1] = (LogBlockAdd >> 16) & 0xFF;
  pReadCapacity->LogicalBlockAddress[2] = (LogBlockAdd >> 8 ) & 0xFF;
  pReadCapacity->LogicalBlockAddress[3] = (LogBlockAdd >> 0 ) & 0xFF;

  pReadCapacity->BlockLength[0]         = (BlockSize   >> 24) & 0xFF;
  pReadCapacity->BlockLength[1]         = (BlockSize   >> 16) & 0xFF;
  pReadCapacity->BlockLength[2]         = (BlockSize   >> 8 ) & 0xFF;
  pReadCapacity->BlockLength[3]         = (BlockSize   >> 0 ) & 0xFF;

  BotSendDataInit((Int8U *)pReadCapacity,
                  MIN(Csw.dCSWDataResidue,sizeof(Sbc2ReadCapacity10Response_t)),
                  TRUE);
}

/*************************************************************************
 * Function Name: ScsiRead10Imp
 * Parameters:  none
 *
 * Return: none
 *
 * Description: READ (10) command implement
 *
 *************************************************************************/
inline
void ScsiRead10Imp (void)
{
pSbc2Read10_t pRead = (pSbc2Read10_t)Cbw.CBWCB;
  if (Cbw.bmCBWFlags.Dir == BotDataFormDevToHost)
  {
    if(ScsiDrv[Lun].UnitSSStatus == UnitEjected)
    {
      ScsiCmdStatus(ScsiMediaNotPresent);
    }
    else
    {
      // Clear condition code info
      ScsiDrv[Lun].Status = ScsiCommandNoKey;
      ScsiDrv[Lun].Message[2] = ((Int32U)pRead->TransferLength[0] << 8) + pRead->TransferLength[1];
      if(ScsiDrv[Lun].Message[2] != 0)
      {
        ScsiDrv[Lun].Message[0] = LunRead10ReqMsg;
        ScsiDrv[Lun].Message[1] = ((Int32U)pRead->LogicalBockAddress[0] << 24) +\
                                  ((Int32U)pRead->LogicalBockAddress[1] << 16) +\
                                  ((Int32U)pRead->LogicalBockAddress[2] << 8 ) +\
                                  pRead->LogicalBockAddress[3];
        pScsiMessage[Lun] = ScsiDrv[Lun].Message;
      }
      else
      {
        BotSendStatus();
      }
      return;
    }
  }
  else
  {
    ScsiCmdStatus(ScsiFatalError);
  }
  BotStatus.BotStatus = TRUE;
  BotInEpStall();
}

/*************************************************************************
 * Function Name: ScsiReadData
 * Parameters: const pInt8U pData, Int32U Size, Boolean DataComplete
 *
 * Return: none
 *
 * Description: Prepare Read data for sending
 *
 *************************************************************************/
void ScsiReadData(const pInt8U pData, Int32U Size, Boolean DataComplete)
{
  BotSendDataInit(pData,Size,DataComplete);
}

/*************************************************************************
 * Function Name: ScsiWrite10Imp
 * Parameters:  none
 *
 * Return: none
 *
 * Description: Write (10) command implement
 *
 *************************************************************************/
inline
void ScsiWrite10Imp (void)
{
pSbc2Write10_t pWrite = (pSbc2Write10_t)Cbw.CBWCB;
  if (Cbw.bmCBWFlags.Dir == BotDataFormHostToDev)
  {
    if(ScsiDrv[Lun].UnitSSStatus == UnitEjected)
    {
      ScsiCmdStatus(ScsiMediaNotPresent);
    }
    else
    {
      // Clear condition code info
      ScsiDrv[Lun].Status = ScsiCommandNoKey;
      ScsiDrv[Lun].Message[2] = ((Int32U)pWrite->TransferLength[0] << 8) + pWrite->TransferLength[1];
      if(ScsiDrv[Lun].Message[2] != 0)
      {
        ScsiDrv[Lun].Message[0] = LunWrite10ReqMsg;
        ScsiDrv[Lun].Message[1] = ((Int32U)pWrite->LogicalBockAddress[0] << 24) +\
                                  ((Int32U)pWrite->LogicalBockAddress[1] << 16) +\
                                  ((Int32U)pWrite->LogicalBockAddress[2] << 8 ) +\
                                  pWrite->LogicalBockAddress[3];
        pScsiMessage[Lun] = ScsiDrv[Lun].Message;
        BotState = BotEpDataOut;
        return;
      }
      else
      {
        BotSendStatus();
      }
      return;
    }
  }
  else
  {
    ScsiCmdStatus(ScsiFatalError);
  }
  BotSendStatus();
  BotOutEpStall();
}

/*************************************************************************
 * Function Name: ScsiWriteData
 * Parameters:  pInt8U pData, Int32U Size, Boolean DataComplete
 *
 * Return: none
 *
 * Description: Prepare Write data for receiving
 *
 *************************************************************************/
void ScsiWriteData(pInt8U pData, Int32U Size, Boolean DataComplete)
{
  if(DataComplete)
  {
    BotSendStatus();
  }
  else
  {
    BotReceiveDataInit(pData,Size,DataComplete);
  }
}

/*************************************************************************
 * Function Name: ScsiVerify10Imp
 * Parameters:  none
 *
 * Return: none
 *
 * Description: Verify (10) command implement
 *
 *************************************************************************/
void ScsiVerify10Imp (void)
{
pSbc2Verify10_t pVerify = (pSbc2Verify10_t)Cbw.CBWCB;
  if (Cbw.bmCBWFlags.Dir == BotDataFormHostToDev)
  {
    if(ScsiDrv[Lun].UnitSSStatus == UnitEjected)
    {
      ScsiCmdStatus(ScsiMediaNotPresent);
    }
    else
    {
      // Clear condition code info
      ScsiDrv[Lun].Status = ScsiCommandNoKey;
      ScsiDrv[Lun].Message[2] = ((Int32U)pVerify->TransferLength[0] << 8) + pVerify->TransferLength[1];
      if(ScsiDrv[Lun].Message[2] != 0)
      {
        ScsiDrv[Lun].Message[1] = ((Int32U)pVerify->LogicalBockAddress[0] << 24) +\
                                  ((Int32U)pVerify->LogicalBockAddress[1] << 16) +\
                                  ((Int32U)pVerify->LogicalBockAddress[2] << 8 ) +\
                                  pVerify->LogicalBockAddress[3];
        ScsiDrv[Lun].Message[0] = (pVerify->BYTCHK)?LunVerify10BytChkReqMsg:LunVerify10ReqMsg;
        pScsiMessage[Lun] = ScsiDrv[Lun].Message;
        BotState = BotEpDataOut;
        return;
      }
      else
      {
        BotSendStatus();
      }
      return;
    }
  }
  else
  {
    ScsiCmdStatus(ScsiFatalError);
  }
  BotSendStatus();
  BotOutEpStall();
}

/*************************************************************************
 * Function Name: ScsiReadFormatCapcityImp
 * Parameters:  none
 *
 * Return: none
 *
 * Description: READ FORMAT CAPACITIES implement
 *
 *************************************************************************/
void ScsiReadFormatCapcityImp (void)
{
  if (Cbw.bmCBWFlags.Dir == BotDataFormDevToHost)
  {
    // Clear condition code info
    ScsiDrv[Lun].Status = ScsiCommandNoKey;
    ScsiDrv[Lun].Message[0] = LunReadFormatCapacityReqMsg;
    pScsiMessage[Lun] = ScsiDrv[Lun].Message;
    return;
  }
  else
  {
    ScsiCmdStatus(ScsiFatalError);
  }
  BotStatus.BotStatus = TRUE;
  BotInEpStall();
}

/*************************************************************************
 * Function Name: ScsiReadFormatCapcityData
 * Parameters:  pInt8U pData, Int32U Size
 *
 * Return: none
 *
 * Description: Prepare Data of READ FORMAT CAPACITIES command request
 *
 *************************************************************************/
void ScsiReadFormatCapcityData (pInt8U pData, Int32U Size)

{
pMmc3ReadFormatCapacity_t pFormatCapacity = (pMmc3ReadFormatCapacity_t)Cbw.CBWCB;
Int32U AllocationLength = (pFormatCapacity->AllocationLenght[0]<<8) +\
                           pFormatCapacity->AllocationLenght[1];
  BotSendDataInit(pData,MIN(Size,AllocationLength),TRUE);
}

/*************************************************************************
 * Function Name: ScsiCmdStatus
 * Parameters:  ScsiStatusCode_t Status
 *
 * Return: none
 *
 * Description: Prepare Status data for sending
 *
 *************************************************************************/
void ScsiCmdStatus (ScsiStatusCode_t Status)
{
  ScsiDrv[Lun].Status = Status;
  switch (Status)
  {
  case ScsiCommandNoKey:
    break;
  case ScsiMediamNotReady:
  case ScsiInvalidCbd:
  case ScsiUnknowCommand:
  case ScsiMediaNotPresent:
  case ScsiMediaChanged:
  case ScsiMiscompare:
    BotStatus.CmdFault = TRUE;
    break;
  default:
    BotStatus.PhaseError = TRUE;
  }
}

/*************************************************************************
 * Function Name: ScsiCmdError
 * Parameters:  Int32U Status, Int32U Stall
 *
 * Return: none
 *
 * Description: Prepare Error data for sending
 *
 *************************************************************************/
void ScsiCmdError (Int32U Status, Int32U Stall)
{
  if(Stall & ScsiStallIn)
  {
    BotStatus.BotStatus = TRUE;
    BotInEpStall();
  }
  if (Stall & ScsiStallOut)
  {
    BotOutEpStall();
  }
  ScsiCmdStatus((ScsiStatusCode_t)Status);
  if(!(Stall & ScsiStallIn))
  {
    BotSendStatus();
  }
}

/*************************************************************************
 * Function Name: ScsiMediaStartStopImp
 * Parameters: none
 *
 * Return: none
 *
 * Description: START STOP UNIT command implement
 *
 *************************************************************************/
inline
void ScsiMediaStartStopImp (void)
{
pSpc3UnitStartStop_t pMediaStartStop = (pSpc3UnitStartStop_t)Cbw.CBWCB;
  if (Cbw.dCBWDataTransferLength == 0)
  {
    if (pMediaStartStop->PC == 0)
    {
      if(pMediaStartStop->LOEJ)
      {
        if(pMediaStartStop->START)
        {
          ScsiDrv[Lun].UnitSSStatus = UnitStarted;
        }
        else
        {
          ScsiDrv[Lun].UnitSSStatus = UnitEjected;
        }
      }
      // Clear condition code info
      ScsiCmdStatus(ScsiCommandNoKey);
      BotSendStatus();
    }
    else
    {
      ScsiCmdStatus(ScsiInvalidCbd);
      BotSendStatus();
    }
    return;
  }
  else
  {
    ScsiCmdStatus(ScsiFatalError);
  }
  UsbBotRstInterface();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看成人免费视频| 国产女人18水真多18精品一级做 | 欧美一级久久久| 国产精品午夜电影| 美女视频黄久久| 在线观看www91| 中文字幕乱码久久午夜不卡| 91在线视频官网| 久久一二三国产| 日韩在线卡一卡二| 色天使色偷偷av一区二区| 久久免费电影网| 裸体歌舞表演一区二区| 欧美色图天堂网| 亚洲蜜臀av乱码久久精品| 国产美女精品在线| 精品免费一区二区三区| 婷婷综合五月天| 欧美做爰猛烈大尺度电影无法无天| 国产欧美精品国产国产专区| 麻豆精品一区二区| 欧美一区二区免费观在线| 亚洲一区二区视频在线| 日本高清无吗v一区| 日韩美女视频一区二区| 91一区在线观看| 中文字幕亚洲不卡| 99久久99精品久久久久久| 亚洲国产精品99久久久久久久久| 久久精品国产久精国产爱| 日韩午夜在线播放| 久久爱另类一区二区小说| 欧美精品一区二区三区一线天视频| 蜜桃视频免费观看一区| 日韩欧美中文一区| 麻豆91在线看| 久久久欧美精品sm网站| 国产激情一区二区三区| 国产精品无圣光一区二区| 成人黄色国产精品网站大全在线免费观看| 久久久精品日韩欧美| 国产成人免费9x9x人网站视频| 久久久久久久久久电影| 成人h动漫精品一区二| 亚洲色图色小说| 欧美午夜精品久久久久久孕妇| 亚洲成人av电影在线| 欧美夫妻性生活| 黄色日韩网站视频| 一色桃子久久精品亚洲| 欧美午夜精品免费| 欧美日韩一区二区三区视频| 亚洲线精品一区二区三区八戒| 在线播放一区二区三区| 国模无码大尺度一区二区三区| 国产日产欧美一区二区三区| 色综合激情久久| 奇米一区二区三区| 欧美国产日韩a欧美在线观看| 91在线一区二区| 日本不卡一二三| 国产精品午夜春色av| 欧美日韩精品福利| 风间由美一区二区三区在线观看| 一区二区视频在线看| 欧美一区二区福利在线| 懂色中文一区二区在线播放| 亚洲一区二区欧美| 久久久久久免费毛片精品| 色综合久久88色综合天天6 | 一区二区三区在线免费观看| 欧美日韩电影一区| 国产.精品.日韩.另类.中文.在线.播放| 亚洲美女一区二区三区| 欧美大片免费久久精品三p| 99久久伊人久久99| 麻豆精品在线观看| 亚洲综合清纯丝袜自拍| 欧美极品xxx| 91麻豆精品91久久久久同性| 不卡的电影网站| 狠狠色伊人亚洲综合成人| 一区二区三区不卡视频| 久久久精品免费观看| 欧美日韩激情一区二区三区| 成人免费视频网站在线观看| 日本一区中文字幕| 成人免费视频在线观看| 麻豆精品在线看| 亚洲一区二区黄色| 国产精品视频一二| 欧美mv和日韩mv的网站| 欧美巨大另类极品videosbest| 国产精品自拍一区| 喷白浆一区二区| 亚洲国产成人av好男人在线观看| 国产精品午夜在线观看| 国产三级精品在线| 精品欧美乱码久久久久久1区2区| 欧美日韩高清一区二区三区| 91在线视频免费91| 99精品桃花视频在线观看| 国产一区二区三区香蕉| 久热成人在线视频| 亚洲第一久久影院| 亚洲国产日韩综合久久精品| 亚洲欧美怡红院| 国产精品免费av| 国产精品蜜臀在线观看| 久久只精品国产| 欧美精品一区二| 欧美精品一区二区在线播放| 26uuu色噜噜精品一区| 日韩精品一区二区在线观看| 欧美大尺度电影在线| 欧美疯狂做受xxxx富婆| 欧美日本免费一区二区三区| 91福利视频网站| 欧美久久一二三四区| 欧美精品日日鲁夜夜添| 91精品国产综合久久久久久漫画| 欧美日韩久久久| 日韩区在线观看| 日韩你懂的在线观看| www国产精品av| 日本一区二区三区电影| 国产精品全国免费观看高清| 国产精品嫩草影院av蜜臀| 中文字幕五月欧美| 亚洲国产精品久久久男人的天堂 | 欧美日韩免费观看一区三区| 欧美精品一二三| 日韩精品一区二区三区蜜臀| 国产免费观看久久| 亚洲视频电影在线| 亚洲444eee在线观看| 蜜桃在线一区二区三区| 成人午夜电影小说| 91黄色免费版| 精品国产免费视频| 国产精品私人影院| 亚洲电影你懂得| 国产精品亚洲综合一区在线观看| 成+人+亚洲+综合天堂| 成人久久视频在线观看| 欧美天堂亚洲电影院在线播放| 日韩午夜激情av| 中文字幕一区二区三区四区| 午夜视频一区在线观看| 国产一区二区91| 在线欧美小视频| 欧美大肚乱孕交hd孕妇| 国产精品全国免费观看高清| 午夜精品久久久久影视| 经典一区二区三区| 色婷婷国产精品久久包臀| 精品免费日韩av| 亚洲一级二级三级在线免费观看| 精品一区二区免费视频| 99re6这里只有精品视频在线观看| 91精品国产色综合久久不卡电影 | 国产盗摄女厕一区二区三区| 欧美天天综合网| 久久九九久久九九| 午夜精品一区二区三区免费视频| 九九九精品视频| 精品视频一区三区九区| 国产精品免费丝袜| 国产一区二区三区四| 欧美精品日韩一本| 亚洲人成在线观看一区二区| 经典三级一区二区| 欧美日韩www| 亚洲综合另类小说| eeuss鲁片一区二区三区| 欧美成人猛片aaaaaaa| 亚洲国产日韩综合久久精品| 99久久精品免费看| 久久精品人人做| 九九热在线视频观看这里只有精品| 欧美在线观看你懂的| 中文字幕亚洲一区二区va在线| 黄色精品一二区| 精品奇米国产一区二区三区| 日韩激情视频在线观看| 欧美午夜不卡在线观看免费| 亚洲欧洲国产日本综合| 成人免费视频一区二区| 国产女同互慰高潮91漫画| 激情亚洲综合在线| 欧美一级高清片| 五月激情六月综合| 欧美色欧美亚洲另类二区| 亚洲人成网站色在线观看| 不卡高清视频专区| 国产精品不卡在线| 一本久久a久久精品亚洲| 亚洲日本一区二区三区| 国产亚洲一区字幕| 韩国v欧美v日本v亚洲v|