mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 05:12:33 +01:00 
			
		
		
		
	Merge pull request #921 from Wilba6582/raw_hid
Initial version of Raw HID interface
This commit is contained in:
		
						commit
						c87d039839
					
				| @ -16,4 +16,4 @@ void matrix_init_kb(void) { | |||||||
| 	PORTE |= (1<<6); | 	PORTE |= (1<<6); | ||||||
| 
 | 
 | ||||||
| 	matrix_init_user(); | 	matrix_init_user(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -65,4 +65,4 @@ RGBLIGHT_ENABLE ?= no        # Enable WS2812 RGB underlight.  Do not enable this | |||||||
| API_SYSEX_ENABLE = yes | API_SYSEX_ENABLE = yes | ||||||
| 
 | 
 | ||||||
| # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | ||||||
| SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend | SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend | ||||||
|  | |||||||
| @ -50,6 +50,10 @@ ifeq ($(strip $(EXTRAKEY_ENABLE)), yes) | |||||||
|     TMK_COMMON_DEFS += -DEXTRAKEY_ENABLE |     TMK_COMMON_DEFS += -DEXTRAKEY_ENABLE | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
|  | ifeq ($(strip $(RAW_ENABLE)), yes) | ||||||
|  |     TMK_COMMON_DEFS += -DRAW_ENABLE | ||||||
|  | endif | ||||||
|  | 
 | ||||||
| ifeq ($(strip $(CONSOLE_ENABLE)), yes) | ifeq ($(strip $(CONSOLE_ENABLE)), yes) | ||||||
|     TMK_COMMON_DEFS += -DCONSOLE_ENABLE |     TMK_COMMON_DEFS += -DCONSOLE_ENABLE | ||||||
| else | else | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								tmk_core/common/raw_hid.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								tmk_core/common/raw_hid.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | #ifndef _RAW_HID_H_ | ||||||
|  | #define _RAW_HID_H_ | ||||||
|  | 
 | ||||||
|  | void raw_hid_receive( uint8_t *data, uint8_t length ); | ||||||
|  | 
 | ||||||
|  | void raw_hid_send( uint8_t *data, uint8_t length ); | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
| @ -164,6 +164,28 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM ExtrakeyReport[] = | |||||||
| }; | }; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef RAW_ENABLE | ||||||
|  | const USB_Descriptor_HIDReport_Datatype_t PROGMEM RawReport[] = | ||||||
|  | { | ||||||
|  |     HID_RI_USAGE_PAGE(16, 0xFF60), /* Vendor Page 0xFF60 */ | ||||||
|  |     HID_RI_USAGE(8, 0x61), /* Vendor Usage 0x61 */ | ||||||
|  |     HID_RI_COLLECTION(8, 0x01), /* Application */ | ||||||
|  |         HID_RI_USAGE(8, 0x62), /* Vendor Usage 0x62 */ | ||||||
|  |         HID_RI_LOGICAL_MINIMUM(8, 0x00), | ||||||
|  |         HID_RI_LOGICAL_MAXIMUM(16, 0x00FF), | ||||||
|  |         HID_RI_REPORT_COUNT(8, RAW_EPSIZE), | ||||||
|  |         HID_RI_REPORT_SIZE(8, 0x08), | ||||||
|  |         HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), | ||||||
|  |         HID_RI_USAGE(8, 0x63), /* Vendor Usage 0x63 */ | ||||||
|  |         HID_RI_LOGICAL_MINIMUM(8, 0x00), | ||||||
|  |         HID_RI_LOGICAL_MAXIMUM(16, 0x00FF), | ||||||
|  |         HID_RI_REPORT_COUNT(8, RAW_EPSIZE), | ||||||
|  |         HID_RI_REPORT_SIZE(8, 0x08), | ||||||
|  |         HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), | ||||||
|  |     HID_RI_END_COLLECTION(0), | ||||||
|  | }; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| #ifdef CONSOLE_ENABLE | #ifdef CONSOLE_ENABLE | ||||||
| const USB_Descriptor_HIDReport_Datatype_t PROGMEM ConsoleReport[] = | const USB_Descriptor_HIDReport_Datatype_t PROGMEM ConsoleReport[] = | ||||||
| { | { | ||||||
| @ -399,6 +421,58 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = | |||||||
|         }, |         }, | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | 		/*
 | ||||||
|  | 	     * Raw | ||||||
|  | 	     */ | ||||||
|  | 	#ifdef RAW_ENABLE | ||||||
|  | 	    .Raw_Interface = | ||||||
|  | 	        { | ||||||
|  | 	            .Header                 = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, | ||||||
|  | 
 | ||||||
|  | 	            .InterfaceNumber        = RAW_INTERFACE, | ||||||
|  | 	            .AlternateSetting       = 0x00, | ||||||
|  | 
 | ||||||
|  | 	            .TotalEndpoints         = 2, | ||||||
|  | 
 | ||||||
|  | 	            .Class                  = HID_CSCP_HIDClass, | ||||||
|  | 	            .SubClass               = HID_CSCP_NonBootSubclass, | ||||||
|  | 	            .Protocol               = HID_CSCP_NonBootProtocol, | ||||||
|  | 
 | ||||||
|  | 	            .InterfaceStrIndex      = NO_DESCRIPTOR | ||||||
|  | 	        }, | ||||||
|  | 
 | ||||||
|  | 	    .Raw_HID = | ||||||
|  | 	        { | ||||||
|  | 	            .Header                 = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID}, | ||||||
|  | 
 | ||||||
|  | 	            .HIDSpec                = VERSION_BCD(1,1,1), | ||||||
|  | 	            .CountryCode            = 0x00, | ||||||
|  | 	            .TotalReportDescriptors = 1, | ||||||
|  | 	            .HIDReportType          = HID_DTYPE_Report, | ||||||
|  | 	            .HIDReportLength        = sizeof(RawReport) | ||||||
|  | 	        }, | ||||||
|  | 
 | ||||||
|  | 	    .Raw_INEndpoint = | ||||||
|  | 	        { | ||||||
|  | 	            .Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, | ||||||
|  | 
 | ||||||
|  | 	            .EndpointAddress        = (ENDPOINT_DIR_IN | RAW_IN_EPNUM), | ||||||
|  | 	            .Attributes             = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), | ||||||
|  | 	            .EndpointSize           = RAW_EPSIZE, | ||||||
|  | 	            .PollingIntervalMS      = 0x01 | ||||||
|  | 	        }, | ||||||
|  | 
 | ||||||
|  | 	    .Raw_OUTEndpoint = | ||||||
|  | 	        { | ||||||
|  | 	            .Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, | ||||||
|  | 
 | ||||||
|  | 	            .EndpointAddress        = (ENDPOINT_DIR_OUT | RAW_OUT_EPNUM), | ||||||
|  | 	            .Attributes             = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), | ||||||
|  | 	            .EndpointSize           = RAW_EPSIZE, | ||||||
|  | 	            .PollingIntervalMS      = 0x01 | ||||||
|  | 	        }, | ||||||
|  | 	#endif | ||||||
|  | 
 | ||||||
|     /*
 |     /*
 | ||||||
|      * Console |      * Console | ||||||
|      */ |      */ | ||||||
| @ -754,7 +828,6 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = | |||||||
|                     .PollingIntervalMS      = 0x05 |                     .PollingIntervalMS      = 0x05 | ||||||
|             }, |             }, | ||||||
| #endif | #endif | ||||||
| 
 |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -846,6 +919,12 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | |||||||
|                 Size    = sizeof(USB_HID_Descriptor_HID_t); |                 Size    = sizeof(USB_HID_Descriptor_HID_t); | ||||||
|                 break; |                 break; | ||||||
| #endif | #endif | ||||||
|  | #ifdef RAW_ENABLE | ||||||
|  |             case RAW_INTERFACE: | ||||||
|  |                 Address = &ConfigurationDescriptor.Raw_HID; | ||||||
|  |                 Size    = sizeof(USB_HID_Descriptor_HID_t); | ||||||
|  |                 break; | ||||||
|  | #endif | ||||||
| #ifdef CONSOLE_ENABLE | #ifdef CONSOLE_ENABLE | ||||||
|             case CONSOLE_INTERFACE: |             case CONSOLE_INTERFACE: | ||||||
|                 Address = &ConfigurationDescriptor.Console_HID; |                 Address = &ConfigurationDescriptor.Console_HID; | ||||||
| @ -878,6 +957,12 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | |||||||
|                 Size    = sizeof(ExtrakeyReport); |                 Size    = sizeof(ExtrakeyReport); | ||||||
|                 break; |                 break; | ||||||
| #endif | #endif | ||||||
|  | #ifdef RAW_ENABLE | ||||||
|  |             case RAW_INTERFACE: | ||||||
|  |                 Address = &RawReport; | ||||||
|  |                 Size    = sizeof(RawReport); | ||||||
|  |                 break; | ||||||
|  | #endif | ||||||
| #ifdef CONSOLE_ENABLE | #ifdef CONSOLE_ENABLE | ||||||
|             case CONSOLE_INTERFACE: |             case CONSOLE_INTERFACE: | ||||||
|                 Address = &ConsoleReport; |                 Address = &ConsoleReport; | ||||||
|  | |||||||
| @ -71,6 +71,14 @@ typedef struct | |||||||
|     USB_Descriptor_Endpoint_t             Extrakey_INEndpoint; |     USB_Descriptor_Endpoint_t             Extrakey_INEndpoint; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef RAW_ENABLE | ||||||
|  |     // Raw HID Interface
 | ||||||
|  |     USB_Descriptor_Interface_t            Raw_Interface; | ||||||
|  |     USB_HID_Descriptor_HID_t              Raw_HID; | ||||||
|  |     USB_Descriptor_Endpoint_t             Raw_INEndpoint; | ||||||
|  |     USB_Descriptor_Endpoint_t             Raw_OUTEndpoint; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| #ifdef CONSOLE_ENABLE | #ifdef CONSOLE_ENABLE | ||||||
|     // Console HID Interface
 |     // Console HID Interface
 | ||||||
|     USB_Descriptor_Interface_t            Console_Interface; |     USB_Descriptor_Interface_t            Console_Interface; | ||||||
| @ -137,10 +145,16 @@ typedef struct | |||||||
| #   define EXTRAKEY_INTERFACE       MOUSE_INTERFACE | #   define EXTRAKEY_INTERFACE       MOUSE_INTERFACE | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef CONSOLE_ENABLE | #ifdef RAW_ENABLE | ||||||
| #   define CONSOLE_INTERFACE        (EXTRAKEY_INTERFACE + 1) | #   define RAW_INTERFACE        	(EXTRAKEY_INTERFACE + 1) | ||||||
| #else | #else | ||||||
| #   define CONSOLE_INTERFACE        EXTRAKEY_INTERFACE | #   define RAW_INTERFACE        	EXTRAKEY_INTERFACE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef CONSOLE_ENABLE | ||||||
|  | #   define CONSOLE_INTERFACE        (RAW_INTERFACE + 1) | ||||||
|  | #else | ||||||
|  | #   define CONSOLE_INTERFACE        RAW_INTERFACE | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef NKRO_ENABLE | #ifdef NKRO_ENABLE | ||||||
| @ -182,12 +196,19 @@ typedef struct | |||||||
| #   define EXTRAKEY_IN_EPNUM        MOUSE_IN_EPNUM | #   define EXTRAKEY_IN_EPNUM        MOUSE_IN_EPNUM | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef CONSOLE_ENABLE | #ifdef RAW_ENABLE | ||||||
| #   define CONSOLE_IN_EPNUM         (EXTRAKEY_IN_EPNUM + 1) | #   define RAW_IN_EPNUM         (EXTRAKEY_IN_EPNUM + 1) | ||||||
| #   define CONSOLE_OUT_EPNUM        (EXTRAKEY_IN_EPNUM + 1) | #   define RAW_OUT_EPNUM        (EXTRAKEY_IN_EPNUM + 2) | ||||||
| //#   define CONSOLE_OUT_EPNUM        (EXTRAKEY_IN_EPNUM + 2)
 |  | ||||||
| #else | #else | ||||||
| #   define CONSOLE_OUT_EPNUM        EXTRAKEY_IN_EPNUM | #   define RAW_OUT_EPNUM        EXTRAKEY_IN_EPNUM | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef CONSOLE_ENABLE | ||||||
|  | #   define CONSOLE_IN_EPNUM         (RAW_OUT_EPNUM + 1) | ||||||
|  | //#   define CONSOLE_OUT_EPNUM        (RAW_OUT_EPNUM + 2)
 | ||||||
|  | #   define CONSOLE_OUT_EPNUM        (RAW_OUT_EPNUM + 1) | ||||||
|  | #else | ||||||
|  | #   define CONSOLE_OUT_EPNUM        RAW_OUT_EPNUM | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef NKRO_ENABLE | #ifdef NKRO_ENABLE | ||||||
| @ -217,7 +238,6 @@ typedef struct | |||||||
| #   define CDC_OUT_EPNUM	MIDI_STREAM_OUT_EPNUM | #   define CDC_OUT_EPNUM	MIDI_STREAM_OUT_EPNUM | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| #if defined(__AVR_ATmega32U2__) && CDC_OUT_EPNUM > 4 | #if defined(__AVR_ATmega32U2__) && CDC_OUT_EPNUM > 4 | ||||||
| # error "Endpoints are not available enough to support all functions. Remove some in Makefile.(MOUSEKEY, EXTRAKEY, CONSOLE, NKRO, MIDI, SERIAL)" | # error "Endpoints are not available enough to support all functions. Remove some in Makefile.(MOUSEKEY, EXTRAKEY, CONSOLE, NKRO, MIDI, SERIAL)" | ||||||
| #endif | #endif | ||||||
| @ -225,6 +245,7 @@ typedef struct | |||||||
| #define KEYBOARD_EPSIZE             8 | #define KEYBOARD_EPSIZE             8 | ||||||
| #define MOUSE_EPSIZE                8 | #define MOUSE_EPSIZE                8 | ||||||
| #define EXTRAKEY_EPSIZE             8 | #define EXTRAKEY_EPSIZE             8 | ||||||
|  | #define RAW_EPSIZE              	32 | ||||||
| #define CONSOLE_EPSIZE              32 | #define CONSOLE_EPSIZE              32 | ||||||
| #define NKRO_EPSIZE                 32 | #define NKRO_EPSIZE                 32 | ||||||
| #define MIDI_STREAM_EPSIZE          64 | #define MIDI_STREAM_EPSIZE          64 | ||||||
|  | |||||||
| @ -84,6 +84,10 @@ | |||||||
|   #include "sysex_tools.h" |   #include "sysex_tools.h" | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef RAW_ENABLE | ||||||
|  | 	#include "raw_hid.h" | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| uint8_t keyboard_idle = 0; | uint8_t keyboard_idle = 0; | ||||||
| /* 0: Boot Protocol, 1: Report Protocol(default) */ | /* 0: Boot Protocol, 1: Report Protocol(default) */ | ||||||
| uint8_t keyboard_protocol = 1; | uint8_t keyboard_protocol = 1; | ||||||
| @ -179,6 +183,80 @@ USB_ClassInfo_CDC_Device_t cdc_device = | |||||||
| }; | }; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef RAW_ENABLE | ||||||
|  | 
 | ||||||
|  | void raw_hid_send( uint8_t *data, uint8_t length ) | ||||||
|  | { | ||||||
|  | 	// TODO: implement variable size packet
 | ||||||
|  | 	if ( length != RAW_EPSIZE ) | ||||||
|  | 	{ | ||||||
|  | 		return; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if (USB_DeviceState != DEVICE_STATE_Configured) | ||||||
|  | 	{ | ||||||
|  | 		return; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// TODO: decide if we allow calls to raw_hid_send() in the middle
 | ||||||
|  | 	// of other endpoint usage.
 | ||||||
|  | 	uint8_t ep = Endpoint_GetCurrentEndpoint(); | ||||||
|  | 
 | ||||||
|  | 	Endpoint_SelectEndpoint(RAW_IN_EPNUM); | ||||||
|  | 
 | ||||||
|  | 	// Check to see if the host is ready to accept another packet
 | ||||||
|  | 	if (Endpoint_IsINReady()) | ||||||
|  | 	{ | ||||||
|  | 		// Write data
 | ||||||
|  | 		Endpoint_Write_Stream_LE(data, RAW_EPSIZE, NULL); | ||||||
|  | 		// Finalize the stream transfer to send the last packet
 | ||||||
|  | 		Endpoint_ClearIN(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	Endpoint_SelectEndpoint(ep); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | __attribute__ ((weak)) | ||||||
|  | void raw_hid_receive( uint8_t *data, uint8_t length ) | ||||||
|  | { | ||||||
|  | 	// Users should #include "raw_hid.h" in their own code
 | ||||||
|  | 	// and implement this function there. Leave this as weak linkage
 | ||||||
|  | 	// so users can opt to not handle data coming in.
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | static void raw_hid_task(void) | ||||||
|  | { | ||||||
|  | 	// Create a temporary buffer to hold the read in data from the host
 | ||||||
|  | 	uint8_t data[RAW_EPSIZE]; | ||||||
|  | 	bool data_read = false; | ||||||
|  | 
 | ||||||
|  | 	// Device must be connected and configured for the task to run
 | ||||||
|  | 	if (USB_DeviceState != DEVICE_STATE_Configured) | ||||||
|  | 	return; | ||||||
|  | 
 | ||||||
|  | 	Endpoint_SelectEndpoint(RAW_OUT_EPNUM); | ||||||
|  | 
 | ||||||
|  | 	// Check to see if a packet has been sent from the host
 | ||||||
|  | 	if (Endpoint_IsOUTReceived()) | ||||||
|  | 	{ | ||||||
|  | 		// Check to see if the packet contains data
 | ||||||
|  | 		if (Endpoint_IsReadWriteAllowed()) | ||||||
|  | 		{ | ||||||
|  | 			/* Read data */ | ||||||
|  | 			Endpoint_Read_Stream_LE(data, sizeof(data), NULL); | ||||||
|  | 			data_read = true; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		// Finalize the stream transfer to receive the last packet
 | ||||||
|  | 		Endpoint_ClearOUT(); | ||||||
|  | 
 | ||||||
|  | 		if ( data_read ) | ||||||
|  | 		{ | ||||||
|  | 			raw_hid_receive( data, sizeof(data) ); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| /*******************************************************************************
 | /*******************************************************************************
 | ||||||
|  * Console |  * Console | ||||||
| @ -298,6 +376,8 @@ void EVENT_USB_Device_WakeUp() | |||||||
| #endif | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| #ifdef CONSOLE_ENABLE | #ifdef CONSOLE_ENABLE | ||||||
| static bool console_flush = false; | static bool console_flush = false; | ||||||
| #define CONSOLE_FLUSH_SET(b)   do { \ | #define CONSOLE_FLUSH_SET(b)   do { \ | ||||||
| @ -317,6 +397,7 @@ void EVENT_USB_Device_StartOfFrame(void) | |||||||
|     Console_Task(); |     Console_Task(); | ||||||
|     console_flush = false; |     console_flush = false; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| /** Event handler for the USB_ConfigurationChanged event.
 | /** Event handler for the USB_ConfigurationChanged event.
 | ||||||
| @ -345,6 +426,14 @@ void EVENT_USB_Device_ConfigurationChanged(void) | |||||||
|                                      EXTRAKEY_EPSIZE, ENDPOINT_BANK_SINGLE); |                                      EXTRAKEY_EPSIZE, ENDPOINT_BANK_SINGLE); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef RAW_ENABLE | ||||||
|  |     /* Setup Raw HID Report Endpoints */ | ||||||
|  |     ConfigSuccess &= ENDPOINT_CONFIG(RAW_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, | ||||||
|  | 									 RAW_EPSIZE, ENDPOINT_BANK_SINGLE); | ||||||
|  |     ConfigSuccess &= ENDPOINT_CONFIG(RAW_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT, | ||||||
|  | 									 RAW_EPSIZE, ENDPOINT_BANK_SINGLE); | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| #ifdef CONSOLE_ENABLE | #ifdef CONSOLE_ENABLE | ||||||
|     /* Setup Console HID Report Endpoints */ |     /* Setup Console HID Report Endpoints */ | ||||||
|     ConfigSuccess &= ENDPOINT_CONFIG(CONSOLE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, |     ConfigSuccess &= ENDPOINT_CONFIG(CONSOLE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, | ||||||
| @ -1124,9 +1213,14 @@ int main(void) | |||||||
|         CDC_Device_USBTask(&cdc_device); |         CDC_Device_USBTask(&cdc_device); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef RAW_ENABLE | ||||||
|  |         raw_hid_task(); | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| #if !defined(INTERRUPT_CONTROL_ENDPOINT) | #if !defined(INTERRUPT_CONTROL_ENDPOINT) | ||||||
|         USB_USBTask(); |         USB_USBTask(); | ||||||
| #endif | #endif | ||||||
|  | 
 | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jack Humbert
						Jack Humbert