Merge all the substructures of UsbDeviceCompositeConfigList across different files to a single structure.

This commit is contained in:
László Monda
2017-12-04 20:41:22 +01:00
parent e9bf3dc355
commit a5ce90779c
11 changed files with 144 additions and 165 deletions

View File

@@ -5,42 +5,170 @@
#include "bus_pal_hardware.h"
#include "bootloader/wormhole.h"
static usb_status_t UsbDeviceCallback(usb_device_handle handle, uint32_t event, void *param);
usb_composite_device_t UsbCompositeDevice;
static usb_status_t UsbDeviceCallback(usb_device_handle handle, uint32_t event, void *param);
usb_device_class_config_struct_t UsbDeviceCompositeClassConfig[USB_DEVICE_CONFIG_HID] = {
{
static usb_device_class_config_list_struct_t UsbDeviceCompositeConfigList = {
.deviceCallback = UsbDeviceCallback,
.count = USB_DEVICE_CONFIG_HID,
.config = (usb_device_class_config_struct_t[USB_DEVICE_CONFIG_HID]) {{
.classCallback = UsbGenericHidCallback,
.classHandle = (class_handle_t)NULL,
.classInfomation = &UsbGenericHidClass
.classInfomation = (usb_device_class_struct_t[]) {{
.type = kUSB_DeviceClassTypeHid,
.configurations = USB_DEVICE_CONFIGURATION_COUNT,
.interfaceList = (usb_device_interface_list_t[USB_DEVICE_CONFIGURATION_COUNT]) {{
.count = USB_GENERIC_HID_INTERFACE_COUNT,
.interfaces = (usb_device_interfaces_struct_t[USB_GENERIC_HID_INTERFACE_COUNT]) {{
.classCode = USB_CLASS_HID,
.subclassCode = USB_HID_SUBCLASS_NONE,
.protocolCode = USB_HID_PROTOCOL_NONE,
.interfaceNumber = USB_GENERIC_HID_INTERFACE_INDEX,
.count = 1,
.interface = (usb_device_interface_struct_t[]) {{
.alternateSetting = USB_INTERFACE_ALTERNATE_SETTING_NONE,
.classSpecific = NULL,
.endpointList = {
.count = USB_GENERIC_HID_ENDPOINT_COUNT,
.endpoint = (usb_device_endpoint_struct_t[USB_GENERIC_HID_ENDPOINT_COUNT]) {
{
.endpointAddress = USB_GENERIC_HID_ENDPOINT_IN_INDEX | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
.transferType = USB_ENDPOINT_INTERRUPT,
.maxPacketSize = USB_GENERIC_HID_INTERRUPT_IN_PACKET_SIZE,
},
{
.endpointAddress = USB_GENERIC_HID_ENDPOINT_OUT_INDEX | (USB_OUT << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
.transferType = USB_ENDPOINT_INTERRUPT,
.maxPacketSize = USB_GENERIC_HID_INTERRUPT_OUT_PACKET_SIZE,
}
}
}
}}
}}
}}
}}
},
{
.classCallback = UsbBasicKeyboardCallback,
.classHandle = (class_handle_t)NULL,
.classInfomation = &UsbBasicKeyboardClass
.classInfomation = (usb_device_class_struct_t[]) {{
.type = kUSB_DeviceClassTypeHid,
.configurations = USB_DEVICE_CONFIGURATION_COUNT,
.interfaceList = (usb_device_interface_list_t[USB_DEVICE_CONFIGURATION_COUNT]) {{
.count = USB_BASIC_KEYBOARD_INTERFACE_COUNT,
.interfaces = (usb_device_interfaces_struct_t[USB_BASIC_KEYBOARD_INTERFACE_COUNT]) {{
.classCode = USB_CLASS_HID,
.subclassCode = USB_HID_SUBCLASS_BOOT,
.protocolCode = USB_HID_PROTOCOL_KEYBOARD,
.interfaceNumber = USB_BASIC_KEYBOARD_INTERFACE_INDEX,
.count = 1,
.interface = (usb_device_interface_struct_t[]) {{
.alternateSetting = USB_INTERFACE_ALTERNATE_SETTING_NONE,
.classSpecific = NULL,
.endpointList = {
USB_BASIC_KEYBOARD_ENDPOINT_COUNT,
(usb_device_endpoint_struct_t[USB_BASIC_KEYBOARD_ENDPOINT_COUNT]) {{
.endpointAddress = USB_BASIC_KEYBOARD_ENDPOINT_INDEX | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
.transferType = USB_ENDPOINT_INTERRUPT,
.maxPacketSize = USB_BASIC_KEYBOARD_INTERRUPT_IN_PACKET_SIZE,
}}
}
}}
}}
}}
}}
},
{
.classCallback = UsbMediaKeyboardCallback,
.classHandle = (class_handle_t)NULL,
.classInfomation = &UsbMediaKeyboardClass
.classInfomation = (usb_device_class_struct_t[]) {{
.type = kUSB_DeviceClassTypeHid,
.configurations = USB_DEVICE_CONFIGURATION_COUNT,
.interfaceList = (usb_device_interface_list_t[USB_DEVICE_CONFIGURATION_COUNT]) {{
.count = USB_MEDIA_KEYBOARD_INTERFACE_COUNT,
.interfaces = (usb_device_interfaces_struct_t[USB_MEDIA_KEYBOARD_INTERFACE_COUNT]) {{
.classCode = USB_CLASS_HID,
.subclassCode = USB_HID_SUBCLASS_BOOT,
.protocolCode = USB_HID_PROTOCOL_KEYBOARD,
.interfaceNumber = USB_MEDIA_KEYBOARD_INTERFACE_INDEX,
.count = 1,
.interface = (usb_device_interface_struct_t[]) {{
.alternateSetting = USB_INTERFACE_ALTERNATE_SETTING_NONE,
.classSpecific = NULL,
.endpointList = {
USB_MEDIA_KEYBOARD_ENDPOINT_COUNT,
(usb_device_endpoint_struct_t[USB_MEDIA_KEYBOARD_ENDPOINT_COUNT]) {{
.endpointAddress = USB_MEDIA_KEYBOARD_ENDPOINT_INDEX | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
.transferType = USB_ENDPOINT_INTERRUPT,
.maxPacketSize = USB_MEDIA_KEYBOARD_INTERRUPT_IN_PACKET_SIZE,
}}
}
}}
}}
}}
}}
},
{
.classCallback = UsbSystemKeyboardCallback,
.classHandle = (class_handle_t)NULL,
.classInfomation = &UsbSystemKeyboardClass
.classInfomation = (usb_device_class_struct_t[]) {{
.type = kUSB_DeviceClassTypeHid,
.configurations = USB_DEVICE_CONFIGURATION_COUNT,
.interfaceList = (usb_device_interface_list_t[USB_DEVICE_CONFIGURATION_COUNT]) {{
.count = USB_SYSTEM_KEYBOARD_INTERFACE_COUNT,
.interfaces = (usb_device_interfaces_struct_t[USB_SYSTEM_KEYBOARD_INTERFACE_COUNT]) {{
.classCode = USB_CLASS_HID,
.subclassCode = USB_HID_SUBCLASS_BOOT,
.protocolCode = USB_HID_PROTOCOL_KEYBOARD,
.interfaceNumber = USB_SYSTEM_KEYBOARD_INTERFACE_INDEX,
.count = 1,
.interface = (usb_device_interface_struct_t[]) {{
.alternateSetting = USB_INTERFACE_ALTERNATE_SETTING_NONE,
.classSpecific = NULL,
.endpointList = {
USB_SYSTEM_KEYBOARD_ENDPOINT_COUNT,
(usb_device_endpoint_struct_t[USB_SYSTEM_KEYBOARD_ENDPOINT_COUNT]) {{
.endpointAddress = USB_SYSTEM_KEYBOARD_ENDPOINT_INDEX | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
.transferType = USB_ENDPOINT_INTERRUPT,
.maxPacketSize = USB_SYSTEM_KEYBOARD_INTERRUPT_IN_PACKET_SIZE,
}}
}
}}
}}
}},
}}
},
{
.classCallback = UsbMouseCallback,
.classHandle = (class_handle_t)NULL,
.classInfomation = &UsbMouseClass
},
};
usb_device_class_config_list_struct_t UsbDeviceCompositeConfigList = {
.deviceCallback = UsbDeviceCallback,
.count = USB_DEVICE_CONFIG_HID,
.config = UsbDeviceCompositeClassConfig,
};
.classInfomation = (usb_device_class_struct_t[]) {{
.type = kUSB_DeviceClassTypeHid,
.configurations = USB_DEVICE_CONFIGURATION_COUNT,
.interfaceList = (usb_device_interface_list_t[USB_DEVICE_CONFIGURATION_COUNT]) {{
.count = USB_MOUSE_INTERFACE_COUNT,
.interfaces = (usb_device_interfaces_struct_t[USB_MOUSE_INTERFACE_COUNT]) {{
.classCode = USB_CLASS_HID,
.subclassCode = USB_HID_SUBCLASS_BOOT,
.protocolCode = USB_HID_PROTOCOL_MOUSE,
.interfaceNumber = USB_MOUSE_INTERFACE_INDEX,
.count = 1,
.interface = (usb_device_interface_struct_t[]) {{
.alternateSetting = USB_INTERFACE_ALTERNATE_SETTING_NONE,
.classSpecific = NULL,
.endpointList = {
USB_MOUSE_ENDPOINT_COUNT,
(usb_device_endpoint_struct_t[USB_MOUSE_ENDPOINT_COUNT]) {{
.endpointAddress = USB_MOUSE_ENDPOINT_INDEX | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
.transferType = USB_ENDPOINT_INTERRUPT,
.maxPacketSize = USB_MOUSE_INTERRUPT_IN_PACKET_SIZE,
}}
}
}}
}}
}}
}}
}
}};
static usb_status_t UsbDeviceCallback(usb_device_handle handle, uint32_t event, void *param)
{

View File

@@ -1,32 +1,5 @@
#include "usb_composite_device.h"
usb_device_class_struct_t UsbBasicKeyboardClass = {
.type = kUSB_DeviceClassTypeHid,
.configurations = USB_DEVICE_CONFIGURATION_COUNT,
.interfaceList = (usb_device_interface_list_t[USB_DEVICE_CONFIGURATION_COUNT]) {{
.count = USB_BASIC_KEYBOARD_INTERFACE_COUNT,
.interfaces = (usb_device_interfaces_struct_t[USB_BASIC_KEYBOARD_INTERFACE_COUNT]) {{
.classCode = USB_CLASS_HID,
.subclassCode = USB_HID_SUBCLASS_BOOT,
.protocolCode = USB_HID_PROTOCOL_KEYBOARD,
.interfaceNumber = USB_BASIC_KEYBOARD_INTERFACE_INDEX,
.count = 1,
.interface = (usb_device_interface_struct_t[]) {{
.alternateSetting = USB_INTERFACE_ALTERNATE_SETTING_NONE,
.classSpecific = NULL,
.endpointList = {
USB_BASIC_KEYBOARD_ENDPOINT_COUNT,
(usb_device_endpoint_struct_t[USB_BASIC_KEYBOARD_ENDPOINT_COUNT]) {{
.endpointAddress = USB_BASIC_KEYBOARD_ENDPOINT_INDEX | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
.transferType = USB_ENDPOINT_INTERRUPT,
.maxPacketSize = USB_BASIC_KEYBOARD_INTERRUPT_IN_PACKET_SIZE,
}}
}
}}
}}
}}
};
static usb_basic_keyboard_report_t usbBasicKeyboardReports[2];
uint32_t UsbBasicKeyboardActionCounter;
usb_basic_keyboard_report_t* ActiveUsbBasicKeyboardReport = usbBasicKeyboardReports;

View File

@@ -33,7 +33,6 @@
extern bool IsUsbBasicKeyboardReportSent;
extern uint32_t UsbBasicKeyboardActionCounter;
extern usb_device_class_struct_t UsbBasicKeyboardClass;
extern usb_basic_keyboard_report_t* ActiveUsbBasicKeyboardReport;
// Functions:

View File

@@ -1,40 +1,6 @@
#include "usb_composite_device.h"
#include "usb_protocol_handler.h"
usb_device_class_struct_t UsbGenericHidClass = {
.type = kUSB_DeviceClassTypeHid,
.configurations = USB_DEVICE_CONFIGURATION_COUNT,
.interfaceList = (usb_device_interface_list_t[USB_DEVICE_CONFIGURATION_COUNT]) {{
.count = USB_GENERIC_HID_INTERFACE_COUNT,
.interfaces = (usb_device_interfaces_struct_t[USB_GENERIC_HID_INTERFACE_COUNT]) {{
.classCode = USB_CLASS_HID,
.subclassCode = USB_HID_SUBCLASS_NONE,
.protocolCode = USB_HID_PROTOCOL_NONE,
.interfaceNumber = USB_GENERIC_HID_INTERFACE_INDEX,
.count = 1,
.interface = (usb_device_interface_struct_t[]) {{
.alternateSetting = USB_INTERFACE_ALTERNATE_SETTING_NONE,
.classSpecific = NULL,
.endpointList = {
.count = USB_GENERIC_HID_ENDPOINT_COUNT,
.endpoint = (usb_device_endpoint_struct_t[USB_GENERIC_HID_ENDPOINT_COUNT]) {
{
.endpointAddress = USB_GENERIC_HID_ENDPOINT_IN_INDEX | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
.transferType = USB_ENDPOINT_INTERRUPT,
.maxPacketSize = USB_GENERIC_HID_INTERRUPT_IN_PACKET_SIZE,
},
{
.endpointAddress = USB_GENERIC_HID_ENDPOINT_OUT_INDEX | (USB_OUT << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
.transferType = USB_ENDPOINT_INTERRUPT,
.maxPacketSize = USB_GENERIC_HID_INTERRUPT_OUT_PACKET_SIZE,
}
}
}
}}
}}
}}
};
uint32_t UsbGenericHidActionCounter;
uint8_t GenericHidInBuffer[USB_GENERIC_HID_IN_BUFFER_LENGTH];
uint8_t GenericHidOutBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH];

View File

@@ -25,7 +25,6 @@
// Variables:
extern usb_device_class_struct_t UsbGenericHidClass;
extern uint32_t UsbGenericHidActionCounter;
extern uint8_t GenericHidInBuffer[USB_GENERIC_HID_IN_BUFFER_LENGTH];
extern uint8_t GenericHidOutBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH];

View File

@@ -1,32 +1,5 @@
#include "usb_composite_device.h"
usb_device_class_struct_t UsbMediaKeyboardClass = {
.type = kUSB_DeviceClassTypeHid,
.configurations = USB_DEVICE_CONFIGURATION_COUNT,
.interfaceList = (usb_device_interface_list_t[USB_DEVICE_CONFIGURATION_COUNT]) {{
.count = USB_MEDIA_KEYBOARD_INTERFACE_COUNT,
.interfaces = (usb_device_interfaces_struct_t[USB_MEDIA_KEYBOARD_INTERFACE_COUNT]) {{
.classCode = USB_CLASS_HID,
.subclassCode = USB_HID_SUBCLASS_BOOT,
.protocolCode = USB_HID_PROTOCOL_KEYBOARD,
.interfaceNumber = USB_MEDIA_KEYBOARD_INTERFACE_INDEX,
.count = 1,
.interface = (usb_device_interface_struct_t[]) {{
.alternateSetting = USB_INTERFACE_ALTERNATE_SETTING_NONE,
.classSpecific = NULL,
.endpointList = {
USB_MEDIA_KEYBOARD_ENDPOINT_COUNT,
(usb_device_endpoint_struct_t[USB_MEDIA_KEYBOARD_ENDPOINT_COUNT]) {{
.endpointAddress = USB_MEDIA_KEYBOARD_ENDPOINT_INDEX | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
.transferType = USB_ENDPOINT_INTERRUPT,
.maxPacketSize = USB_MEDIA_KEYBOARD_INTERRUPT_IN_PACKET_SIZE,
}}
}
}}
}}
}}
};
uint32_t UsbMediaKeyboardActionCounter;
static usb_media_keyboard_report_t usbMediaKeyboardReports[2];
usb_media_keyboard_report_t* ActiveUsbMediaKeyboardReport = usbMediaKeyboardReports;

View File

@@ -30,7 +30,6 @@
extern bool IsUsbMediaKeyboardReportSent;
extern uint32_t UsbMediaKeyboardActionCounter;
extern usb_device_class_struct_t UsbMediaKeyboardClass;
extern usb_media_keyboard_report_t* ActiveUsbMediaKeyboardReport;
// Functions:

View File

@@ -1,32 +1,5 @@
#include "usb_composite_device.h"
usb_device_class_struct_t UsbMouseClass = {
.type = kUSB_DeviceClassTypeHid,
.configurations = USB_DEVICE_CONFIGURATION_COUNT,
.interfaceList = (usb_device_interface_list_t[USB_DEVICE_CONFIGURATION_COUNT]) {{
.count = USB_MOUSE_INTERFACE_COUNT,
.interfaces = (usb_device_interfaces_struct_t[USB_MOUSE_INTERFACE_COUNT]) {{
.classCode = USB_CLASS_HID,
.subclassCode = USB_HID_SUBCLASS_BOOT,
.protocolCode = USB_HID_PROTOCOL_MOUSE,
.interfaceNumber = USB_MOUSE_INTERFACE_INDEX,
.count = 1,
.interface = (usb_device_interface_struct_t[]) {{
.alternateSetting = USB_INTERFACE_ALTERNATE_SETTING_NONE,
.classSpecific = NULL,
.endpointList = {
USB_MOUSE_ENDPOINT_COUNT,
(usb_device_endpoint_struct_t[USB_MOUSE_ENDPOINT_COUNT]) {{
.endpointAddress = USB_MOUSE_ENDPOINT_INDEX | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
.transferType = USB_ENDPOINT_INTERRUPT,
.maxPacketSize = USB_MOUSE_INTERRUPT_IN_PACKET_SIZE,
}}
}
}}
}}
}}
};
uint32_t UsbMouseActionCounter;
static usb_mouse_report_t usbMouseReports[2];
usb_mouse_report_t* ActiveUsbMouseReport = usbMouseReports;
@@ -50,8 +23,6 @@ void ResetActiveUsbMouseReport(void)
static volatile usb_status_t usbMouseAction(void)
{
usb_mouse_report_t *mouseReport = getInactiveUsbMouseReport();
SetDebugBufferUint16(61, mouseReport->x);
SetDebugBufferUint16(63, mouseReport->y);
IsUsbMouseReportSent = true;
return USB_DeviceHidSend(UsbCompositeDevice.mouseHandle, USB_MOUSE_ENDPOINT_INDEX,
(uint8_t*)mouseReport, USB_MOUSE_REPORT_LENGTH);

View File

@@ -33,7 +33,6 @@
extern bool IsUsbMouseReportSent;
extern uint32_t UsbMouseActionCounter;
extern usb_device_class_struct_t UsbMouseClass;
extern usb_mouse_report_t* ActiveUsbMouseReport;
// Functions:

View File

@@ -1,32 +1,5 @@
#include "usb_composite_device.h"
usb_device_class_struct_t UsbSystemKeyboardClass = {
.type = kUSB_DeviceClassTypeHid,
.configurations = USB_DEVICE_CONFIGURATION_COUNT,
.interfaceList = (usb_device_interface_list_t[USB_DEVICE_CONFIGURATION_COUNT]) {{
.count = USB_SYSTEM_KEYBOARD_INTERFACE_COUNT,
.interfaces = (usb_device_interfaces_struct_t[USB_SYSTEM_KEYBOARD_INTERFACE_COUNT]) {{
.classCode = USB_CLASS_HID,
.subclassCode = USB_HID_SUBCLASS_BOOT,
.protocolCode = USB_HID_PROTOCOL_KEYBOARD,
.interfaceNumber = USB_SYSTEM_KEYBOARD_INTERFACE_INDEX,
.count = 1,
.interface = (usb_device_interface_struct_t[]) {{
.alternateSetting = USB_INTERFACE_ALTERNATE_SETTING_NONE,
.classSpecific = NULL,
.endpointList = {
USB_SYSTEM_KEYBOARD_ENDPOINT_COUNT,
(usb_device_endpoint_struct_t[USB_SYSTEM_KEYBOARD_ENDPOINT_COUNT]) {{
.endpointAddress = USB_SYSTEM_KEYBOARD_ENDPOINT_INDEX | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
.transferType = USB_ENDPOINT_INTERRUPT,
.maxPacketSize = USB_SYSTEM_KEYBOARD_INTERRUPT_IN_PACKET_SIZE,
}}
}
}}
}}
}},
};
uint32_t UsbSystemKeyboardActionCounter;
static usb_system_keyboard_report_t usbSystemKeyboardReports[2];
usb_system_keyboard_report_t* ActiveUsbSystemKeyboardReport = usbSystemKeyboardReports;

View File

@@ -31,7 +31,6 @@
extern bool IsUsbSystemKeyboardReportSent;
extern uint32_t UsbSystemKeyboardActionCounter;
extern usb_device_class_struct_t UsbSystemKeyboardClass;
extern usb_system_keyboard_report_t* ActiveUsbSystemKeyboardReport;
// Functions: