diff --git a/right/src/usb_interface_generic_hid.c b/right/src/usb_interface_generic_hid.c index e3aa822..030408f 100644 --- a/right/src/usb_interface_generic_hid.c +++ b/right/src/usb_interface_generic_hid.c @@ -1,7 +1,6 @@ #include "include/board/board.h" #include "usb_composite_device.h" #include "usb_interface_generic_hid.h" -#include "test_led.h" static usb_device_endpoint_struct_t UsbGenericHidEndpoints[USB_GENERIC_HID_ENDPOINT_COUNT] = { @@ -43,8 +42,8 @@ usb_device_class_struct_t UsbGenericHidClass = { USB_DEVICE_CONFIGURATION_COUNT, }; -static uint8_t GenericHidInBuffer[USB_GENERIC_HID_IN_BUFFER_LENGTH]; -static uint8_t GenericHidOutBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH]; +uint8_t GenericHidInBuffer[USB_GENERIC_HID_IN_BUFFER_LENGTH]; +uint8_t GenericHidOutBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH]; static usb_status_t UsbReceiveData() { @@ -54,40 +53,15 @@ static usb_status_t UsbReceiveData() USB_GENERIC_HID_OUT_BUFFER_LENGTH); } -uint8_t x=0; usb_status_t UsbGenericHidCallback(class_handle_t handle, uint32_t event, void *param) { usb_status_t error = kStatus_USB_Error; - uint8_t command, arg; switch (event) { case kUSB_DeviceHidEventSendResponse: break; case kUSB_DeviceHidEventRecvResponse: - - command = GenericHidInBuffer[0]; - arg = GenericHidInBuffer[1]; - - switch (command) { - case USB_COMMAND_JUMP_TO_BOOTLOADER: - break; - case USB_COMMAND_TEST_LED: - switch (arg) { - case 0: - TEST_RED_ON(); - break; - case 1: - TEST_RED_OFF(); - break; - } - GenericHidOutBuffer[0]=arg; - GenericHidOutBuffer[1]=arg; - GenericHidOutBuffer[2]=0x66+x++; - case USB_COMMAND_LED_DRIVER: - break; - default: - break; - } + UsbProtocolHandler(); USB_DeviceHidSend(UsbCompositeDevice.genericHidHandle, USB_GENERIC_HID_ENDPOINT_IN_INDEX, diff --git a/right/src/usb_interface_generic_hid.h b/right/src/usb_interface_generic_hid.h index 003ef31..8417eef 100644 --- a/right/src/usb_interface_generic_hid.h +++ b/right/src/usb_interface_generic_hid.h @@ -5,6 +5,7 @@ #include "usb_api.h" #include "usb_descriptor_device.h" + #include "usb_protocol_handler.h" // Macros: @@ -22,13 +23,11 @@ #define USB_GENERIC_HID_IN_BUFFER_LENGTH 64 #define USB_GENERIC_HID_OUT_BUFFER_LENGTH 64 - #define USB_COMMAND_JUMP_TO_BOOTLOADER 0 - #define USB_COMMAND_TEST_LED 1 - #define USB_COMMAND_LED_DRIVER 2 - // Variables: extern usb_device_class_struct_t UsbGenericHidClass; + extern uint8_t GenericHidInBuffer[USB_GENERIC_HID_IN_BUFFER_LENGTH]; + extern uint8_t GenericHidOutBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH]; // Functions: @@ -36,4 +35,5 @@ extern usb_status_t UsbGenericHidSetConfiguration(class_handle_t handle, uint8_t configuration); extern usb_status_t UsbGenericHidSetInterface(class_handle_t handle, uint8_t interface, uint8_t alternateSetting); + #endif diff --git a/right/src/usb_protocol_handler.c b/right/src/usb_protocol_handler.c new file mode 100644 index 0000000..8099224 --- /dev/null +++ b/right/src/usb_protocol_handler.c @@ -0,0 +1,26 @@ +#include "usb_protocol_handler.h" +#include "test_led.h" + +void UsbProtocolHandler() +{ + uint8_t command = GenericHidInBuffer[0]; + uint8_t arg = GenericHidInBuffer[1]; + + switch (command) { + case USB_COMMAND_JUMP_TO_BOOTLOADER: + break; + case USB_COMMAND_TEST_LED: + switch (arg) { + case 0: + TEST_RED_ON(); + break; + case 1: + TEST_RED_OFF(); + break; + } + case USB_COMMAND_LED_DRIVER: + break; + default: + break; + } +} diff --git a/right/src/usb_protocol_handler.h b/right/src/usb_protocol_handler.h new file mode 100644 index 0000000..4aa292e --- /dev/null +++ b/right/src/usb_protocol_handler.h @@ -0,0 +1,18 @@ +#ifndef __USB_PROTOCOL_HANDLER_H__ +#define __USB_PROTOCOL_HANDLER_H__ + +// Includes: + +#include "usb_interface_generic_hid.h" + +// Macros: + + #define USB_COMMAND_JUMP_TO_BOOTLOADER 0 + #define USB_COMMAND_TEST_LED 1 + #define USB_COMMAND_LED_DRIVER 2 + +// Functions: + + extern void UsbProtocolHandler(); + +#endif