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

📄 usbs.c

📁 mips cpu 君正4730 4740的 ucosii 源码 包括系统 摄像头 网络 文件系统等等测试
💻 C
字号:
#include "usb.h"#define dprintf(x...)static const USB_DeviceRequest UDReq[] = {	{}, // get_status	{}, // clear_feature	{}, // RFU	{}, // set_feature	{}, // RFU	{}, // set_address	{}, // get_descriptor	{}, // set_descriptor	{}, // get_configuration	{0, SET_CONFIGURATION, 1, 0, 8},	{}, // get_interface	{0, SET_INTERFACE, 1, 0, 8},	{}, // SOF};void usbEncodeDevReq(u8 *buf, int index){	memcpy(buf, &UDReq[index], sizeof(USB_DeviceRequest));}void usbHandleStandDevReq(u8 *buf){	USB_DeviceRequest *dreq = (USB_DeviceRequest *)buf;	switch (dreq->bRequest) {	case GET_DESCRIPTOR:		if (dreq->bmRequestType == 0x80)	/* Dev2Host */			switch(dreq->wValue >> 8) {			case DEVICE_DESCRIPTOR:				dprintf("get device\n");				sendDevDesc(dreq->wLength);				break;			case CONFIGURATION_DESCRIPTOR:				dprintf("get config\n");				sendConfDesc(dreq->wLength);				break;			case STRING_DESCRIPTOR:				if (dreq->wLength == 0x02)					HW_SendPKT(0, "\x04\x03", 2);				else					sendDevDescString(dreq->wLength);				//HW_SendPKT(0, "\x04\x03\x09\x04", 2);				break;			}		break;	case GET_STATUS:		switch (dreq->bmRequestType) {		case 80:	/* device */			HW_SendPKT(0, "\x01\x00", 2);			break;		case 81:	/* interface */		case 82:	/* ep */			HW_SendPKT(0, "\x00\x00", 2);			break;		}		break;	case CLEAR_FEATURE:	case SET_CONFIGURATION:	case SET_INTERFACE:	case SET_FEATURE:#if 0		printf("Send ZERO packet at 0.\n");		HW_SendZeroPKT(0);#endif		break;	}}void usbHandleDevReq(u8 *buf){	dprintf("dev req:%d\n", (buf[0] & (3 << 5)) >> 5);	switch ((buf[0] & (3 << 5)) >> 5) {	case 0: /* Standard request */		usbHandleStandDevReq(buf);		break;	case 1: /* Class request */		usbHandleClassDevReq(buf);		break;	case 2: /* Vendor request */		break;	}}

⌨️ 快捷键说明

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