Main Page | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

usb_enum.h File Reference

Copyright (c) 2004 This file is a template for writing C software programs. More...

#include "usb_user_configuration.h"

Go to the source code of this file.

Data Structures

struct  S_UsbRequest
 Usb Request. More...

struct  S_usb_device_descriptor
 Usb Device Descriptor. More...

struct  S_usb_configuration_descriptor
 Usb Configuration Descriptor. More...

struct  S_usb_interface_descriptor
 Usb Interface Descriptor. More...

struct  S_usb_endpoint_descriptor
 Usb Endpoint Descriptor. More...

struct  S_usb_device_qualifier_descriptor
 Usb Device Qualifier Descriptor. More...

struct  S_usb_language_id
 Usb Language Descriptor. More...

struct  S_usb_hid_descriptor
 Usb HID Descriptor. More...


Defines

#define Usb_str_28(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28)
#define GET_STATUS   0x00
 Standard Requests.

#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
 Descriptor Types.

#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
 Standard Features.

#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
 Device Status.

#define SELF_POWERED   1
#define ATTACHED   0
 Device State.

#define POWERED   1
#define DEFAULT   2
#define ADDRESSED   3
#define CONFIGURED   4
#define SUSPENDED   5
#define USB_CONFIG_ATTRIBUTES_RESERVED   0x80
#define USB_CONFIG_BUSPOWERED   (USB_CONFIG_ATTRIBUTES_RESERVED | 0x00)
#define USB_CONFIG_SELFPOWERED   (USB_CONFIG_ATTRIBUTES_RESERVED | 0x40)
#define USB_CONFIG_REMOTEWAKEUP   (USB_CONFIG_ATTRIBUTES_RESERVED | 0x20)
#define HID   0x21
#define REPORT   0x22

Functions

void usb_enum_var_init (void)
 usb_enum_variable_init.

void usb_process_request (void)
 usb_process_request.


Detailed Description

Copyright (c) 2004 This file is a template for writing C software programs.

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 endpoint 0 management routines corresponding to the standard enumeration process (refer to chapter 9 of the USB specification. This file calls routines of the usb_user_enum.c file for non-standard request management. The enumeration parameters (descriptor tables) are contained in the usb_user_configuration.c file.

Version:
1.4.2.1 (c5131-usb-generic-1_2_0)

Todo:
Bug:

Definition in file usb_enum.h.


Define Documentation

#define Usb_str_28 a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
a10,
a11,
a12,
a13,
a14,
a15,
a16,
a17,
a18,
a19,
a20,
a21,
a22,
a23,
a24,
a25,
a26,
a27,
a28   ) 
 

Value:

{ (a1) <<8, (a2) <<8, (a3) <<8, (a4) <<8, (a5) <<8, (a6) <<8 \ , (a7) <<8, (a8) <<8, (a9) <<8, (a10)<<8, (a11)<<8, (a12)<<8 \ , (a13)<<8, (a14)<<8, (a15)<<8, (a16)<<8, (a17)<<8, (a18)<<8 \ , (a19)<<8, (a20)<<8, (a21)<<8, (a22)<<8, (a23)<<8, (a24)<<8 \ , (a25)<<8, (a26)<<8, (a27)<<8, (a28)<<8 }

Definition at line 31 of file usb_enum.h.

#define GET_STATUS   0x00
 

Standard Requests.

Definition at line 41 of file usb_enum.h.

Referenced by usb_process_request().

#define GET_DEVICE   0x01
 

Definition at line 42 of file usb_enum.h.

#define CLEAR_FEATURE   0x01
 

see FEATURES below

Definition at line 43 of file usb_enum.h.

Referenced by usb_process_request().

#define GET_STRING   0x03
 

Definition at line 44 of file usb_enum.h.

#define SET_FEATURE   0x03
 

see FEATURES below

Definition at line 45 of file usb_enum.h.

Referenced by usb_process_request().

#define SET_ADDRESS   0x05
 

Definition at line 46 of file usb_enum.h.

Referenced by usb_process_request().

#define GET_DESCRIPTOR   0x06
 

Definition at line 47 of file usb_enum.h.

Referenced by usb_process_request(), and usb_user_read_request().

#define SET_DESCRIPTOR   0x07
 

Definition at line 48 of file usb_enum.h.

Referenced by usb_process_request().

#define GET_CONFIGURATION   0x08
 

Definition at line 49 of file usb_enum.h.

Referenced by usb_process_request().

#define SET_CONFIGURATION   0x09
 

Definition at line 50 of file usb_enum.h.

Referenced by usb_process_request().

#define GET_INTERFACE   0x0A
 

Definition at line 51 of file usb_enum.h.

Referenced by usb_process_request().

#define SET_INTERFACE   0x0B
 

Definition at line 52 of file usb_enum.h.

Referenced by usb_process_request().

#define SYNCH_FRAME   0x0C
 

Definition at line 53 of file usb_enum.h.

Referenced by usb_process_request().

#define GET_DEVICE_DESCRIPTOR   1
 

Definition at line 55 of file usb_enum.h.

#define GET_CONFIGURATION_DESCRIPTOR   4
 

Definition at line 56 of file usb_enum.h.

#define REQUEST_DEVICE_STATUS   0x80
 

Definition at line 58 of file usb_enum.h.

Referenced by usb_get_status().

#define REQUEST_INTERFACE_STATUS   0x81
 

Definition at line 59 of file usb_enum.h.

Referenced by usb_get_status().

#define REQUEST_ENDPOINT_STATUS   0x82
 

Definition at line 60 of file usb_enum.h.

Referenced by usb_get_status().

#define ZERO_TYPE   0x00
 

Definition at line 61 of file usb_enum.h.

Referenced by usb_clear_feature().

#define INTERFACE_TYPE   0x01
 

Definition at line 62 of file usb_enum.h.

Referenced by usb_clear_feature(), and usb_set_feature().

#define ENDPOINT_TYPE   0x02
 

Definition at line 63 of file usb_enum.h.

Referenced by usb_clear_feature(), and usb_set_feature().

#define DEVICE_DESCRIPTOR   0x01
 

Descriptor Types.

Definition at line 67 of file usb_enum.h.

Referenced by usb_get_descriptor().

#define CONFIGURATION_DESCRIPTOR   0x02
 

Definition at line 68 of file usb_enum.h.

Referenced by usb_get_descriptor().

#define STRING_DESCRIPTOR   0x03
 

Definition at line 69 of file usb_enum.h.

Referenced by usb_user_get_descriptor().

#define INTERFACE_DESCRIPTOR   0x04
 

Definition at line 70 of file usb_enum.h.

#define ENDPOINT_DESCRIPTOR   0x05
 

Definition at line 71 of file usb_enum.h.

#define DEVICE_QUALIFIER_DESCRIPTOR   0x06
 

Definition at line 72 of file usb_enum.h.

#define OTHER_SPEED_CONFIGURATION_DESCRIPTOR   0x07
 

Definition at line 73 of file usb_enum.h.

#define FEATURE_DEVICE_REMOTE_WAKEUP   0x01
 

Standard Features.

Definition at line 77 of file usb_enum.h.

#define FEATURE_ENDPOINT_HALT   0x00
 

Definition at line 78 of file usb_enum.h.

Referenced by usb_clear_feature(), and usb_set_feature().

#define TEST_J   0x01
 

Definition at line 80 of file usb_enum.h.

#define TEST_K   0x02
 

Definition at line 81 of file usb_enum.h.

#define TEST_SEO_NAK   0x03
 

Definition at line 82 of file usb_enum.h.

#define TEST_PACKET   0x04
 

Definition at line 83 of file usb_enum.h.

#define TEST_FORCE_ENABLE   0x05
 

Definition at line 84 of file usb_enum.h.

#define BUS_POWERED   0
 

Device Status.

Definition at line 88 of file usb_enum.h.

#define SELF_POWERED   1
 

Definition at line 89 of file usb_enum.h.

#define ATTACHED   0
 

Device State.

Definition at line 93 of file usb_enum.h.

#define POWERED   1
 

Definition at line 94 of file usb_enum.h.

#define DEFAULT   2
 

Definition at line 95 of file usb_enum.h.

#define ADDRESSED   3
 

Definition at line 96 of file usb_enum.h.

#define CONFIGURED   4
 

Definition at line 97 of file usb_enum.h.

#define SUSPENDED   5
 

Definition at line 98 of file usb_enum.h.

#define USB_CONFIG_ATTRIBUTES_RESERVED   0x80
 

Definition at line 100 of file usb_enum.h.

#define USB_CONFIG_BUSPOWERED   (USB_CONFIG_ATTRIBUTES_RESERVED | 0x00)
 

Definition at line 101 of file usb_enum.h.

#define USB_CONFIG_SELFPOWERED   (USB_CONFIG_ATTRIBUTES_RESERVED | 0x40)
 

Definition at line 102 of file usb_enum.h.

#define USB_CONFIG_REMOTEWAKEUP   (USB_CONFIG_ATTRIBUTES_RESERVED | 0x20)
 

Definition at line 103 of file usb_enum.h.

#define HID   0x21
 

Definition at line 107 of file usb_enum.h.

#define REPORT   0x22
 

Definition at line 108 of file usb_enum.h.


Function Documentation

void usb_enum_var_init void   ) 
 

usb_enum_variable_init.

This function initializes the main usb variables:

  • endpoint status
  • connection status

Warning:
Code:xx bytes (function code length)
Parameters:
none 
Returns:
none

< USB is not connected

< Default configuration number is 0

Definition at line 78 of file usb_enum.c.

References endpoint_status, ep_num, FALSE, NB_ENDPOINTS, rx_bank, U8, usb_configuration_nb, and usb_connected.

Referenced by usb_interrupt().

00079 { 00080 U8 ep_num ; 00081 00082 for( ep_num=0 ; ep_num<NB_ENDPOINTS ; ep_num++ ) 00083 { 00084 endpoint_status[ep_num] = 0; 00085 } 00086 usb_connected = FALSE; 00087 usb_configuration_nb = 0 ; 00088 #ifndef NO_SUPPORT_USB_PING_PONG 00089 rx_bank = 0; 00090 #endif 00091 00092 }

void usb_process_request void   ) 
 

usb_process_request.

This function reads the SETUP request sent to the default control endpoint and calls the appropriate function. When exiting of the usb_read_request function, the device is ready to manage the next request.

Warning:
Code:xx bytes (function code length)
Parameters:
none 
Returns:
none NOTE: list of supported requests: GET_DESCRIPTOR GET_CONFIGURATION SET_ADDRESS SET_CONFIGURATION CLEAR_FEATURE SET_FEATURE GET_STATUS

< un-supported request => call to user read request

Definition at line 115 of file usb_enum.c.

References bmRequestType, CLEAR_FEATURE, EP_CONTROL, FALSE, GET_CONFIGURATION, GET_DESCRIPTOR, GET_INTERFACE, GET_STATUS, SET_ADDRESS, SET_CONFIGURATION, SET_DESCRIPTOR, SET_FEATURE, SET_INTERFACE, SYNCH_FRAME, U8, Usb_ack_receive_setup, usb_clear_feature(), Usb_enable_stall_handshake, usb_get_configuration(), usb_get_descriptor(), usb_get_status(), Usb_read_byte, Usb_select_endpoint, usb_set_address(), usb_set_configuration(), usb_set_feature(), and usb_user_read_request().

Referenced by usb_task().

00116 { 00117 U8 bmRequest; 00118 00119 Usb_select_endpoint(EP_CONTROL); 00120 00121 bmRequestType = Usb_read_byte(); 00122 bmRequest = Usb_read_byte(); 00123 00124 switch (bmRequest) 00125 { 00126 case GET_DESCRIPTOR: 00127 if (0x80 == bmRequestType) { usb_get_descriptor(); } 00128 else { usb_user_read_request(bmRequestType, bmRequest); } 00129 break; 00130 00131 case GET_CONFIGURATION: 00132 if (0x80 == bmRequestType) { usb_get_configuration(); } 00133 else { usb_user_read_request(bmRequestType, bmRequest); } 00134 break; 00135 00136 case SET_ADDRESS: 00137 if (0x00 == bmRequestType) { usb_set_address(); } 00138 else { usb_user_read_request(bmRequestType, bmRequest); } 00139 break; 00140 00141 case SET_CONFIGURATION: 00142 if (0x00 == bmRequestType) { usb_set_configuration(); } 00143 else { usb_user_read_request(bmRequestType, bmRequest); } 00144 break; 00145 00146 case CLEAR_FEATURE: 00147 if (0x02 >= bmRequestType) { usb_clear_feature(); } 00148 else { usb_user_read_request(bmRequestType, bmRequest); } 00149 break; 00150 00151 case SET_FEATURE: 00152 if (0x02 >= bmRequestType) { usb_set_feature(); } 00153 else { usb_user_read_request(bmRequestType, bmRequest); } 00154 break; 00155 00156 case GET_STATUS: 00157 if ((0x7F < bmRequestType) & (0x82 >= bmRequestType)) 00158 { usb_get_status(); } 00159 else { usb_user_read_request(bmRequestType, bmRequest); } 00160 break; 00161 00162 case GET_INTERFACE: 00163 case SET_DESCRIPTOR: 00164 case SET_INTERFACE: 00165 case SYNCH_FRAME: 00166 default: 00167 if(usb_user_read_request(bmRequestType, bmRequest) == FALSE) 00168 { 00169 Usb_enable_stall_handshake(); 00170 Usb_ack_receive_setup(); 00171 return; 00172 } 00173 break; 00174 } 00175 }


Generated on Mon Apr 10 17:23:31 2006 for Atmel by doxygen 1.3.7