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

📄 host20_ap_hid.c

📁 FIC8120方案的 StartCell_Driver
💻 C
📖 第 1 页 / 共 2 页
字号:
///////////////////////////////////////////////////////////////////////////////
//
//	File name: OTGHost_AP_HID.C
//	Version: 1.0
//	Date: 2004/1/07
//
//	Author: Bruce
//	Email: 
//	Phone: (03) 578-7888
//	Company: Faraday Tech. Corp.
//
//  ** Support: <1>.Mouse
//              <2>.Keyboard   
//
//	**Description: 
//  Group-1:Main Function
//          <1>.OTGH_HID_Main
//
//              Step1:HOST20_AP.C will enumerate the Device => if bInterfaceClass = HID class then call "OTGH_HID_Main"
//              Step2:OTGH_HID_Main => HID_Enumerate <1>.Setup 0x21,0x0A,0x00,0x00, 0x00,0x00,0x00,0x00  
//                                                   <2>.GetDescriptor HID Report 0x81,0x06,0x00,0x22,0x00,0x00,0x74,0x00
//                                                   <3>.Get String => Print string descriptor
//              Step3:If bInterfaceProtocol = 1 =>Keyboard call OTGH_HID_Keyboard
//                                          = 2 =>Mouse    Call OTGH_HID_Mouse
//
//          <2>.OTGH_HID_Keyboard
//
//
//
//          <3>.OTGH_HID_Mouse
//              Step1:Start to issue Interrupr-In 4 bytes 
//              Step2:Analysis the "Interrupr-In 4 bytes"
//              Step3:Goto step1
//
//          
//
///////////////////////////////////////////////////////////////////////////////
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>

#include "chipset.h"  
#include "flib.h" 
#include "Lib_Host20.h" 
#include "Host20_AP.H"
#include "Host20_AP_HID.H"


//====================================================================
// * Function Name: OTGH_HID_Main                          
// * Description: 
//   <1>.If bInterfaceProtocol = 1 =>Keyboard call OTGH_HID_Keyboard
//                              = 2 =>Mouse    Call OTGH_HID_Mouse
// * Input: none
// * OutPut: none
//====================================================================
void OTGH_HID_Main(UINT8 bControlListNum)
{

 
  // <1>.If bInterfaceProtocol = 1 =>Keyboard call OTGH_HID_Keyboard
  //                            = 2 =>Mouse    Call OTGH_HID_Mouse
  
         if (psDevice_AP->saCD[0].sInterface[0].bInterfaceProtocol == 1)
             OTGH_HID_Keyboard();
         else if (psDevice_AP->saCD[0].sInterface[0].bInterfaceProtocol == 2)
                 OTGH_HID_Mouse(bControlListNum);   
              else {
              	    printf(">>> Non Support HID Device...\n");
              	    while(1);
              	    }   


}
//====================================================================
// * Function Name: OTGH_HID_Keyboard                          
// * Description: 
// * Input: none
// * OutPut: none
//====================================================================
UINT8 OTGH_HID_Parsing_Mouse(UINT8 *pbBuffer4K_1)
{
  //Byte-2=>Move Left-Right
  //Byte-3=>Move Up-Down
  //Byte-4=>Middle Key Up-Down
  //Byte-1=>Left/Right key
  
  UINT8 bData_1,bData_2,bData_3,bData_4,bFound;
    char cOutput_1,cOutput_2,cOutput_3,cOutput_4;
  bFound=0;

 
  bData_1=*(pbBuffer4K_1);          
  bData_2=*(pbBuffer4K_1+1);
  bData_3=*(pbBuffer4K_1+2);    
  bData_4=*(pbBuffer4K_1+3); 
  
  
  if ((bData_1|bData_2|bData_3|bData_4)>0)
      {

        //Byte-1   
         if (bData_1==0x01) //Key Left-Right
            cOutput_1='L'; 
         else if (bData_1==0x02)
                 cOutput_1='R';
             else   cOutput_1='N';
               
        //Byte-2 
          if (bData_2==0x00)       
             cOutput_2='N';
          else   if (bData_2>0x80) //Move Left-Right
                     cOutput_2='L'; 
                 else  cOutput_2='R';  
        
        //Byte-3        
          if (bData_3==0x00)  
              cOutput_3='N';          
          else if (bData_3>0x80) //Move Up-Down
                  cOutput_3='U';   
               else  cOutput_3='D'; 
               
        //Byte-4        
          if (bData_4==0x00)  
              cOutput_4='N';          
          else if (bData_4>0x80) //Middle-Wheel Left-Right
                  cOutput_4='B'; 
               else  cOutput_4='F';   

         
         
         printf("==>(Key=%c)(Move-LR=%c Value=0x%2x)(Move-UpDown=%c Value=0x%x)(Middle-Wheel-FrontBack=%c Value=0x%2x)\n"
                ,cOutput_1,cOutput_2,bData_2,cOutput_3,bData_3,cOutput_4,bData_4);  
         
           
      }

        bFound=0;

return 0;        
}
//====================================================================
// * Function Name: OTGH_HID_Keyboard                          
// * Description: 
// * Input: none
// * OutPut: none
//====================================================================
UINT8 OTGH_HID_Parsing_Keyboard(UINT8 *pbBuffer4K_1)
{
  
  UINT8 bData,bFound;    
       

        bFound=0;
  
  //For Byte-1
  //Shift + Ctrl + Alt
        bData=*(pbBuffer4K_1+0);          
        switch(bData)
             {
             case 0x02:
                  printf("===> 'Shift-L'\n");    
                  bFound=1;
             break;	
             case 0x01:
                  printf("===> 'Ctrl-L'\n");    
                  bFound=1;
             break;	
              case 0x04:
                  printf("===> 'Alt-L'\n");    
                  bFound=1;
             break;	


             case 0x20:
                  printf("===> 'Shift-R'\n");    
                  bFound=1;
             break;	
             case 0x10:
                  printf("===> 'Ctrl-R'\n");    
                  bFound=1;
             break;	
              case 0x40:
                  printf("===> 'Alt-R'\n");    
                  bFound=1;
             break;	
            }
 //For byte-3        
        bData=*(pbBuffer4K_1+2);
        
        if (bData>=0x04) //Parsing for a,b~z
            if (bData<=0x1D)
               { printf("===> Input '%c'\n",(bData+0x5D)); 
               bFound=1;
               }

            
        
        if (bData>=0x1E) //Parsing for 1~6
            if (bData<=0x26)
               { printf("===> Input '%c'\n",(bData+0x13)); 
               bFound=1;
               }

        
        switch(bData)
             {
             case 0x27:
                  printf("===> Input '0'\n");    
                  bFound=1;
             break;	
               
             
             case 0x3A:
                  printf("===> Input 'F1'\n");    
                  bFound=1;
             break;	
             case 0x3B:
                  printf("===> Input 'F2'\n");    
                  bFound=1;
             break;	
              case 0x3C:
                  printf("===> Input 'F3'\n");    
                  bFound=1;
             break;	
              case 0x3D:
                  printf("===> Input 'F4'\n");    
                  bFound=1;
             break;	
              case 0x3E:
                  printf("===> Input 'F5'\n");    
                  bFound=1;
             break;	
              case 0x3F:
                  printf("===> Input 'F6'\n");    
                  bFound=1;
             break;	
              case 0x40:
                  printf("===> Input 'F7'\n");    
                  bFound=1;
             break;	
              case 0x41:
                  printf("===> Input 'F8'\n");    
                  bFound=1;
             break;	
              case 0x42:
                  printf("===> Input 'F9'\n");    
                  bFound=1;
             break;	
              case 0x43:
                  printf("===> Input 'F10'\n");    
                  bFound=1;
             break;	
              case 0x4A:

⌨️ 快捷键说明

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