#include "config.h"
#include "conf_usb.h"
#include "host_template_task.h"
#include "modules/usb/host_chap9/usb_host_task.h"
#include "modules/usb/host_chap9/usb_host_enum.h"
#include "lib_mcu/usb/usb_drv.h"
#include "lib_mcu/uart/uart_lib.h"
Go to the source code of this file.
Functions | |
void | host_template_task_init (void) |
void | host_template_task (void) |
void | call_back_template_1 (U8 status, U16 nb_byte) |
void | call_back_template_2 (U8 status, U16 nb_byte) |
Variables | |
U8 | tab [64] |
U8 | busy = FALSE |
U8 | pipe_out |
U8 | pipe_in |
U8 | pipe_interrupt_in |
Definition in file host_template_task.c.
void host_template_task_init | ( | void | ) |
This function initializes the high level host application Here initialize specific hardware ressources requirements.
none |
Definition at line 74 of file host_template_task.c.
References Hwb_button_init, i, Joy_init, Leds_init, and tab.
00075 { 00076 U8 i; 00077 for(i=0;i<sizeof(tab);i++) 00078 { 00079 tab[i]=i; 00080 } 00081 Leds_init(); 00082 Joy_init(); 00083 Hwb_button_init(); 00084 }
void host_template_task | ( | void | ) |
High level host application task entry point Put here the code of your host application. The sample code just sends and receives 64bytes from IN and OUT pipes
none |
Definition at line 96 of file host_template_task.c.
References busy, call_back_template_1(), FALSE, Get_class, Get_ep_addr, Get_nb_supported_interface, Get_protocol, Get_subclass, Host_ack_in_received, Host_continuous_in_mode, host_get_data(), host_get_hwd_pipe_nb(), Host_read_byte, Host_request_resume, Host_request_suspend, Host_select_pipe, host_send_data(), host_send_data_interrupt(), Host_send_in, Host_unfreeze_pipe, i, Is_btn_middle, Is_device_disconnection_event, Is_ep_addr_in, Is_host_in_received, Is_host_ready, Is_host_stall, Is_host_suspended, Is_hwb, Is_new_device_connection_event, pipe_in, pipe_interrupt_in, pipe_out, tab, and TRUE.
00097 { 00098 #if (USB_HOST_PIPE_INTERRUPT_TRANSFER == DISABLE) 00099 U8 sta; 00100 #endif 00101 U16 *ptr_nb; 00102 U16 nb; 00103 U8 i; 00104 00105 ptr_nb=&nb; 00106 00107 // First check the host controller is in full operating mode with the B device attached 00108 // and enumerated 00109 if(Is_host_ready()) 00110 { 00111 //Put here the code to do in host mode 00112 00113 // New device connection (executed only one time after device connection) 00114 if(Is_new_device_connection_event()) 00115 { 00116 for(i=0;i<Get_nb_supported_interface();i++) 00117 { 00118 // First interface with two bulk IN/OUT pipes 00119 if(Get_class(i)==0x00 && Get_subclass(i)==0x00 && Get_protocol(i)==0x00) 00120 { 00121 //Get correct physical pipes associated to IN/OUT Endpoints 00122 if(Is_ep_addr_in(Get_ep_addr(i,0))) 00123 { //Yes associate it to the IN pipe 00124 pipe_in=host_get_hwd_pipe_nb(Get_ep_addr(i,0)); 00125 pipe_out=host_get_hwd_pipe_nb(Get_ep_addr(i,1)); 00126 } 00127 else 00128 { //No, invert... 00129 pipe_in=host_get_hwd_pipe_nb(Get_ep_addr(i,1)); 00130 pipe_out=host_get_hwd_pipe_nb(Get_ep_addr(i,0)); 00131 } 00132 } 00133 // Seconf interface with interrupt IN pipe 00134 if(Get_class(i)==0x00 && Get_subclass(i)==0x55 && Get_protocol(i)==0xAA) 00135 { 00136 pipe_interrupt_in=host_get_hwd_pipe_nb(Get_ep_addr(i,0)); 00137 Host_select_pipe(pipe_interrupt_in); 00138 Host_continuous_in_mode(); 00139 Host_unfreeze_pipe(); 00140 } 00141 } 00142 } 00143 00144 00145 // Firt interface (bulk IN/OUT) management 00146 // In polling mode 00147 #if (USB_HOST_PIPE_INTERRUPT_TRANSFER == DISABLE) 00148 // The sample task sends 64 byte through pipe nb2... 00149 sta=host_send_data(pipe_out,64,tab); 00150 00151 // And receives 64bytes from pipe nb 1... 00152 *ptr_nb=64; 00153 sta=host_get_data(pipe_in,ptr_nb,tab); 00154 #else 00155 // similar applicative task under interrupt mode... 00156 if (busy==FALSE) 00157 { 00158 busy=TRUE; 00159 host_send_data_interrupt(pipe_out,64,tab,call_back_template_1); 00160 } 00161 00162 #endif 00163 00164 // Second interface management (USB interrupt IN pipe) 00165 Host_select_pipe(pipe_interrupt_in); 00166 if(Is_host_in_received()) 00167 { 00168 if(Is_host_stall()==FALSE) 00169 { 00170 i=Host_read_byte(); 00171 Host_read_byte(); 00172 } 00173 Host_ack_in_received(); Host_send_in(); 00174 } 00175 00176 // Here an example of an applicative request to go to USB suspend ... 00177 if(Is_hwb()) 00178 { 00179 Host_request_suspend(); 00180 } 00181 } 00182 // Here an applicative example of resume request... 00183 if(Is_host_suspended() && Is_btn_middle()) 00184 { 00185 Host_request_resume(); 00186 } 00187 00188 //Device disconnection... 00189 if(Is_device_disconnection_event()) 00190 { 00191 //Put here code to be executed upon device disconnection... 00192 } 00193 }
Definition at line 195 of file host_template_task.c.
Referenced by host_template_task().
00196 { 00197 if (status==PIPE_GOOD) 00198 { 00199 host_get_data_interrupt(pipe_in,64,tab,call_back_template_2); 00200 } 00201 00202 }
Definition at line 204 of file host_template_task.c.
Referenced by call_back_template_1().
Definition at line 58 of file host_template_task.c.
Referenced by call_back_template_1(), host_template_task(), and host_template_task_init().
Definition at line 59 of file host_template_task.c.
Referenced by call_back_template_2(), and host_template_task().
Definition at line 61 of file host_template_task.c.
Referenced by call_back_template_1(), and host_template_task().