63 lines
1.8 KiB
C
63 lines
1.8 KiB
C
/********************************************************************************
|
||
* Copyright (c) 2016, Beijing Tongfang Microelectroics Co., Ltd.
|
||
* All rights reserved.
|
||
* Module: HID Data processing
|
||
* Author: Yang Song
|
||
* Version: V1.0
|
||
* History:
|
||
* 2016-09-22 Original version
|
||
********************************************************************************/
|
||
#include "global.h"
|
||
|
||
/***************************************************************************
|
||
* Function: usbHidPosSendChars
|
||
* Description: 数据发送
|
||
* Input: buf 待发送数据地址
|
||
* Input: len 待发送数据长度
|
||
* Output: NULL
|
||
* Return: NULL
|
||
* Other: NULL
|
||
**************************************************************************/
|
||
void usbHidPosSendChars(u8 *buf,u32 len)
|
||
{
|
||
u32 offset = 0;
|
||
|
||
while(len >= HIDINTPKTSIZE){
|
||
memcpy(g_abUsbEp2Buf, buf+offset, HIDINTPKTSIZE);
|
||
usbEpnTxAll(2,g_abUsbEp2Buf,HIDINTPKTSIZE);
|
||
|
||
offset += HIDINTPKTSIZE;
|
||
len -= HIDINTPKTSIZE;
|
||
}
|
||
|
||
if (len > 0){
|
||
memcpy(g_abUsbEp2Buf, buf+offset, len);
|
||
usbEpnTxAll(2,g_abUsbEp2Buf,len);
|
||
}
|
||
}
|
||
|
||
/***************************************************************************
|
||
* Function: usbHidPosRecvChars
|
||
* Description: 数据接收
|
||
* Input: 把收到的数据拷贝到buf
|
||
* Input: bufSize buf的大小,防止越界
|
||
* Output: 收到的数据长度
|
||
* Return: NULL
|
||
* Other: NULL
|
||
**************************************************************************/
|
||
u32 usbHidPosRecvChars(u8 *buf, u32 bufSize)
|
||
{
|
||
u32 rcvlen = 0;
|
||
|
||
if (USBEP1STS & Bit19_En)
|
||
{
|
||
rcvlen = (USBEP1STS >> 8) & 0x000003FF;
|
||
rcvlen = rcvlen > bufSize ? bufSize:rcvlen;
|
||
memcpy(buf, g_abUsbEp1Buf, rcvlen);
|
||
|
||
USBEP1CON |= Bit9_En; // clear buf 控制端点是bit10 其他端点是bit9
|
||
}
|
||
|
||
return rcvlen;
|
||
}
|