⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 halusbhost.lst

📁 威望公司MP3 + USB MCU 的参考软件
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.01   HALUSBHOST                                                            04/17/2008 09:46:30 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE HALUSBHOST
OBJECT MODULE PLACED IN .\Debug\halusbhost.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE usbhost\halusbhost.c LARGE OPTIMIZE(9,SIZE) NOINTPROMOTE INCDIR(.\common;.\
                    -e2prom;.\file;.\fmtx;.\ir;.\keyboard;.\lcm;.\led;.\main;.\matrixkey;.\mp3ctrl;.\sd;.\usbhost;.\include;.\lib) DEBUG OBJE
                    -CTEXTEND PRINT(.\Debug\halusbhost.lst) OBJECT(.\Debug\halusbhost.obj)

line level    source

   1          /****************************************************************
   2          *                      Viaon Technology (Suzhou) Co.,Ltd
   3          *
   4          *    Copyright 2007, Viaon Technology (Suzhou) Co.,Ltd,Suzhou,China
   5          *                    All rights reserved.
   6          *
   7          *
   8          * Filename:             halusbhost.c
   9          *
  10          * Programmer:           Greg 
  11          *
  12          * Created:              1/2/2008
  13          *
  14          * Description:          public functions 
  15          *              
  16          *        
  17          * Change History (most recent first):   2008.1.2
  18          ****************************************************************/
  19          //#include "string.h"
  20          
  21          #include "utiltypedef.h"
  22          #include "va4010reg.h"
  23          #include "common.h"
  24          #include "halusbhost.h"
  25          #include "halscsi.h"
  26          #include "timer.h"
  27          
  28          #define MAX_NAK_CNT      2000
  29          //static WORD ConsecutiveNAKCount = 0;
  30          XXGFLAGS bdata bXXGFlags;       //union XXGFLAGS is defined in common.h
  31          XXGPKG  usbstack;                                       //struct XXGPKG is defined in usb.h
  32                                                                  //usbstack holds parameters to be passed to low-level functions
  33          USBDEV uDev;
  34          extern BYTE DBUF[SECT_LEN];
  35          #if 0
              void usbBufRead(BYTE *s, BYTE c)
              {
                      BYTE  i;
                      BYTE *addr;     
                      
                      addr = s;       
                      for(i=0;i<c;i++){
                              ACC = BufAddr;  
                              *addr = ACC;
                              addr++;   
                      }
              
                      return;
              }
              #else
  51          void usbBufRead(BYTE *s, BYTE c)
  52          {
  53   1              BYTE  i, tmp;
C51 COMPILER V8.01   HALUSBHOST                                                            04/17/2008 09:46:30 PAGE 2   

  54   1              BYTE *addr;     
  55   1      
  56   1              if(usbstack.bRdFlag == RD_FLAG_BUF){    
  57   2                      addr = s;       
  58   2                      for(i=0;i<c;i++){
  59   3                              ACC = BufAddr;  
  60   3                              *addr = ACC;
  61   3                              addr++;   
  62   3                      }
  63   2              }else{  //RD_FLAG_TEMP
  64   2                      for(i=0;i<c;i++){
  65   3                              ACC = BufAddr;  
  66   3                              tmp = ACC;
  67   3                      }               
  68   2              }
  69   1      
  70   1              return;
  71   1      }
  72          #endif
  73          
  74          void usbBufWrite(BYTE *s, BYTE c)
  75          {
  76   1              BYTE *addr;  
  77   1              addr = s;
  78   1      
  79   1      #if 0   
                      if(BufStatusAddr&0x02) //bufstatus[1]=1:full
                              return;
                      else    { 
                              while(c){
                                      ACC = *addr;
                                      BufAddr = ACC;
                                      addr++;
                                      c--;
                              }
                      }
              #else
  91   1              while(BufStatusAddr&0x02){
  92   2                      UartOutText("USB Buffer Full \r\n");
  93   2              }
  94   1              
  95   1              while(c){
  96   2                      ACC = *addr;
  97   2                      BufAddr = ACC;
  98   2                      addr++;
  99   2                      c--;
 100   2              }       
 101   1      #endif
 102   1      
 103   1              return;
 104   1      }
 105          
 106          //*****************************************************************************************
 107          // USB variables initialization
 108          //*****************************************************************************************
 109          void _halUsbReset(void)
 110          {
 111   1              BYTE data temp;
 112   1              
 113   1              temp = SieCtrl;
 114   1              SieCtrl = temp|0x04;    // SE0 reset
 115   1              DelayMs(250);           
C51 COMPILER V8.01   HALUSBHOST                                                            04/17/2008 09:46:30 PAGE 3   

 116   1              DelayMs(250);           
 117   1              SieCtrl = temp;
 118   1              DelayMs(250);                       // reset recovery
 119   1              DelayMs(250); 
 120   1              SieStat0 = 0xff;         // clear status regs
 121   1              SieStat1 = 0xff;
 122   1      
 123   1              memclr(&bXXGFlags, sizeof(bXXGFlags));  
 124   1              memclr(&uDev, sizeof(uDev));            
 125   1              memclr(&usbstack, sizeof(usbstack));            
 126   1              //ConsecutiveNAKCount = 0;
 127   1      
 128   1              return;
 129   1      }
 130          
 131          BYTE epBulkSend(BYTE *pBuffer,WORD len)
 132          {   
 133   1      //      usbstack.endpoint=usbstack.epbulkout;
 134   1              usbstack.pid    = PID_OUT;
 135   1              TxEpnum         = uDev.bEPAddr[usbstack.epbulkout];
 136   1       
 137   1              usbstack.wPayload       = uDev.wPayLoad[usbstack.epbulkin]; //64
 138   1              usbstack.wLen           = len;
 139   1              usbstack.buffer         = pBuffer;
 140   1              bXXGFlags.bToggle       = uDev.bData1[usbstack.epbulkout];
 141   1      
 142   1      #if 0
                      while(len>0)
                      {
                              if (len > usbstack.wPayload)
                                      usbstack.wLen = usbstack.wPayload;
                              else                            
                                      usbstack.wLen = len;
                              
                              //if(!usbXfer(TxEpnum)) return FALSE;
                              _halOutTrans();
              
                              bXXGFlags.bToggle=~bXXGFlags.bToggle;
              
                              len-=usbstack.wLen;
                              usbstack.buffer=usbstack.buffer+usbstack.wLen;
                      }
              #else
 159   1              _halOutTrans();
 160   1      #endif
 161   1              uDev.bData1[usbstack.epbulkout]=bXXGFlags.bToggle;  // save toggle status back to associated EP
 162   1              return TRUE;    
 163   1      }
 164          
 165          BYTE epBulkRcv(BYTE *pBuffer,WORD len)
 166          {
 167   1      //      usbstack.endpoint=usbstack.epbulkin;
 168   1              usbstack.pid=PID_IN;
 169   1              TxEpnum = uDev.bEPAddr[usbstack.epbulkin];
 170   1      
 171   1              usbstack.wPayload=uDev.wPayLoad[usbstack.epbulkin]; // 64;      //????
 172   1              usbstack.wLen=len;
 173   1              usbstack.buffer=pBuffer;
 174   1      #if 0
                      if(usbstack.wLen)
                      {
                              bXXGFlags.bToggle = uDev.bData1[usbstack.epbulkin];  // restore toggle state
C51 COMPILER V8.01   HALUSBHOST                                                            04/17/2008 09:46:30 PAGE 4   

                              //if(!usbXfer(TxEpnum)) return FALSE;
                              _halInTrans();
                              
                              uDev.bData1[usbstack.epbulkin] = bXXGFlags.bToggle;  // save toggle state
                      }
              #else
 184   1              bXXGFlags.bToggle = uDev.bData1[usbstack.epbulkin];  // restore toggle state
 185   1              //if(!usbXfer(TxEpnum)) return FALSE;
 186   1              _halInTrans();
 187   1      
 188   1              uDev.bData1[usbstack.epbulkin] = bXXGFlags.bToggle;  // save toggle state
 189   1      #endif
 190   1      
 191   1              return TRUE;
 192   1      }
 193          
 194          ////////////////////
 195          BYTE _halStdDevReq(BYTE bmReq, BYTE bReq, WORD wVal, WORD wIdx, WORD wLen)
 196          {
 197   1              usbstack.setup.bmRequest                = bmReq;
 198   1              usbstack.setup.bRequest         = bReq;
 199   1              usbstack.setup.wValue                   = wVal;
 200   1              usbstack.setup.wIndex                   = wIdx;
 201   1              usbstack.setup.wLength          = wLen; 
 202   1              
 203   1              return _halHostEp0Xfer();       
 204   1      }
 205          
 206          BYTE halUsbDevEnum(void)
 207          {  
 208   1              BYTE data i;                                                                    // always reset USB transfer address 
 209   1              BYTE data epLen;
 210   1      
 211   1              // pointers to descriptor data structures
 212   1              pDevDesc  pDev;     // device descriptor
 213   1              pCfgDesc  pCfg;     // configuration descriptor

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -