111 lines
2.7 KiB
C
111 lines
2.7 KiB
C
|
|
/********************************************************************************
|
|||
|
|
* Copyright (c) 2016, Beijing Tongfang Microelectroics Co., Ltd.
|
|||
|
|
* All rights reserved.
|
|||
|
|
* Module: HID class response
|
|||
|
|
* Author: Yang Song
|
|||
|
|
* Version: V1.0
|
|||
|
|
* History:
|
|||
|
|
* 2016-09-22 Original version
|
|||
|
|
********************************************************************************/
|
|||
|
|
#include "global.h"
|
|||
|
|
|
|||
|
|
u8 g_bCapsLock=CAPSLOCKOFF; //0<><30> û<><C3BB><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 g_bNumLock=NUMLOCKOFF; //0<><30> û<><C3BB><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
/***************************************************************************
|
|||
|
|
* Function: hidSendReportDscrpt
|
|||
|
|
* Description:HID Data processing
|
|||
|
|
* Input: NULL
|
|||
|
|
* Return: NULL
|
|||
|
|
* Other: NULL
|
|||
|
|
**************************************************************************/
|
|||
|
|
void hidSendReportDscrpt(void)
|
|||
|
|
{
|
|||
|
|
if(g_bUsbDevType == USBDEVTYPE_HIDPOS)
|
|||
|
|
{
|
|||
|
|
Memcpy(USBbuf,(u8 *)usbHidPosReportDescriptor,HID_POS_RPT_LEN);
|
|||
|
|
usbEpnTxAll(0,USBbuf,HID_POS_RPT_LEN);
|
|||
|
|
}
|
|||
|
|
else if(g_bUsbDevType == USBDEVTYPE_HIDKBD)
|
|||
|
|
{
|
|||
|
|
Memcpy(USBbuf,(u8 *)usbHidKbdReportDescriptor,HID_KBD_RPT_LEN);
|
|||
|
|
usbEpnTxAll(0,USBbuf,HID_KBD_RPT_LEN);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/***************************************************************************
|
|||
|
|
* Function: Hid_SendReportDscrpt
|
|||
|
|
* Description:HID Data processing
|
|||
|
|
* Input: NULL
|
|||
|
|
* Return: NULL
|
|||
|
|
* Other: NULL
|
|||
|
|
**************************************************************************/
|
|||
|
|
void hidReportRequest(u8 req)
|
|||
|
|
{
|
|||
|
|
switch(req)
|
|||
|
|
{
|
|||
|
|
case SET_REPORT : hidSetReportRequest(); break;
|
|||
|
|
case GET_REPORT : hidGetReportRequest(); break;
|
|||
|
|
default : break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/***************************************************************************
|
|||
|
|
* Function: Hid_SendReportDscrpt
|
|||
|
|
* Description:HID Data processing
|
|||
|
|
* Input: NULL
|
|||
|
|
* Return: NULL
|
|||
|
|
* Other: NULL
|
|||
|
|
**************************************************************************/
|
|||
|
|
void hidGetReportRequest(void)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/***************************************************************************
|
|||
|
|
* Function: fSet_Report
|
|||
|
|
* Description:HID Data processing
|
|||
|
|
* Input: NULL
|
|||
|
|
* Return: NULL
|
|||
|
|
* Other: NULL
|
|||
|
|
**************************************************************************/
|
|||
|
|
void hidSetReportRequest(void)
|
|||
|
|
{
|
|||
|
|
if(g_bUsbDevType == USBDEVTYPE_HIDKBD)
|
|||
|
|
{
|
|||
|
|
if((st_usbDeviceRequest.wValue & 0xFFFF) == 0x200)
|
|||
|
|
{
|
|||
|
|
while(!EP0STSCXDPKT);
|
|||
|
|
if(g_abUsbEp0Buf[0] & 0x02) //<2F><>д
|
|||
|
|
{
|
|||
|
|
g_bCapsLock = CAPSLOCKON;
|
|||
|
|
}
|
|||
|
|
else //Сд
|
|||
|
|
{
|
|||
|
|
g_bCapsLock = CAPSLOCKOFF;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(g_abUsbEp0Buf[0] & 0x01) //numlock
|
|||
|
|
{
|
|||
|
|
g_bNumLock = NUMLOCKON;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
g_bNumLock = NUMLOCKOFF;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void SendNumLock(void)
|
|||
|
|
{
|
|||
|
|
memset(g_abUsbEp2Buf,0,8);
|
|||
|
|
g_abUsbEp2Buf[2] = 0x53;
|
|||
|
|
usbEpnTxAll(2,g_abUsbEp2Buf,8);
|
|||
|
|
g_abUsbEp2Buf[2] = 0x00;
|
|||
|
|
usbEpnTxAll(2,g_abUsbEp2Buf,8);
|
|||
|
|
}
|
|||
|
|
|