#ifndef __USB_API_H__SYN81IFYBN__ #define __USB_API_H__SYN81IFYBN__ #include void usb_setup(void); void usb_set_user_process(struct process *p); void usb_setup_bulk_endpoint(unsigned char addr, unsigned char *buffer, unsigned int buf_size); void usb_setup_interrupt_endpoint(unsigned char addr, unsigned char *buffer, unsigned int buf_size); /* Get a pointer to a buffer dat of length lenp. To which USB data can be written. */ void usb_send_buffer_get(unsigned char ep_addr, unsigned int offset, unsigned char **dat, unsigned int *lenp); /* Notify the USB subsystem that data has been written to the buffer returned by usb_send_buffer_get. */ void usb_send_buffer_commit(unsigned char ep_addr, unsigned int len); unsigned int usb_send_data(unsigned char ep_addr, const unsigned char *dat, unsigned int len); unsigned int usb_recv_data(unsigned char ep_addr, unsigned char *dat, unsigned int len); void usb_disable_endpoint(unsigned char addr); /* Asynchronous */ #define USB_USER_MSG_TYPE_CONFIG 0x01 #define USB_USER_MSG_TYPE_SUSPEND 0x02 #define USB_USER_MSG_TYPE_RESUME 0x03 /* Synchronous, the supplied data is only valid during the event */ #define USB_USER_MSG_TYPE_EP_OUT(ep_addr) ((((ep_addr) & 0x7f)<<4) | 0x01) #define USB_USER_MSG_TYPE_EP_IN(ep_addr) ((((ep_addr) & 0x7f)<<4) | 0x02) struct usb_user_msg { unsigned int type; union { /* For EPx_OUT */ unsigned short length; /* For CONFIG */ unsigned char config; } data; }; #endif /* __USB_API_H__SYN81IFYBN__ */