#include "config.h"#include "conf_usb.h"#include "hid_task.h"#include "lib_mcu/usb/usb_drv.h"#include "usb_descriptors.h"#include "modules/usb/device_chap9/usb_standard_request.h"#include "usb_specific_request.h"#include "lib_mcu/util/start_boot.h"
Go to the source code of this file.
Functions | |
| void | hid_report_out (void) |
| void | hid_report_in (void) |
| void | hid_task_init (void) |
| void | hid_task (void) |
| void | sof_action () |
Variables | |
| volatile U8 | cpt_sof = 0 |
| U8 | jump_bootloader |
| U8 | g_last_joy = 0 |
Definition in file hid_task.c.
| void hid_report_out | ( | void | ) |
Get data report from Host
Definition at line 97 of file hid_task.c.
References EP_HID_OUT, Is_usb_receive_out, jump_bootloader, Led0_off, Led0_on, Led1_off, Led1_on, Led2_off, Led2_on, Leds_off, start_boot(), Usb_ack_receive_out, Usb_detach, Usb_read_byte, and Usb_select_endpoint.
Referenced by hid_task().
00098 { 00099 Usb_select_endpoint(EP_HID_OUT); 00100 if(Is_usb_receive_out()) 00101 { 00102 //* Read report from HID Generic Demo 00103 U8 led_state; 00104 U8 led_number; 00105 led_state = Usb_read_byte()&0x0F; // RepportOUT[0] is LEDS value 00106 led_number = Usb_read_byte()&0x0F; 00107 switch (led_number) 00108 { 00109 case 1: 00110 if(led_state) 00111 { Led0_on(); } 00112 else {Led0_off();} 00113 break; 00114 case 2: 00115 if(led_state) 00116 { Led1_on(); } 00117 else {Led1_off();} 00118 break; 00119 case 3: 00120 if(led_state) 00121 { Led2_on(); } 00122 else {Led2_off();} 00123 break; 00124 } 00125 Usb_ack_receive_out(); 00126 } 00127 00128 //** Check if we received DFU mode command from host 00129 if(jump_bootloader) 00130 { 00131 U32 volatile tempo; 00132 Leds_off(); 00133 Usb_detach(); // Detach actual generic HID application 00134 for(tempo=0;tempo<70000;tempo++); // Wait some time before 00135 start_boot(); // Jumping to booltoader 00136 } 00137 }
| void hid_report_in | ( | void | ) |
Send data report to Host
Definition at line 142 of file hid_task.c.
References EP_HID_IN, g_last_joy, Is_joy_down, Is_usb_write_enabled, Usb_ack_in_ready, Usb_select_endpoint, and Usb_write_byte.
Referenced by hid_task().
00143 { 00144 U8 joy =0; 00145 00146 Usb_select_endpoint(EP_HID_IN); 00147 if(!Is_usb_write_enabled()) 00148 return; // Not ready to send report 00149 00150 // Build the Joytick report 00151 if(Is_joy_down()) 00152 { 00153 joy=0x01; 00154 } 00155 if(joy==g_last_joy) 00156 return; // Same report then no send report 00157 g_last_joy=joy; 00158 00159 // Send report 00160 Usb_write_byte(g_last_joy); // Joystick 00161 Usb_write_byte(GPIOR1); // Dummy (not used) 00162 Usb_write_byte(GPIOR1); // Dummy (not used) 00163 Usb_write_byte(GPIOR1); // Dummy (not used) 00164 Usb_write_byte(GPIOR1); // Dummy (not used) 00165 Usb_write_byte(GPIOR1); // Dummy (not used) 00166 Usb_write_byte(GPIOR1); // Dummy (not used) 00167 Usb_write_byte(GPIOR1); // Dummy (not used) 00168 Usb_ack_in_ready(); // Send data over the USB 00169 }
| void hid_task_init | ( | void | ) |
| void hid_task | ( | void | ) |
Entry point of the HID generic communication task This function manages IN/OUT repport management.
Definition at line 85 of file hid_task.c.
References hid_report_in(), hid_report_out(), and Is_device_enumerated.
00086 { 00087 if(!Is_device_enumerated()) // Check USB HID is enumerated 00088 return; 00089 00090 hid_report_out(); 00091 hid_report_in(); 00092 }
Definition at line 69 of file usb_specific_request.c.
Referenced by hid_report_out(), and usb_hid_set_report_feature().
| U8 g_last_joy = 0 |
1.5.3