Modules | |
Configuration macros for endpoints | |
List of the standard macro used to configure pipes and endpoints. | |
USB Pads Regulator drivers | |
Turns ON/OFF USB pads regulator. | |
USB common management drivers | |
These macros manage the USB controller. | |
USB device controller drivers | |
These macros manage the USB Device controller. | |
USB endpoint drivers | |
These macros manage the common features of the endpoints. | |
USB host controller drivers | |
These macros manage the USB Host controller. | |
USB pipe drivers | |
These macros manage the common features of the pipes. | |
Defines | |
#define | wSWAP(x) |
wSWAP This macro swaps the U8 order in words. | |
#define | Usb_write_word_enum_struc(x) (x) |
Usb_write_word_enum_struc This macro help to fill the U16 fill in USB enumeration struct. | |
Functions | |
U8 | usb_config_ep (U8 config0, U8 config1) |
usb_configure_endpoint. | |
U8 | usb_select_enpoint_interrupt (void) |
usb_select_endpoint_interrupt. | |
U8 | usb_send_packet (U8 ep_num, U8 *tbuf, U8 data_length) |
usb_send_packet. | |
U8 | usb_read_packet (U8 ep_num, U8 *rbuf, U8 data_length) |
usb_read_packet. | |
void | usb_halt_endpoint (U8 ep_num) |
usb_halt_endpoint. | |
U8 | usb_init_device (void) |
usb_init_device. | |
void | usb_start_device (void) |
This function initializes the USB device controller. | |
Variables | |
volatile uint16_t | g_usb_event |
Public : U16 g_usb_event usb_connected is used to store USB events detected upon USB general interrupt subroutine Its value is managed by the following macros (See usb_task.h file) Usb_send_event(x) Usb_ack_event(x) Usb_clear_all_event() Is_usb_event(x) Is_not_usb_event(x). | |
USB Events | |
| |
#define | Usb_send_event(x) (g_usb_event |= (1<<x)) |
Send event. | |
#define | Usb_ack_event(x) (g_usb_event &= ~(1<<x)) |
Ack event processed. | |
#define | Usb_clear_all_event() (g_usb_event = 0) |
Clear all events. | |
#define | Is_usb_event(x) ((g_usb_event & (1<<x)) ? TRUE : FALSE) |
Check for USB event. | |
#define | Is_not_usb_event(x) ((g_usb_event & (1<<x)) ? FALSE: TRUE) |
Check for USB event NOT occuring. | |
#define | Is_usb_device() (g_usb_mode==USB_MODE_DEVICE ? TRUE : FALSE) |
Check if USB is device. | |
#define | EVT_USB_POWERED 1 |
USB Event: USB plugged. | |
#define | EVT_USB_UNPOWERED 2 |
USB Event: USB un-plugged. | |
#define | EVT_USB_DEVICE_FUNCTION 3 |
USB Event: USB in device. | |
#define | EVT_USB_HOST_FUNCTION 4 |
USB Event: USB in host. | |
#define | EVT_USB_SUSPEND 5 |
USB Event: USB suspend. | |
#define | EVT_USB_WAKE_UP 6 |
USB Event: USB wake up. | |
#define | EVT_USB_RESUME 7 |
USB Event: USB resume. | |
#define | EVT_USB_RESET 8 |
USB Event: USB reset. | |
#define | EVT_USB_SETUP_RX 9 |
USB Event: USB setup received. | |
Standard requests defines | |
| |
#define | GET_STATUS 0x00 |
#define | GET_DEVICE 0x01 |
#define | CLEAR_FEATURE 0x01 |
see FEATURES below | |
#define | GET_STRING 0x03 |
#define | SET_FEATURE 0x03 |
see FEATURES below | |
#define | SET_ADDRESS 0x05 |
#define | GET_DESCRIPTOR 0x06 |
#define | SET_DESCRIPTOR 0x07 |
#define | GET_CONFIGURATION 0x08 |
#define | SET_CONFIGURATION 0x09 |
#define | GET_INTERFACE 0x0A |
#define | SET_INTERFACE 0x0B |
#define | SYNCH_FRAME 0x0C |
#define | GET_DEVICE_DESCRIPTOR 1 |
#define | GET_CONFIGURATION_DESCRIPTOR 4 |
#define | REQUEST_DEVICE_STATUS 0x80 |
#define | REQUEST_INTERFACE_STATUS 0x81 |
#define | REQUEST_ENDPOINT_STATUS 0x82 |
#define | ZERO_TYPE 0x00 |
#define | INTERFACE_TYPE 0x01 |
#define | ENDPOINT_TYPE 0x02 |
#define | DEVICE_DESCRIPTOR 0x01 |
#define | CONFIGURATION_DESCRIPTOR 0x02 |
#define | STRING_DESCRIPTOR 0x03 |
#define | INTERFACE_DESCRIPTOR 0x04 |
#define | ENDPOINT_DESCRIPTOR 0x05 |
#define | DEVICE_QUALIFIER_DESCRIPTOR 0x06 |
#define | OTHER_SPEED_CONFIGURATION_DESCRIPTOR 0x07 |
#define | FEATURE_DEVICE_REMOTE_WAKEUP 0x01 |
#define | FEATURE_ENDPOINT_HALT 0x00 |
#define | TEST_J 0x01 |
#define | TEST_K 0x02 |
#define | TEST_SEO_NAK 0x03 |
#define | TEST_PACKET 0x04 |
#define | TEST_FORCE_ENABLE 0x05 |
#define | BUS_POWERED 0 |
#define | SELF_POWERED 1 |
#define Usb_write_word_enum_struc | ( | x | ) | (x) |
#define wSWAP | ( | x | ) |
U8 usb_config_ep | ( | U8 | config0, | |
U8 | config1 | |||
) |
usb_configure_endpoint.
This function configures an endpoint with the selected type.
config0 | ||
config1 |
void usb_halt_endpoint | ( | U8 | ep_num | ) |
usb_halt_endpoint.
This function sends a STALL handshake for the next Host request. A STALL handshake will be send for each next request untill a SETUP or a Clear Halt Feature occurs for this endpoint.
ep_num | number of the addressed endpoint |
U8 usb_init_device | ( | void | ) |
usb_init_device.
This function initializes the USB device controller and configures the Default Control Endpoint.
FALSE | if not Is_usb_id_device() returns FALSE |
Referenced by ISR(), and usb_start_device().
U8 usb_read_packet | ( | U8 | ep_num, | |
U8 * | rbuf, | |||
U8 | data_length | |||
) |
usb_read_packet.
This function moves the data stored in the selected endpoint fifo to the address specified by *rbuf.
ep_num | number of the addressed endpoint | |
rbuf | aaddress of the first data to write with the USB data | |
data_length | number of bytes to read |
Example: while(!(Usb_rx_complete)); // wait new packet received usb_read_packet(4,&first_data,usb_get_nb_byte); // read packet from ep 4 Usb_clear_rx(); // acknowledge the transmit
Note: rbuf is incremented of 'data_length'.
U8 usb_select_enpoint_interrupt | ( | void | ) |
usb_select_endpoint_interrupt.
This function select the endpoint where an event occurs and returns the number of this endpoint. If no event occurs on the endpoints, this function returns 0.
U8 usb_send_packet | ( | U8 | ep_num, | |
U8 * | tbuf, | |||
U8 | data_length | |||
) |
usb_send_packet.
This function moves the data pointed by tbuf to the selected endpoint fifo and sends it through the USB.
ep_num | number of the addressed endpoint | |
tbuf | address of the first data to send | |
data_length | number of bytes to send |
Example: usb_send_packet(3,&first_data,0x20); // send packet on the endpoint #3 while(!(Usb_tx_complete)); // wait packet ACK'ed by the Host Usb_clear_tx_complete(); // acknowledge the transmit
Note: tbuf is incremented of 'data_length'.
void usb_start_device | ( | void | ) |
This function initializes the USB device controller.
This function enables the USB controller and init the USB interrupts. The aim is to allow the USB connection detection in order to send the appropriate USB event to the operating mode manager. Start device function is executed once VBUS connection has been detected either by the VBUS change interrupt either by the VBUS high level
Definition at line 149 of file usb_task.c.
References Pll_start_auto, Usb_attach, Usb_enable_reset_interrupt, usb_init_device(), and Wait_pll_ready.
Referenced by ISR(), and PROCESS_THREAD().