 d67a7b7959
			
		
	
	d67a7b7959
	
	
	
		
			
			fix lpc43xx UM: non-control unused endpoint type should be set to different than control in ENDPTCTRL add hid mouse device fix mouse descriptor with vertical wheel support
		
			
				
	
	
		
			135 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <stdlib.h>
 | |
| #include <stdio.h>
 | |
| #include <string.h>
 | |
| 
 | |
| #include "boards/board.h"
 | |
| #include "tusb.h"
 | |
| 
 | |
| 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
 | |
| hid_keyboard_report_t keyboard_report TUSB_CFG_ATTR_USBRAM;
 | |
| void keyboard_device_app_task(void * p_para)
 | |
| {
 | |
|   if (tusbd_is_configured(0))
 | |
|   {
 | |
|     static uint32_t count =0;
 | |
|     if (count++ < 10)
 | |
|     {
 | |
|       if (!tusbd_hid_keyboard_is_busy(0))
 | |
|       {
 | |
|         keyboard_report.keycode[0] = (count%2) ? 0x04 : 0x00;
 | |
|         tusbd_hid_keyboard_send(0, &keyboard_report );
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #if TUSB_CFG_DEVICE_HID_MOUSE
 | |
| hid_mouse_report_t mouse_report TUSB_CFG_ATTR_USBRAM;
 | |
| void mouse_device_app_task(void * p_para)
 | |
| {
 | |
|   if (tusbd_is_configured(0))
 | |
|   {
 | |
|     static uint32_t count =0;
 | |
|     if (count++ < 10)
 | |
|     {
 | |
|       if ( !tusbd_hid_mouse_is_busy(0) )
 | |
|       {
 | |
|         mouse_report.x = mouse_report.y = 20;
 | |
|         tusbd_hid_mouse_send(0, &mouse_report );
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 | |
| #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"
 | |
|   );
 | |
| }
 |