#include "config.h"#include "conf_usb.h"#include "keyboard_task.h"#include "lib_mcu/usb/usb_drv.h"#include "usb_descriptors.h"#include "modules/usb/device_chap9/usb_standard_request.h"#include "lib_mcu/power/power_drv.h"
Go to the source code of this file.
Defines | |
| #define | SIZEOF_USB_KEYS (Uint16)sizeof(usb_keys) |
Functions | |
| void | keyboard_task_init (void) |
| This function initializes the hardware/software ressources required for keyboard task. | |
| void | keyboard_task (void) |
| void | kbd_test_hit (void) |
| void | vbus_off_action (void) |
| void | suspend_action (void) |
| __interrupt void | mouse_disco_int () |
| void | sof_action (void) |
Variables | |
| U8 code | usb_keys [] |
| U8 code | usb_keyup [] |
| U8 code | usb_keydown [] |
| U8 code | usb_keyright [] |
| U8 code | usb_keyleft [] |
| volatile U8 | cpt_sof |
| U8 | transmit_no_key |
| volatile bit | key_hit |
| U8 | usb_key |
| U8 | usb_kbd_state |
| U16 | usb_data_to_send |
| U8 code * | usb_key_pointer |
Definition in file keyboard_task.c.
| void keyboard_task | ( | void | ) |
Entry point of the mouse management This function links the mouse and the USB bus.
Definition at line 121 of file keyboard_task.c.
References cpt_sof, EP_KBD_IN, FALSE, HID_MODIFIER_NONE, Is_device_enumerated, Is_usb_write_enabled, kbd_test_hit(), key_hit, NB_IDLE_POLLING_SOF, transmit_no_key, TRUE, usb_key, Usb_select_endpoint, Usb_send_in, and Usb_write_byte.
00122 { 00123 if(Is_device_enumerated()) 00124 { 00125 // if USB ready to transmit new data : 00126 // - if last time = 0, nothing 00127 // - if key pressed -> transmit key 00128 // - if !key pressed -> transmit 0 00129 if (key_hit==FALSE ) 00130 { 00131 00132 if (cpt_sof>= NB_IDLE_POLLING_SOF) 00133 { 00134 kbd_test_hit(); 00135 cpt_sof = 0; 00136 } 00137 } 00138 00139 else 00140 { 00141 Usb_select_endpoint(EP_KBD_IN); 00142 if(Is_usb_write_enabled()) 00143 { 00144 if ( transmit_no_key==FALSE) 00145 { 00146 transmit_no_key = TRUE; 00147 Usb_write_byte(HID_MODIFIER_NONE); // Byte0: Modifier 00148 Usb_write_byte(0); // Byte1: Reserved 00149 Usb_write_byte(usb_key); // Byte2: Keycode 0 00150 Usb_write_byte(0); // Byte2: Keycode 1 00151 Usb_write_byte(0); // Byte2: Keycode 2 00152 Usb_write_byte(0); // Byte2: Keycode 3 00153 Usb_write_byte(0); // Byte2: Keycode 4 00154 Usb_write_byte(0); // Byte2: Keycode 5 00155 Usb_send_in(); 00156 return; 00157 } 00158 else 00159 { 00160 key_hit = FALSE; 00161 transmit_no_key = FALSE; 00162 Usb_write_byte(0); 00163 Usb_write_byte(0); 00164 Usb_write_byte(0); 00165 Usb_write_byte(0); 00166 Usb_write_byte(0); 00167 Usb_write_byte(0); 00168 Usb_write_byte(0); 00169 Usb_write_byte(0); 00170 Usb_send_in(); 00171 } 00172 } 00173 } 00174 } 00175 }
| void kbd_test_hit | ( | void | ) |
Chech keyboard key hit This function scans the keyboard keys and update the scan_key word. if a key is pressed, the key_hit bit is set to TRUE.
Definition at line 182 of file keyboard_task.c.
Referenced by keyboard_task().
00183 { 00184 switch (usb_kbd_state) 00185 { 00186 case 0: 00187 if (Is_btn_middle()) 00188 { 00189 usb_kbd_state = 1; 00190 usb_key_pointer = usb_keys; 00191 usb_data_to_send = SIZEOF_USB_KEYS; 00192 } 00193 else if (Is_joy_up()) 00194 { 00195 usb_kbd_state = 1; 00196 usb_key_pointer = usb_keyup; 00197 usb_data_to_send = (Uint16)sizeof(usb_keyup); 00198 } 00199 else if (Is_joy_down()) 00200 { 00201 usb_kbd_state = 1; 00202 usb_key_pointer = usb_keydown; 00203 usb_data_to_send = (Uint16)sizeof(usb_keydown); 00204 } 00205 else if (Is_joy_right()) 00206 { 00207 usb_kbd_state = 1; 00208 usb_key_pointer = usb_keyright; 00209 usb_data_to_send = (Uint16)sizeof(usb_keyright); 00210 } 00211 else if (Is_joy_left()) 00212 { 00213 usb_kbd_state = 1; 00214 usb_key_pointer = usb_keyleft; 00215 usb_data_to_send = (Uint16)sizeof(usb_keyleft); 00216 } 00217 00218 break; 00219 00220 case 1: 00221 if (usb_data_to_send != 0) 00222 { 00223 if ((key_hit == FALSE) && (transmit_no_key == FALSE)) 00224 { 00225 #ifndef __GNUC__ 00226 usb_key = *usb_key_pointer++; 00227 #else 00228 usb_key = pgm_read_byte_near(usb_key_pointer++); 00229 #endif 00230 usb_data_to_send --; 00231 key_hit = TRUE; 00232 } 00233 } 00234 else 00235 { 00236 usb_kbd_state = 0; 00237 } 00238 break; 00239 } 00240 }
| void vbus_off_action | ( | void | ) |
vbus_off_action This function increments the action to be executed upon the USB VBUS disconnection Here a Vbus lost lead to detach
Definition at line 248 of file keyboard_task.c.
References Usb_detach.
00249 { 00250 Usb_detach(); 00251 }
| __interrupt void mouse_disco_int | ( | ) |
Definition at line 271 of file keyboard_task.c.
References Switches_disable_it, and usb_generate_remote_wakeup().
00273 { 00274 Switches_disable_it(); 00275 usb_generate_remote_wakeup(); 00276 }
Initial value:
{HID_ENTER,
HID_W, HID_E, HID_L, HID_C, HID_O, HID_M, HID_E, HID_SPACEBAR, HID_T, HID_O, HID_SPACEBAR, HID_H, HID_I, HID_D, HID_SPACEBAR, HID_K, HID_E, HID_Y, HID_B, HID_O, HID_A, HID_R, HID_D, HID_SPACEBAR, HID_D, HID_E, HID_M, HID_O, HID_SPACEBAR, HID_A, HID_N, HID_D, HID_SPACEBAR, HID_C, HID_O, HID_N, HID_G, HID_R, HID_A, HID_T, HID_U, HID_L, HID_A, HID_T, HID_I, HID_O, HID_N, HID_S, HID_SPACEBAR, HID_F, HID_O, HID_R, HID_SPACEBAR, HID_S, HID_E, HID_L, HID_E, HID_C, HID_T, HID_I, HID_N, HID_G, HID_SPACEBAR, HID_T, HID_H, HID_E, HID_SPACEBAR, HID_A, HID_T, HID_9, HID_0, HID_U, HID_S, HID_B, HID_X, HID_X, HID_X, HID_SPACEBAR, HID_M, HID_I, HID_C, HID_R, HID_O, HID_C, HID_O, HID_N, HID_T, HID_R, HID_O, HID_L, HID_L, HID_E, HID_R, HID_SPACEBAR, HID_F, HID_A, HID_M, HID_I, HID_L, HID_Y, HID_DOT,HID_ENTER,HID_ENTER
,HID_T, HID_H, HID_E, HID_SPACEBAR, HID_A, HID_T, HID_9, HID_0, HID_U, HID_S, HID_B, HID_X, HID_X, HID_X, HID_SPACEBAR,HID_I, HID_S, HID_SPACEBAR, HID_B, HID_A, HID_S, HID_E, HID_D, HID_SPACEBAR,HID_O, HID_N, HID_SPACEBAR, HID_T, HID_H, HID_E, HID_SPACEBAR, HID_A, HID_V, HID_R, HID_SPACEBAR, HID_C, HID_O, HID_R, HID_E, HID_SPACEBAR, HID_W, HID_I, HID_T, HID_H, HID_SPACEBAR, HID_T, HID_H, HID_E, HID_SPACEBAR, HID_F, HID_O, HID_L, HID_L, HID_O, HID_W, HID_I, HID_N, HID_G, HID_SPACEBAR, HID_F, HID_E, HID_A, HID_T, HID_U, HID_R, HID_E, HID_S, HID_ENTER
,HID_KEYPAD_MINUS,HID_SPACEBAR,HID_U,HID_S,HID_B,HID_SPACEBAR,HID_O,HID_T,HID_G,HID_SPACEBAR,HID_ENTER
,HID_KEYPAD_MINUS,HID_SPACEBAR,HID_L,HID_O,HID_W,HID_SLASH,HID_F,HID_U,HID_L,HID_L,HID_SPACEBAR,HID_S,HID_P,HID_E,HID_E,HID_D,HID_SPACEBAR,HID_C,HID_O,HID_N,HID_T,HID_R,HID_O,HID_L,HID_L,HID_E,HID_R,HID_SPACEBAR,HID_W,HID_I,HID_T,HID_H,HID_SPACEBAR,HID_7,HID_SPACEBAR,HID_E,HID_N,HID_D,HID_P,HID_O,HID_I,HID_N,HID_T,HID_S,HID_ENTER
,HID_KEYPAD_MINUS,HID_SPACEBAR,HID_U,HID_P,HID_SPACEBAR,HID_T,HID_O,HID_SPACEBAR,HID_1,HID_2,HID_8,HID_SPACEBAR,HID_K,HID_B,HID_Y,HID_T,HID_E,HID_S,HID_SPACEBAR,HID_O,HID_N,HID_KEYPAD_MINUS,HID_C,HID_H,HID_I,HID_P,HID_SPACEBAR,HID_F,HID_L,HID_A,HID_S,HID_H,HID_SPACEBAR,HID_M,HID_E,HID_M,HID_O,HID_R,HID_Y,HID_ENTER
,HID_KEYPAD_MINUS,HID_SPACEBAR,HID_U,HID_S,HID_B,HID_SPACEBAR,HID_B,HID_O,HID_O,HID_T,HID_L,HID_O,HID_A,HID_D,HID_E,HID_R,HID_ENTER
,HID_KEYPAD_MINUS,HID_SPACEBAR,HID_U,HID_A,HID_R,HID_T,HID_SLASH,HID_S,HID_P,HID_I,HID_SLASH,HID_SPACEBAR,HID_T,HID_W,HID_I,HID_ENTER
,HID_SPACEBAR,HID_SPACEBAR,HID_A,HID_N,HID_D,HID_SPACEBAR,HID_M,HID_O,HID_R,HID_E,HID_DOT,HID_DOT,HID_DOT,HID_ENTER
,HID_E,HID_N,HID_J,HID_O,HID_Y,HID_SPACEBAR,HID_Y,HID_O,HID_U,HID_R,HID_SPACEBAR,HID_T,HID_I,HID_M,HID_E,HID_SPACEBAR,HID_W,HID_I,HID_T,HID_H,HID_SPACEBAR,HID_A,HID_T,HID_M,HID_E,HID_L,HID_SPACEBAR,HID_P,HID_R,HID_O,HID_D,HID_U,HID_C,HID_T,HID_S,HID_DOT,HID_DOT,HID_DOT
}
Definition at line 58 of file keyboard_task.c.
Referenced by kbd_test_hit().
Initial value:
{
HID_UP,
}
Definition at line 72 of file keyboard_task.c.
Referenced by kbd_test_hit().
| U8 code usb_keydown[] |
Initial value:
{
HID_DOWN,
}
Definition at line 75 of file keyboard_task.c.
Referenced by kbd_test_hit().
| U8 code usb_keyright[] |
Initial value:
{
HID_RIGHT,
}
Definition at line 78 of file keyboard_task.c.
Referenced by kbd_test_hit().
| U8 code usb_keyleft[] |
Initial value:
{
HID_LEFT,
}
Definition at line 81 of file keyboard_task.c.
Referenced by kbd_test_hit().
Definition at line 92 of file keyboard_task.c.
Referenced by keyboard_task(), keyboard_task_init(), and sof_action().
Definition at line 93 of file keyboard_task.c.
Referenced by kbd_test_hit(), keyboard_task(), and keyboard_task_init().
| volatile bit key_hit |
Definition at line 94 of file keyboard_task.c.
Referenced by kbd_test_hit(), keyboard_task(), and keyboard_task_init().
Definition at line 96 of file keyboard_task.c.
Referenced by kbd_test_hit(), and keyboard_task_init().
| U8 code* usb_key_pointer |
1.5.3