45 lines
847 B
C
45 lines
847 B
C
#ifndef USB_HOST_H_
|
|
#define USB_HOST_H_
|
|
|
|
#define REPORT_MAX_SIZE 64
|
|
#define REPORT_BUF_SIZE 256
|
|
#define DESCRIPTOR_MAX_SIZE 256
|
|
|
|
typedef enum {
|
|
HOST_INACTIVE=0,
|
|
HOST_MOUNTED,
|
|
HOST_UNMOUNTED,
|
|
HOST_START_LISTEN,
|
|
HOST_LISTENING,
|
|
HOST_STOP_LISTEN,
|
|
} host_state_t;
|
|
|
|
struct report_desc {
|
|
uint8_t dev_addr;
|
|
uint8_t instance;
|
|
uint8_t descriptor[DESCRIPTOR_MAX_SIZE];
|
|
uint16_t desc_len;
|
|
struct report_desc *next;
|
|
bool listening;
|
|
};
|
|
|
|
struct hid_report {
|
|
uint8_t dev_addr;
|
|
uint8_t instance;
|
|
uint16_t len;
|
|
uint8_t report[REPORT_MAX_SIZE];
|
|
};
|
|
|
|
#define REPORT_DESC_ALLOC() (struct report_desc *)malloc(sizeof(struct report_desc))
|
|
|
|
extern host_state_t host_state;
|
|
extern struct report_desc *descriptors;
|
|
extern uint8_t num_mounted;
|
|
|
|
void usb_host_main(void);
|
|
struct report_desc * report_desc_find(uint8_t dev_addr, uint8_t instance);
|
|
|
|
|
|
#endif
|
|
|