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

📄 usb_class_requests.c

📁 reference about wireless design which is helpful to everyone
💻 C
字号:
#include "cc2511_usb_library_headers.h"
#include "usb_class_requests.h"
#include "usb_hid_reports.h"



void usbcrSetReport(void) {

    // Received header
    if (usbfwData.ep0Status == EP_IDLE) {
        // Only accept keyboard LED status
        usbfwData.ep0Status = ((HIBYTE(usbSetupHeader.value) == RT_OUTPUT) && (usbSetupHeader.index == 0) && (usbSetupHeader.length == 1)) ? EP_RX : EP_STALL;
        usbSetupData.bytesLeft = 1;
        usbSetupData.pBuffer = &hidData.keyboardLedStatus;

    // Received data
    } else if (usbfwData.ep0Status == EP_RX) {
        //implement the use of LED's here
    }
}


void usbcrGetReport(void) {
    // Is the length stall correct?
    if ((HIBYTE(usbSetupHeader.value) != RT_INPUT) || (usbSetupHeader.length != 0) || (usbSetupHeader.index & 0xFFFE)) {
        usbfwData.ep0Status = EP_STALL;
    } else {
        switch (LOBYTE(usbSetupHeader.index)) {
        case KEYBOARD_INDEX: usbSetupData.pBuffer = (BYTE *) &hidData.keyboardReport; break;
        case MOUSE_INDEX:    usbSetupData.pBuffer = (BYTE *) &hidData.mouseReport; break;
        }
        usbSetupData.bytesLeft = usbSetupHeader.length;
	    usbfwData.ep0Status = EP_TX;
    }
}


void usbcrSetProtocol(void) {
    if ((usbSetupHeader.value & 0xFFFE) || (usbSetupHeader.length != 0) || (usbSetupHeader.index & 0xFFFE)) {
        usbfwData.ep0Status = EP_STALL;
    } else {
        switch (LOBYTE(usbSetupHeader.index)) {
        case KEYBOARD_INDEX: hidData.keyboardProtocol = LOBYTE(usbSetupHeader.value); break;
        case MOUSE_INDEX:    hidData.mouseProtocol = LOBYTE(usbSetupHeader.value); break;
        }
    }
}


void usbcrGetProtocol(void) {
    if ((HIBYTE(usbSetupHeader.value) != 0) || (usbSetupHeader.length != 1) || (usbSetupHeader.index & 0xFFFE)) {
        usbfwData.ep0Status = EP_STALL;
    } else {
        switch (LOBYTE(usbSetupHeader.index)) {
        case KEYBOARD_INDEX: usbSetupData.pBuffer = &hidData.keyboardProtocol; break;
        case MOUSE_INDEX:    usbSetupData.pBuffer = &hidData.mouseProtocol; break;
        }
        usbSetupData.bytesLeft = 1;
	    usbfwData.ep0Status = EP_TX;
    }
}


void usbcrSetIdle(void) {
    if ((usbSetupHeader.length != 0) || (usbSetupHeader.index & 0xFFFE)) {
        usbfwData.ep0Status = EP_STALL;
    } else {
        switch (LOBYTE(usbSetupHeader.index)) {
        case KEYBOARD_INDEX: hidData.keyboardIdle = usbSetupHeader.value; break;
        case MOUSE_INDEX:    hidData.mouseIdle = usbSetupHeader.value; break;
        }
    }
}


void usbcrGetIdle(void) {
    if ((usbSetupHeader.length != 1) || (usbSetupHeader.index & 0xFFFE)) {
        usbfwData.ep0Status = EP_STALL;
    } else {
        switch (LOBYTE(usbSetupHeader.index)) {
        case KEYBOARD_INDEX: usbSetupData.pBuffer = (BYTE *) &hidData.keyboardIdle; break;
        case MOUSE_INDEX:    usbSetupData.pBuffer = (BYTE *) &hidData.mouseIdle; break;
        }
        usbSetupData.bytesLeft = 1;
	    usbfwData.ep0Status = EP_TX;
    }
}

⌨️ 快捷键说明

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