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 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 }

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

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 }

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, and Leds_init.

00076 {
00077    Leds_init();
00078    Joy_init();
00079 }

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 }

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 Mon Sep 14 13:54:01 2009 for ATMEL by  doxygen 1.5.3