45 lines
1.9 KiB
C
45 lines
1.9 KiB
C
#pragma once
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
enum {
|
|
CONTROL_STAGE_SETUP = 0, CONTROL_STAGE_DATA = 1, CONTROL_STAGE_ACK = 2,
|
|
TUSB_REQ_RCPT_DEVICE = 0, TUSB_REQ_TYPE_VENDOR = 2,
|
|
TUSB_DIR_OUT = 0, TUSB_DIR_IN = 1,
|
|
TUSB_XFER_BULK = 2, TUSB_XFER_INTERRUPT = 3,
|
|
TUSB_REQ_GET_STATUS = 0, TUSB_REQ_CLEAR_FEATURE = 1, TUSB_REQ_SET_FEATURE = 3,
|
|
TUSB_REQ_SET_ADDRESS = 5, TUSB_REQ_GET_DESCRIPTOR = 6,
|
|
TUSB_REQ_GET_CONFIGURATION = 8, TUSB_REQ_SET_CONFIGURATION = 9,
|
|
TUSB_REQ_GET_INTERFACE = 10, TUSB_REQ_SET_INTERFACE = 11,
|
|
TUSB_DESC_DEVICE = 1, TUSB_DESC_CONFIGURATION = 2, TUSB_DESC_STRING = 3,
|
|
HID_REPORT_TYPE_OUTPUT = 2,
|
|
};
|
|
typedef uint8_t hid_report_type_t;
|
|
typedef struct __attribute__((packed)) {
|
|
union {
|
|
uint8_t bmRequestType;
|
|
struct __attribute__((packed)) {
|
|
uint8_t recipient : 5;
|
|
uint8_t type : 2;
|
|
uint8_t direction : 1;
|
|
} bmRequestType_bit;
|
|
};
|
|
uint8_t bRequest;
|
|
uint16_t wValue, wIndex, wLength;
|
|
} tusb_control_request_t;
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
bool tud_control_xfer(uint8_t rhport, const tusb_control_request_t* request, void* buffer, uint16_t length);
|
|
bool tud_control_status(uint8_t rhport, const tusb_control_request_t* request);
|
|
bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, const tusb_control_request_t* request);
|
|
void tud_vendor_rx_cb(uint8_t instance, const uint8_t* buffer, uint16_t length);
|
|
void tud_vendor_tx_cb(uint8_t instance, uint32_t length);
|
|
const uint8_t* tud_hid_descriptor_report_cb(uint8_t instance);
|
|
uint16_t tud_hid_get_report_cb(uint8_t instance, uint8_t report_id, hid_report_type_t type, uint8_t* buffer, uint16_t length);
|
|
void tud_hid_set_report_cb(uint8_t instance, uint8_t report_id, hid_report_type_t type, const uint8_t* buffer, uint16_t length);
|
|
void tud_hid_report_complete_cb(uint8_t instance, const uint8_t* buffer, uint16_t length);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|