glue layer
This commit is contained in:
parent
f808e891af
commit
28324b104f
|
@ -55,7 +55,7 @@ target_sources(${COMPONENT_TARGET} INTERFACE
|
|||
"${COMPONENT_DIR}/tinyusb/src/host/usbh.c"
|
||||
"${COMPONENT_DIR}/tinyusb/src/host/usbh_control.c"
|
||||
|
||||
"${COMPONENT_DIR}/drivers/driver-glue.c"
|
||||
"${COMPONENT_DIR}/drivers/usb-glue.c"
|
||||
"${COMPONENT_DIR}/drivers/dual-cdc/dual-cdc-driver.c"
|
||||
"${COMPONENT_DIR}/drivers/dual-cdc/dual-cdc-descriptors.c"
|
||||
|
||||
|
|
|
@ -1,12 +1,39 @@
|
|||
#include <tusb.h>
|
||||
#include "dap-link/dap-link-descriptors.h"
|
||||
#include "dual-cdc/dual-cdc-descriptors.h"
|
||||
#include "usb-glue.h"
|
||||
|
||||
typedef struct {
|
||||
uint8_t const* desc_device;
|
||||
uint8_t const* desc_config;
|
||||
uint16_t const* (*desc_string_cb)(uint8_t, uint16_t);
|
||||
} USBDevice;
|
||||
|
||||
const USBDevice usb_device[] = {
|
||||
[USBDeviceTypeDapLink] =
|
||||
{
|
||||
.desc_device = (uint8_t const*)&dap_link_desc_device,
|
||||
.desc_config = dap_link_desc_configuration,
|
||||
.desc_string_cb = dap_link_descriptor_string_cb,
|
||||
},
|
||||
[USBDeviceTypeDualCDC] =
|
||||
{
|
||||
.desc_device = (uint8_t const*)&blackmagic_desc_device,
|
||||
.desc_config = blackmagic_desc_fs_configuration,
|
||||
.desc_string_cb = blackmagic_descriptor_string_cb,
|
||||
},
|
||||
};
|
||||
|
||||
static USBDeviceType usb_device_type = USBDeviceTypeDapLink;
|
||||
|
||||
void usb_glue_init(USBDeviceType device_type) {
|
||||
usb_device_type = device_type;
|
||||
}
|
||||
|
||||
// Invoked when received GET DEVICE DESCRIPTOR
|
||||
// Application return pointer to descriptor
|
||||
uint8_t const* tud_descriptor_device_cb(void) {
|
||||
// return (uint8_t const*)&blackmagic_desc_device;
|
||||
return (uint8_t const*)&dap_link_desc_device;
|
||||
return usb_device[usb_device_type].desc_device;
|
||||
}
|
||||
|
||||
// Invoked when received GET CONFIGURATION DESCRIPTOR
|
||||
|
@ -14,13 +41,11 @@ uint8_t const* tud_descriptor_device_cb(void) {
|
|||
// Descriptor contents must exist long enough for transfer to complete
|
||||
uint8_t const* tud_descriptor_configuration_cb(uint8_t index) {
|
||||
(void)index; // for multiple configurations
|
||||
// return blackmagic_desc_fs_configuration;
|
||||
return dap_link_desc_configuration;
|
||||
return usb_device[usb_device_type].desc_config;
|
||||
}
|
||||
|
||||
uint16_t const* tud_descriptor_string_cb(uint8_t index, uint16_t langid) {
|
||||
// return blackmagic_descriptor_string_cb(index, langid);
|
||||
return dap_link_descriptor_string_cb(index, langid);
|
||||
return usb_device[usb_device_type].desc_string_cb(index, langid);
|
||||
}
|
||||
|
||||
uint8_t const* tud_descriptor_bos_cb(void) {
|
|
@ -0,0 +1,8 @@
|
|||
#pragma once
|
||||
|
||||
typedef enum {
|
||||
USBDeviceTypeDapLink,
|
||||
USBDeviceTypeDualCDC,
|
||||
} USBDeviceType;
|
||||
|
||||
void usb_glue_init(USBDeviceType device_type);
|
Loading…
Reference in New Issue