#include "config.h"
#include "conf_usb.h"
#include "usb_drv.h"
Include dependency graph for usb_drv.c:
Go to the source code of this file.
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. |
Copyright (c) 2006 Atmel.
Use of this program is subject to Atmel's End User License Agreement. Please read file license.txt for copyright notice.
This file contains the USB driver routines.
Definition in file usb_drv.c.
usb_configure_endpoint.
This function configures an endpoint with the selected type.
config0 | ||
config1 |
Definition at line 39 of file usb_drv.c.
References ALLOC, Is_endpoint_configured, Usb_allocate_memory, and Usb_enable_endpoint.
00040 { 00041 Usb_enable_endpoint(); 00042 UECFG0X = config0; 00043 UECFG1X = (UECFG1X & (1<<ALLOC)) | config1; 00044 Usb_allocate_memory(); 00045 return (Is_endpoint_configured()); 00046 }
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.
none |
Definition at line 59 of file usb_drv.c.
References ep_num, MAX_EP_NB, and Usb_interrupt_flags.
00060 { 00061 U8 interrupt_flags; 00062 U8 ep_num; 00063 00064 ep_num = 0; 00065 interrupt_flags = Usb_interrupt_flags(); 00066 00067 while(ep_num < MAX_EP_NB) 00068 { 00069 if (interrupt_flags & 1) 00070 { 00071 return (ep_num); 00072 } 00073 else 00074 { 00075 ep_num++; 00076 interrupt_flags = interrupt_flags >> 1; 00077 } 00078 } 00079 return 0; 00080 }
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 |
Note: tbuf is incremented of 'data_length'.
Definition at line 102 of file usb_drv.c.
References Is_usb_write_enabled, Usb_select_endpoint, and Usb_write_byte.
00103 { 00104 U8 remaining_length; 00105 00106 remaining_length = data_length; 00107 Usb_select_endpoint(ep_num); 00108 while(Is_usb_write_enabled() && (0 != remaining_length)) 00109 { 00110 Usb_write_byte(*tbuf); 00111 remaining_length--; 00112 tbuf++; 00113 } 00114 return remaining_length; 00115 }
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 |
Note: rbuf is incremented of 'data_length'.
Definition at line 137 of file usb_drv.c.
References Is_usb_read_enabled, Usb_read_byte, and Usb_select_endpoint.
00138 { 00139 U8 remaining_length; 00140 00141 remaining_length = data_length; 00142 Usb_select_endpoint(ep_num); 00143 00144 while(Is_usb_read_enabled() && (0 != remaining_length)) 00145 { 00146 *rbuf = Usb_read_byte(); 00147 remaining_length--; 00148 rbuf++; 00149 } 00150 return remaining_length; 00151 }
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 |
Definition at line 163 of file usb_drv.c.
References Usb_enable_stall_handshake, and Usb_select_endpoint.
00164 { 00165 Usb_select_endpoint(ep_num); 00166 Usb_enable_stall_handshake(); 00167 }
U8 usb_init_device | ( | void | ) |
usb_init_device.
This function initializes the USB device controller and configures the Default Control Endpoint.
none |
Definition at line 179 of file usb_drv.c.
References DIRECTION_OUT, EP_CONTROL, FALSE, Is_usb_endpoint_enabled, NYET_DISABLED, ONE_BANK, SIZE_32, TYPE_CONTROL, usb_configure_endpoint, and Usb_select_endpoint.
Referenced by usb_general_interrupt(), and usb_start_device().
00180 { 00181 Usb_select_endpoint(EP_CONTROL); 00182 if(!Is_usb_endpoint_enabled()) 00183 { 00184 return usb_configure_endpoint(EP_CONTROL, \ 00185 TYPE_CONTROL, \ 00186 DIRECTION_OUT, \ 00187 SIZE_32, \ 00188 ONE_BANK, \ 00189 NYET_DISABLED); 00190 } 00191 return FALSE; 00192 }