7e08347d5c
Be careful to not use the flash file system while using mass storage because both pieces of code attempting to change the fs can corrupt it.
151 lines
4.5 KiB
C
151 lines
4.5 KiB
C
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
#ifndef CONF_USB_H_INCLUDED
|
|
#define CONF_USB_H_INCLUDED
|
|
|
|
#define USB_DEVICE_MAJOR_VERSION 1
|
|
#define USB_DEVICE_MINOR_VERSION 0
|
|
#define USB_DEVICE_POWER 100 // Consumption on Vbus line (mA)
|
|
#define USB_DEVICE_ATTR \
|
|
(USB_CONFIG_ATTR_BUS_POWERED)
|
|
// (USB_CONFIG_ATTR_REMOTE_WAKEUP|USB_CONFIG_ATTR_SELF_POWERED)
|
|
// (USB_CONFIG_ATTR_REMOTE_WAKEUP|USB_CONFIG_ATTR_BUS_POWERED)
|
|
|
|
//! USB Device string definitions (Optional)
|
|
#ifndef USB_DEVICE_MANUFACTURE_NAME
|
|
# define USB_DEVICE_MANUFACTURE_NAME "Arduino LLC"
|
|
#endif
|
|
|
|
#ifndef USB_DEVICE_PRODUCT_NAME
|
|
# define USB_DEVICE_PRODUCT_NAME "Arduino Zero"
|
|
#endif
|
|
// #define USB_DEVICE_SERIAL_NAME "12...EF"
|
|
#define USB_DEVICE_GET_SERIAL_NAME_POINTER serial_number
|
|
#define USB_DEVICE_GET_SERIAL_NAME_LENGTH 32
|
|
extern char serial_number[USB_DEVICE_GET_SERIAL_NAME_LENGTH];
|
|
|
|
//! Control endpoint size
|
|
#define USB_DEVICE_EP_CTRL_SIZE 64
|
|
|
|
//! Two interfaces for this device (CDC COM + CDC DATA + MSC)
|
|
#define USB_DEVICE_NB_INTERFACE 3
|
|
|
|
// (3 | USB_EP_DIR_IN) // CDC Notify endpoint
|
|
// (4 | USB_EP_DIR_IN) // CDC TX
|
|
// (5 | USB_EP_DIR_OUT) // CDC RX
|
|
// (1 | USB_EP_DIR_IN) // MSC IN
|
|
// (2 | USB_EP_DIR_OUT) // MSC OUT
|
|
#define USB_DEVICE_MAX_EP 5
|
|
|
|
#define UDI_CDC_PORT_NB 1
|
|
#define UDI_CDC_ENABLE_EXT(port) mp_cdc_enable(port)
|
|
extern bool mp_cdc_enable(uint8_t port);
|
|
#define UDI_CDC_DISABLE_EXT(port) mp_cdc_disable(port)
|
|
extern void mp_cdc_disable(uint8_t port);
|
|
#define UDI_CDC_LOW_RATE
|
|
|
|
#define UDI_CDC_DEFAULT_RATE 115200
|
|
#define UDI_CDC_DEFAULT_STOPBITS CDC_STOP_BITS_1
|
|
#define UDI_CDC_DEFAULT_PARITY CDC_PAR_NONE
|
|
#define UDI_CDC_DEFAULT_DATABITS 8
|
|
|
|
#define UDI_CDC_RX_NOTIFY(port) usb_rx_notify()
|
|
void usb_rx_notify(void);
|
|
#define UDI_CDC_SET_CODING_EXT(port,cfg)
|
|
#define UDI_CDC_SET_DTR_EXT(port,set)
|
|
#define UDI_CDC_SET_RTS_EXT(port,set)
|
|
|
|
/**
|
|
* USB CDC low level configuration
|
|
* In standalone these configurations are defined by the CDC module.
|
|
* For composite device, these configuration must be defined here
|
|
* @{
|
|
*/
|
|
//! Endpoint numbers definition
|
|
|
|
#define UDI_CDC_COMM_EP_0 (3 | USB_EP_DIR_IN) // Notify endpoint
|
|
#define UDI_CDC_DATA_EP_IN_0 (4 | USB_EP_DIR_IN) // TX
|
|
#define UDI_CDC_DATA_EP_OUT_0 (5 | USB_EP_DIR_OUT) // RX
|
|
|
|
//! Interface numbers
|
|
#define UDI_CDC_COMM_IFACE_NUMBER_0 0
|
|
#define UDI_CDC_DATA_IFACE_NUMBER_0 1
|
|
|
|
/**
|
|
* Configuration of MSC interface
|
|
* @{
|
|
*/
|
|
//! Vendor name and Product version of MSC interface
|
|
#define UDI_MSC_GLOBAL_VENDOR_ID \
|
|
'A', 'T', 'M', 'E', 'L', ' ', ' ', ' '
|
|
#define UDI_MSC_GLOBAL_PRODUCT_VERSION \
|
|
'1', '.', '0', '0'
|
|
|
|
//! Interface callback definition
|
|
#define UDI_MSC_ENABLE_EXT() mp_msc_enable()
|
|
extern bool mp_msc_enable();
|
|
#define UDI_MSC_DISABLE_EXT() mp_msc_disable()
|
|
extern void mp_msc_disable();
|
|
|
|
//! Enable id string of interface to add an extra USB string
|
|
#define UDI_MSC_STRING_ID 5
|
|
|
|
/**
|
|
* USB MSC low level configuration
|
|
* In standalone these configurations are defined by the MSC module.
|
|
* For composite device, these configuration must be defined here
|
|
* @{
|
|
*/
|
|
//! Endpoint numbers definition
|
|
#define UDI_MSC_EP_IN (1 | USB_EP_DIR_IN)
|
|
#define UDI_MSC_EP_OUT (2 | USB_EP_DIR_OUT)
|
|
|
|
//! Interface number
|
|
#define UDI_MSC_IFACE_NUMBER 2
|
|
|
|
/**
|
|
* Description of Composite Device
|
|
* @{
|
|
*/
|
|
//! USB Interfaces descriptor structure
|
|
#define UDI_COMPOSITE_DESC_T \
|
|
usb_iad_desc_t udi_cdc_iad; \
|
|
udi_cdc_comm_desc_t udi_cdc_comm; \
|
|
udi_cdc_data_desc_t udi_cdc_data; \
|
|
udi_msc_desc_t udi_msc
|
|
|
|
//! USB Interfaces descriptor value for Full Speed
|
|
#define UDI_COMPOSITE_DESC_FS \
|
|
.udi_cdc_iad = UDI_CDC_IAD_DESC_0, \
|
|
.udi_cdc_comm = UDI_CDC_COMM_DESC_0, \
|
|
.udi_cdc_data = UDI_CDC_DATA_DESC_0_FS, \
|
|
.udi_msc = UDI_MSC_DESC_FS
|
|
|
|
//! USB Interfaces descriptor value for High Speed
|
|
#define UDI_COMPOSITE_DESC_HS \
|
|
.udi_cdc_iad = UDI_CDC_IAD_DESC_0, \
|
|
.udi_cdc_comm = UDI_CDC_COMM_DESC_0, \
|
|
.udi_cdc_data = UDI_CDC_DATA_DESC_0_HS, \
|
|
.udi_msc = UDI_MSC_DESC_HS
|
|
|
|
//! USB Interface APIs
|
|
#define UDI_COMPOSITE_API \
|
|
&udi_api_cdc_comm, \
|
|
&udi_api_cdc_data, \
|
|
&udi_api_msc
|
|
//@}
|
|
|
|
/**
|
|
* USB Device Driver Configuration
|
|
* @{
|
|
*/
|
|
//@}
|
|
|
|
//! The includes of classes and other headers must be done at the end of this file to avoid compile error
|
|
#include "udi_cdc.h"
|
|
#include "udi_msc.h"
|
|
|
|
#endif
|