/******************************************************************************** * 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; }