#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 96 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, Led3_off, Led3_on, Leds_off, start_boot(), Usb_ack_receive_out, Usb_detach, Usb_read_byte, and Usb_select_endpoint.
Referenced by hid_task().
00097 { 00098 Usb_select_endpoint(EP_HID_OUT); 00099 if(Is_usb_receive_out()) 00100 { 00101 //* Read report from HID Generic Demo 00102 U8 led_state; 00103 U8 led_number; 00104 led_state = Usb_read_byte()&0x0F; // RepportOUT[0] is LEDS value 00105 led_number = Usb_read_byte()&0x0F; 00106 switch (led_number) 00107 { 00108 case 1: 00109 if(led_state) 00110 { Led0_on(); } 00111 else {Led0_off();} 00112 break; 00113 case 2: 00114 if(led_state) 00115 { Led1_on(); } 00116 else {Led1_off();} 00117 break; 00118 case 3: 00119 if(led_state) 00120 { Led2_on(); } 00121 else {Led2_off();} 00122 break; 00123 case 4: 00124 if(led_state) 00125 { Led3_on(); } 00126 else {Led3_off();} 00127 break; 00128 } 00129 Usb_ack_receive_out(); 00130 } 00131 00132 //** Check if we received DFU mode command from host 00133 if(jump_bootloader) 00134 { 00135 U32 volatile tempo; 00136 Leds_off(); 00137 Usb_detach(); // Detach actual generic HID application 00138 for(tempo=0;tempo<70000;tempo++); // Wait some time before 00139 start_boot(); // Jumping to booltoader 00140 } 00141 }
| void hid_report_in | ( | void | ) |
Send data report to Host
Check for UP event
Definition at line 146 of file hid_task.c.
References EP_HID_IN, g_last_joy, Is_joy_down, Is_joy_left, Is_joy_right, Is_joy_up, Is_usb_write_enabled, Usb_ack_in_ready, Usb_select_endpoint, and Usb_write_byte.
Referenced by hid_task().
00147 { 00148 U8 joy =0; 00149 00150 Usb_select_endpoint(EP_HID_IN); 00151 if(!Is_usb_write_enabled()) 00152 return; // Not ready to send report 00153 00154 // Build the Joytick report 00155 if(Is_joy_up()|| Is_joy_down() || Is_joy_right() || Is_joy_left() ) 00156 { 00157 joy=0x01; 00158 } 00159 if(joy==g_last_joy) 00160 return; // Same report then no send report 00161 g_last_joy=joy; 00162 00163 // Send report 00164 Usb_write_byte(g_last_joy); // Joystick 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_write_byte(GPIOR1); // Dummy (not used) 00169 Usb_write_byte(GPIOR1); // Dummy (not used) 00170 Usb_write_byte(GPIOR1); // Dummy (not used) 00171 Usb_write_byte(GPIOR1); // Dummy (not used) 00172 Usb_ack_in_ready(); // Send data over the USB 00173 }
| 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 84 of file hid_task.c.
References hid_report_in(), hid_report_out(), and Is_device_enumerated.
00085 { 00086 if(!Is_device_enumerated()) // Check USB HID is enumerated 00087 return; 00088 00089 hid_report_out(); 00090 hid_report_in(); 00091 }
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