 3924764dff
			
		
	
	3924764dff
	
	
	
		
			
			refractor usbh class driver indexing opt out periodic list code in EHCI (need to refractor/group later) [device lpc176x] rename dcd_endpoint_configure to dcd_pipe_open add usbd_pipe_open to manage pipe
		
			
				
	
	
		
			147 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <stdlib.h>
 | |
| #include <stdio.h>
 | |
| #include <string.h>
 | |
| 
 | |
| #include "boards/board.h"
 | |
| #include "tusb.h"
 | |
| 
 | |
| #if defined(__CODE_RED)
 | |
|   #include <cr_section_macros.h>
 | |
|   #include <NXP/crp.h>
 | |
|   // Variable to store CRP value in. Will be placed automatically
 | |
|   // by the linker when "Enable Code Read Protect" selected.
 | |
|   // See crp.h header for more information
 | |
|   __CRP const unsigned int CRP_WORD = CRP_NO_CRP ;
 | |
| #endif
 | |
| 
 | |
| void print_greeting(void);
 | |
| 
 | |
| void led_blinking_task(void * p_para);
 | |
| void keyboard_device_app_task(void * p_para);
 | |
| void mouse_device_app_task(void * p_para);
 | |
| 
 | |
| int main(void)
 | |
| {
 | |
|   uint32_t current_tick = system_ticks;
 | |
| 
 | |
|   board_init();
 | |
|   tusb_init();
 | |
| 
 | |
|   print_greeting();
 | |
|   while (1)
 | |
|   {
 | |
|     if (current_tick + 1000 < system_ticks)
 | |
|     {
 | |
|       current_tick += 1000;
 | |
| 
 | |
|       led_blinking_task(NULL);
 | |
| 
 | |
|       #if TUSB_CFG_DEVICE_HID_KEYBOARD
 | |
|       keyboard_device_app_task(NULL);
 | |
|       #endif
 | |
| 
 | |
|       #if TUSB_CFG_DEVICE_HID_MOUSE
 | |
|       mouse_device_app_task(NULL);
 | |
|       #endif
 | |
|     }
 | |
| 
 | |
|     #if TUSB_CFG_DEVICE_CDC && 0
 | |
|     if (tusb_device_is_configured())
 | |
|     {
 | |
|       uint8_t cdc_char;
 | |
|       if( tusb_cdc_getc(&cdc_char) )
 | |
|       {
 | |
|         switch (cdc_char)
 | |
|         {
 | |
|           #ifdef TUSB_CFG_DEVICE_HID_KEYBOARD
 | |
|           case '1' :
 | |
|           {
 | |
|             uint8_t keys[6] = {HID_USAGE_KEYBOARD_aA + 'e' - 'a'};
 | |
|             tusbd_hid_keyboard_send_report(0x08, keys, 1); // windows + E --> open explorer
 | |
|           }
 | |
|           break;
 | |
|           #endif
 | |
| 
 | |
|           #ifdef TUSB_CFG_DEVICE_HID_MOUSE
 | |
|           case '2' :
 | |
|             tusb_hid_mouse_send(0, 10, 10);
 | |
|           break;
 | |
|           #endif
 | |
| 
 | |
|           default :
 | |
|             cdc_char = toupper(cdc_char);
 | |
|             tusb_cdc_putc(cdc_char);
 | |
|           break;
 | |
| 
 | |
|         }
 | |
|       }
 | |
|     }
 | |
| #endif
 | |
|   }
 | |
| 
 | |
|   return 0;
 | |
| }
 | |
| 
 | |
| void led_blinking_task(void * p_para)
 | |
| {
 | |
|   static uint32_t led_on_mask = 0;
 | |
| 
 | |
|   board_leds(led_on_mask, 1 - led_on_mask);
 | |
|   led_on_mask = 1 - led_on_mask; // toggle
 | |
| }
 | |
| 
 | |
| #if TUSB_CFG_DEVICE_HID_KEYBOARD
 | |
| void keyboard_device_app_task(void * p_para)
 | |
| {
 | |
| #if 0
 | |
|   if (tusbd_is_configured())
 | |
|   {
 | |
|     static uint32_t count =0;
 | |
|     if (count < 4)
 | |
|     {
 | |
|       count++;
 | |
| 
 | |
|       tusbd_hid_keyboard_send_report(
 | |
|           &(tusb_keyboard_report_t) {
 | |
|               .keycode = { 0x04 } }
 | |
|       );
 | |
|     }
 | |
|   }
 | |
| #endif
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #if TUSB_CFG_DEVICE_HID_MOUSE
 | |
| void mouse_device_app_task(void * p_para)
 | |
| {
 | |
| #if 1
 | |
|   if (tusb_device_is_configured())
 | |
|   {
 | |
|     static uint32_t count =0;
 | |
|     if (count < 8)
 | |
|     {
 | |
|       count++;
 | |
|       tusbd_hid_mouse_send_report(
 | |
|           &(tusb_mouse_report_t) {
 | |
|               .x = 20,
 | |
|               .y = 20 } );
 | |
|     }
 | |
|   }
 | |
| #endif
 | |
| }
 | |
| #endif
 | |
| 
 | |
| //--------------------------------------------------------------------+
 | |
| // HELPER FUNCTION
 | |
| //--------------------------------------------------------------------+
 | |
| void print_greeting(void)
 | |
| {
 | |
|   printf("\r\n\
 | |
| --------------------------------------------------------------------\r\n\
 | |
| -                     Device Demo (a tinyusb example)\r\n\
 | |
| - if you find any bugs or get any questions, feel free to file an\r\n\
 | |
| - issue at https://github.com/hathach/tinyusb\r\n\
 | |
| --------------------------------------------------------------------\r\n\r\n"
 | |
|   );
 | |
| }
 |