hid_task.c File Reference

#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"

Include dependency graph for hid_task.c:

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


Detailed Description

This file manages the generic HID IN/OUT task.

Author:
Atmel Corporation: http://www.atmel.com
Support and FAQ: http://support.atmel.no/

Definition in file hid_task.c.


Function Documentation

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, 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().

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          case 4:
00125             if(led_state)
00126             {  Led3_on();   }
00127             else {Led3_off();}
00128             break;
00129       }  
00130       Usb_ack_receive_out();
00131    }
00132 
00133    //** Check if we received DFU mode command from host
00134    if(jump_bootloader)
00135    {
00136       U32 volatile tempo;
00137       Leds_off();
00138       Usb_detach();                          // Detach actual generic HID application
00139       for(tempo=0;tempo<70000;tempo++);      // Wait some time before
00140       start_boot();                          // Jumping to booltoader
00141    }
00142 }

Here is the call graph for this function:

Here is the caller graph for this function:

void hid_report_in ( void   ) 

Send data report to Host

Definition at line 147 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().

00148 {
00149    U8 joy   =0;
00150 
00151    Usb_select_endpoint(EP_HID_IN);
00152    if(!Is_usb_write_enabled())
00153       return;                                // Not ready to send report
00154    
00155    // Build the Joytick report
00156    if(Is_joy_up()|| Is_joy_down() || Is_joy_right() || Is_joy_left() )
00157    {
00158      joy=0x01;
00159    }
00160    if(joy==g_last_joy)
00161       return;                                // Same report then no send report
00162    g_last_joy=joy;
00163   
00164    // Send report
00165    Usb_write_byte(g_last_joy);               // Joystick
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_write_byte(GPIOR1);                   // Dummy (not used)
00173    Usb_ack_in_ready();                       // Send data over the USB
00174 }

Here is the caller graph for this function:

void hid_task_init ( void   ) 

This function initializes the target board ressources.

Definition at line 75 of file hid_task.c.

References Joy_init, Leds_init, and Leds_set_val.

00076 {
00077    Leds_init();
00078    Joy_init();
00079    Leds_set_val(0);
00080 }

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 }

Here is the call graph for this function:


Variable Documentation

volatile U8 cpt_sof = 0

Definition at line 65 of file hid_task.c.

Referenced by sof_action().

U8 jump_bootloader

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

Definition at line 67 of file hid_task.c.

Referenced by hid_report_in().


Generated on Fri Sep 11 14:27:18 2009 for ATMEL by  doxygen 1.5.3