From 5a5cf7cf33d19fc13184ce2a16414cf094e4e7ff Mon Sep 17 00:00:00 2001 From: Damjan Adamic Date: Tue, 6 Dec 2016 20:32:30 +0100 Subject: [PATCH] Projectkk2glider/issue 4086 usb and serial (#4097) * Serial2 changes: * stm32 driver moved to common dir. * earlier start of driver (Taranis) * wait for free buffer time limited USB changes: * Upgrade to ST USB-Host-Device_Lib_V2.2.0 (from V2.1.0) - this fixed a problem with USB serial #4086) * other fixes for #4086 * USB-Host-Device_Lib: renamed directory to V2.2.0 (from V2.1.0) --- radio/src/CMakeLists.txt | 2 +- radio/src/gui/212x64/view_statistics.cpp | 3 + radio/src/opentx.cpp | 8 +- radio/src/targets/common/arm/CMakeLists.txt | 1 - .../targets/common/arm/stm32/CMakeLists.txt | 5 +- .../arm/stm32}/serial2_driver.cpp | 8 +- .../src/targets/common/arm/stm32/usb_driver.c | 2 +- .../src/targets/common/arm/stm32/usbd_cdc.cpp | 74 +- .../src/targets/common/arm/stm32/usbd_desc.c | 2 + radio/src/targets/horus/CMakeLists.txt | 2 +- radio/src/targets/horus/board.cpp | 6 +- radio/src/targets/sky9x/CMakeLists.txt | 3 +- radio/src/targets/taranis/CMakeLists.txt | 6 +- radio/src/targets/taranis/board.cpp | 9 +- radio/src/targets/taranis/serial2_driver.cpp | 165 ---- .../Class/audio/inc/usbd_audio_core.h | 10 +- .../Class/audio/inc/usbd_audio_out_if.h | 8 +- .../Class/audio/src/usbd_audio_core.c | 16 +- .../Class/audio/src/usbd_audio_out_if.c | 28 +- .../Class/cdc/inc/usbd_cdc_core.h | 12 +- .../Class/cdc/inc/usbd_cdc_if_template.h | 6 +- .../Class/cdc/src/usbd_cdc_core.c | 123 +-- .../Class/cdc/src/usbd_cdc_if_template.c | 14 +- .../Class/customhid/inc/usbd_customhid_core.h | 129 ++++ .../Class/customhid/src/usbd_customhid_core.c | 718 ++++++++++++++++++ .../Class/dfu/inc/usbd_dfu_core.h | 8 +- .../Class/dfu/inc/usbd_dfu_mal.h | 9 +- .../Class/dfu/inc/usbd_flash_if.h | 14 +- .../Class/dfu/inc/usbd_mem_if_template.h | 7 +- .../Class/dfu/inc/usbd_otp_if.h | 6 +- .../Class/dfu/src/usbd_dfu_core.c | 21 +- .../Class/dfu/src/usbd_dfu_mal.c | 14 +- .../Class/dfu/src/usbd_flash_if.c | 20 +- .../Class/dfu/src/usbd_mem_if_template.c | 16 +- .../Class/dfu/src/usbd_otp_if.c | 10 +- .../Class/hid/inc/usbd_hid_core.h | 15 +- .../Class/hid/src/usbd_hid_core.c | 79 +- .../inc/usbd_hid_cdc_wrapper.h | 96 +++ .../src/usbd_hid_cdc_wrapper.c | 461 +++++++++++ .../hid_msc_wrapper/inc/usbd_msc_hid_core.h | 100 +++ .../hid_msc_wrapper/src/usbd_msc_hid_core.c | 378 +++++++++ .../Class/msc/inc/usbd_msc_bot.h | 6 +- .../Class/msc/inc/usbd_msc_core.h | 10 +- .../Class/msc/inc/usbd_msc_data.h | 8 +- .../Class/msc/inc/usbd_msc_mem.h | 6 +- .../Class/msc/inc/usbd_msc_scsi.h | 6 +- .../Class/msc/src/usbd_msc_bot.c | 10 +- .../Class/msc/src/usbd_msc_core.c | 10 +- .../Class/msc/src/usbd_msc_data.c | 6 +- .../Class/msc/src/usbd_msc_scsi.c | 33 +- .../Core/inc/usbd_conf_template.h | 6 +- .../Core/inc/usbd_core.h | 12 +- .../Core/inc/usbd_def.h | 12 +- .../Core/inc/usbd_ioreq.h | 8 +- .../Core/inc/usbd_req.h | 8 +- .../Core/inc/usbd_usr.h | 14 +- .../Core/src/usbd_core.c | 43 +- .../Core/src/usbd_ioreq.c | 12 +- .../Core/src/usbd_req.c | 67 +- .../Release_Notes.html | 57 +- .../STM32_USB_OTG_Driver/Release_Notes.html | 42 +- .../STM32_USB_OTG_Driver/inc/usb_bsp.h | 18 +- .../inc/usb_conf_template.h | 6 +- .../STM32_USB_OTG_Driver/inc/usb_core.h | 28 +- .../STM32_USB_OTG_Driver/inc/usb_dcd.h | 11 +- .../STM32_USB_OTG_Driver/inc/usb_dcd_int.h | 15 +- .../STM32_USB_OTG_Driver/inc/usb_defines.h | 14 +- .../STM32_USB_OTG_Driver/inc/usb_hcd.h | 8 +- .../STM32_USB_OTG_Driver/inc/usb_hcd_int.h | 8 +- .../STM32_USB_OTG_Driver/inc/usb_otg.h | 6 +- .../STM32_USB_OTG_Driver/inc/usb_regs.h | 19 +- .../STM32_USB_OTG_Driver/src/usb_core.c | 104 ++- .../STM32_USB_OTG_Driver/src/usb_dcd.c | 24 +- .../STM32_USB_OTG_Driver/src/usb_dcd_int.c | 146 ++-- .../STM32_USB_OTG_Driver/src/usb_hcd.c | 20 +- .../STM32_USB_OTG_Driver/src/usb_hcd_int.c | 98 +-- .../STM32_USB_OTG_Driver/src/usb_otg.c | 6 +- 77 files changed, 2772 insertions(+), 749 deletions(-) rename radio/src/targets/{horus => common/arm/stm32}/serial2_driver.cpp (94%) delete mode 100644 radio/src/targets/taranis/serial2_driver.cpp rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h (94%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h (90%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c (95%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c (87%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h (90%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h (91%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c (87%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c (91%) create mode 100644 radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/customhid/inc/usbd_customhid_core.h create mode 100644 radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/customhid/src/usbd_customhid_core.c rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h (94%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h (91%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h (84%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h (92%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h (92%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c (95%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c (91%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c (89%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c (86%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c (90%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h (83%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c (84%) create mode 100644 radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/inc/usbd_hid_cdc_wrapper.h create mode 100644 radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/src/usbd_hid_cdc_wrapper.c create mode 100644 radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/inc/usbd_msc_hid_core.h create mode 100644 radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/src/usbd_msc_hid_core.c rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h (93%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h (87%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h (88%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h (91%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h (95%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c (93%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c (94%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c (90%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c (90%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h (90%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h (87%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h (91%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h (90%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h (90%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h (85%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c (88%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c (90%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c (91%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_Device_Library/Release_Notes.html (85%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/Release_Notes.html (79%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h (77%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h (96%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h (93%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h (92%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h (83%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h (91%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h (90%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h (90%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h (89%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h (93%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/src/usb_core.c (93%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c (90%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c (85%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c (89%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c (91%) rename radio/src/thirdparty/{STM32_USB-Host-Device_Lib_V2.1.0 => STM32_USB-Host-Device_Lib_V2.2.0}/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c (94%) diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index 23d7c6715..56eb1981c 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -6,7 +6,7 @@ set(TRANSLATIONS "EN" CACHE STRING "Radio language") option(HELI "Heli menu" ON) option(FLIGHT_MODES "Flight Modes" ON) option(CURVES "Curves" ON) -option(GVARS "Global variables") +option(GVARS "Global variables" ON) option(GUI "GUI enabled" ON) option(SPLASH "Splash enabled" ON) set(PPM_UNIT "PERCENT_PREC1" CACHE STRING "PPM display unit (US/PERCENT_PREC1/PERCENT_PREC0)") diff --git a/radio/src/gui/212x64/view_statistics.cpp b/radio/src/gui/212x64/view_statistics.cpp index 8f2cdbcd8..e30a1fb7a 100644 --- a/radio/src/gui/212x64/view_statistics.cpp +++ b/radio/src/gui/212x64/view_statistics.cpp @@ -95,6 +95,7 @@ void menuStatisticsView(event_t event) extern uint16_t usbWraps; extern uint16_t charsWritten; extern "C" volatile uint32_t APP_Rx_ptr_in; + extern "C" volatile uint32_t APP_Rx_ptr_out; #endif void menuStatisticsDebug(event_t event) @@ -171,6 +172,8 @@ void menuStatisticsDebug(event_t event) lcdDrawText(lcdLastPos, MENU_DEBUG_Y_USB, " "); lcdDrawNumber(lcdLastPos, MENU_DEBUG_Y_USB, APP_Rx_ptr_in, LEFT); lcdDrawText(lcdLastPos, MENU_DEBUG_Y_USB, " "); + lcdDrawNumber(lcdLastPos, MENU_DEBUG_Y_USB, APP_Rx_ptr_out, LEFT); + lcdDrawText(lcdLastPos, MENU_DEBUG_Y_USB, " "); lcdDrawNumber(lcdLastPos, MENU_DEBUG_Y_USB, usbWraps, LEFT); #endif diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 19c1fb2b2..dae12cc31 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -2451,6 +2451,10 @@ void opentxInit(OPENTX_INIT_ARGS) storageReadAll(); #endif +#if defined(SERIAL2) + serial2Init(g_eeGeneral.serial2Mode, MODEL_TELEMETRY_PROTOCOL()); +#endif + #if defined(PCBTARANIS) BACKLIGHT_ENABLE(); #endif @@ -2507,10 +2511,6 @@ void opentxInit(OPENTX_INIT_ARGS) #endif backlightOn(); -#if defined(SERIAL2) - serial2Init(g_eeGeneral.serial2Mode, MODEL_TELEMETRY_PROTOCOL()); -#endif - #if defined(PCBSKY9X) && !defined(SIMU) init_trainer_capture(); #endif diff --git a/radio/src/targets/common/arm/CMakeLists.txt b/radio/src/targets/common/arm/CMakeLists.txt index d34d9f7e5..3067b80b1 100644 --- a/radio/src/targets/common/arm/CMakeLists.txt +++ b/radio/src/targets/common/arm/CMakeLists.txt @@ -107,7 +107,6 @@ set(TARGET_SRC trainer_driver.cpp audio_driver.cpp telemetry_driver.cpp - ${SERIAL2_DRIVER} ) set(FIRMWARE_SRC ${FIRMWARE_SRC} diff --git a/radio/src/targets/common/arm/stm32/CMakeLists.txt b/radio/src/targets/common/arm/stm32/CMakeLists.txt index 1343306ca..b47f9415e 100644 --- a/radio/src/targets/common/arm/stm32/CMakeLists.txt +++ b/radio/src/targets/common/arm/stm32/CMakeLists.txt @@ -1,7 +1,7 @@ set(LUA "NO" CACHE STRING "Lua scripts (YES/NO/NO_MODEL_SCRIPTS)") set(USB "JOYSTICK" CACHE STRING "USB option (JOYSTICK/MASSSTORAGE/SERIAL)") set(ARCH ARM) -set(STM32USB_DIR ${THIRDPARTY_DIR}/STM32_USB-Host-Device_Lib_V2.1.0/Libraries) +set(STM32USB_DIR ${THIRDPARTY_DIR}/STM32_USB-Host-Device_Lib_V2.2.0/Libraries) add_definitions(-DSTM32 -DLUA_INPUTS -DVARIO -DSBUS -DCROSSFIRE) include_directories(${RADIO_SRC_DIRECTORY}/targets/common/arm/stm32) include_directories(${STM32USB_DIR}/STM32_USB_OTG_Driver/inc) @@ -9,6 +9,8 @@ include_directories(${STM32USB_DIR}/STM32_USB_Device_Library/Core/inc) include_directories(${STM32USB_DIR}/STM32_USB_Device_Library/Class/msc/inc) include_directories(${STM32USB_DIR}/STM32_USB_Device_Library/Class/hid/inc) include_directories(${STM32USB_DIR}/STM32_USB_Device_Library/Class/cdc/inc) +include_directories(${STM32USB_DIR}/STM32_USB_Device_Library/Core/inc/) +include_directories(${STM32USB_DIR}/STM32_USB_OTG_Driver/inc) set(STM32USB_SRC STM32_USB_OTG_Driver/src/usb_core.c STM32_USB_OTG_Driver/src/usb_dcd.c @@ -21,6 +23,7 @@ set(TARGET_SRC ${TARGET_SRC} ../common/arm/stm32/rtc_driver.cpp ../common/arm/stm32/cpu_id.cpp + ${SERIAL2_DRIVER} ) set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} diff --git a/radio/src/targets/horus/serial2_driver.cpp b/radio/src/targets/common/arm/stm32/serial2_driver.cpp similarity index 94% rename from radio/src/targets/horus/serial2_driver.cpp rename to radio/src/targets/common/arm/stm32/serial2_driver.cpp index a9cf86b4d..5735c8453 100644 --- a/radio/src/targets/horus/serial2_driver.cpp +++ b/radio/src/targets/common/arm/stm32/serial2_driver.cpp @@ -106,9 +106,15 @@ void serial2Init(unsigned int mode, unsigned int protocol) void serial2Putc(char c) { - while (serial2TxFifo.isFull()); +#if !defined(SIMU) + int n = 0; + while (serial2TxFifo.isFull()) { + delay_ms(1); + if (++n > 100) return; + } serial2TxFifo.push(c); USART_ITConfig(SERIAL_USART, USART_IT_TXE, ENABLE); +#endif } void serial2SbusInit() diff --git a/radio/src/targets/common/arm/stm32/usb_driver.c b/radio/src/targets/common/arm/stm32/usb_driver.c index fa43ce205..2a406e375 100644 --- a/radio/src/targets/common/arm/stm32/usb_driver.c +++ b/radio/src/targets/common/arm/stm32/usb_driver.c @@ -19,7 +19,7 @@ */ #include "board.h" -#include "STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h" +#include "usb_dcd_int.h" #include "debug.h" int usbPlugged(void) diff --git a/radio/src/targets/common/arm/stm32/usbd_cdc.cpp b/radio/src/targets/common/arm/stm32/usbd_cdc.cpp index cd14ffc84..ab2c00617 100644 --- a/radio/src/targets/common/arm/stm32/usbd_cdc.cpp +++ b/radio/src/targets/common/arm/stm32/usbd_cdc.cpp @@ -2,7 +2,7 @@ * Copyright (C) OpenTX * * Based on code named - * th9x - http://code.google.com/p/th9x + * th9x - http://code.google.com/p/th9x * er9x - http://code.google.com/p/er9x * gruvin9x - http://code.google.com/p/gruvin9x * @@ -18,8 +18,8 @@ * GNU General Public License for more details. */ -#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED -#pragma data_alignment = 4 +#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED +#pragma data_alignment = 4 #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ #include "opentx.h" @@ -35,7 +35,7 @@ extern "C" { /* Private variables ---------------------------------------------------------*/ -/* These are external variables imported from CDC core to be used for IN +/* These are external variables imported from CDC core to be used for IN transfer management. */ extern uint8_t APP_Rx_Buffer []; /* Write CDC received data in this buffer. These data will be sent over USB IN endpoint @@ -53,7 +53,7 @@ static uint16_t VCP_DataRx (uint8_t* Buf, uint32_t Len); // static uint16_t VCP_COMConfig(uint8_t Conf); -CDC_IF_Prop_TypeDef VCP_fops = +CDC_IF_Prop_TypeDef VCP_fops = { VCP_Init, VCP_DeInit, @@ -95,13 +95,13 @@ static uint16_t VCP_DeInit(void) /** * @brief VCP_Ctrl * Manage the CDC class requests - * @param Cmd: Command code + * @param Cmd: Command code * @param Buf: Buffer containing command data (request parameters) * @param Len: Number of data to be sent (in bytes) * @retval Result of the opeartion (USBD_OK in all cases) */ static uint16_t VCP_Ctrl (uint32_t Cmd, uint8_t* Buf, uint32_t Len) -{ +{ switch (Cmd) { case SEND_ENCAPSULATED_COMMAND: @@ -138,8 +138,8 @@ static uint16_t VCP_Ctrl (uint32_t Cmd, uint8_t* Buf, uint32_t Len) case SEND_BREAK: /* Not needed for this driver */ - break; - + break; + default: break; } @@ -153,39 +153,57 @@ uint16_t charsWritten = 0; void usbSerialPutc(uint8_t c) { + + /* + Apparently there is no reliable way to tell if the + virtual serial port is opened or not. + + The cdcConnected variable only reports the state + of the physical USB connection. + */ + if (!cdcConnected) return; - uint32_t txDataLen; - do { - txDataLen = APP_RX_DATA_SIZE + APP_Rx_ptr_in - APP_Rx_ptr_out; - if (txDataLen >= APP_RX_DATA_SIZE) { - txDataLen -= APP_RX_DATA_SIZE; - } - // TODO timeout exit - } while (txDataLen >= (APP_RX_DATA_SIZE - CDC_DATA_MAX_PACKET_SIZE)); + uint32_t prim = __get_PRIMASK(); + __disable_irq(); + uint32_t txDataLen = APP_RX_DATA_SIZE + APP_Rx_ptr_in - APP_Rx_ptr_out; + if (!prim) __enable_irq(); + + if (txDataLen >= APP_RX_DATA_SIZE) { + txDataLen -= APP_RX_DATA_SIZE; + } + if (txDataLen > (APP_RX_DATA_SIZE - CDC_DATA_MAX_PACKET_SIZE)) return; // buffer is too full, skip this write - APP_Rx_Buffer[APP_Rx_ptr_in] = c; ++charsWritten; - /* To avoid buffer overflow */ - if (APP_Rx_ptr_in >= APP_RX_DATA_SIZE-1) { + + /* + APP_Rx_Buffer and associated variables must be modified + atomically, because they are used from the interrupt + */ + + /* Read PRIMASK register, check interrupt status before you disable them */ + /* Returns 0 if they are enabled, or non-zero if disabled */ + prim = __get_PRIMASK(); + __disable_irq(); + APP_Rx_Buffer[APP_Rx_ptr_in++] = c; + if(APP_Rx_ptr_in >= APP_RX_DATA_SIZE) + { APP_Rx_ptr_in = 0; ++usbWraps; } - else { - APP_Rx_ptr_in++; - } + if (!prim) __enable_irq(); } /** * @brief VCP_DataRx * Data received over USB OUT endpoint is available here - * + * * @note - * This function will block any OUT packet reception on USB endpoint + * This function will block any OUT packet reception on USB endpoint * until exiting this function. If you exit this function before transfer - * is complete on CDC interface (ie. using DMA controller) it will result + * is complete on CDC interface (ie. using DMA controller) it will result * in receiving more data while previous ones are still not sent. - * + * * @note * This function is executed inside the USBD_OTG_ISR_Handler() interrupt handler! @@ -205,7 +223,7 @@ static uint16_t VCP_DataRx (uint8_t* Buf, uint32_t Len) for (uint32_t i = 0; i < Len; i++) { cliRxFifo.push(Buf[i]); - } + } #endif return USBD_OK; diff --git a/radio/src/targets/common/arm/stm32/usbd_desc.c b/radio/src/targets/common/arm/stm32/usbd_desc.c index b6e1595a5..7c9d7629f 100644 --- a/radio/src/targets/common/arm/stm32/usbd_desc.c +++ b/radio/src/targets/common/arm/stm32/usbd_desc.c @@ -138,6 +138,8 @@ __ALIGN_BEGIN const uint8_t USBD_LangIDDesc[USB_SIZ_STRING_LANGID] __ALIGN_END HIBYTE(USBD_LANGID_STRING), }; +__ALIGN_BEGIN uint8_t USBD_StrDesc[USB_MAX_STR_DESC_SIZ] __ALIGN_END ; // modified by OpenTX + /* * @brief USBD_USR_DeviceDescriptor * return the device descriptor diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 3bd8d3028..934910799 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -66,7 +66,7 @@ if(INTERNAL_GPS) add_definitions(-DINTERNAL_GPS) message("Internal GPS enabled") endif() -set(SERIAL2_DRIVER serial2_driver.cpp) +set(SERIAL2_DRIVER ../common/arm/stm32/serial2_driver.cpp) set(GVAR_SCREEN model_gvars.cpp) set(TARGET_SRC ${TARGET_SRC} diff --git a/radio/src/targets/horus/board.cpp b/radio/src/targets/horus/board.cpp index 1a4de516e..10b7b2adc 100644 --- a/radio/src/targets/horus/board.cpp +++ b/radio/src/targets/horus/board.cpp @@ -23,8 +23,8 @@ #if defined(__cplusplus) && !defined(SIMU) extern "C" { #endif -#include "STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h" -#include "STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h" +#include "usb_dcd_int.h" +#include "usb_bsp.h" #if defined(__cplusplus) && !defined(SIMU) } #endif @@ -158,7 +158,9 @@ void boardInit() // FrSky removed the volume chip in latest board, that's why it doesn't answer! // i2cInit(); +#if defined(DEBUG) serial2Init(0, 0); // default serial mode (None if DEBUG not defined) +#endif __enable_irq(); diff --git a/radio/src/targets/sky9x/CMakeLists.txt b/radio/src/targets/sky9x/CMakeLists.txt index a6152247c..7b8dbb253 100644 --- a/radio/src/targets/sky9x/CMakeLists.txt +++ b/radio/src/targets/sky9x/CMakeLists.txt @@ -96,6 +96,7 @@ set(TARGET_SRC haptic_driver.cpp sdcard_driver.cpp massstorage.cpp + serial2_driver.cpp ) set(FIRMWARE_SRC @@ -107,5 +108,3 @@ set(SRC ${SRC} debug.cpp ) - -set(SERIAL2_DRIVER serial2_driver.cpp) diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index a054ddafb..f79a80f87 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -17,7 +17,7 @@ if(PCB STREQUAL X9E) bluetooth_driver.cpp startup_stm32f40_41xxx.s ) - set(SERIAL2_DRIVER serial2_driver.cpp) + set(SERIAL2_DRIVER ../common/arm/stm32/serial2_driver.cpp) if(STICKS STREQUAL HORUS) add_definitions(-DHORUS_STICKS) endif() @@ -38,7 +38,7 @@ elseif(PCB STREQUAL X9D+) set(GUI_SRC ${GUI_SRC} bmp.cpp) set(BITMAPS_TARGET taranis_bitmaps) set(LCD_DRIVER lcd_driver_spi.cpp) - set(SERIAL2_DRIVER serial2_driver.cpp) + set(SERIAL2_DRIVER ../common/arm/stm32/serial2_driver.cpp) set(GVAR_SCREEN model_gvars.cpp) elseif(PCB STREQUAL X9D) set(CPU_TYPE STM32F2) @@ -52,7 +52,7 @@ elseif(PCB STREQUAL X9D) set(GUI_SRC ${GUI_SRC} bmp.cpp) set(BITMAPS_TARGET taranis_bitmaps) set(LCD_DRIVER lcd_driver_aspi.cpp) - set(SERIAL2_DRIVER serial2_driver.cpp) + set(SERIAL2_DRIVER ../common/arm/stm32/serial2_driver.cpp) set(GVAR_SCREEN model_gvars.cpp) elseif(PCB STREQUAL X7D) set(CPU_TYPE STM32F2) diff --git a/radio/src/targets/taranis/board.cpp b/radio/src/targets/taranis/board.cpp index 0a918b6c4..76bfa0d6e 100644 --- a/radio/src/targets/taranis/board.cpp +++ b/radio/src/targets/taranis/board.cpp @@ -23,8 +23,8 @@ #if defined(__cplusplus) && !defined(SIMU) extern "C" { #endif -#include "STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h" -#include "STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h" +#include "usb_dcd_int.h" +#include "usb_bsp.h" #if defined(__cplusplus) && !defined(SIMU) } #endif @@ -139,6 +139,11 @@ void boardInit() i2cInit(); usbInit(); +#if defined(DEBUG) + serial2Init(0, 0); // default serial mode (None if DEBUG not defined) + TRACE("\nTaranis board started :)"); +#endif + #if defined(HAPTIC) hapticInit(); #endif diff --git a/radio/src/targets/taranis/serial2_driver.cpp b/radio/src/targets/taranis/serial2_driver.cpp deleted file mode 100644 index a9cf86b4d..000000000 --- a/radio/src/targets/taranis/serial2_driver.cpp +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright (C) OpenTX - * - * Based on code named - * th9x - http://code.google.com/p/th9x - * er9x - http://code.google.com/p/er9x - * gruvin9x - http://code.google.com/p/gruvin9x - * - * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include "opentx.h" - -uint8_t serial2Mode = 0; -Fifo serial2TxFifo; -DMAFifo<32> serial2RxFifo __DMA (SERIAL_DMA_Stream_RX); - -void uart3Setup(unsigned int baudrate, bool dma) -{ - USART_InitTypeDef USART_InitStructure; - GPIO_InitTypeDef GPIO_InitStructure; - - GPIO_PinAFConfig(SERIAL_GPIO, SERIAL_GPIO_PinSource_RX, SERIAL_GPIO_AF); - GPIO_PinAFConfig(SERIAL_GPIO, SERIAL_GPIO_PinSource_TX, SERIAL_GPIO_AF); - - GPIO_InitStructure.GPIO_Pin = SERIAL_GPIO_PIN_TX | SERIAL_GPIO_PIN_RX; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; - GPIO_Init(SERIAL_GPIO, &GPIO_InitStructure); - - USART_InitStructure.USART_BaudRate = baudrate; - USART_InitStructure.USART_WordLength = USART_WordLength_8b; - USART_InitStructure.USART_StopBits = USART_StopBits_1; - USART_InitStructure.USART_Parity = USART_Parity_No; - USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; - USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; - USART_Init(SERIAL_USART, &USART_InitStructure); - - if (dma) { - DMA_InitTypeDef DMA_InitStructure; - serial2RxFifo.clear(); - USART_ITConfig(SERIAL_USART, USART_IT_RXNE, DISABLE); - USART_ITConfig(SERIAL_USART, USART_IT_TXE, DISABLE); - DMA_InitStructure.DMA_Channel = SERIAL_DMA_Channel_RX; - DMA_InitStructure.DMA_PeripheralBaseAddr = CONVERT_PTR_UINT(&SERIAL_USART->DR); - DMA_InitStructure.DMA_Memory0BaseAddr = CONVERT_PTR_UINT(serial2RxFifo.buffer()); - DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; - DMA_InitStructure.DMA_BufferSize = serial2RxFifo.size(); - DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; - DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; - DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; - DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; - DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; - DMA_InitStructure.DMA_Priority = DMA_Priority_Low; - DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; - DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full; - DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; - DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; - DMA_Init(SERIAL_DMA_Stream_RX, &DMA_InitStructure); - USART_DMACmd(SERIAL_USART, USART_DMAReq_Rx, ENABLE); - USART_Cmd(SERIAL_USART, ENABLE); - DMA_Cmd(SERIAL_DMA_Stream_RX, ENABLE); - } - else { - USART_Cmd(SERIAL_USART, ENABLE); - USART_ITConfig(SERIAL_USART, USART_IT_RXNE, ENABLE); - USART_ITConfig(SERIAL_USART, USART_IT_TXE, DISABLE); - NVIC_SetPriority(SERIAL_USART_IRQn, 7); - NVIC_EnableIRQ(SERIAL_USART_IRQn); - } -} - -void serial2Init(unsigned int mode, unsigned int protocol) -{ - serial2Stop(); - - serial2Mode = mode; - - switch (mode) { - case UART_MODE_TELEMETRY_MIRROR: - uart3Setup(FRSKY_SPORT_BAUDRATE, false); - break; -#if !defined(USB_SERIAL) && (defined(DEBUG) || defined(CLI)) - case UART_MODE_DEBUG: - uart3Setup(DEBUG_BAUDRATE, false); - break; -#endif - case UART_MODE_TELEMETRY: - if (protocol == PROTOCOL_FRSKY_D_SECONDARY) { - uart3Setup(FRSKY_D_BAUDRATE, true); - } - break; - } -} - -void serial2Putc(char c) -{ - while (serial2TxFifo.isFull()); - serial2TxFifo.push(c); - USART_ITConfig(SERIAL_USART, USART_IT_TXE, ENABLE); -} - -void serial2SbusInit() -{ - uart3Setup(SBUS_BAUDRATE, true); - SERIAL_USART->CR1 |= USART_CR1_M | USART_CR1_PCE ; -} - -void serial2Stop() -{ - DMA_DeInit(SERIAL_DMA_Stream_RX); - USART_DeInit(SERIAL_USART); -} - -uint8_t serial2TracesEnabled() -{ -#if defined(DEBUG) - return (serial2Mode == UART_MODE_DEBUG); -#else - return false; -#endif -} - -extern "C" void SERIAL_USART_IRQHandler(void) -{ - DEBUG_INTERRUPT(INT_SER2); - // Send - if (USART_GetITStatus(SERIAL_USART, USART_IT_TXE) != RESET) { - uint8_t txchar; - if (serial2TxFifo.pop(txchar)) { - /* Write one byte to the transmit data register */ - USART_SendData(SERIAL_USART, txchar); - } - else { - USART_ITConfig(SERIAL_USART, USART_IT_TXE, DISABLE); - } - } - -#if !defined(USB_SERIAL) && defined(CLI) - // Receive - uint32_t status = SERIAL_USART->SR; - while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) { - uint8_t data = SERIAL_USART->DR; - if (!(status & USART_FLAG_ERRORS)) { - switch (serial2Mode) { - case UART_MODE_DEBUG: - cliRxFifo.push(data); - break; - } - } - status = SERIAL_USART->SR; - } -#endif -} diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h similarity index 94% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h index 914f70218..9dc72f7c6 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_audio_core.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief header file for the usbd_audio_core.c file. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -30,9 +30,9 @@ #ifndef __USB_AUDIO_CORE_H_ #define __USB_AUDIO_CORE_H_ -#include "usbd_desc.h" #include "usbd_ioreq.h" #include "usbd_req.h" +#include "usbd_desc.h" @@ -152,7 +152,7 @@ extern USBD_Class_cb_TypeDef AUDIO_cb; * @} */ -#endif // __USB_AUDIO_CORE_H_ +#endif /* __USB_AUDIO_CORE_H_ */ /** * @} */ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h similarity index 90% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h index 17eaef8fe..1f7abdc84 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_audio_out_if.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief header file for the usbd_audio_out_if.c file. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -51,7 +51,7 @@ /** @defgroup usbd_audio_Exported_Defines * @{ */ -/* Audio Commands enmueration */ +/* Audio Commands enumeration */ typedef enum { AUDIO_CMD_PLAY = 1, diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c similarity index 95% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c index 33a33cde6..520bab539 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c @@ -2,8 +2,8 @@ ****************************************************************************** * @file usbd_audio_core.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief This file provides the high layer firmware functions to manage the * following functionalities of the USB Audio Class: * - Initialization and Configuration of high and low layer @@ -44,7 +44,7 @@ * This driver doesn't implement the following aspects of the specification * (but it is possible to manage these features with some modifications on this driver): * - AudioControl Endpoint management - * - AudioControl requsests other than SET_CUR and GET_CUR + * - AudioControl requests other than SET_CUR and GET_CUR * - Abstraction layer for AudioControl requests (only Mute functionality is managed) * - Audio Synchronization type: Adaptive * - Audio Compression modules and interfaces @@ -59,7 +59,7 @@ ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -149,7 +149,7 @@ uint8_t IsocOutBuff [TOTAL_OUT_BUF_SIZE * 2]; uint8_t* IsocOutWrPtr = IsocOutBuff; uint8_t* IsocOutRdPtr = IsocOutBuff; -/* Main Buffer for Audio Control Rrequests transfers and its relative variables */ +/* Main Buffer for Audio Control Requests transfers and its relative variables */ uint8_t AudioCtl[64]; uint8_t AudioCtlCmd = 0; uint32_t AudioCtlLen = 0; @@ -337,7 +337,7 @@ static uint8_t usbd_audio_CfgDesc[AUDIO_CONFIG_DESC_SIZE] = /** * @brief usbd_audio_Init -* Initilaizes the AUDIO interface. +* Initializes the AUDIO interface. * @param pdev: device instance * @param cfgidx: Configuration index * @retval status @@ -465,7 +465,7 @@ static uint8_t usbd_audio_Setup (void *pdev, /** * @brief usbd_audio_EP0_RxReady * Handles audio control requests data. - * @param pdev: device device instance + * @param pdev: device instance * @retval status */ static uint8_t usbd_audio_EP0_RxReady (void *pdev) @@ -507,8 +507,10 @@ static uint8_t usbd_audio_DataIn (void *pdev, uint8_t epnum) * @param epnum: endpoint number * @retval status */ +__IO uint32_t DataOutCounter = 0; static uint8_t usbd_audio_DataOut (void *pdev, uint8_t epnum) { + DataOutCounter++; if (epnum == AUDIO_OUT_EP) { /* Increment the Buffer pointer or roll it back when all buffers are full */ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c similarity index 87% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c index f5fda6c24..30e3fcb8c 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_audio_out_if.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief This file provides the Audio Out (palyback) interface API. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -105,7 +105,7 @@ static uint8_t AudioState = AUDIO_STATE_INACTIVE; /** * @brief Init * Initialize and configures all required resources for audio play function. - * @param AudioFreq: Statrtup audio frequency. + * @param AudioFreq: Startup audio frequency. * @param Volume: Startup volume to be set. * @param options: specific options passed to low layer function. * @retval AUDIO_OK if all operations succeed, AUDIO_FAIL else. @@ -120,7 +120,11 @@ static uint8_t Init (uint32_t AudioFreq, if (Initialized == 0) { /* Call low layer function */ - if (EVAL_AUDIO_Init(OUTPUT_DEVICE_AUTO, Volume, AudioFreq) != 0) +#if defined (USE_STM324x9I_EVAL) + if (EVAL_AUDIO_Init(OUTPUT_DEVICE_BOTH, Volume, AudioFreq) != 0) +#else + if (EVAL_AUDIO_Init(OUTPUT_DEVICE_AUTO, Volume, AudioFreq) != 0) +#endif { AudioState = AUDIO_STATE_ERROR; return AUDIO_FAIL; @@ -153,7 +157,7 @@ static uint8_t DeInit (uint32_t options) /** * @brief AudioCmd * Play, Stop, Pause or Resume current file. - * @param pbuf: address from which file shoud be played. + * @param pbuf: address from which file should be played. * @param size: size of the current buffer/file. * @param cmd: command to be executed, can be AUDIO_CMD_PLAY , AUDIO_CMD_PAUSE, * AUDIO_CMD_RESUME or AUDIO_CMD_STOP. @@ -186,8 +190,12 @@ static uint8_t AudioCmd(uint8_t* pbuf, /* If current state is Paused */ else if (AudioState == AUDIO_STATE_PAUSED) { - if (EVAL_AUDIO_PauseResume(AUDIO_RESUME, (uint32_t)pbuf, (size/2)) != 0) - { +#if defined (USE_STM324x9I_EVAL) + if (EVAL_AUDIO_PauseResume(AUDIO_RESUME) != 0) +#else + if (EVAL_AUDIO_PauseResume(AUDIO_RESUME, (uint32_t)pbuf, (size/2)) != 0) +#endif + { AudioState = AUDIO_STATE_ERROR; return AUDIO_FAIL; } @@ -227,7 +235,11 @@ static uint8_t AudioCmd(uint8_t* pbuf, /* Unsupported command */ return AUDIO_FAIL; } +#if defined (USE_STM324x9I_EVAL) + else if (EVAL_AUDIO_PauseResume(AUDIO_PAUSE) != 0) +#else else if (EVAL_AUDIO_PauseResume(AUDIO_PAUSE, (uint32_t)pbuf, (size/2)) != 0) +#endif { AudioState = AUDIO_STATE_ERROR; return AUDIO_FAIL; diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h similarity index 90% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h index 4fd1d6aaa..2be7072f8 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_cdc_core.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief header file for the usbd_cdc_core.c file. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -48,8 +48,6 @@ #define USB_CDC_CONFIG_DESC_SIZ (67) #define USB_CDC_DESC_SIZ (67-9) -#define CDC_DESCRIPTOR_TYPE 0x21 - #define DEVICE_CLASS_CDC 0x02 #define DEVICE_SUBCLASS_CDC 0x00 @@ -97,7 +95,7 @@ typedef struct _CDC_IF_PROP uint16_t (*pIf_Init) (void); uint16_t (*pIf_DeInit) (void); uint16_t (*pIf_Ctrl) (uint32_t Cmd, uint8_t* Buf, uint32_t Len); - uint16_t (*pIf_DataTx) (uint8_t* Buf, uint32_t Len); + uint16_t (*pIf_DataTx) (void); uint16_t (*pIf_DataRx) (uint8_t* Buf, uint32_t Len); } CDC_IF_Prop_TypeDef; @@ -131,7 +129,7 @@ extern USBD_Class_cb_TypeDef USBD_CDC_cb; * @} */ -#endif // __USB_CDC_CORE_H_ +#endif /* __USB_CDC_CORE_H_ */ /** * @} */ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h similarity index 91% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h index 1b0c3f048..4e91a7d18 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_cdc_if_template.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief Header for dfu_mal.c file. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c similarity index 87% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c index 4cce796e7..fe744a114 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c @@ -2,8 +2,8 @@ ****************************************************************************** * @file usbd_cdc_core.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief This file provides the high layer firmware functions to manage the * following functionalities of the USB CDC Class: * - Initialization and Configuration of high and low layer @@ -46,7 +46,7 @@ ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -64,8 +64,7 @@ */ /* Includes ------------------------------------------------------------------*/ -#include "../inc/usbd_cdc_core.h" - +#include "usbd_cdc_core.h" #include "usbd_desc.h" #include "usbd_req.h" @@ -91,6 +90,11 @@ /** @defgroup usbd_cdc_Private_Defines * @{ */ + +#define USB_CDC_IDLE 0 +#define USB_CDC_BUSY 1 +#define USB_CDC_ZLP 2 + /** * @} */ @@ -111,19 +115,19 @@ /********************************************* CDC Device library callbacks *********************************************/ -static uint8_t usbd_cdc_Init (void *pdev, uint8_t cfgidx); -static uint8_t usbd_cdc_DeInit (void *pdev, uint8_t cfgidx); -static uint8_t usbd_cdc_Setup (void *pdev, USB_SETUP_REQ *req); -static uint8_t usbd_cdc_EP0_RxReady (void *pdev); -static uint8_t usbd_cdc_DataIn (void *pdev, uint8_t epnum); -static uint8_t usbd_cdc_DataOut (void *pdev, uint8_t epnum); -static uint8_t usbd_cdc_SOF (void *pdev); +uint8_t usbd_cdc_Init (void *pdev, uint8_t cfgidx); +uint8_t usbd_cdc_DeInit (void *pdev, uint8_t cfgidx); +uint8_t usbd_cdc_Setup (void *pdev, USB_SETUP_REQ *req); +uint8_t usbd_cdc_EP0_RxReady (void *pdev); +uint8_t usbd_cdc_DataIn (void *pdev, uint8_t epnum); +uint8_t usbd_cdc_DataOut (void *pdev, uint8_t epnum); +uint8_t usbd_cdc_SOF (void *pdev); /********************************************* CDC specific management functions *********************************************/ static void Handle_USBAsynchXfer (void *pdev); -static const uint8_t *USBD_cdc_GetCfgDesc (uint8_t speed, uint16_t *length); +static const uint8_t *USBD_cdc_GetCfgDesc (uint8_t speed, uint16_t *length); // modified by OpenTX #ifdef USE_USB_OTG_HS static uint8_t *USBD_cdc_GetOtherCfgDesc (uint8_t speed, uint16_t *length); #endif @@ -135,7 +139,7 @@ static uint8_t *USBD_cdc_GetOtherCfgDesc (uint8_t speed, uint16_t *length); * @{ */ extern CDC_IF_Prop_TypeDef APP_FOPS; -extern const uint8_t USBD_DeviceDesc [USB_SIZ_DEVICE_DESC]; +extern const uint8_t USBD_DeviceDesc [USB_SIZ_DEVICE_DESC]; // modified by OpenTX #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ @@ -180,11 +184,11 @@ __ALIGN_BEGIN uint8_t APP_Rx_Buffer [APP_RX_DATA_SIZE] __ALIGN_END ; #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ __ALIGN_BEGIN uint8_t CmdBuff[CDC_CMD_PACKET_SZE] __ALIGN_END ; -volatile uint32_t APP_Rx_ptr_in = 0; -volatile uint32_t APP_Rx_ptr_out = 0; +volatile uint32_t APP_Rx_ptr_in = 0; // modified by OpenTX +volatile uint32_t APP_Rx_ptr_out = 0; // modified by OpenTX uint32_t APP_Rx_length = 0; -uint8_t USB_Tx_State = 0; +uint8_t USB_Tx_State = USB_CDC_IDLE; static uint32_t cdcCmd = 0xFF; static uint32_t cdcLen = 0; @@ -321,7 +325,7 @@ __ALIGN_BEGIN uint8_t usbd_cdc_CfgDesc[USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END = #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ __ALIGN_BEGIN uint8_t usbd_cdc_OtherCfgDesc[USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END = { - 0x09, /* bLength: Configuation Descriptor size */ + 0x09, /* bLength: Configuration Descriptor size */ USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION, USB_CDC_CONFIG_DESC_SIZ, 0x00, @@ -422,12 +426,12 @@ __ALIGN_BEGIN uint8_t usbd_cdc_OtherCfgDesc[USB_CDC_CONFIG_DESC_SIZ] __ALIGN_EN /** * @brief usbd_cdc_Init - * Initilaize the CDC interface + * Initialize the CDC interface * @param pdev: device instance * @param cfgidx: Configuration index * @retval status */ -static uint8_t usbd_cdc_Init (void *pdev, +uint8_t usbd_cdc_Init (void *pdev, uint8_t cfgidx) { uint8_t *pbuf; @@ -473,7 +477,7 @@ static uint8_t usbd_cdc_Init (void *pdev, * @param cfgidx: Configuration index * @retval status */ -static uint8_t usbd_cdc_DeInit (void *pdev, +uint8_t usbd_cdc_DeInit (void *pdev, uint8_t cfgidx) { /* Open EP IN */ @@ -501,12 +505,9 @@ static uint8_t usbd_cdc_DeInit (void *pdev, * @param req: usb requests * @retval status */ -static uint8_t usbd_cdc_Setup (void *pdev, +uint8_t usbd_cdc_Setup (void *pdev, USB_SETUP_REQ *req) { - uint16_t len=USB_CDC_DESC_SIZ; - uint8_t *pbuf=usbd_cdc_CfgDesc + 9; - switch (req->bmRequest & USB_REQ_TYPE_MASK) { /* CDC Class Requests -------------------------------*/ @@ -525,7 +526,7 @@ static uint8_t usbd_cdc_Setup (void *pdev, CmdBuff, req->wLength); } - else /* Host-to-Device requeset */ + else /* Host-to-Device request */ { /* Set the value of the current command to be processed */ cdcCmd = req->bRequest; @@ -550,28 +551,14 @@ static uint8_t usbd_cdc_Setup (void *pdev, default: USBD_CtlError (pdev, req); return USBD_FAIL; - - /* Standard Requests -------------------------------*/ case USB_REQ_TYPE_STANDARD: switch (req->bRequest) { case USB_REQ_GET_DESCRIPTOR: - if( (req->wValue >> 8) == CDC_DESCRIPTOR_TYPE) - { -#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED - pbuf = usbd_cdc_Desc; -#else - pbuf = usbd_cdc_CfgDesc + 9 + (9 * USBD_ITF_MAX_NUM); -#endif - len = MIN(USB_CDC_DESC_SIZ , req->wLength); - } - - USBD_CtlSendData (pdev, - pbuf, - len); - break; + USBD_CtlError (pdev, req); + return USBD_FAIL; case USB_REQ_GET_INTERFACE : USBD_CtlSendData (pdev, @@ -598,10 +585,10 @@ static uint8_t usbd_cdc_Setup (void *pdev, /** * @brief usbd_cdc_EP0_RxReady * Data received on control endpoint - * @param pdev: device device instance + * @param pdev: device instance * @retval status */ -static uint8_t usbd_cdc_EP0_RxReady (void *pdev) +uint8_t usbd_cdc_EP0_RxReady (void *pdev) { if (cdcCmd != NO_CMD) { @@ -615,6 +602,7 @@ static uint8_t usbd_cdc_EP0_RxReady (void *pdev) return USBD_OK; } + /** * @brief usbd_audio_DataIn * Data sent on non-control IN endpoint @@ -622,16 +610,16 @@ static uint8_t usbd_cdc_EP0_RxReady (void *pdev) * @param epnum: endpoint number * @retval status */ -static uint8_t usbd_cdc_DataIn (void *pdev, uint8_t epnum) +uint8_t usbd_cdc_DataIn (void *pdev, uint8_t epnum) { uint16_t USB_Tx_ptr; uint16_t USB_Tx_length; - if (USB_Tx_State == 1) + if (USB_Tx_State == USB_CDC_BUSY) { if (APP_Rx_length == 0) { - USB_Tx_State = 0; + USB_Tx_State = USB_CDC_IDLE; } else { @@ -649,6 +637,10 @@ static uint8_t usbd_cdc_DataIn (void *pdev, uint8_t epnum) APP_Rx_ptr_out += APP_Rx_length; APP_Rx_length = 0; + if(USB_Tx_length == CDC_DATA_IN_PACKET_SIZE) + { + USB_Tx_State = USB_CDC_ZLP; + } } /* Prepare the available data buffer to be sent on IN endpoint */ @@ -656,9 +648,21 @@ static uint8_t usbd_cdc_DataIn (void *pdev, uint8_t epnum) CDC_IN_EP, (uint8_t*)&APP_Rx_Buffer[USB_Tx_ptr], USB_Tx_length); + return USBD_OK; } } + /* Avoid any asynchronous transfer during ZLP */ + if (USB_Tx_State == USB_CDC_ZLP) + { + /*Send ZLP to indicate the end of the current transfer */ + DCD_EP_Tx (pdev, + CDC_IN_EP, + NULL, + 0); + + USB_Tx_State = USB_CDC_IDLE; + } return USBD_OK; } @@ -669,7 +673,7 @@ static uint8_t usbd_cdc_DataIn (void *pdev, uint8_t epnum) * @param epnum: endpoint number * @retval status */ -static uint8_t usbd_cdc_DataOut (void *pdev, uint8_t epnum) +uint8_t usbd_cdc_DataOut (void *pdev, uint8_t epnum) { uint16_t USB_Rx_Cnt; @@ -696,7 +700,7 @@ static uint8_t usbd_cdc_DataOut (void *pdev, uint8_t epnum) * @param epnum: endpoint number * @retval status */ -static uint8_t usbd_cdc_SOF (void *pdev) +uint8_t usbd_cdc_SOF (void *pdev) { static uint32_t FrameCount = 0; @@ -723,7 +727,7 @@ static void Handle_USBAsynchXfer (void *pdev) uint16_t USB_Tx_ptr; uint16_t USB_Tx_length; - if(USB_Tx_State != 1) + if(USB_Tx_State == USB_CDC_IDLE) { if (APP_Rx_ptr_out == APP_RX_DATA_SIZE) { @@ -732,7 +736,7 @@ static void Handle_USBAsynchXfer (void *pdev) if(APP_Rx_ptr_out == APP_Rx_ptr_in) { - USB_Tx_State = 0; + USB_Tx_State = USB_CDC_IDLE; return; } @@ -747,7 +751,7 @@ static void Handle_USBAsynchXfer (void *pdev) } #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED - APP_Rx_length &= ~0x03; + APP_Rx_length &= ~0x03; #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ if (APP_Rx_length > CDC_DATA_IN_PACKET_SIZE) @@ -757,6 +761,7 @@ static void Handle_USBAsynchXfer (void *pdev) APP_Rx_ptr_out += CDC_DATA_IN_PACKET_SIZE; APP_Rx_length -= CDC_DATA_IN_PACKET_SIZE; + USB_Tx_State = USB_CDC_BUSY; } else { @@ -765,15 +770,21 @@ static void Handle_USBAsynchXfer (void *pdev) APP_Rx_ptr_out += APP_Rx_length; APP_Rx_length = 0; + if(USB_Tx_length == CDC_DATA_IN_PACKET_SIZE) + { + USB_Tx_State = USB_CDC_ZLP; + } + else + { + USB_Tx_State = USB_CDC_BUSY; + } } - USB_Tx_State = 1; DCD_EP_Tx (pdev, CDC_IN_EP, (uint8_t*)&APP_Rx_Buffer[USB_Tx_ptr], USB_Tx_length); } - } /** @@ -783,14 +794,14 @@ static void Handle_USBAsynchXfer (void *pdev) * @param length : pointer data length * @retval pointer to descriptor buffer */ -static const uint8_t *USBD_cdc_GetCfgDesc (uint8_t speed, uint16_t *length) +static const uint8_t * USBD_cdc_GetCfgDesc (uint8_t speed, uint16_t *length) // modified by OpenTX { *length = sizeof (usbd_cdc_CfgDesc); return usbd_cdc_CfgDesc; } /** - * @brief USBD_cdc_GetCfgDesc + * @brief USBD_cdc_GetOtherCfgDesc * Return configuration descriptor * @param speed : current device speed * @param length : pointer data length diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c similarity index 91% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c index 5355f02d9..698cc72f7 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_cdc_if_template.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief Generic media access Layer. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -67,7 +67,7 @@ CDC_IF_Prop_TypeDef TEMPLATE_fops = * @brief TEMPLATE_Init * Initializes the CDC media low layer * @param None - * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL + * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL */ static uint16_t TEMPLATE_Init(void) { @@ -81,7 +81,7 @@ static uint16_t TEMPLATE_Init(void) * @brief TEMPLATE_DeInit * DeInitializes the CDC media low layer * @param None - * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL + * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL */ static uint16_t TEMPLATE_DeInit(void) { @@ -98,7 +98,7 @@ static uint16_t TEMPLATE_DeInit(void) * @param Cmd: Command code * @param Buf: Buffer containing command data (request parameters) * @param Len: Number of data to be sent (in bytes) - * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL + * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL */ static uint16_t TEMPLATE_Ctrl (uint32_t Cmd, uint8_t* Buf, uint32_t Len) { @@ -153,7 +153,7 @@ static uint16_t TEMPLATE_Ctrl (uint32_t Cmd, uint8_t* Buf, uint32_t Len) * this function. * @param Buf: Buffer of data to be sent * @param Len: Number of data to be sent (in bytes) - * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL + * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL */ static uint16_t TEMPLATE_DataTx (uint8_t* Buf, uint32_t Len) { diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/customhid/inc/usbd_customhid_core.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/customhid/inc/usbd_customhid_core.h new file mode 100644 index 000000000..fb2c79bd1 --- /dev/null +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/customhid/inc/usbd_customhid_core.h @@ -0,0 +1,129 @@ +/** + ****************************************************************************** + * @file usbd_customhid_core.h + * @author MCD Application Team + * @version V1.2.0 + * @date 09-November-2015 + * @brief header file for the usbd_customhid_core.c file. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2015 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ + +#ifndef __USB_CUSTOMHID_CORE_H_ +#define __USB_CUSTOMHID_CORE_H_ + +#include "usbd_ioreq.h" +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup USBD_CUSTOMHID + * @brief This file is the Header file for usbd_customhid_core.c + * @{ + */ + + +/** @defgroup USBD_CUSTOMHID_Exported_Defines + * @{ + */ +#define USBD_CUSTOM_HID_REPORT_DESC_SIZE 163 + +#define USB_CUSTOM_HID_CONFIG_DESC_SIZ 41 +#define USB_CUSTOM_HID_DESC_SIZ 9 + +#define CUSTOM_HID_DESCRIPTOR_TYPE 0x21 +#define CUSTOM_HID_REPORT_DESC 0x22 + + +#define CUSTOM_HID_REQ_SET_PROTOCOL 0x0B +#define CUSTOM_HID_REQ_GET_PROTOCOL 0x03 + +#define CUSTOM_HID_REQ_SET_IDLE 0x0A +#define CUSTOM_HID_REQ_GET_IDLE 0x02 + +#define CUSTOM_HID_REQ_SET_REPORT 0x09 +#define CUSTOM_HID_REQ_GET_REPORT 0x01 + +#define LED1_REPORT_ID 0x01 +#define LED1_REPORT_COUNT 0x01 + +#define LED2_REPORT_ID 0x02 +#define LED2_REPORT_COUNT 0x01 + +#define LED3_REPORT_ID 0x03 +#define LED3_REPORT_COUNT 0x01 + +#define LED4_REPORT_ID 0x04 +#define LED4_REPORT_COUNT 0x01 + +#define KEY_REPORT_ID 0x05 +#define TAMPER_REPORT_ID 0x06 +#define ADC_REPORT_ID 0x07 +/** + * @} + */ + + +/** @defgroup USBD_CORE_Exported_TypesDefinitions + * @{ + */ +/** + * @} + */ + + + +/** @defgroup USBD_CORE_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_CORE_Exported_Variables + * @{ + */ +extern USBD_Class_cb_TypeDef USBD_CUSTOMHID_cb; +/** + * @} + */ + +/** @defgroup USB_CORE_Exported_Functions + * @{ + */ +uint8_t USBD_CUSTOM_HID_SendReport (USB_OTG_CORE_HANDLE *pdev, + uint8_t *report, + uint16_t len); +/** + * @} + */ + +#endif /* __USB_CUSTOMHID_CORE_H_ */ +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/customhid/src/usbd_customhid_core.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/customhid/src/usbd_customhid_core.c new file mode 100644 index 000000000..3e90d7a7a --- /dev/null +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/customhid/src/usbd_customhid_core.c @@ -0,0 +1,718 @@ +/** + ****************************************************************************** + * @file usbd_customhid_core.c + * @author MCD Application Team + * @version V1.2.0 + * @date 09-November-2015 + * @brief This file provides the CUSTOM_HID core functions. + * + * @verbatim + * + * =================================================================== + * CUSTOM_HID Class Description + * =================================================================== + * This module manages the HID class V1.11 following the "Device Class Definition + * for Human Interface Devices (CUSTOM_HID) Version 1.11 Jun 27, 2001". + * This driver implements the following aspects of the specification: + * - The Boot Interface Subclass + * - The Mouse protocol + * - Usage Page : Generic Desktop + * - Usage : Vendor + * - Collection : Application + * + * @note In HS mode and when the DMA is used, all variables and data structures + * dealing with the DMA during the transaction process should be 32-bit aligned. + * + * + * @endverbatim + * + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2015 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_customhid_core.h" +#include "usbd_desc.h" +#include "usbd_req.h" + + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @{ + */ + + +/** @defgroup USBD_CUSTOM_HID + * @brief usbd core module + * @{ + */ + +/** @defgroup USBD_CUSTOM_HID_Private_TypesDefinitions + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_CUSTOM_HID_Private_Defines + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_CUSTOM_HID_Private_Macros + * @{ + */ +/** + * @} + */ + + + + +/** @defgroup USBD_CUSTOM_HID_Private_FunctionPrototypes + * @{ + */ + + +static uint8_t USBD_CUSTOM_HID_Init (void *pdev, + uint8_t cfgidx); + +static uint8_t USBD_CUSTOM_HID_DeInit (void *pdev, + uint8_t cfgidx); + +static uint8_t USBD_CUSTOM_HID_Setup (void *pdev, + USB_SETUP_REQ *req); + +static uint8_t *USBD_CUSTOM_HID_GetCfgDesc (uint8_t speed, uint16_t *length); + +static uint8_t USBD_CUSTOM_HID_DataIn (void *pdev, uint8_t epnum); +static uint8_t USBD_CUSTOM_HID_DataOut (void *pdev, uint8_t epnum); +static uint8_t USBD_CUSTOM_HID_EP0_RxReady (void *pdev); +/** + * @} + */ + +/** @defgroup USBD_HID_Private_Variables + * @{ + */ + +USBD_Class_cb_TypeDef USBD_CUSTOMHID_cb = +{ + USBD_CUSTOM_HID_Init, + USBD_CUSTOM_HID_DeInit, + USBD_CUSTOM_HID_Setup, + NULL, /*EP0_TxSent*/ + USBD_CUSTOM_HID_EP0_RxReady, /*EP0_RxReady*/ /* STATUS STAGE IN */ + USBD_CUSTOM_HID_DataIn, /*DataIn*/ + USBD_CUSTOM_HID_DataOut, + NULL, /*SOF */ + NULL, + NULL, + USBD_CUSTOM_HID_GetCfgDesc, +#ifdef USB_OTG_HS_CORE + USBD_CUSTOM_HID_GetCfgDesc, /* use same config as per FS */ +#endif +}; + +uint8_t Report_buf[2]; +uint8_t USBD_HID_Report_ID=0; +__IO uint32_t IsReportAvailable = 0; +extern uint8_t PrevXferDone; + + +#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED + #if defined ( __ICCARM__ ) /*!< IAR Compiler */ + #pragma data_alignment=4 + #endif +#endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ +__ALIGN_BEGIN static uint32_t USBD_HID_AltSet __ALIGN_END = 0; + +#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED + #if defined ( __ICCARM__ ) /*!< IAR Compiler */ + #pragma data_alignment=4 + #endif +#endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ +__ALIGN_BEGIN static uint32_t USBD_HID_Protocol __ALIGN_END = 0; + +#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED + #if defined ( __ICCARM__ ) /*!< IAR Compiler */ + #pragma data_alignment=4 + #endif +#endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ +__ALIGN_BEGIN static uint32_t USBD_HID_IdleState __ALIGN_END = 0; + +#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED + #if defined ( __ICCARM__ ) /*!< IAR Compiler */ + #pragma data_alignment=4 + #endif +#endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ +/* USB HID device Configuration Descriptor */ +__ALIGN_BEGIN static uint8_t USBD_CUSTOM_HID_CfgDesc[USB_CUSTOM_HID_CONFIG_DESC_SIZ] __ALIGN_END = +{ + 0x09, /* bLength: Configuration Descriptor size */ + USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */ + USB_CUSTOM_HID_CONFIG_DESC_SIZ, + /* wTotalLength: Bytes returned */ + 0x00, + 0x01, /*bNumInterfaces: 1 interface*/ + 0x01, /*bConfigurationValue: Configuration value*/ + 0x00, /*iConfiguration: Index of string descriptor describing + the configuration*/ + 0xC0, /*bmAttributes: bus powered and Support Remote Wake-up */ + 0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/ + + /************** Descriptor of Custom HID interface ****************/ + /* 09 */ + 0x09, /*bLength: Interface Descriptor size*/ + USB_INTERFACE_DESCRIPTOR_TYPE,/*bDescriptorType: Interface descriptor type*/ + 0x00, /*bInterfaceNumber: Number of Interface*/ + 0x00, /*bAlternateSetting: Alternate setting*/ + 0x02, /*bNumEndpoints*/ + 0x03, /*bInterfaceClass: HID*/ + 0x00, /*bInterfaceSubClass : 1=BOOT, 0=no boot*/ + 0x00, /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/ + 0, /*iInterface: Index of string descriptor*/ + /******************** Descriptor of Custom HID ********************/ + /* 18 */ + 0x09, /*bLength: HID Descriptor size*/ + CUSTOM_HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/ + 0x11, /*bcdHID: HID Class Spec release number*/ + 0x01, + 0x00, /*bCountryCode: Hardware target country*/ + 0x01, /*bNumDescriptors: Number of HID class descriptors to follow*/ + 0x22, /*bDescriptorType*/ + USBD_CUSTOM_HID_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/ + 0x00, + /******************** Descriptor of Custom HID endpoints ***********/ + /* 27 */ + 0x07, /* bLength: Endpoint Descriptor size */ + USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: */ + + HID_IN_EP, /* bEndpointAddress: Endpoint Address (IN) */ + 0x03, /* bmAttributes: Interrupt endpoint */ + HID_IN_PACKET, /* wMaxPacketSize: 2 Bytes max */ + 0x00, + 0x20, /* bInterval: Polling Interval (32 ms) */ + /* 34 */ + + 0x07, /* bLength: Endpoint Descriptor size */ + USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: */ + /* Endpoint descriptor type */ + HID_OUT_EP, /* bEndpointAddress: */ + /* Endpoint Address (OUT) */ + 0x03, /* bmAttributes: Interrupt endpoint */ + HID_OUT_PACKET, /* wMaxPacketSize: 2 Bytes max */ + 0x00, + 0x20, /* bInterval: Polling Interval (20 ms) */ + /* 41 */ +} ; + +#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED + #if defined ( __ICCARM__ ) /*!< IAR Compiler */ + #pragma data_alignment=4 + #endif +#endif + +__ALIGN_BEGIN static uint8_t CustomHID_ReportDesc[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END = +{ + 0x06, 0xFF, 0x00, /* USAGE_PAGE (Vendor Page: 0xFF00) */ + 0x09, 0x01, /* USAGE (Demo Kit) */ + 0xa1, 0x01, /* COLLECTION (Application) */ + /* 6 */ + + /* Led 1 */ + 0x85, LED1_REPORT_ID, /* REPORT_ID (1) */ + 0x09, 0x01, /* USAGE (LED 1) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x95, LED1_REPORT_COUNT, /* REPORT_COUNT (1) */ + 0xB1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */ + + 0x85, LED1_REPORT_ID, /* REPORT_ID (1) */ + 0x09, 0x01, /* USAGE (LED 1) */ + 0x91, 0x82, /* OUTPUT (Data,Var,Abs,Vol) */ + /* 26 */ + + /* Led 2 */ + 0x85, LED2_REPORT_ID, /* REPORT_ID 2 */ + 0x09, 0x02, /* USAGE (LED 2) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x95, LED2_REPORT_COUNT, /* REPORT_COUNT (1) */ + 0xB1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */ + + 0x85, LED2_REPORT_ID, /* REPORT_ID (2) */ + 0x09, 0x02, /* USAGE (LED 2) */ + 0x91, 0x82, /* OUTPUT (Data,Var,Abs,Vol) */ + /* 46 */ + + /* Led 3 */ + 0x85, LED3_REPORT_ID, /* REPORT_ID (3) */ + 0x09, 0x03, /* USAGE (LED 3) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x95, LED3_REPORT_COUNT, /* REPORT_COUNT (1) */ + 0xB1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */ + + 0x85, LED3_REPORT_ID, /* REPORT_ID (3) */ + 0x09, 0x03, /* USAGE (LED 3) */ + 0x91, 0x82, /* OUTPUT (Data,Var,Abs,Vol) */ + /* 66 */ + + /* Led 4 */ + 0x85, LED4_REPORT_ID, /* REPORT_ID 4) */ + 0x09, 0x04, /* USAGE (LED 4) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x95, LED4_REPORT_COUNT, /* REPORT_COUNT (1) */ + 0xB1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */ + + 0x85, LED4_REPORT_ID, /* REPORT_ID (4) */ + 0x09, 0x04, /* USAGE (LED 4) */ + 0x91, 0x82, /* OUTPUT (Data,Var,Abs,Vol) */ + /* 86 */ + + /* key Push Button */ + 0x85, KEY_REPORT_ID, /* REPORT_ID (5) */ + 0x09, 0x05, /* USAGE (Push Button) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x01, /* REPORT_SIZE (1) */ + 0x81, 0x82, /* INPUT (Data,Var,Abs,Vol) */ + + 0x09, 0x05, /* USAGE (Push Button) */ + 0x75, 0x01, /* REPORT_SIZE (1) */ + 0xb1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */ + + 0x75, 0x07, /* REPORT_SIZE (7) */ + 0x81, 0x83, /* INPUT (Cnst,Var,Abs,Vol) */ + 0x85, KEY_REPORT_ID, /* REPORT_ID (2) */ + + 0x75, 0x07, /* REPORT_SIZE (7) */ + 0xb1, 0x83, /* FEATURE (Cnst,Var,Abs,Vol) */ + /* 114 */ + + /* Tamper Push Button */ + 0x85, TAMPER_REPORT_ID,/* REPORT_ID (6) */ + 0x09, 0x06, /* USAGE (Tamper Push Button) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x01, /* REPORT_SIZE (1) */ + 0x81, 0x82, /* INPUT (Data,Var,Abs,Vol) */ + + 0x09, 0x06, /* USAGE (Tamper Push Button) */ + 0x75, 0x01, /* REPORT_SIZE (1) */ + 0xb1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */ + + 0x75, 0x07, /* REPORT_SIZE (7) */ + 0x81, 0x83, /* INPUT (Cnst,Var,Abs,Vol) */ + 0x85, TAMPER_REPORT_ID,/* REPORT_ID (6) */ + + 0x75, 0x07, /* REPORT_SIZE (7) */ + 0xb1, 0x83, /* FEATURE (Cnst,Var,Abs,Vol) */ + /* 142 */ + + /* ADC IN */ + 0x85, ADC_REPORT_ID, /* REPORT_ID */ + 0x09, 0x07, /* USAGE (ADC IN) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x26, 0xff, 0x00, /* LOGICAL_MAXIMUM (255) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x81, 0x82, /* INPUT (Data,Var,Abs,Vol) */ + 0x85, ADC_REPORT_ID, /* REPORT_ID (7) */ + 0x09, 0x07, /* USAGE (ADC in) */ + 0xb1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */ + /* 161 */ + + 0xc0 /* END_COLLECTION */ +}; + +/** + * @} + */ + +/** @defgroup USBD_HID_Private_Functions + * @{ + */ + +/** + * @brief USBD_HID_Init + * Initialize the HID interface + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_CUSTOM_HID_Init (void *pdev, + uint8_t cfgidx) +{ + /* Open EP IN */ + DCD_EP_Open(pdev, + HID_IN_EP, + HID_IN_PACKET, + USB_OTG_EP_INT); + + /* Open EP OUT */ + DCD_EP_Open(pdev, + HID_OUT_EP, + HID_OUT_PACKET, + USB_OTG_EP_INT); + + /*Receive Data*/ + DCD_EP_PrepareRx(pdev,HID_OUT_EP,Report_buf,2); + + return USBD_OK; +} + +/** + * @brief USBD_HID_Init + * DeInitialize the HID layer + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_CUSTOM_HID_DeInit (void *pdev, + uint8_t cfgidx) +{ + /* Close HID EPs */ + DCD_EP_Close (pdev , HID_IN_EP); + DCD_EP_Close (pdev , HID_OUT_EP); + + + return USBD_OK; +} + +/** + * @brief USBD_HID_Setup + * Handle the HID specific requests + * @param pdev: instance + * @param req: usb requests + * @retval status + */ +static uint8_t USBD_CUSTOM_HID_Setup (void *pdev, + USB_SETUP_REQ *req) +{ + uint8_t USBD_HID_Report_LENGTH=0; + uint16_t len = 0; + uint8_t *pbuf = NULL; + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + { + case USB_REQ_TYPE_CLASS : + switch (req->bRequest) + { + case CUSTOM_HID_REQ_SET_PROTOCOL: + USBD_HID_Protocol = (uint8_t)(req->wValue); + break; + + case CUSTOM_HID_REQ_GET_PROTOCOL: + USBD_CtlSendData (pdev, + (uint8_t *)&USBD_HID_Protocol, + 1); + break; + + case CUSTOM_HID_REQ_SET_IDLE: + USBD_HID_IdleState = (uint8_t)(req->wValue >> 8); + break; + + case CUSTOM_HID_REQ_GET_IDLE: + USBD_CtlSendData (pdev, + (uint8_t *)&USBD_HID_IdleState, + 1); + break; + + case CUSTOM_HID_REQ_SET_REPORT: + IsReportAvailable = 1; + USBD_HID_Report_ID = (uint8_t)(req->wValue); + USBD_HID_Report_LENGTH = (uint8_t)(req->wLength); + USBD_CtlPrepareRx (pdev, Report_buf, USBD_HID_Report_LENGTH); + + break; + + default: + USBD_CtlError (pdev, req); + return USBD_FAIL; + } + break; + + case USB_REQ_TYPE_STANDARD: + switch (req->bRequest) + { + case USB_REQ_GET_DESCRIPTOR: + if( req->wValue >> 8 == CUSTOM_HID_REPORT_DESC) + { + len = MIN(USBD_CUSTOM_HID_REPORT_DESC_SIZE , req->wLength); + pbuf = (uint8_t*)CustomHID_ReportDesc; + } + else if( req->wValue >> 8 == CUSTOM_HID_DESCRIPTOR_TYPE) + { + pbuf = (uint8_t*)USBD_CUSTOM_HID_CfgDesc + 0x12; + len = MIN(USB_CUSTOM_HID_DESC_SIZ , req->wLength); + } + + USBD_CtlSendData (pdev, + pbuf, + len); + + break; + + case USB_REQ_GET_INTERFACE : + USBD_CtlSendData (pdev, + (uint8_t *)&USBD_HID_AltSet, + 1); + break; + + case USB_REQ_SET_INTERFACE : + USBD_HID_AltSet = (uint8_t)(req->wValue); + break; + } + } + return USBD_OK; +} + +/** + * @brief USBD_HID_SendReport + * Send HID Report + * @param pdev: device instance + * @param buff: pointer to report + * @retval status + */ +uint8_t USBD_CUSTOM_HID_SendReport (USB_OTG_CORE_HANDLE *pdev, + uint8_t *report, + uint16_t len) +{ + if (pdev->dev.device_status == USB_OTG_CONFIGURED ) + { + DCD_EP_Tx (pdev, HID_IN_EP, report, len); + } + return USBD_OK; +} + +/** + * @brief USBD_HID_GetCfgDesc + * return configuration descriptor + * @param speed : current device speed + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +static uint8_t *USBD_CUSTOM_HID_GetCfgDesc (uint8_t speed, uint16_t *length) +{ + *length = sizeof (USBD_CUSTOM_HID_CfgDesc); + return USBD_CUSTOM_HID_CfgDesc; +} + +/** + * @brief USBD_HID_DataIn + * handle data IN Stage + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_CUSTOM_HID_DataIn (void *pdev, + uint8_t epnum) +{ + + /* Ensure that the FIFO is empty before a new transfer, this condition could + be caused by a new transfer before the end of the previous transfer */ + DCD_EP_Flush(pdev, HID_IN_EP); + + if (epnum == 1) PrevXferDone = 1; + + return USBD_OK; +} + +/** + * @brief USBD_HID_DataOut + * handle data IN Stage + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +uint8_t USBD_CUSTOM_HID_DataOut (void *pdev, + uint8_t epnum) +{ + + BitAction Led_State; + if (epnum == 1) + { + if (Report_buf[1] == 0) + { + Led_State = Bit_RESET; + } + else + { + Led_State = Bit_SET; + } + + switch (Report_buf[0]) + { + case 1: /* Led 1 */ + if (Led_State != Bit_RESET) + { + STM_EVAL_LEDOn(LED1); + } + else + { + STM_EVAL_LEDOff(LED1); + } + break; + + case 2: /* Led 2 */ + if (Led_State != Bit_RESET) + { + STM_EVAL_LEDOn(LED2); + } + else + { + STM_EVAL_LEDOff(LED2); + } + break; + case 3: /* Led 3 */ + if (Led_State != Bit_RESET) + { + STM_EVAL_LEDOn(LED3); + } + else + { + STM_EVAL_LEDOff(LED3); + } + break; + case 4: /* Led 4 */ + if (Led_State != Bit_RESET) + { + STM_EVAL_LEDOn(LED4); + } + else + { + STM_EVAL_LEDOff(LED4); + } + break; + default: + STM_EVAL_LEDOff(LED1); + STM_EVAL_LEDOff(LED2); + STM_EVAL_LEDOff(LED3); + STM_EVAL_LEDOff(LED4); + break; + } + } + + DCD_EP_PrepareRx(pdev,HID_IN_EP,Report_buf,2); + + return USBD_OK; +} + +/** + * @brief USBD_HID_EP0_RxReady + * Handles control request data. + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ + +uint8_t USBD_CUSTOM_HID_EP0_RxReady(void *pdev) +{ + BitAction Led_State; + + if (IsReportAvailable == 1) + { + IsReportAvailable = 0; + if (Report_buf[1] == 0) + { + Led_State = Bit_RESET; + } + else + { + Led_State = Bit_SET; + } + + switch (Report_buf[0]) + { + case 1: /* Led 1 */ + if (Led_State != Bit_RESET) + { + STM_EVAL_LEDOn(LED1); + } + else + { + STM_EVAL_LEDOff(LED1); + } + break; + + case 2: /* Led 2 */ + if (Led_State != Bit_RESET) + { + STM_EVAL_LEDOn(LED2); + } + else + { + STM_EVAL_LEDOff(LED2); + } + break; + case 3: /* Led 3 */ + if (Led_State != Bit_RESET) + { + STM_EVAL_LEDOn(LED3); + } + else + { + STM_EVAL_LEDOff(LED3); + } + break; + case 4: /* Led 4 */ + if (Led_State != Bit_RESET) + { + STM_EVAL_LEDOn(LED4); + } + else + { + STM_EVAL_LEDOff(LED4); + } + break; + default: + STM_EVAL_LEDOff(LED1); + STM_EVAL_LEDOff(LED2); + STM_EVAL_LEDOff(LED3); + STM_EVAL_LEDOff(LED4); + break; + } + } + return USBD_OK; +} +/** + * @} + */ + + +/** + * @} + */ + + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h similarity index 94% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h index da5d234fd..271e61e38 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_dfu_core.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief header file for the usbd_dfu_core.c file. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -181,7 +181,7 @@ extern USBD_Class_cb_TypeDef DFU_cb; * @} */ -#endif // __USB_DFU_CORE_H_ +#endif /* __USB_DFU_CORE_H_ */ /** * @} */ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h similarity index 91% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h index 2711dfc0e..d2d2e6f27 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_dfu_mal.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief Header for usbd_dfu_mal.c file. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -31,6 +31,7 @@ /* Includes ------------------------------------------------------------------*/ #include "usb_conf.h" + #include "usbd_conf.h" #include "usbd_dfu_core.h" @@ -54,7 +55,7 @@ DFU_MAL_Prop_TypeDef; #define MAL_OK 0 #define MAL_FAIL 1 -/* utils macro ---------------------------------------------------------------*/ +/* useful macro ---------------------------------------------------------------*/ #define _1st_BYTE(x) (uint8_t)((x)&0xFF) /* 1st addressing cycle */ #define _2nd_BYTE(x) (uint8_t)(((x)&0xFF00)>>8) /* 2nd addressing cycle */ #define _3rd_BYTE(x) (uint8_t)(((x)&0xFF0000)>>16) /* 3rd addressing cycle */ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h similarity index 84% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h index b11b2400c..24dd2e763 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_flash_if.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief Header for usbd_flash_if.c file. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -39,9 +39,15 @@ #ifdef STM32F2XX #define FLASH_END_ADD 0x08100000 #define FLASH_IF_STRING "@Internal Flash /0x08000000/03*016Ka,01*016Kg,01*064Kg,07*128Kg" -#elif defined(STM32F4XX) +#elif defined(STM32F40_41xxx) #define FLASH_END_ADD 0x08100000 #define FLASH_IF_STRING "@Internal Flash /0x08000000/03*016Ka,01*016Kg,01*064Kg,07*128Kg" + +#elif defined(STM32F429_439xx) + #define FLASH_END_ADD 0x08200000 + #define FLASH_IF_STRING "@Internal Flash /0x08000000/03*016Ka,01*016Kg,01*064Kg,07*128Kg,04*016Kg,01*064Kg,07*128Kg" + + #elif defined(STM32F10X_CL) #define FLASH_END_ADD 0x08040000 #define FLASH_IF_STRING "@Internal Flash /0x08000000/06*002Ka,122*002Kg" diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h similarity index 92% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h index d4542f515..bb0428875 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_mem_if_template.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief Header for usbd_mem_if_template.c file. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -31,6 +31,7 @@ /* Includes ------------------------------------------------------------------*/ #include "usb_conf.h" + #include "usbd_dfu_mal.h" /* Exported types ------------------------------------------------------------*/ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h similarity index 92% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h index 9a3062863..b342d69d7 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_otp_if.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief Header for usbd_otp_if.c file. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c similarity index 95% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c index 0cfa47897..a464c07ef 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c @@ -2,8 +2,8 @@ ****************************************************************************** * @file usbd_dfu_core.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief This file provides the high layer firmware functions to manage the * following functionalities of the USB DFU Class: * - Initialization and Configuration of high and low layer @@ -44,7 +44,7 @@ ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -63,7 +63,6 @@ /* Includes ------------------------------------------------------------------*/ #include "usbd_dfu_core.h" - #include "usbd_desc.h" #include "usbd_req.h" #include "usb_bsp.h" @@ -224,7 +223,7 @@ USBD_Class_cb_TypeDef DFU_cb = /* USB DFU device Configuration Descriptor */ __ALIGN_BEGIN uint8_t usbd_dfu_CfgDesc[USB_DFU_CONFIG_DESC_SIZ] __ALIGN_END = { - 0x09, /* bLength: Configuation Descriptor size */ + 0x09, /* bLength: Configuration Descriptor size */ USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */ USB_DFU_CONFIG_DESC_SIZ, /* wTotalLength: Bytes returned */ @@ -232,7 +231,7 @@ __ALIGN_BEGIN uint8_t usbd_dfu_CfgDesc[USB_DFU_CONFIG_DESC_SIZ] __ALIGN_END = 0x01, /*bNumInterfaces: 1 interface*/ 0x01, /*bConfigurationValue: Configuration value*/ 0x02, /*iConfiguration: Index of string descriptor describing the configuration*/ - 0xC0, /*bmAttributes: bus powered and Supprts Remote Wakeup */ + 0xC0, /*bmAttributes: bus powered and Supports Remote Wakeup */ 0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/ /* 09 */ @@ -298,7 +297,7 @@ __ALIGN_BEGIN uint8_t usbd_dfu_CfgDesc[USB_DFU_CONFIG_DESC_SIZ] __ALIGN_END = __ALIGN_BEGIN uint8_t usbd_dfu_OtherCfgDesc[USB_DFU_CONFIG_DESC_SIZ] __ALIGN_END = { - 0x09, /* bLength: Configuation Descriptor size */ + 0x09, /* bLength: Configuration Descriptor size */ USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION, /* bDescriptorType: Configuration */ USB_DFU_CONFIG_DESC_SIZ, /* wTotalLength: Bytes returned */ @@ -306,7 +305,7 @@ __ALIGN_BEGIN uint8_t usbd_dfu_OtherCfgDesc[USB_DFU_CONFIG_DESC_SIZ] __ALIGN_END 0x01, /*bNumInterfaces: 1 interface*/ 0x01, /*bConfigurationValue: Configuration value*/ 0x02, /*iConfiguration: Index of string descriptor describing the configuration*/ - 0xC0, /*bmAttributes: bus powered and Supprts Remote Wakeup */ + 0xC0, /*bmAttributes: bus powered and Supports Remote Wakeup */ 0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/ /* 09 */ @@ -590,7 +589,7 @@ static uint8_t EP0_TxSent (void *pdev) /* Preform the write operation */ MAL_Write(Addr, wlength); } - /* Reset the global lenght and block number */ + /* Reset the global length and block number */ wlength = 0; wBlockNum = 0; @@ -737,7 +736,7 @@ static void DFU_Req_UPLOAD(void *pdev, USB_SETUP_REQ *req) { if ((DeviceState == STATE_dfuIDLE) || (DeviceState == STATE_dfuUPLOAD_IDLE)) { - /* Update the global langth and block number */ + /* Update the global length and block number */ wBlockNum = req->wValue; wlength = req->wLength; @@ -1018,7 +1017,7 @@ static uint8_t *USBD_DFU_GetOtherCfgDesc (uint8_t speed, uint16_t *length) * @brief USBD_DFU_GetUsrStringDesc * Manages the transfer of memory interfaces string descriptors. * @param speed : current device speed - * @param index: desciptor index + * @param index: descriptor index * @param length : pointer data length * @retval pointer to the descriptor table or NULL if the descriptor is not supported. */ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c similarity index 91% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c index 6c20599dc..691206c40 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_dfu_mal.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief Generic media access Layer. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -90,7 +90,7 @@ static uint8_t MAL_CheckAdd (uint32_t Add); * @brief MAL_Init * Initializes the Media on the STM32 * @param None - * @retval Result of the opeartion (MAL_OK in all cases) + * @retval Result of the operation (MAL_OK in all cases) */ uint16_t MAL_Init(void) { @@ -113,7 +113,7 @@ uint16_t MAL_Init(void) * @brief MAL_DeInit * DeInitializes the Media on the STM32 * @param None - * @retval Result of the opeartion (MAL_OK in all cases) + * @retval Result of the operation (MAL_OK in all cases) */ uint16_t MAL_DeInit(void) { @@ -136,7 +136,7 @@ uint16_t MAL_DeInit(void) * @brief MAL_Erase * Erase a sector of memory. * @param Add: Sector address/code - * @retval Result of the opeartion: MAL_OK if all operations are OK else MAL_FAIL + * @retval Result of the operation: MAL_OK if all operations are OK else MAL_FAIL */ uint16_t MAL_Erase(uint32_t Add) { @@ -171,7 +171,7 @@ uint16_t MAL_Erase(uint32_t Add) * Write sectors of memory. * @param Add: Sector address/code * @param Len: Number of data to be written (in bytes) - * @retval Result of the opeartion: MAL_OK if all operations are OK else MAL_FAIL + * @retval Result of the operation: MAL_OK if all operations are OK else MAL_FAIL */ uint16_t MAL_Write (uint32_t Add, uint32_t Len) { diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c similarity index 89% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c index 9dcbd1774..18bb8918f 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_flash_if.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief Specific media access Layer for internal flash. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -62,7 +62,7 @@ DFU_MAL_Prop_TypeDef DFU_Flash_cb = * @brief FLASH_If_Init * Memory initialization routine. * @param None - * @retval MAL_OK if operation is successeful, MAL_FAIL else. + * @retval MAL_OK if operation is successful, MAL_FAIL else. */ uint16_t FLASH_If_Init(void) { @@ -76,7 +76,7 @@ uint16_t FLASH_If_Init(void) * @brief FLASH_If_DeInit * Memory deinitialization routine. * @param None - * @retval MAL_OK if operation is successeful, MAL_FAIL else. + * @retval MAL_OK if operation is successful, MAL_FAIL else. */ uint16_t FLASH_If_DeInit(void) { @@ -95,7 +95,7 @@ uint16_t FLASH_If_DeInit(void) *******************************************************************************/ uint16_t FLASH_If_Erase(uint32_t Add) { -#if defined (STM32F2XX) || defined (STM32F4XX) +#if !defined(STM32F10X_CL) /* Check which sector has to be erased */ if (Add < 0x08004000) { @@ -149,10 +149,10 @@ uint16_t FLASH_If_Erase(uint32_t Add) { return MAL_FAIL; } -#elif defined(STM32F10X_CL) +#else /* Call the standard Flash erase function */ FLASH_ErasePage(Add); -#endif /* STM32F2XX */ +#endif /* STM32F10X_CL */ return MAL_OK; } @@ -162,7 +162,7 @@ uint16_t FLASH_If_Erase(uint32_t Add) * Memory write routine. * @param Add: Address to be written to. * @param Len: Number of data to be written (in bytes). - * @retval MAL_OK if operation is successeful, MAL_FAIL else. + * @retval MAL_OK if operation is successful, MAL_FAIL else. */ uint16_t FLASH_If_Write(uint32_t Add, uint32_t Len) { @@ -190,7 +190,7 @@ uint16_t FLASH_If_Write(uint32_t Add, uint32_t Len) * Memory read routine. * @param Add: Address to be read from. * @param Len: Number of data to be read (in bytes). - * @retval Pointer to the phyisical address where data should be read. + * @retval Pointer to the physical address where data should be read. */ uint8_t *FLASH_If_Read (uint32_t Add, uint32_t Len) { diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c similarity index 86% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c index ec717226b..a1771515d 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c @@ -2,15 +2,15 @@ ****************************************************************************** * @file usbd_mem_if_template.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief Specific media access Layer for a template memory. This file is provided as template example showing how to implement a new memory interface based on pre-defined API. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -64,7 +64,7 @@ DFU_MAL_Prop_TypeDef DFU_Mem_cb = * @brief MEM_If_Init * Memory initialization routine. * @param None - * @retval MAL_OK if operation is successeful, MAL_FAIL else. + * @retval MAL_OK if operation is successful, MAL_FAIL else. */ uint16_t MEM_If_Init(void) { @@ -75,7 +75,7 @@ uint16_t MEM_If_Init(void) * @brief MEM_If_DeInit * Memory deinitialization routine. * @param None - * @retval MAL_OK if operation is successeful, MAL_FAIL else. + * @retval MAL_OK if operation is successful, MAL_FAIL else. */ uint16_t MEM_If_DeInit(void) { @@ -86,7 +86,7 @@ uint16_t MEM_If_DeInit(void) * @brief MEM_If_Erase * Erase sector. * @param Add: Address of sector to be erased. - * @retval MAL_OK if operation is successeful, MAL_FAIL else. + * @retval MAL_OK if operation is successful, MAL_FAIL else. */ uint16_t MEM_If_Erase(uint32_t Add) { @@ -98,7 +98,7 @@ uint16_t MEM_If_Erase(uint32_t Add) * Memory write routine. * @param Add: Address to be written to. * @param Len: Number of data to be written (in bytes). - * @retval MAL_OK if operation is successeful, MAL_FAIL else. + * @retval MAL_OK if operation is successful, MAL_FAIL else. */ uint16_t MEM_If_Write(uint32_t Add, uint32_t Len) { @@ -110,7 +110,7 @@ uint16_t MEM_If_Write(uint32_t Add, uint32_t Len) * Memory read routine. * @param Add: Address to be read from. * @param Len: Number of data to be read (in bytes). - * @retval Pointer to the phyisical address where data should be read. + * @retval Pointer to the physical address where data should be read. */ uint8_t *MEM_If_Read (uint32_t Add, uint32_t Len) { diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c similarity index 90% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c index 5f8f83a58..665e5d060 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_otp_if.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief Specific media access Layer for OTP (One Time Programming) memory. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -61,7 +61,7 @@ DFU_MAL_Prop_TypeDef DFU_Otp_cb = * Memory write routine. * @param Add: Address to be written to. * @param Len: Number of data to be written (in bytes). - * @retval MAL_OK if operation is successeful, MAL_FAIL else. + * @retval MAL_OK if operation is successful, MAL_FAIL else. */ uint16_t OTP_If_Write(uint32_t Add, uint32_t Len) { @@ -89,7 +89,7 @@ uint16_t OTP_If_Write(uint32_t Add, uint32_t Len) * Memory read routine. * @param Add: Address to be read from. * @param Len: Number of data to be read (in bytes). - * @retval Pointer to the phyisical address where data should be read. + * @retval Pointer to the physical address where data should be read. */ uint8_t *OTP_If_Read (uint32_t Add, uint32_t Len) { diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h similarity index 83% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h index 00971a591..0fbfa416b 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_hid_core.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief header file for the usbd_hid_core.c file. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -52,6 +52,8 @@ #define HID_DESCRIPTOR_TYPE 0x21 #define HID_REPORT_DESC 0x22 +#define HID_HS_BINTERVAL 0x07 +#define HID_FS_BINTERVAL 0x0A #define HID_REQ_SET_PROTOCOL 0x0B #define HID_REQ_GET_PROTOCOL 0x03 @@ -89,7 +91,7 @@ * @{ */ -extern const USBD_Class_cb_TypeDef USBD_HID_cb; +extern const USBD_Class_cb_TypeDef USBD_HID_cb; // modified by OpenTX /** * @} */ @@ -100,11 +102,14 @@ extern const USBD_Class_cb_TypeDef USBD_HID_cb; uint8_t USBD_HID_SendReport (USB_OTG_CORE_HANDLE *pdev, uint8_t *report, uint16_t len); + +uint32_t USBD_HID_GetPollingInterval (USB_OTG_CORE_HANDLE *pdev); + /** * @} */ -#endif // __USB_HID_CORE_H_ +#endif /* __USB_HID_CORE_H_ */ /** * @} */ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c similarity index 84% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c index 3dcfd918c..e451fba9d 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c @@ -2,8 +2,8 @@ ****************************************************************************** * @file usbd_hid_core.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief This file provides the HID core functions. * * @verbatim @@ -29,7 +29,7 @@ ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -48,7 +48,6 @@ /* Includes ------------------------------------------------------------------*/ #include "usbd_hid_core.h" - #include "usbd_desc.h" #include "usbd_req.h" @@ -95,18 +94,18 @@ */ -static uint8_t USBD_HID_Init (void *pdev, +uint8_t USBD_HID_Init (void *pdev, uint8_t cfgidx); -static uint8_t USBD_HID_DeInit (void *pdev, +uint8_t USBD_HID_DeInit (void *pdev, uint8_t cfgidx); -static uint8_t USBD_HID_Setup (void *pdev, +uint8_t USBD_HID_Setup (void *pdev, USB_SETUP_REQ *req); static uint8_t *USBD_HID_GetCfgDesc (uint8_t speed, uint16_t *length); -static uint8_t USBD_HID_DataIn (void *pdev, uint8_t epnum); +uint8_t USBD_HID_DataIn (void *pdev, uint8_t epnum); /** * @} */ @@ -205,7 +204,7 @@ __ALIGN_BEGIN static uint8_t USBD_HID_CfgDesc[USB_HID_CONFIG_DESC_SIZ] __ALIGN_E 0x03, /*bmAttributes: Interrupt endpoint*/ HID_IN_PACKET, /*wMaxPacketSize: 4 Byte max */ 0x00, - 0x0A, /*bInterval: Polling Interval (10 ms)*/ + HID_FS_BINTERVAL, /*bInterval: Polling Interval (10 ms)*/ /* 34 */ } ; @@ -300,7 +299,7 @@ __ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ * @param cfgidx: Configuration index * @retval status */ -static uint8_t USBD_HID_Init (void *pdev, +uint8_t USBD_HID_Init (void *pdev, uint8_t cfgidx) { @@ -310,12 +309,6 @@ static uint8_t USBD_HID_Init (void *pdev, HID_IN_PACKET, USB_OTG_EP_INT); - /* Open EP OUT */ - DCD_EP_Open(pdev, - HID_OUT_EP, - HID_OUT_PACKET, - USB_OTG_EP_INT); - return USBD_OK; } @@ -326,14 +319,11 @@ static uint8_t USBD_HID_Init (void *pdev, * @param cfgidx: Configuration index * @retval status */ -static uint8_t USBD_HID_DeInit (void *pdev, +uint8_t USBD_HID_DeInit (void *pdev, uint8_t cfgidx) { /* Close HID EPs */ DCD_EP_Close (pdev , HID_IN_EP); - DCD_EP_Close (pdev , HID_OUT_EP); - - return USBD_OK; } @@ -344,7 +334,7 @@ static uint8_t USBD_HID_DeInit (void *pdev, * @param req: usb requests * @retval status */ -static uint8_t USBD_HID_Setup (void *pdev, +uint8_t USBD_HID_Setup (void *pdev, USB_SETUP_REQ *req) { uint16_t len = 0; @@ -355,8 +345,6 @@ static uint8_t USBD_HID_Setup (void *pdev, case USB_REQ_TYPE_CLASS : switch (req->bRequest) { - - case HID_REQ_SET_PROTOCOL: USBD_HID_Protocol = (uint8_t)(req->wValue); break; @@ -402,6 +390,10 @@ static uint8_t USBD_HID_Setup (void *pdev, #endif len = MIN(USB_HID_DESC_SIZ , req->wLength); } + else + { + /* Do Nothing */ + } USBD_CtlSendData (pdev, pbuf, @@ -418,7 +410,18 @@ static uint8_t USBD_HID_Setup (void *pdev, case USB_REQ_SET_INTERFACE : USBD_HID_AltSet = (uint8_t)(req->wValue); break; + + default: + USBD_HID_AltSet = (uint8_t)(req->wValue); + break; } + break; + + default: + USBD_CtlSendData (pdev, + (uint8_t *)&USBD_HID_AltSet, + 1); + break; } return USBD_OK; } @@ -461,7 +464,7 @@ static uint8_t *USBD_HID_GetCfgDesc (uint8_t speed, uint16_t *length) * @param epnum: endpoint index * @retval status */ -static uint8_t USBD_HID_DataIn (void *pdev, +uint8_t USBD_HID_DataIn (void *pdev, uint8_t epnum) { @@ -471,6 +474,34 @@ static uint8_t USBD_HID_DataIn (void *pdev, return USBD_OK; } +/** + * @brief USBD_HID_GetPollingInterval + * return polling interval from endpoint descriptor + * @param pdev: device instance + * @retval polling interval + */ +uint32_t USBD_HID_GetPollingInterval (USB_OTG_CORE_HANDLE *pdev) +{ + uint32_t polling_interval = 0; + + /* HIGH-speed endpoints */ + if(pdev->cfg.speed == USB_OTG_SPEED_HIGH) + { + /* Sets the data transfer polling interval for high speed transfers. + Values between 1..16 are allowed. Values correspond to interval + of 2 ^ (bInterval-1). This option (8 ms, corresponds to HID_HS_BINTERVAL */ + polling_interval = (((1 <<(HID_HS_BINTERVAL - 1)))/8); + } + else /* LOW and FULL-speed endpoints */ + { + /* Sets the data transfer polling interval for low and full + speed transfers */ + polling_interval = HID_FS_BINTERVAL; + } + + return ((uint32_t)(polling_interval)); +} + /** * @} */ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/inc/usbd_hid_cdc_wrapper.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/inc/usbd_hid_cdc_wrapper.h new file mode 100644 index 000000000..79d246914 --- /dev/null +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/inc/usbd_hid_cdc_wrapper.h @@ -0,0 +1,96 @@ +/** + ****************************************************************************** + * @file usbd_hid_cdc_wrapper.h + * @author MCD Application Team + * @version V1.2.0 + * @date 09-November-2015 + * @brief header file for the usbd_hid_cdc_wrapper.c file. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2015 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ + +#ifndef __USB_HID_CDC_WRAPPER_H_ +#define __USB_HID_CDC_WRAPPER_H_ + +#include "usbd_ioreq.h" + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup USBD_HID_CDC + * @brief This file is the Header file for usbd_msc_cdc_wrapper.c + * @{ + */ + + +/** @defgroup USBD_HID_MSC_Exported_Defines + * @{ + */ + + +/** + * @} + */ + + +/** @defgroup USBD_CORE_Exported_TypesDefinitions + * @{ + */ + + +/** + * @} + */ + + + +/** @defgroup USBD_CORE_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_CORE_Exported_Variables + * @{ + */ + +extern USBD_Class_cb_TypeDef USBD_HID_CDC_cb; +/** + * @} + */ + +/** + * @} + */ + +#endif /* __USB_MSC_CDC_WRAPPER_H_ */ +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/src/usbd_hid_cdc_wrapper.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/src/usbd_hid_cdc_wrapper.c new file mode 100644 index 000000000..235f6f704 --- /dev/null +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_cdc_wrapper/src/usbd_hid_cdc_wrapper.c @@ -0,0 +1,461 @@ +/** + ****************************************************************************** + * @file usbd_hid_cdc_wrapper.c + * @author MCD Application Team + * @version V1.2.0 + * @date 09-November-2015 + * @brief + * + * @verbatim + * + * =================================================================== + * composite HID_CDC + * =================================================================== + * + * @note In HS mode and when the DMA is used, all variables and data structures + * dealing with the DMA during the transaction process should be 32-bit aligned. + * + * + * @endverbatim + * + * @attention + * + *

© COPYRIGHT 2015 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_hid_core.h" +#include "usbd_cdc_core.h" +#include "usbd_hid_cdc_wrapper.h" +#include "usbd_desc.h" +#include "usbd_req.h" + + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @{ + */ + + +/** @defgroup USBD_MSC_VCP + * @brief usbd core module + * @{ + */ + +/** @defgroup USBD_MSC_VCP_Private_TypesDefinitions + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_MSC_VCP_Private_Defines + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_MSC_VCP_Private_Macros + * @{ + */ +/** + * @} + */ + + + + +/** @defgroup USBD_MSC_VCP_Private_FunctionPrototypes + * @{ + */ + +/********************************************* + CDC Device library callbacks + *********************************************/ +extern uint8_t usbd_cdc_Init (void *pdev, uint8_t cfgidx); +extern uint8_t usbd_cdc_DeInit (void *pdev, uint8_t cfgidx); +extern uint8_t usbd_cdc_Setup (void *pdev, USB_SETUP_REQ *req); +extern uint8_t usbd_cdc_EP0_RxReady (void *pdev); +extern uint8_t usbd_cdc_DataIn (void *pdev, uint8_t epnum); +extern uint8_t usbd_cdc_DataOut (void *pdev, uint8_t epnum); +extern uint8_t usbd_cdc_SOF (void *pdev); + +extern uint8_t *USBD_cdc_GetCfgDesc (uint8_t speed, uint16_t *length); +#ifdef USE_USB_OTG_HS +extern uint8_t *USBD_cdc_GetOtherCfgDesc (uint8_t speed, uint16_t *length); +#endif + +/********************************************* + MSC Device library callbacks + *********************************************/ +extern uint8_t USBD_HID_Init (void *pdev, uint8_t cfgidx); +extern uint8_t USBD_HID_DeInit (void *pdev, uint8_t cfgidx); +extern uint8_t USBD_HID_Setup (void *pdev, USB_SETUP_REQ *req); +extern uint8_t USBD_HID_DataIn (void *pdev, uint8_t epnum); +extern uint8_t *USBD_HID_GetCfgDesc (uint8_t speed, uint16_t *length); +extern uint8_t USBD_HID_CfgDesc[USB_HID_CONFIG_DESC_SIZ]; + +/** + * @} + */ + +/** @defgroup USBD_MSC_CDC_Private_Variables + * @{ + */ + + +static uint8_t USBD_HID_CDC_Init (void *pdev , uint8_t cfgidx); +static uint8_t USBD_HID_CDC_DeInit (void *pdev , uint8_t cfgidx); + +/* Control Endpoints*/ +static uint8_t USBD_HID_CDC_Setup (void *pdev , USB_SETUP_REQ *req); +static uint8_t USBD_HID_CDC_EP0_RxReady (void *pdev ); + +/* Class Specific Endpoints*/ +static uint8_t USBD_HID_CDC_DataIn (void *pdev , uint8_t epnum); +static uint8_t USBD_HID_CDC_DataOut (void *pdev , uint8_t epnum); +static uint8_t USBD_HID_CDC_SOF (void *pdev); +static uint8_t* USBD_HID_CDC_GetConfigDescriptor( uint8_t speed , uint16_t *length); + +#define USB_HID_CDC_CONFIG_DESC_SIZ (USB_HID_CONFIG_DESC_SIZ -9 + USB_CDC_CONFIG_DESC_SIZ + 8) + +#define HID_INTERFACE 0x0 +#define CDC_COM_INTERFACE 0x1 + + +USBD_Class_cb_TypeDef USBD_HID_CDC_cb = +{ + USBD_HID_CDC_Init, + USBD_HID_CDC_DeInit, + USBD_HID_CDC_Setup, + NULL, + USBD_HID_CDC_EP0_RxReady, + USBD_HID_CDC_DataIn, + USBD_HID_CDC_DataOut, + USBD_HID_CDC_SOF, + NULL, + NULL, + USBD_HID_CDC_GetConfigDescriptor, +}; + + +#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED + #if defined ( __ICCARM__ ) /*!< IAR Compiler */ + #pragma data_alignment=4 + #endif +#endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ +/* USB MSC/CDC device Configuration Descriptor */ +__ALIGN_BEGIN static uint8_t USBD_HID_CDC_CfgDesc[USB_HID_CDC_CONFIG_DESC_SIZ] __ALIGN_END = +{ + 0x09, /* bLength: Configuration Descriptor size */ + USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */ + USB_HID_CDC_CONFIG_DESC_SIZ, + /* wTotalLength: Bytes returned */ + 0x00, + 0x03, /*bNumInterfaces: 3 interfaces (2 for CDC, 1 for MSC)*/ + 0x01, /*bConfigurationValue: Configuration value*/ + 0x00, /*iConfiguration: Index of string descriptor describing + the configuration*/ + 0xE0, /*bmAttributes: bus powered and Support Remote Wake-up */ + 0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/ + + /************** Descriptor of Joystick Mouse interface ****************/ + /* 09 */ + 0x09, /*bLength: Interface Descriptor size*/ + USB_INTERFACE_DESCRIPTOR_TYPE,/*bDescriptorType: Interface descriptor type*/ + HID_INTERFACE, /*bInterfaceNumber: Number of Interface*/ + 0x00, /*bAlternateSetting: Alternate setting*/ + 0x01, /*bNumEndpoints*/ + 0x03, /*bInterfaceClass: HID*/ + 0x01, /*bInterfaceSubClass : 1=BOOT, 0=no boot*/ + 0x02, /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/ + 0, /*iInterface: Index of string descriptor*/ + /******************** Descriptor of Joystick Mouse HID ********************/ + /* 18 */ + 0x09, /*bLength: HID Descriptor size*/ + HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/ + 0x11, /*bcdHID: HID Class Spec release number*/ + 0x01, + 0x00, /*bCountryCode: Hardware target country*/ + 0x01, /*bNumDescriptors: Number of HID class descriptors to follow*/ + 0x22, /*bDescriptorType*/ + HID_MOUSE_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/ + 0x00, + /******************** Descriptor of Mouse endpoint ********************/ + /* 27 */ + 0x07, /*bLength: Endpoint Descriptor size*/ + USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/ + + HID_IN_EP, /*bEndpointAddress: Endpoint Address (IN)*/ + 0x03, /*bmAttributes: Interrupt endpoint*/ + HID_IN_PACKET, /*wMaxPacketSize: 4 Byte max */ + 0x00, + 0x0A, /*bInterval: Polling Interval (10 ms)*/ + /* 34 */ + + /******** /IAD should be positioned just before the CDC interfaces ****** + IAD to associate the two CDC interfaces */ + + 0x08, /* bLength */ + 0x0B, /* bDescriptorType */ + 0x01, /* bFirstInterface */ + 0x02, /* bInterfaceCount */ + 0x02, /* bFunctionClass */ + 0x02, /* bFunctionSubClass */ + 0x01, /* bFunctionProtocol */ + 0x00, /* iFunction (Index of string descriptor describing this function) */ + + /*Interface Descriptor */ + 0x09, /* bLength: Interface Descriptor size */ + USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */ + /* Interface descriptor type */ + CDC_COM_INTERFACE, /* bInterfaceNumber: Number of Interface */ + 0x00, /* bAlternateSetting: Alternate setting */ + 0x01, /* bNumEndpoints: One endpoints used */ + 0x02, /* bInterfaceClass: Communication Interface Class */ + 0x02, /* bInterfaceSubClass: Abstract Control Model */ + 0x01, /* bInterfaceProtocol: Common AT commands */ + 0x01, /* iInterface: */ + + /*Header Functional Descriptor*/ + 0x05, /* bLength: Endpoint Descriptor size */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x00, /* bDescriptorSubtype: Header Func Desc */ + 0x10, /* bcdCDC: spec release number */ + 0x01, + + /*Call Management Functional Descriptor*/ + 0x05, /* bFunctionLength */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x01, /* bDescriptorSubtype: Call Management Func Desc */ + 0x00, /* bmCapabilities: D0+D1 */ + 0x02, /* bDataInterface: 2 */ + + /*ACM Functional Descriptor*/ + 0x04, /* bFunctionLength */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x02, /* bDescriptorSubtype: Abstract Control Management desc */ + 0x02, /* bmCapabilities */ + + /*Union Functional Descriptor*/ + 0x05, /* bFunctionLength */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x06, /* bDescriptorSubtype: Union func desc */ + 0x01, /* bMasterInterface: Communication class interface */ + 0x02, /* bSlaveInterface0: Data Class Interface */ + + /*Endpoint 2 Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ + CDC_CMD_EP, /* bEndpointAddress */ + 0x03, /* bmAttributes: Interrupt */ + LOBYTE(CDC_CMD_PACKET_SZE), /* wMaxPacketSize: */ + HIBYTE(CDC_CMD_PACKET_SZE), + 0xFF, /* bInterval: */ + + /*---------------------------------------------------------------------------*/ + + /*Data class interface descriptor*/ + 0x09, /* bLength: Endpoint Descriptor size */ + USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: */ + 0x02, /* bInterfaceNumber: Number of Interface */ + 0x00, /* bAlternateSetting: Alternate setting */ + 0x02, /* bNumEndpoints: Two endpoints used */ + 0x0A, /* bInterfaceClass: CDC */ + 0x00, /* bInterfaceSubClass: */ + 0x00, /* bInterfaceProtocol: */ + 0x00, /* iInterface: */ + + /*Endpoint OUT Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ + CDC_OUT_EP, /* bEndpointAddress */ + 0x02, /* bmAttributes: Bulk */ + LOBYTE(CDC_DATA_MAX_PACKET_SIZE), /* wMaxPacketSize: */ + HIBYTE(CDC_DATA_MAX_PACKET_SIZE), + 0x00, /* bInterval: ignore for Bulk transfer */ + + /*Endpoint IN Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ + CDC_IN_EP, /* bEndpointAddress */ + 0x02, /* bmAttributes: Bulk */ + LOBYTE(CDC_DATA_MAX_PACKET_SIZE), /* wMaxPacketSize: */ + HIBYTE(CDC_DATA_MAX_PACKET_SIZE), + 0x00, /* bInterval */ + +} ; + + +/** + * @} + */ + +/** @defgroup USBD_CDC_MSC_Private_Functions + * @{ + */ + +/** + * @brief USBD_MSC_CDC_Init + * Initialize the MSC & CDC interfaces + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_HID_CDC_Init (void *pdev, + uint8_t cfgidx) +{ + + /* HID initialization */ + USBD_HID_Init (pdev,cfgidx); + + /* CDC initialization */ + usbd_cdc_Init (pdev,cfgidx); + + return USBD_OK; + +} + +/** + * @brief USBD_MSC_CDC_Init + * DeInitialize the MSC/CDC interfaces + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_HID_CDC_DeInit (void *pdev, + uint8_t cfgidx) +{ + /* MSC De-initialization */ + USBD_HID_DeInit (pdev,cfgidx); + + /* CDC De-initialization */ + usbd_cdc_DeInit (pdev,cfgidx); + + + return USBD_OK; +} + +/** + * @brief USBD_MSC_CDC_Setup + * Handle the MSC/CDC specific requests + * @param pdev: instance + * @param req: usb requests + * @retval status + */ +static uint8_t USBD_HID_CDC_Setup (void *pdev, + USB_SETUP_REQ *req) +{ + switch (req->bmRequest & USB_REQ_RECIPIENT_MASK) + { + case USB_REQ_RECIPIENT_INTERFACE: + if (req->wIndex == HID_INTERFACE) + { + return (USBD_HID_Setup (pdev, req)); + } + else + { + return (usbd_cdc_Setup(pdev, req)); + } + + case USB_REQ_RECIPIENT_ENDPOINT: + if (req->wIndex == HID_IN_EP) + { + return (USBD_HID_Setup (pdev, req)); + } + else + { + return (usbd_cdc_Setup(pdev, req)); + } + } + return USBD_OK; +} + +/** + * @brief USBD_MSC_CDC_GetCfgDesc + * return configuration descriptor + * @param speed : current device speed + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +uint8_t *USBD_HID_CDC_GetConfigDescriptor (uint8_t speed, uint16_t *length) +{ + *length = sizeof (USBD_HID_CDC_CfgDesc); + return USBD_HID_CDC_CfgDesc; +} + +/** + * @brief USBD_MSC_CDC_DataIn + * handle data IN Stage + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_HID_CDC_DataIn (void *pdev, + uint8_t epnum) +{ + /*DataIN can be for CDC or MSC */ + + if (epnum == (CDC_IN_EP&~0x80) ) + { + return (usbd_cdc_DataIn(pdev, epnum)); + } + else + { + return (USBD_HID_DataIn(pdev, epnum)); + } +} + + +uint8_t USBD_HID_CDC_DataOut(void *pdev , uint8_t epnum) +{ + /*DataOut can be for CDC */ + return (usbd_cdc_DataOut(pdev, epnum)); +} + + +uint8_t USBD_HID_CDC_SOF (void *pdev) +{ + /*SOF processing needed for CDC */ + return (usbd_cdc_SOF(pdev)); +} + + +uint8_t USBD_HID_CDC_EP0_RxReady (void *pdev ) +{ + /*RxReady processing needed for CDC only*/ + return (usbd_cdc_EP0_RxReady(pdev)); +} + +/** + * @} + */ + + +/** + * @} + */ + + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2013 STMicroelectronics *****END OF FILE****/ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/inc/usbd_msc_hid_core.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/inc/usbd_msc_hid_core.h new file mode 100644 index 000000000..344b799eb --- /dev/null +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/inc/usbd_msc_hid_core.h @@ -0,0 +1,100 @@ +/** + ****************************************************************************** + * @file usbd_msc_hid_core.h + * @author MCD Application Team + * @version V1.2.0 + * @date 09-November-2015 + * @brief header file for the usbd_msc_hid_core.c file. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2015 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ + +#ifndef __USB_MSC_HID_CORE_H_ +#define __USB_MSC_HID_CORE_H_ + +#include "usbd_ioreq.h" + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup USBD_HID + * @brief This file is the Header file for USBD_msc.c + * @{ + */ +#define HID_INTERFACE 0x0 +#define MSC_INTERFACE 0x1 + +/** @defgroup USBD_HID_Exported_Defines + * @{ + */ +#define USB_MSC_HID_CONFIG_DESC_SIZ (USB_HID_CONFIG_DESC_SIZ -9 + USB_MSC_CONFIG_DESC_SIZ) +/** + * @} + */ + + +/** @defgroup USBD_CORE_Exported_TypesDefinitions + * @{ + */ + + +/** + * @} + */ + + + +/** @defgroup USBD_CORE_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_CORE_Exported_Variables + * @{ + */ + +extern USBD_Class_cb_TypeDef USBD_MSC_HID_cb; +/** + * @} + */ + +/** @defgroup USB_CORE_Exported_Functions + * @{ + */ + +/** + * @} + */ + +#endif /* __USB_HID_CORE_H_ */ +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/src/usbd_msc_hid_core.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/src/usbd_msc_hid_core.c new file mode 100644 index 000000000..2b04247ef --- /dev/null +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/hid_msc_wrapper/src/usbd_msc_hid_core.c @@ -0,0 +1,378 @@ +/** + ****************************************************************************** + * @file usbd_msc_hid_core.c + * @author MCD Application Team + * @version V1.2.0 + * @date 09-November-2015 + * @brief This file provides the HID core functions. + * + * @verbatim + * + * =================================================================== + * composite HID_MSC + * =================================================================== + * + * @note In HS mode and when the DMA is used, all variables and data structures + * dealing with the DMA during the transaction process should be 32-bit aligned. + * + * + * @endverbatim + * + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2015 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_msc_hid_core.h" +#include "usbd_msc_core.h" +#include "usbd_hid_core.h" +#include "usbd_desc.h" +#include "usbd_req.h" + + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @{ + */ + + +/** @defgroup USBD_HID + * @brief usbd core module + * @{ + */ + +/** @defgroup USBD_HID_Private_TypesDefinitions + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_HID_Private_Defines + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_HID_Private_Macros + * @{ + */ +/** + * @} + */ + + + + +/** @defgroup USBD_HID_Private_FunctionPrototypes + * @{ + */ + + +static uint8_t USBD_MSC_HID_Init (void *pdev, + uint8_t cfgidx); + +static uint8_t USBD_MSC_HID_DeInit (void *pdev, + uint8_t cfgidx); + +static uint8_t USBD_MSC_HID_Setup (void *pdev, + USB_SETUP_REQ *req); + +static uint8_t *USBD_MSC_HID_GetCfgDesc (uint8_t speed, uint16_t *length); + +static uint8_t USBD_MSC_HID_DataIn (void *pdev, uint8_t epnum); +static uint8_t USBD_MSC_HID_DataOut(void *pdev , uint8_t epnum); +/** + * @} + */ + +/** @defgroup USBD_HID_Private_Variables + * @{ + */ + +USBD_Class_cb_TypeDef USBD_MSC_HID_cb = +{ + USBD_MSC_HID_Init, + USBD_MSC_HID_DeInit, + USBD_MSC_HID_Setup, + NULL, /*EP0_TxSent*/ + NULL, /*EP0_RxReady*/ + USBD_MSC_HID_DataIn, /*DataIn*/ + USBD_MSC_HID_DataOut, /*DataOut*/ + NULL, /*SOF */ + NULL, + NULL, + USBD_MSC_HID_GetCfgDesc, +#ifdef USB_OTG_HS_CORE + USBD_MSC_HID_GetCfgDesc, /* use same config as per FS */ +#endif +}; + +#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED + #if defined ( __ICCARM__ ) /*!< IAR Compiler */ + #pragma data_alignment=4 + #endif +#endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ +/* USB HID device Configuration Descriptor */ +__ALIGN_BEGIN static uint8_t USBD_MSC_HID_CfgDesc[USB_MSC_HID_CONFIG_DESC_SIZ] __ALIGN_END = +{ + 0x09, /* bLength: Configuration Descriptor size */ + USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */ + USB_MSC_HID_CONFIG_DESC_SIZ, + /* wTotalLength: Bytes returned */ + 0x00, + 0x02, /*bNumInterfaces: 2 interface*/ + 0x01, /*bConfigurationValue: Configuration value*/ + 0x00, /*iConfiguration: Index of string descriptor describing + the configuration*/ + 0xE0, /*bmAttributes: bus powered and Support Remote Wake-up */ + 0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/ + + /************** Descriptor of Joystick Mouse interface ****************/ + /* 09 */ + 0x09, /*bLength: Interface Descriptor size*/ + USB_INTERFACE_DESCRIPTOR_TYPE,/*bDescriptorType: Interface descriptor type*/ + HID_INTERFACE, /*bInterfaceNumber: Number of Interface*/ + 0x00, /*bAlternateSetting: Alternate setting*/ + 0x01, /*bNumEndpoints*/ + 0x03, /*bInterfaceClass: HID*/ + 0x01, /*bInterfaceSubClass : 1=BOOT, 0=no boot*/ + 0x02, /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/ + 0, /*iInterface: Index of string descriptor*/ + /******************** Descriptor of Joystick Mouse HID ********************/ + /* 18 */ + 0x09, /*bLength: HID Descriptor size*/ + HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/ + 0x11, /*bcdHID: HID Class Spec release number*/ + 0x01, + 0x00, /*bCountryCode: Hardware target country*/ + 0x01, /*bNumDescriptors: Number of HID class descriptors to follow*/ + 0x22, /*bDescriptorType*/ + HID_MOUSE_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/ + 0x00, + /******************** Descriptor of Mouse endpoint ********************/ + /* 27 */ + 0x07, /*bLength: Endpoint Descriptor size*/ + USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/ + + HID_IN_EP, /*bEndpointAddress: Endpoint Address (IN)*/ + 0x03, /*bmAttributes: Interrupt endpoint*/ + HID_IN_PACKET, /*wMaxPacketSize: 4 Byte max */ + 0x00, + 0x0A, /*bInterval: Polling Interval (10 ms)*/ + /* 34 */ + + /******************** Mass Storage interface ********************/ + 0x09, /* bLength: Interface Descriptor size */ + 0x04, /* bDescriptorType: */ + MSC_INTERFACE, /* bInterfaceNumber: Number of Interface */ + 0x00, /* bAlternateSetting: Alternate setting */ + 0x02, /* bNumEndpoints*/ + 0x08, /* bInterfaceClass: MSC Class */ + 0x06, /* bInterfaceSubClass : SCSI transparent*/ + 0x50, /* nInterfaceProtocol */ + 0x05, /* iInterface: */ + /******************** Mass Storage Endpoints ********************/ + 0x07, /*Endpoint descriptor length = 7*/ + 0x05, /*Endpoint descriptor type */ + MSC_IN_EP, /*Endpoint address (IN, address 1) */ + 0x02, /*Bulk endpoint type */ + LOBYTE(MSC_MAX_PACKET), + HIBYTE(MSC_MAX_PACKET), + 0x00, /*Polling interval in milliseconds */ + + 0x07, /*Endpoint descriptor length = 7 */ + 0x05, /*Endpoint descriptor type */ + MSC_OUT_EP, /*Endpoint address (OUT, address 1) */ + 0x02, /*Bulk endpoint type */ + LOBYTE(MSC_MAX_PACKET), + HIBYTE(MSC_MAX_PACKET), + 0x00 /*Polling interval in milliseconds*/ +} ; + +/* Private function prototypes -----------------------------------------------*/ + +/********************************************* + MSC Device library callbacks +*********************************************/ +extern uint8_t USBD_MSC_Init (void *pdev, uint8_t cfgidx); +extern uint8_t USBD_MSC_DeInit (void *pdev, uint8_t cfgidx); +extern uint8_t USBD_MSC_Setup (void *pdev, USB_SETUP_REQ *req); +extern uint8_t USBD_MSC_DataIn (void *pdev, uint8_t epnum); +extern uint8_t USBD_MSC_DataOut (void *pdev, uint8_t epnum); +extern uint8_t *USBD_MSC_GetCfgDesc (uint8_t speed, uint16_t *length); +extern uint8_t USBD_MSC_CfgDesc[USB_MSC_CONFIG_DESC_SIZ]; + +/********************************************* + HID Device library callbacks +*********************************************/ +extern uint8_t USBD_HID_Init (void *pdev, uint8_t cfgidx); +extern uint8_t USBD_HID_DeInit (void *pdev, uint8_t cfgidx); +extern uint8_t USBD_HID_Setup (void *pdev, USB_SETUP_REQ *req); +extern uint8_t *USBD_HID_GetCfgDesc (uint8_t speed, uint16_t *length); +extern uint8_t USBD_HID_DataIn (void *pdev, uint8_t epnum); +extern uint8_t USBD_HID_DataOut (void *pdev, uint8_t epnum); + +/** + * @} + */ + +/** @defgroup USBD_MSC_HID_Private_Functions + * @{ + */ + +/** + * @brief USBD_MSC_HID_Init + * Initialize the MSC-HID interface + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_MSC_HID_Init (void *pdev, + uint8_t cfgidx) +{ + /* HID initialization */ + USBD_HID_Init (pdev,cfgidx); + + /* MSC initialization */ + USBD_MSC_Init (pdev,cfgidx); + + return USBD_OK; +} + +/** + * @brief USBD_MSC_HID_DeInit + * DeInitialize the MSC_HID layer + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_MSC_HID_DeInit (void *pdev, + uint8_t cfgidx) +{ + /* HID De-initialization */ + USBD_HID_DeInit (pdev,cfgidx); + + /* MSC De-initialization */ + USBD_MSC_DeInit (pdev,cfgidx); + + return USBD_OK; +} + +/** + * @brief USBD_MSC_HID_Setup + * Handle the MSC_HID specific requests + * @param pdev: instance + * @param req: usb requests + * @retval status + */ +static uint8_t USBD_MSC_HID_Setup (void *pdev, + USB_SETUP_REQ *req) +{ + switch (req->bmRequest & USB_REQ_RECIPIENT_MASK) + { + case USB_REQ_RECIPIENT_INTERFACE: + if (req->wIndex == HID_INTERFACE) + { + return (USBD_HID_Setup (pdev, req)); + } + else + { + return (USBD_MSC_Setup(pdev, req)); + } + + case USB_REQ_RECIPIENT_ENDPOINT: + if (req->wIndex == HID_IN_EP) + { + return (USBD_HID_Setup (pdev, req)); + } + else + { + return (USBD_MSC_Setup(pdev, req)); + } + } + return USBD_OK; +} + +/** + * @brief USBD_MSC_HID_GetCfgDesc + * return configuration descriptor + * @param speed : current device speed + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +static uint8_t *USBD_MSC_HID_GetCfgDesc (uint8_t speed, uint16_t *length) +{ + *length = sizeof (USBD_MSC_HID_CfgDesc); + return USBD_MSC_HID_CfgDesc; +} + +/** + * @brief USBD_MSC_HID_DataIn + * handle data IN Stage + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_MSC_HID_DataIn (void *pdev, + uint8_t epnum) +{ + /*DataIN can be for MSC or HID */ + + if (epnum == (MSC_IN_EP&~0x80) ) + { + return (USBD_MSC_DataIn(pdev, epnum)); + } + else + { + return (USBD_HID_DataIn(pdev, epnum)); + } +} + +/** + * @brief USBD_MSC_HID_DataOut + * handle data OUT Stage + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_MSC_HID_DataOut(void *pdev , uint8_t epnum) +{ + /*DataOut can be for MSC*/ + return (USBD_MSC_DataOut(pdev, epnum)); +} + +/** + * @} + */ + + +/** + * @} + */ + + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h similarity index 93% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h index 53c95fbe4..14d0d62fb 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_msc_bot.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief header for the usbd_msc_bot.c file ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h similarity index 87% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h index 6a22d7387..dfa5d6d79 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_msc_core.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief header for the usbd_msc_core.c file ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -29,7 +29,7 @@ #ifndef _USB_MSC_CORE_H_ #define _USB_MSC_CORE_H_ -#include "../../../Core/inc/usbd_ioreq.h" +#include "usbd_ioreq.h" /** @addtogroup USBD_MSC_BOT * @{ @@ -69,7 +69,7 @@ extern USBD_Class_cb_TypeDef USBD_MSC_cb; /** * @} */ -#endif // _USB_MSC_CORE_H_ +#endif /* _USB_MSC_CORE_H_ */ /** * @} */ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h similarity index 88% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h index c8f3a2adf..588f06edf 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_msc_data.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief header for the usbd_msc_data.c file ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -83,7 +83,7 @@ extern const uint8_t MSC_Mode_Sense10_data[] ; * @} */ -/** @defgroup USBD_INFO_Exported_FunctionsPrototype +/** @defgroup USBD_INFO_Exported_FunctionsPrototypes * @{ */ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h similarity index 91% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h index 904d662b6..1fd477fc7 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_msc_mem.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief header for the STORAGE DISK file file ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h similarity index 95% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h index 1b8e35af1..a66dfe14f 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_msc_scsi.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief header for the usbd_msc_scsi.c file ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c similarity index 93% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c index 7a9ca6492..c994a5cb6 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_msc_bot.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief This file provides all the BOT protocol core functions. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -80,7 +80,7 @@ uint8_t MSC_BOT_Status; #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ #include "definitions.h" -uint8_t MSC_BOT_Data[MSC_MEDIA_PACKET] __DMA; +uint8_t MSC_BOT_Data[MSC_MEDIA_PACKET] __DMA; // modified by OpenTX #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ @@ -329,7 +329,7 @@ void MSC_BOT_SendCSW (USB_OTG_CORE_HANDLE *pdev, (uint8_t *)&MSC_BOT_csw, BOT_CSW_LENGTH); - /* Prapare EP to Receive next Cmd */ + /* Prepare EP to Receive next Cmd */ DCD_EP_PrepareRx (pdev, MSC_OUT_EP, (uint8_t *)&MSC_BOT_cbw, diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c similarity index 94% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c index 5af6c40d4..bbe654a9d 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c @@ -2,8 +2,8 @@ ****************************************************************************** * @file usbd_msc_core.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief This file provides all the MSC core functions. * * @verbatim @@ -23,7 +23,7 @@ ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -102,7 +102,7 @@ uint8_t USBD_MSC_DataOut (void *pdev, uint8_t epnum); const uint8_t *USBD_MSC_GetCfgDesc (uint8_t speed, - uint16_t *length); + uint16_t *length); // modified by OpenTX #ifdef USB_OTG_HS_CORE uint8_t *USBD_MSC_GetOtherCfgDesc (uint8_t speed, @@ -458,7 +458,7 @@ uint8_t USBD_MSC_DataOut (void *pdev, * @param length : pointer data length * @retval pointer to descriptor buffer */ -const uint8_t *USBD_MSC_GetCfgDesc (uint8_t speed, uint16_t *length) +const uint8_t *USBD_MSC_GetCfgDesc (uint8_t speed, uint16_t *length) // modified by OpenTX { *length = sizeof (USBD_MSC_CfgDesc); return USBD_MSC_CfgDesc; diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c similarity index 90% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c index 1dc7d22e7..e1d3dda0b 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_msc_data.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief This file provides all the vital inquiry pages and sense data. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c similarity index 90% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c index b7f1d020b..08409a03c 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_msc_scsi.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief This file provides all the USBD SCSI layer functions. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -97,7 +97,7 @@ static int8_t SCSI_ReadFormatCapacity(uint8_t lun, uint8_t *params); static int8_t SCSI_ReadCapacity10(uint8_t lun, uint8_t *params); static int8_t SCSI_RequestSense (uint8_t lun, uint8_t *params); static int8_t SCSI_StartStopUnit(uint8_t lun, uint8_t *params); -static int8_t SCSI_AllowRemoval(uint8_t lun, uint8_t *params); +static int8_t SCSI_AllowRemoval(uint8_t lun, uint8_t *params); // modified by OpenTX static int8_t SCSI_ModeSense6 (uint8_t lun, uint8_t *params); static int8_t SCSI_ModeSense10 (uint8_t lun, uint8_t *params); static int8_t SCSI_Write10(uint8_t lun , uint8_t *params); @@ -147,7 +147,7 @@ int8_t SCSI_ProcessCmd(USB_OTG_CORE_HANDLE *pdev, return SCSI_StartStopUnit(lun, params); case SCSI_ALLOW_MEDIUM_REMOVAL: - return SCSI_AllowRemoval( lun, params); + return SCSI_AllowRemoval( lun, params); // ST lib 2.2.0 uses SCSI_StartStopUnit which doesn't work // modified by OpenTX case SCSI_MODE_SENSE6: return SCSI_ModeSense6 (lun, params); @@ -434,13 +434,13 @@ void SCSI_SenseCode(uint8_t lun, uint8_t sKey, uint8_t ASC) * @retval status */ -extern uint8_t lunReady[] ; +extern uint8_t lunReady[]; // modified by OpenTX static int8_t SCSI_StartStopUnit(uint8_t lun, uint8_t *params) { MSC_BOT_DataLen = 0; -#if defined(BOOT) +#if defined(BOOT) // modified by OpenTX if (lun < 2) #else if (lun < 1) @@ -511,6 +511,7 @@ static int8_t SCSI_Read10(uint8_t lun , uint8_t *params) } MSC_BOT_State = BOT_DATA_IN; + // SCSI_blk_addr *= SCSI_blk_size; // modified by OpenTX SCSI_blk_len *= SCSI_blk_size; /* cases 4,5 : Hi <> Dn */ @@ -582,6 +583,7 @@ static int8_t SCSI_Write10 (uint8_t lun , uint8_t *params) return -1; /* error */ } + // SCSI_blk_addr *= SCSI_blk_size; // modified by OpenTX SCSI_blk_len *= SCSI_blk_size; /* cases 3,11,13 : Hn,Ho <> D0 */ @@ -623,6 +625,13 @@ static int8_t SCSI_Verify10(uint8_t lun , uint8_t *params){ return -1; /* Error, Verify Mode Not supported*/ } + SCSI_blk_addr = (params[2] << 24) | \ + (params[3] << 16) | \ + (params[4] << 8) | \ + params[5]; + SCSI_blk_len = (params[7] << 8) | \ + params[8]; + if(SCSI_CheckAddressRange(lun, SCSI_blk_addr, SCSI_blk_len) < 0) { return -1; /* error */ @@ -641,7 +650,7 @@ static int8_t SCSI_Verify10(uint8_t lun , uint8_t *params){ */ static int8_t SCSI_CheckAddressRange (uint8_t lun , uint32_t blk_offset , uint16_t blk_nbr) { - if (USBD_STORAGE_fops->GetCapacity(lun, &SCSI_blk_nbr, &SCSI_blk_size) != 0) + if (USBD_STORAGE_fops->GetCapacity(lun, &SCSI_blk_nbr, &SCSI_blk_size) != 0) // modified by OpenTX { SCSI_SenseCode(lun, NOT_READY, MEDIUM_NOT_PRESENT); return -1; @@ -670,7 +679,7 @@ static int8_t SCSI_ProcessRead (uint8_t lun) if( USBD_STORAGE_fops->Read(lun , MSC_BOT_Data, - SCSI_blk_addr, + SCSI_blk_addr, // modified by OpenTX len / SCSI_blk_size) < 0) { @@ -685,7 +694,7 @@ static int8_t SCSI_ProcessRead (uint8_t lun) len); - SCSI_blk_addr += len / SCSI_blk_size; + SCSI_blk_addr += len / SCSI_blk_size; // modified by OpenTX SCSI_blk_len -= len; /* case 6 : Hi = Di */ @@ -713,7 +722,7 @@ static int8_t SCSI_ProcessWrite (uint8_t lun) if(USBD_STORAGE_fops->Write(lun , MSC_BOT_Data, - SCSI_blk_addr, + SCSI_blk_addr, // modified by OpenTX len / SCSI_blk_size) < 0) { SCSI_SenseCode(lun, HARDWARE_ERROR, WRITE_FAULT); @@ -721,7 +730,7 @@ static int8_t SCSI_ProcessWrite (uint8_t lun) } - SCSI_blk_addr += len / SCSI_blk_size; + SCSI_blk_addr += len / SCSI_blk_size; // modified by OpenTX SCSI_blk_len -= len; /* case 12 : Ho = Do */ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h similarity index 90% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h index b1a20f947..9809f3596 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_conf_template.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 30-June-2015 * @brief usb device configuration template file ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h similarity index 87% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h index a49985ba2..f31bb27e2 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_core.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief Header file for usbd_core.c ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -30,9 +30,9 @@ #define __USBD_CORE_H /* Includes ------------------------------------------------------------------*/ -#include "usbd_conf.h" -#include "../../../STM32_USB_OTG_Driver/inc/usb_dcd.h" +#include "usb_dcd.h" #include "usbd_def.h" +#include "usbd_conf.h" /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY * @{ @@ -92,7 +92,7 @@ void USBD_Init(USB_OTG_CORE_HANDLE *pdev, USB_OTG_CORE_ID_TypeDef coreID, const USBD_DEVICE *pDevice, const USBD_Class_cb_TypeDef *class_cb, - const USBD_Usr_cb_TypeDef *usr_cb); + const USBD_Usr_cb_TypeDef *usr_cb); // modified by OpenTX USBD_Status USBD_DeInit(USB_OTG_CORE_HANDLE *pdev); diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h similarity index 91% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h index 7c0cff76b..5b10d2ca3 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_def.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief general defines for the usb device library ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -93,7 +93,7 @@ #define USB_DESC_TYPE_ENDPOINT 5 #define USB_DESC_TYPE_DEVICE_QUALIFIER 6 #define USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION 7 - +#define USB_DESC_TYPE_BOS 0x0F #define USB_CONFIG_REMOTE_WAKEUP 2 #define USB_CONFIG_SELF_POWERED 1 @@ -122,8 +122,8 @@ #define SWAPBYTE(addr) (((uint16_t)(*((uint8_t *)(addr)))) + \ (((uint16_t)(*(((uint8_t *)(addr)) + 1))) << 8)) -#define LOBYTE(x) ((uint8_t)(x & 0x00FF)) -#define HIBYTE(x) ((uint8_t)((x & 0xFF00) >>8)) +#define LOBYTE(x) ((uint8_t)((x) & 0x00FF)) +#define HIBYTE(x) ((uint8_t)(((x) & 0xFF00) >>8)) /** * @} */ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h similarity index 90% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h index 8ffeb328a..896f26db0 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_ioreq.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief header file for the usbd_ioreq.c file ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -84,7 +84,7 @@ USBD_Status USBD_CtlSendData (USB_OTG_CORE_HANDLE *pdev, const uint8_t *buf, - uint16_t len); + uint16_t len); // modified by OpenTX USBD_Status USBD_CtlContinueSendData (USB_OTG_CORE_HANDLE *pdev, uint8_t *pbuf, diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h similarity index 90% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h index 87b0f5444..9ba30ab56 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_req.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief header file for the usbd_req.c file ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -31,9 +31,9 @@ #define __USB_REQUEST_H_ /* Includes ------------------------------------------------------------------*/ -#include "usbd_conf.h" #include "usbd_def.h" #include "usbd_core.h" +#include "usbd_conf.h" /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h similarity index 85% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h index 9ee54928b..bb42f277d 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_usr.h * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief Header file for usbd_usr.c ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -30,7 +30,7 @@ #define __USBD_USR_H__ /* Includes ------------------------------------------------------------------*/ -#include "usbd_core.h" +#include "usbd_ioreq.h" /** @addtogroup USBD_USER @@ -51,9 +51,9 @@ * @{ */ -extern const USBD_Usr_cb_TypeDef USR_cb; -extern const USBD_Usr_cb_TypeDef USR_FS_cb; -extern const USBD_Usr_cb_TypeDef USR_HS_cb; +extern const USBD_Usr_cb_TypeDef USR_cb; // modified by OpenTX +extern const USBD_Usr_cb_TypeDef USR_FS_cb; // modified by OpenTX +extern const USBD_Usr_cb_TypeDef USR_HS_cb; // modified by OpenTX diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c similarity index 88% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c index 7e9fc3b99..6eb1d2195 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_core.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief This file provides all the USBD core functions. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -111,9 +111,9 @@ const USBD_DCD_INT_cb_TypeDef USBD_DCD_INT_cb = USBD_DevConnected, USBD_DevDisconnected, #endif -}; +}; // modified by OpenTX -const USBD_DCD_INT_cb_TypeDef * const USBD_DCD_INT_fops = &USBD_DCD_INT_cb; +const USBD_DCD_INT_cb_TypeDef * const USBD_DCD_INT_fops = &USBD_DCD_INT_cb; // modified by OpenTX /** * @} */ @@ -124,7 +124,7 @@ const USBD_DCD_INT_cb_TypeDef * const USBD_DCD_INT_fops = &USBD_DCD_INT_cb; /** * @brief USBD_Init -* Initailizes the device stack and load the class driver +* Initializes the device stack and load the class driver * @param pdev: device instance * @param core_address: USB OTG core ID * @param class_cb: Class callback structure address @@ -135,7 +135,7 @@ void USBD_Init(USB_OTG_CORE_HANDLE *pdev, USB_OTG_CORE_ID_TypeDef coreID, const USBD_DEVICE *pDevice, const USBD_Class_cb_TypeDef *class_cb, - const USBD_Usr_cb_TypeDef *usr_cb) + const USBD_Usr_cb_TypeDef *usr_cb) // modified by OpenTX { /* Hardware Init */ USB_OTG_BSP_Init(pdev); @@ -154,7 +154,8 @@ void USBD_Init(USB_OTG_CORE_HANDLE *pdev, pdev->dev.usr_cb->Init(); /* Force Device Mode*/ - USB_OTG_SetCurrentMode(pdev, DEVICE_MODE); + // IMPORTANT: without this here, the USB works upon radio start only in 50% cases + USB_OTG_SetCurrentMode(pdev, DEVICE_MODE); // modified by OpenTX /* Enable Interrupts */ USB_OTG_BSP_EnableInterrupt(pdev); @@ -162,14 +163,14 @@ void USBD_Init(USB_OTG_CORE_HANDLE *pdev, /** * @brief USBD_DeInit -* Deinitialize USB device library +* Re-Initialize the device library * @param pdev: device instance * @retval status: status */ USBD_Status USBD_DeInit(USB_OTG_CORE_HANDLE *pdev) { /*Disable Interrupts*/ - USB_OTG_BSP_DisableInterrupt(pdev); + USB_OTG_BSP_DisableInterrupt(pdev); // modified by OpenTX USB_OTG_DisableGlobalInt(pdev); USB_OTG_BSP_Deinit(pdev); return USBD_OK; @@ -253,6 +254,11 @@ static uint8_t USBD_DataOutStage(USB_OTG_CORE_HANDLE *pdev , uint8_t epnum) { pdev->dev.class_cb->DataOut(pdev, epnum); } + + else + { + /* Do Nothing */ + } return USBD_OK; } @@ -283,6 +289,12 @@ static uint8_t USBD_DataInStage(USB_OTG_CORE_HANDLE *pdev , uint8_t epnum) USBD_CtlContinueSendData (pdev, ep->xfer_buff, ep->rem_data_len); + + /* Start the transfer */ + DCD_EP_PrepareRx (pdev, + 0, + NULL, + 0); } else { /* last packet is MPS multiple, so send ZLP packet */ @@ -293,6 +305,12 @@ static uint8_t USBD_DataInStage(USB_OTG_CORE_HANDLE *pdev , uint8_t epnum) USBD_CtlContinueSendData(pdev , NULL, 0); ep->ctl_data_len = 0; + + /* Start the transfer */ + DCD_EP_PrepareRx (pdev, + 0, + NULL, + 0); } else { @@ -315,6 +333,11 @@ static uint8_t USBD_DataInStage(USB_OTG_CORE_HANDLE *pdev , uint8_t epnum) (pdev->dev.device_status == USB_OTG_CONFIGURED)) { pdev->dev.class_cb->DataIn(pdev, epnum); + } + + else + { + /* Do Nothing */ } return USBD_OK; } diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c similarity index 90% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c index ae06adb33..8feb4f198 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_ioreq.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief This file provides the IO requests APIs for control endpoints. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -94,7 +94,7 @@ */ USBD_Status USBD_CtlSendData (USB_OTG_CORE_HANDLE *pdev, const uint8_t *pbuf, - uint16_t len) + uint16_t len) // modified by OpenTX { USBD_Status ret = USBD_OK; @@ -176,7 +176,7 @@ USBD_Status USBD_CtlContinueRx (USB_OTG_CORE_HANDLE *pdev, } /** * @brief USBD_CtlSendStatus -* send zero lzngth packet on the ctl pipe +* send zero length packet on the ctl pipe * @param pdev: USB OTG device instance * @retval status */ @@ -196,7 +196,7 @@ USBD_Status USBD_CtlSendStatus (USB_OTG_CORE_HANDLE *pdev) /** * @brief USBD_CtlReceiveStatus -* receive zero lzngth packet on the ctl pipe +* receive zero length packet on the ctl pipe * @param pdev: USB OTG device instance * @retval status */ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c similarity index 91% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c index cd7a409d9..296afc818 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usbd_req.c * @author MCD Application Team - * @version V1.1.0 - * @date 19-March-2012 + * @version V1.2.0 + * @date 09-November-2015 * @brief This file provides the standard USB requests following chapter 9. ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -27,9 +27,8 @@ /* Includes ------------------------------------------------------------------*/ #include "usbd_req.h" - -#include "usbd_desc.h" #include "usbd_ioreq.h" +#include "usbd_desc.h" /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY @@ -84,7 +83,7 @@ __ALIGN_BEGIN uint32_t USBD_ep_status __ALIGN_END = 0; #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ -__ALIGN_BEGIN const uint32_t USBD_default_cfg __ALIGN_END = 0; +__ALIGN_BEGIN const uint32_t USBD_default_cfg __ALIGN_END = 0; // modified by OpenTX #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ @@ -93,12 +92,6 @@ __ALIGN_BEGIN const uint32_t USBD_default_cfg __ALIGN_END = 0; #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ __ALIGN_BEGIN uint32_t USBD_cfg_status __ALIGN_END = 0; -#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED - #if defined ( __ICCARM__ ) /*!< IAR Compiler */ - #pragma data_alignment=4 - #endif -#endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ -__ALIGN_BEGIN uint8_t USBD_StrDesc[USB_MAX_STR_DESC_SIZ] __ALIGN_END ; /** * @} */ @@ -242,9 +235,15 @@ USBD_Status USBD_StdEPReq (USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req) ep_addr = LOBYTE(req->wIndex); - switch (req->bRequest) + /* Check the class specific requests before going to standard request */ + if ((req->bmRequest & USB_REQ_TYPE_MASK) == USB_REQ_TYPE_CLASS) { + pdev->dev.class_cb->Setup (pdev, req); + return ret; + } + switch (req->bRequest) + { case USB_REQ_SET_FEATURE : switch (pdev->dev.device_status) @@ -341,6 +340,12 @@ USBD_Status USBD_StdEPReq (USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req) USBD_ep_status = 0x0000; } } + + else + { + /* Do Nothing */ + } + USBD_CtlSendData (pdev, (uint8_t *)&USBD_ep_status, 2); @@ -369,16 +374,17 @@ static void USBD_GetDescriptor(USB_OTG_CORE_HANDLE *pdev, { uint16_t len; uint8_t *pbuf; - + len = req->wLength ; switch (req->wValue >> 8) { +#if (USBD_LPM_ENABLED == 1) + case USB_DESC_TYPE_BOS: + pbuf = pdev->pDesc->GetBOSDescriptor(pdev->dev_speed, &len); + break; +#endif case USB_DESC_TYPE_DEVICE: pbuf = pdev->dev.usr_device->GetDeviceDescriptor(pdev->cfg.speed, &len); - if ((req->wLength == 64) ||( pdev->dev.device_status == USB_OTG_DEFAULT)) - { - len = 8; - } break; case USB_DESC_TYPE_CONFIGURATION: @@ -428,7 +434,7 @@ static void USBD_GetDescriptor(USB_OTG_CORE_HANDLE *pdev, #else USBD_CtlError(pdev , req); return; -#endif /* USBD_CtlError(pdev , req); */ +#endif /* USBD_CtlError(pdev , req)*/ } break; case USB_DESC_TYPE_DEVICE_QUALIFIER: @@ -474,8 +480,6 @@ static void USBD_GetDescriptor(USB_OTG_CORE_HANDLE *pdev, USBD_CtlError(pdev , req); return; #endif - - default: USBD_CtlError(pdev , req); return; @@ -627,7 +631,7 @@ static void USBD_GetConfig(USB_OTG_CORE_HANDLE *pdev, USBD_CtlSendData (pdev, (const uint8_t *)&USBD_default_cfg, - 1); + 1); // modified by OpenTX break; case USB_OTG_CONFIGURED: @@ -713,31 +717,38 @@ static void USBD_SetFeature(USB_OTG_CORE_HANDLE *pdev, test_mode = req->wIndex >> 8; switch (test_mode) { - case 1: // TEST_J + case 1: /* TEST_J */ dctl.b.tstctl = 1; break; - case 2: // TEST_K + case 2: /* TEST_K */ dctl.b.tstctl = 2; break; - case 3: // TEST_SE0_NAK + case 3: /* TEST_SE0_NAK */ dctl.b.tstctl = 3; break; - case 4: // TEST_PACKET + case 4: /* TEST_PACKET */ dctl.b.tstctl = 4; break; - case 5: // TEST_FORCE_ENABLE + case 5: /* TEST_FORCE_ENABLE */ dctl.b.tstctl = 5; break; + + default : + dctl.b.tstctl = 1; + break; } SET_TEST_MODE = dctl; pdev->dev.test_mode = 1; USBD_CtlSendStatus(pdev); } - + else + { + /* Do Nothing */ + } } diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Release_Notes.html b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Release_Notes.html similarity index 85% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Release_Notes.html rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Release_Notes.html index 60f8ab872..9c70d65f0 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Release_Notes.html +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_Device_Library/Release_Notes.html @@ -1,5 +1,6 @@ + - - - -Release Notes for STM32F105/7xx, STM32F2xx and STM32F4xx USB Device LibraryRelease Notes for STM32F105/7xx, STM32F2xx and STM32F4xx USB Device Library + + + + + - +
@@ -899,28 +899,49 @@ ul

Release Notes for STM32F105/7xx, STM32F2xx and STM32F4xx USB Device Library

Copyright - 2012 STMicroelectronics

+ 2015 STMicroelectronics

 

- +
-

Contents

-
    -
  1. Update History
  2. -
  3. License
  4. -
-

Update History

V1.1.0 / 19-March-2012

+ + +

Update History

V1.2.0 / 09-November-2015

Main +Changes

+ + + + + + + + + + + + + + + + + +
  • Add composite class
  • +
  • Core Driver
  • +
    • usbd_core.c: +Fix bug of unsupported premature Host Out stage during data In stage +(ie. when endpoint 0 maximum data size is 8 and Host requests +GetDeviceDescriptor for the first time)
    • usbd_req.c: 
      • Fix bug of unsupported Endpoint Class requests (ie. Audio SetCurrent request for endpoint sampling rate setting)
      • Initialize the len variable before the switch case in USBD_GetDescriptor function
  • HID Class
    • Add Polling time API USBD_HID_GetPollingInterval() to query this period for HS and FS
  • CDC Class
    • usbd_cdc.core.c: 
      • Fix bug for not handling the ZLP (zero length packet). A new state to handle the ZLP case are added
      • Remove USB_REQ_GET_DESCRIPTOR case Handling from CDC-specific SETUP requests
      • Call USBD_CtlSendData() inside the if block in the  USB_REQ_GET_DESCRIPTOR case
  • MSC Class
    • usbd_msc_scsi.c: 
      • Define values for SCSI_blk_addr, SCSI_blk_len variables.

V1.1.0 / 19-March-2012

Main Changes

-
  • Official support of STM32F4xx devices
  • All source files: license disclaimer text update and add link to the License file on ST Internet.
  • Handle test mode in the set feature request
  • Handle dynamically the USB SELF POWERED feature
  • Handle correctly the USBD_CtlError process to take into account error during Control OUT stage
  • Miscellaneous bug fix

V1.0.0 / 22-July-2011

Main +

  • Official support of STM32F4xx devices
  • All source files: license disclaimer text update and add link to the License file on ST Internet.
  • Handle test mode in the set feature request
  • Handle dynamically the USB SELF POWERED feature
  • Handle correctly the USBD_CtlError process to take into account error during Control OUT stage
  • Miscellaneous bug fix

V1.0.0 / 22-July-2011

Main Changes

  • First official version for STM32F105/7xx and STM32F2xx devices

-

License

+

License

Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); You may not use this package except in compliance with the License. You may obtain a copy of the License at:


Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html similarity index 79% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html index 1116edd3e..4aa1e5aa9 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html @@ -1,5 +1,6 @@ - + + - - - -Release Notes for STM32F105/7xx, STM32F2xx and STM32F4xx USB OTG DriverRelease Notes for STM32F105/7xx, STM32F2xx and STM32F4xx USB OTG Driver + + + + + - +
@@ -899,8 +899,8 @@ ul

Release Notes for STM32F105/7xx, STM32F2xx and STM32F4xx USB OTG Driver

Copyright - 2012 STMicroelectronics

-

+ 2015 STMicroelectronics

+

@@ -908,19 +908,21 @@ ul
-

Contents

-
    -
  1. Update History
  2. -
  3. License
  4. -
-

Update History

V2.1.0 / 19-March-2012

+

Update History

V2.2.0 / 09-November-2015

Main +Changes

+ +
    +
  • Add support of  STM32F469/479xx and  STM32F446 devices
  • +
  • usb_dcd_int.c
    • Bug +Fix: Masking the TxFIFOempty interrupt of the endpoint after +finishing writing data packet to TxFIFO in DCD_WriteEmptyTxFifo function
    • Bug Fix: The USB TRD (Turnaround) is configured depending on AHB frequency used by application.
    • Bug Fix: Handle multi-packet for OUT transfer with DMA in HS mode
    • Remove CLEAR_IN_EP_INTR(epnum, emptyintr) in USBD_OTG_EP1IN_ISR_Handler and DCD_HandleInEP_ISR
    • Correct PCFCCTL register access
  • usb_core.c
    • USB_OTG_HC_Halt function: Modify Channel halt function to disable the channel at the end
    • Correct PCFCCTL register access
    • Bug Fix: Handle multi-packet for OUT transfer with DMA in HS mode
    • Bug Fix: Keep the disconnect interrupt maskedIn function  USB_OTG_EnableHostInt for correct handling of connection/disconnection
    • In function USB_OTG_ResetPort change reset time to 100ms instead of 10ms for better stability during enumeration
  • usb_hcd.c
    •  Add function HCD_IsPortEnabled to check portenabled for correct handling of connection/disconnection
  • usb_hcd_int.c 
    • Remove USB_OTG_ResetPort(pdev) calling 
    • Update USB_OTG_USBH_handle_port_ISR for correct handling of connection/disconnection
    • Disconnect interrupt is unmasked after a connection
    • Creation of PortEnabled event (need to wait for this event before starting enumerating device)
    • Halt channel and restart transfer is removed When using DMA (HS) In case of NAK or NYET in USB_OTG_USBH_handle_hc_n_Out_ISR and USB_OTG_USBH_handle_hc_n_In_ISR
    • Clearing the NAK interrupt flag before re-enabling the channel for a new transfer in USB_OTG_USBH_handle_hc_n_In_ISR function

V2.1.0 / 19-March-2012

Main Changes

-
  • Official support of STM32F4xx devices
  • All source files: license disclaimer text update and add link to the License file on ST Internet
  • Unmask Session request interrupt to handle the connect event during the core start-up
  • Remove any reference to the USB HS external I2C PHY
  • Update optimization pragma for AR Compiler
  • Handle Correctly the Low Speed device connection in HS mode
  • Add a wrapper to isolate the library from the low level driver: connection done through ISR structure
  • Miscellaneous bug fix

V2.0.0 / 22-July-2011

Main +

  • Official support of STM32F4xx devices
  • All source files: license disclaimer text update and add link to the License file on ST Internet
  • Unmask Session request interrupt to handle the connect event during the core start-up
  • Remove any reference to the USB HS external I2C PHY
  • Update optimization pragma for AR Compiler
  • Handle Correctly the Low Speed device connection in HS mode
  • Add a wrapper to isolate the library from the low level driver: connection done through ISR structure
  • Miscellaneous bug fix

V2.0.0 / 22-July-2011

Main Changes

-
  • Second official version supporting STM32F105/7 and STM32F2xx devices
  • Rename the Library from "STM32_USB_HOST_Driver" to "STM32_USB_OTG_Driver"
  • Add support for STM32F2xx devices
  • Add support for Device and OTG modes
  • Change HCD layer to support High speed core
  • Change the Low level driver to support multi core support for Host mode
  • Add Stop mechanism for Host and Device modes
  • Change VBUS enabling method, to use the external or the internal VBUS when using the ULPI

V1.0.0 - 11/29/2010

-
  • Created 

License

+
  • Second official version supporting STM32F105/7 and STM32F2xx devices
  • Rename the Library from "STM32_USB_HOST_Driver" to "STM32_USB_OTG_Driver"
  • Add support for STM32F2xx devices
  • Add support for Device and OTG modes
  • Change HCD layer to support High speed core
  • Change the Low level driver to support multi core support for Host mode
  • Add Stop mechanism for Host and Device modes
  • Change VBUS enabling method, to use the external or the internal VBUS when using the ULPI

V1.0.0 - 11/29/2010

+
  • Created 

License

Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); You may not use this package except in compliance with the License. You may obtain a copy of the License at:


Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h similarity index 77% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h index 944683a35..ccf2232dc 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_bsp.h * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief Specific api's relative to the used hardware platform ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -78,20 +78,24 @@ void BSP_Init(void); void USB_OTG_BSP_Init (USB_OTG_CORE_HANDLE *pdev); -void USB_OTG_BSP_Deinit(USB_OTG_CORE_HANDLE *pdev); +void USB_OTG_BSP_Deinit(USB_OTG_CORE_HANDLE *pdev); // modified by OpenTX void USB_OTG_BSP_uDelay (const uint32_t usec); void USB_OTG_BSP_mDelay (const uint32_t msec); void USB_OTG_BSP_EnableInterrupt (USB_OTG_CORE_HANDLE *pdev); -void USB_OTG_BSP_DisableInterrupt (USB_OTG_CORE_HANDLE *pdev); +void USB_OTG_BSP_TimerIRQ (void); +void USB_OTG_BSP_DisableInterrupt (USB_OTG_CORE_HANDLE *pdev); // modified by OpenTX #ifdef USE_HOST_MODE void USB_OTG_BSP_ConfigVBUS(USB_OTG_CORE_HANDLE *pdev); void USB_OTG_BSP_DriveVBUS(USB_OTG_CORE_HANDLE *pdev,uint8_t state); -#endif +void USB_OTG_BSP_Resume(USB_OTG_CORE_HANDLE *pdev) ; +void USB_OTG_BSP_Suspend(USB_OTG_CORE_HANDLE *pdev); + +#endif /* USE_HOST_MODE */ /** * @} */ -#endif //__USB_BSP__H__ +#endif /* __USB_BSP__H__ */ /** * @} diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h similarity index 96% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h index 2e415e126..23a6c62d3 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_conf.h * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief General low level driver configuration ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h similarity index 93% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h index 73fb713ef..c63d6ae4a 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_core.h * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief Header of the Core Layer ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -195,17 +195,11 @@ typedef struct _Device_TypeDef uint8_t *(*GetSerialStrDescriptor)( uint8_t speed , uint16_t *length); uint8_t *(*GetConfigurationStrDescriptor)( uint8_t speed , uint16_t *length); uint8_t *(*GetInterfaceStrDescriptor)( uint8_t speed , uint16_t *length); -} USBD_DEVICE, *pUSBD_DEVICE; -//typedef struct USB_OTG_hPort -//{ -// void (*Disconnect) (void *phost); -// void (*Connect) (void *phost); -// uint8_t ConnStatus; -// uint8_t DisconnStatus; -// uint8_t ConnHandled; -// uint8_t DisconnHandled; -//} USB_OTG_hPort_TypeDef; +#if (USBD_LPM_ENABLED == 1) + uint8_t *(*GetBOSDescriptor)( uint8_t speed , uint16_t *length); +#endif +} USBD_DEVICE, *pUSBD_DEVICE; typedef struct _Device_cb { @@ -222,9 +216,9 @@ typedef struct _Device_cb uint8_t (*IsoINIncomplete) (void *pdev); uint8_t (*IsoOUTIncomplete) (void *pdev); - const uint8_t *(*GetConfigDescriptor)( uint8_t speed , uint16_t *length); + const uint8_t *(*GetConfigDescriptor)( uint8_t speed , uint16_t *length); // modified by OpenTX #ifdef USB_OTG_HS_CORE - const uint8_t *(*GetOtherConfigDescriptor)( uint8_t speed , uint16_t *length); + const uint8_t *(*GetOtherConfigDescriptor)( uint8_t speed , uint16_t *length); // modified by OpenTX #endif #ifdef USB_SUPPORT_USER_STRING_DESC @@ -267,20 +261,20 @@ typedef struct _DCD const USBD_DEVICE *usr_device; uint8_t *pConfig_descriptor; } -DCD_DEV , *DCD_PDEV; +DCD_DEV , *DCD_PDEV; // modified by OpenTX typedef struct _HCD { uint8_t Rx_Buffer [MAX_DATA_LENGTH]; __IO uint32_t ConnSts; + __IO uint32_t PortEnabled; __IO uint32_t ErrCnt[USB_OTG_MAX_TX_FIFOS]; __IO uint32_t XferCnt[USB_OTG_MAX_TX_FIFOS]; __IO HC_STATUS HC_Status[USB_OTG_MAX_TX_FIFOS]; __IO URB_STATE URB_State[USB_OTG_MAX_TX_FIFOS]; USB_OTG_HC hc [USB_OTG_MAX_TX_FIFOS]; uint16_t channel [USB_OTG_MAX_TX_FIFOS]; -// USB_OTG_hPort_TypeDef *port_cb; } HCD_DEV , *USB_OTG_USBH_PDEV; diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h similarity index 92% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h index 5027c878c..a35125879 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_dcd.h * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief Peripheral Driver Header file ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -32,6 +32,7 @@ /* Includes ------------------------------------------------------------------*/ #include "usb_core.h" + /** @addtogroup USB_OTG_DRIVER * @{ */ @@ -128,7 +129,7 @@ uint32_t DCD_EP_PrepareRx ( USB_OTG_CORE_HANDLE *pdev, uint32_t DCD_EP_Tx (USB_OTG_CORE_HANDLE *pdev, uint8_t ep_addr, const uint8_t *pbuf, - uint32_t buf_len); + uint32_t buf_len); // modified by OpenTX uint32_t DCD_EP_Stall (USB_OTG_CORE_HANDLE *pdev, uint8_t epnum); uint32_t DCD_EP_ClrStall (USB_OTG_CORE_HANDLE *pdev, @@ -149,7 +150,7 @@ void DCD_SetEPStatus (USB_OTG_CORE_HANDLE *pdev , */ -#endif //__DCD_H__ +#endif /* __DCD_H__ */ /** diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h similarity index 83% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h index 351eeb232..221e15855 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_dcd_int.h * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief Peripheral Device Interface Layer ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -65,7 +65,7 @@ typedef struct _USBD_DCD_INT }USBD_DCD_INT_cb_TypeDef; -extern const USBD_DCD_INT_cb_TypeDef * const USBD_DCD_INT_fops; +extern const USBD_DCD_INT_cb_TypeDef * const USBD_DCD_INT_fops; // modified by OpenTX /** * @} */ @@ -90,7 +90,7 @@ extern const USBD_DCD_INT_cb_TypeDef * const USBD_DCD_INT_fops; #define CLEAR_OUT_EP_INTR(epnum,intr) \ doepint.d32=0; \ doepint.b.intr = 1; \ - USB_OTG_WRITE_REG32(&pdev->regs.OUTEP_REGS[epnum]->DOEPINT,doepint.d32); + USB_OTG_WRITE_REG32(&pdev->regs.OUTEP_REGS[(epnum)]->DOEPINT,doepint.d32); /** * @} @@ -108,13 +108,14 @@ extern const USBD_DCD_INT_cb_TypeDef * const USBD_DCD_INT_fops; */ uint32_t USBD_OTG_ISR_Handler (USB_OTG_CORE_HANDLE *pdev); - +uint32_t USBD_OTG_EP1OUT_ISR_Handler (USB_OTG_CORE_HANDLE *pdev); +uint32_t USBD_OTG_EP1IN_ISR_Handler (USB_OTG_CORE_HANDLE *pdev); /** * @} */ -#endif // USB_DCD_INT_H__ +#endif /* USB_DCD_INT_H__ */ /** * @} diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h similarity index 91% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h index 8e0d264f4..8e2782a3f 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_defines.h * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief Header of the Core Layer ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -220,10 +220,10 @@ typedef enum /** @defgroup Internal_Macro's * @{ */ -#define USB_OTG_READ_REG32(reg) (*(__IO uint32_t *)reg) -#define USB_OTG_WRITE_REG32(reg,value) (*(__IO uint32_t *)reg = value) +#define USB_OTG_READ_REG32(reg) (*(__IO uint32_t *)(reg)) +#define USB_OTG_WRITE_REG32(reg,value) (*(__IO uint32_t *)(reg) = (value)) #define USB_OTG_MODIFY_REG32(reg,clear_mask,set_mask) \ - USB_OTG_WRITE_REG32(reg, (((USB_OTG_READ_REG32(reg)) & ~clear_mask) | set_mask ) ) + USB_OTG_WRITE_REG32((reg), (((USB_OTG_READ_REG32(reg)) & ~(clear_mask)) | (set_mask)) ) /******************************************************************************** ENUMERATION TYPE @@ -235,7 +235,7 @@ enum USB_OTG_SPEED { USB_SPEED_HIGH }; -#endif //__USB_DEFINES__H__ +#endif /* __USB_DEFINES__H__ */ /** diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h similarity index 90% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h index ca2ba3c37..4136f5a65 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_hcd.h * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief Host layer Header file ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -86,6 +86,8 @@ uint32_t HCD_SubmitRequest (USB_OTG_CORE_HANDLE *pdev , uint32_t HCD_GetCurrentSpeed (USB_OTG_CORE_HANDLE *pdev); uint32_t HCD_ResetPort (USB_OTG_CORE_HANDLE *pdev); uint32_t HCD_IsDeviceConnected (USB_OTG_CORE_HANDLE *pdev); +uint32_t HCD_IsPortEnabled (USB_OTG_CORE_HANDLE *pdev); + uint32_t HCD_GetCurrentFrame (USB_OTG_CORE_HANDLE *pdev) ; URB_STATE HCD_GetURB_State (USB_OTG_CORE_HANDLE *pdev, uint8_t ch_num); uint32_t HCD_GetXferCnt (USB_OTG_CORE_HANDLE *pdev, uint8_t ch_num); diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h similarity index 90% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h index 5bc5b8a88..2219407a1 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_hcd_int.h * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief Peripheral Device Interface Layer ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -60,6 +60,8 @@ typedef struct _USBH_HCD_INT uint8_t (* SOF) (USB_OTG_CORE_HANDLE *pdev); uint8_t (* DevConnected) (USB_OTG_CORE_HANDLE *pdev); uint8_t (* DevDisconnected) (USB_OTG_CORE_HANDLE *pdev); + uint8_t (* DevPortEnabled) (USB_OTG_CORE_HANDLE *pdev); + uint8_t (* DevPortDisabled) (USB_OTG_CORE_HANDLE *pdev); }USBH_HCD_INT_cb_TypeDef; diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h similarity index 89% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h index 54d35f996..34ca6b16b 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_otg.h * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief OTG Core Header ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h similarity index 93% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h index 323e87056..e9c62080d 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_regs.h * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief hardware registers ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -80,7 +80,7 @@ /** @defgroup __USB_OTG_Core_register * @{ */ -typedef struct _USB_OTG_GREGS //000h +typedef struct _USB_OTG_GREGS /* 000h */ { __IO uint32_t GOTGCTL; /* USB_OTG Control and Status Register 000h*/ __IO uint32_t GOTGINT; /* USB_OTG Interrupt Register 004h*/ @@ -110,7 +110,7 @@ USB_OTG_GREGS; /** @defgroup __device_Registers * @{ */ -typedef struct _USB_OTG_DREGS // 800h +typedef struct _USB_OTG_DREGS /* 800h */ { __IO uint32_t DCFG; /* dev Configuration Register 800h*/ __IO uint32_t DCTL; /* dev Control Register 804h*/ @@ -219,7 +219,7 @@ USB_OTG_HC_REGS; /** @defgroup __otg_Core_registers * @{ */ -typedef struct USB_OTG_core_regs //000h +typedef struct USB_OTG_core_regs /* 000h */ { USB_OTG_GREGS *GREGS; USB_OTG_DREGS *DREGS; @@ -866,12 +866,13 @@ uint32_t xfersize : uint32_t Reserved7_18 : 12; uint32_t pktcnt : - 2; + 1; uint32_t Reserved20_28 : 9; uint32_t supcnt : 2; - uint32_t Reserved31; +uint32_t Reserved31 : + 1; } b; } USB_OTG_DEP0XFRSIZ_TypeDef ; @@ -1174,7 +1175,7 @@ uint32_t Reserved5_31 : */ -#endif //__USB_OTG_REGS_H__ +#endif /* __USB_OTG_REGS_H__ */ /** diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c similarity index 93% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c index 9b35db089..c4b479518 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_core.c * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief USB-OTG Core Layer ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -178,9 +178,10 @@ USB_OTG_STS USB_OTG_WritePacket(USB_OTG_CORE_HANDLE *pdev, count32b = (len + 3) / 4; fifo = pdev->regs.DFIFO[ch_ep_num]; - for (i = 0; i < count32b; i++, src+=4) + for (i = 0; i < count32b; i++) { USB_OTG_WRITE_REG32( fifo, *((__packed uint32_t *)src) ); + src+=4; } } return status; @@ -203,10 +204,10 @@ void *USB_OTG_ReadPacket(USB_OTG_CORE_HANDLE *pdev, __IO uint32_t *fifo = pdev->regs.DFIFO[0]; - for ( i = 0; i < count32b; i++, dest += 4 ) + for( i = 0; i < count32b; i++) { *(__packed uint32_t *)dest = USB_OTG_READ_REG32(fifo); - + dest += 4 ; } return ((void *)dest); } @@ -278,6 +279,11 @@ USB_OTG_STS USB_OTG_SelectCore(USB_OTG_CORE_HANDLE *pdev, } + else + { + /* Do Nothing */ + } + pdev->regs.GREGS = (USB_OTG_GREGS *)(baseAddress + \ USB_OTG_CORE_GLOBAL_REGS_OFFSET); pdev->regs.DREGS = (USB_OTG_DREGS *) (baseAddress + \ @@ -326,13 +332,13 @@ USB_OTG_STS USB_OTG_CoreInit(USB_OTG_CORE_HANDLE *pdev) USB_OTG_GUSBCFG_TypeDef usbcfg; USB_OTG_GCCFG_TypeDef gccfg; USB_OTG_GAHBCFG_TypeDef ahbcfg; - +#if defined (STM32F446xx) || defined (STM32F469_479xx) + USB_OTG_DCTL_TypeDef dctl; +#endif usbcfg.d32 = 0; gccfg.d32 = 0; ahbcfg.d32 = 0; - - if (pdev->cfg.phy_itface == USB_OTG_ULPI_PHY) { gccfg.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GCCFG); @@ -385,9 +391,9 @@ USB_OTG_STS USB_OTG_CoreInit(USB_OTG_CORE_HANDLE *pdev) /* Deactivate the power down*/ gccfg.d32 = 0; gccfg.b.pwdn = 1; - gccfg.b.vbussensingA = 1 ; gccfg.b.vbussensingB = 1 ; + #ifndef VBUS_SENSING_ENABLED gccfg.b.disablevbussensing = 1; #endif @@ -418,6 +424,20 @@ USB_OTG_STS USB_OTG_CoreInit(USB_OTG_CORE_HANDLE *pdev) USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GUSBCFG, usbcfg.d32); USB_OTG_EnableCommonInt(pdev); #endif + +#if defined (STM32F446xx) || defined (STM32F469_479xx) + usbcfg.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GUSBCFG); + usbcfg.b.srpcap = 1; + /*clear sdis bit in dctl */ + dctl.d32 = USB_OTG_READ_REG32(&pdev->regs.DREGS->DCTL); + /* Connect device */ + dctl.b.sftdiscon = 0; + USB_OTG_WRITE_REG32(&pdev->regs.DREGS->DCTL, dctl.d32); + dctl.d32 = USB_OTG_READ_REG32(&pdev->regs.DREGS->DCTL); + USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GUSBCFG, usbcfg.d32); + USB_OTG_EnableCommonInt(pdev); +#endif + return status; } /** @@ -540,6 +560,11 @@ USB_OTG_STS USB_OTG_SetCurrentMode(USB_OTG_CORE_HANDLE *pdev , uint8_t mode) usbcfg.b.force_dev = 1; } + else + { + /* Do Nothing */ + } + USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GUSBCFG, usbcfg.d32); USB_OTG_BSP_mDelay(50); return status; @@ -771,12 +796,19 @@ USB_OTG_STS USB_OTG_EnableHostInt(USB_OTG_CORE_HANDLE *pdev) { intmsk.b.rxstsqlvl = 1; } - intmsk.b.portintr = 1; + + + intmsk.b.incomplisoout = 1; intmsk.b.hcintr = 1; - intmsk.b.disconnect = 1; - intmsk.b.sofintr = 1; - intmsk.b.incomplisoout = 1; + intmsk.b.portintr = 1; USB_OTG_MODIFY_REG32(&pdev->regs.GREGS->GINTMSK, intmsk.d32, intmsk.d32); + + intmsk.d32 = 0; + + intmsk.b.disconnect = 1; + + intmsk.b.sofintr = 1; + USB_OTG_MODIFY_REG32(&pdev->regs.GREGS->GINTMSK, intmsk.d32, 0); return status; } @@ -840,7 +872,7 @@ uint32_t USB_OTG_ResetPort(USB_OTG_CORE_HANDLE *pdev) hprt0.d32 = USB_OTG_ReadHPRT0(pdev); hprt0.b.prtrst = 1; USB_OTG_WRITE_REG32(pdev->regs.HPRT0, hprt0.d32); - USB_OTG_BSP_mDelay (10); /* See Note #1 */ + USB_OTG_BSP_mDelay (100); /* See Note #1 */ hprt0.b.prtrst = 0; USB_OTG_WRITE_REG32(pdev->regs.HPRT0, hprt0.d32); USB_OTG_BSP_mDelay (20); @@ -1091,7 +1123,7 @@ USB_OTG_STS USB_OTG_HC_Halt(USB_OTG_CORE_HANDLE *pdev , uint8_t hc_num) nptxsts.d32 = 0; hptxsts.d32 = 0; hcchar.d32 = USB_OTG_READ_REG32(&pdev->regs.HC_REGS[hc_num]->HCCHAR); - hcchar.b.chen = 1; + hcchar.b.chdis = 1; /* Check for space in the request queue to issue the halt. */ @@ -1101,6 +1133,7 @@ USB_OTG_STS USB_OTG_HC_Halt(USB_OTG_CORE_HANDLE *pdev , uint8_t hc_num) if (nptxsts.b.nptxqspcavail == 0) { hcchar.b.chen = 0; + USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[hc_num]->HCCHAR, hcchar.d32); } } else @@ -1109,8 +1142,10 @@ USB_OTG_STS USB_OTG_HC_Halt(USB_OTG_CORE_HANDLE *pdev , uint8_t hc_num) if (hptxsts.b.ptxqspcavail == 0) { hcchar.b.chen = 0; + USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[hc_num]->HCCHAR, hcchar.d32); } } + hcchar.b.chen = 1; USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[hc_num]->HCCHAR, hcchar.d32); return status; } @@ -1435,10 +1470,14 @@ enum USB_OTG_SPEED USB_OTG_GetDeviceSpeed (USB_OTG_CORE_HANDLE *pdev) case DSTS_ENUMSPD_LS_PHY_6MHZ: speed = USB_SPEED_LOW; break; + default: + speed = USB_SPEED_FULL; + break; } return speed; } + /** * @brief enables EP0 OUT to receive SETUP packets and configures EP0 * for transmitting packets @@ -1467,6 +1506,9 @@ USB_OTG_STS USB_OTG_EP0Activate(USB_OTG_CORE_HANDLE *pdev) case DSTS_ENUMSPD_LS_PHY_6MHZ: diepctl.b.mps = DEP0CTL_MPS_8; break; + default: + diepctl.b.mps = DEP0CTL_MPS_64; + break; } USB_OTG_WRITE_REG32(&pdev->regs.INEP_REGS[0]->DIEPCTL, diepctl.d32); dctl.b.cgnpinnak = 1; @@ -1671,6 +1713,7 @@ USB_OTG_STS USB_OTG_EPStartXfer(USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep) { deptsiz.b.pktcnt = (ep->xfer_len + (ep->maxpacket - 1)) / ep->maxpacket; deptsiz.b.xfersize = deptsiz.b.pktcnt * ep->maxpacket; + ep->xfer_len = deptsiz.b.xfersize ; } USB_OTG_WRITE_REG32(&pdev->regs.OUTEP_REGS[ep->num]->DOEPTSIZ, deptsiz.d32); @@ -2051,23 +2094,34 @@ uint32_t USB_OTG_GetEPStatus(USB_OTG_CORE_HANDLE *pdev ,USB_OTG_EP *ep) depctl.d32 = USB_OTG_READ_REG32(depctl_addr); if (depctl.b.stall == 1) + { Status = USB_OTG_EP_TX_STALL; + } else if (depctl.b.naksts == 1) + { Status = USB_OTG_EP_TX_NAK; + } else + { Status = USB_OTG_EP_TX_VALID; - + } } else { depctl_addr = &(pdev->regs.OUTEP_REGS[ep->num]->DOEPCTL); depctl.d32 = USB_OTG_READ_REG32(depctl_addr); if (depctl.b.stall == 1) + { Status = USB_OTG_EP_RX_STALL; + } else if (depctl.b.naksts == 1) + { Status = USB_OTG_EP_RX_NAK; + } else + { Status = USB_OTG_EP_RX_VALID; + } } /* Return the current status */ @@ -2099,7 +2153,9 @@ void USB_OTG_SetEPStatus (USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep , uint32_t USB_OTG_EPSetStall(pdev, ep); return; } else if (Status == USB_OTG_EP_TX_NAK) + { depctl.b.snak = 1; + } else if (Status == USB_OTG_EP_TX_VALID) { if (depctl.b.stall == 1) @@ -2113,7 +2169,14 @@ void USB_OTG_SetEPStatus (USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep , uint32_t depctl.b.epena = 1; } else if (Status == USB_OTG_EP_TX_DIS) + { depctl.b.usbactep = 0; + } + + else + { + /* Do Nothing */ + } } else /* Process for OUT endpoint */ { @@ -2124,7 +2187,9 @@ void USB_OTG_SetEPStatus (USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep , uint32_t depctl.b.stall = 1; } else if (Status == USB_OTG_EP_RX_NAK) + { depctl.b.snak = 1; + } else if (Status == USB_OTG_EP_RX_VALID) { if (depctl.b.stall == 1) @@ -2141,6 +2206,11 @@ void USB_OTG_SetEPStatus (USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep , uint32_t { depctl.b.usbactep = 0; } + + else + { + /* Do Nothing */ + } } USB_OTG_WRITE_REG32(depctl_addr, depctl.d32); diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c similarity index 90% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c index 85df8652e..8ddabcd7f 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_dcd.c * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief Peripheral Device Interface Layer ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -107,7 +107,7 @@ void DCD_Init(USB_OTG_CORE_HANDLE *pdev , ep->is_in = 1; ep->num = i; ep->tx_fifo_num = i; - /* Control until ep is actvated */ + /* Control until ep is activated */ ep->type = EP_TYPE_CTRL; ep->maxpacket = USB_OTG_MAX_EP0_SIZE; ep->xfer_buff = 0; @@ -129,18 +129,28 @@ void DCD_Init(USB_OTG_CORE_HANDLE *pdev , } USB_OTG_DisableGlobalInt(pdev); + +#if defined (STM32F446xx) || defined (STM32F469_479xx) + + /* Force Device Mode*/ + USB_OTG_SetCurrentMode(pdev, DEVICE_MODE); /*Init the Core (common init.) */ USB_OTG_CoreInit(pdev); +#else + + /*Init the Core (common init.) */ + USB_OTG_CoreInit(pdev); /* Force Device Mode*/ USB_OTG_SetCurrentMode(pdev, DEVICE_MODE); +#endif + /* Init Device */ USB_OTG_CoreInitDev(pdev); - /* Enable USB Global interrupt */ USB_OTG_EnableGlobalInt(pdev); } @@ -261,7 +271,7 @@ uint32_t DCD_EP_PrepareRx( USB_OTG_CORE_HANDLE *pdev, uint32_t DCD_EP_Tx ( USB_OTG_CORE_HANDLE *pdev, uint8_t ep_addr, const uint8_t *pbuf, - uint32_t buf_len) + uint32_t buf_len) // modified by OpenTX { USB_OTG_EP *ep; @@ -270,7 +280,7 @@ uint32_t DCD_EP_Tx ( USB_OTG_CORE_HANDLE *pdev, /* Setup and start the Transfer */ ep->is_in = 1; ep->num = ep_addr & 0x7F; - ep->xfer_buff = (uint8_t*)pbuf; //remove const qualifier, safe to do because we are sending + ep->xfer_buff = (uint8_t*)pbuf; //remove const qualifier, safe to do because we are sending // modified by OpenTX ep->dma_addr = (uint32_t)pbuf; ep->xfer_count = 0; ep->xfer_len = buf_len; diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c similarity index 85% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c index 10a60d475..cc17ed6db 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_dcd_int.c * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief Peripheral Device interrupt subroutines ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -27,6 +27,8 @@ /* Includes ------------------------------------------------------------------*/ #include "usb_dcd_int.h" +#include "board.h" // modified by OpenTX + /** @addtogroup USB_OTG_DRIVER * @{ */ @@ -130,8 +132,7 @@ uint32_t USBD_OTG_EP1OUT_ISR_Handler (USB_OTG_CORE_HANDLE *pdev) if (pdev->cfg.dma_enable == 1) { deptsiz.d32 = USB_OTG_READ_REG32(&(pdev->regs.OUTEP_REGS[1]->DOEPTSIZ)); - /*ToDo : handle more than one single MPS size packet */ - pdev->dev.out_ep[1].xfer_count = pdev->dev.out_ep[1].maxpacket - \ + pdev->dev.out_ep[1].xfer_count = pdev->dev.out_ep[1].xfer_len- \ deptsiz.b.xfersize; } /* Inform upper layer: data ready */ @@ -194,13 +195,6 @@ uint32_t USBD_OTG_EP1IN_ISR_Handler (USB_OTG_CORE_HANDLE *pdev) if (diepint.b.emptyintr) { DCD_WriteEmptyTxFifo(pdev , 1); - CLEAR_IN_EP_INTR(1, emptyintr); - /* - Notice: this probabbly needs the same fix as DCD_HandleInEP_ISR(), but - leaving this out, we don't use this part of code - fifoemptymsk = 0x1 << 1; - USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DIEPEMPMSK, fifoemptymsk, 0); - */ } return 1; } @@ -438,7 +432,7 @@ static uint32_t DCD_HandleInEP_ISR(USB_OTG_CORE_HANDLE *pdev) while ( ep_intr ) { - if (ep_intr&0x1) /* In ITR */ + if ((ep_intr & 0x1) == 0x01) /* In ITR */ { diepint.d32 = DCD_ReadDevInEP(pdev , epnum); /* Get In ITR status */ if ( diepint.b.xfercompl ) @@ -476,40 +470,7 @@ static uint32_t DCD_HandleInEP_ISR(USB_OTG_CORE_HANDLE *pdev) } if (diepint.b.emptyintr) { - /*===============ADDED SECTION ==============================*/ - /* - This only applies to INTERRUPT transfer mode. - - diepint.b.emptyintr interrupt can't be reset by writing 1 to - DIEPINT register. According to reference manual, this bit - is read-only. - - The CLEAR_IN_EP_INTR(epnum, emptyintr) does not work! - - The only way to stop this interrupt is to disable it using - mask register DIEPEMPMSK. - - Original code gets here, is unsuccessful at interrupt flag reset - and when interrupt handler returns, another one is fired again, - robbing CPU time, which is then spent only in interrupt handlers - (this one and all other that have higher priority) - - This only happens in HID mode (when interrupt in endpoint is - used) and when host is not actively polling device (us) for - update. This is situation on Linux when no program is using - joystick. The kernel/joystick driver stops polling device. - - */ - if ( pdev->dev.in_ep[epnum].type == USB_OTG_EP_INT ) { - - fifoemptymsk = 0x1 << epnum; - USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DIEPEMPMSK, fifoemptymsk, 0); - } - /*===============END OF ADDED SECTION ==============================*/ - DCD_WriteEmptyTxFifo(pdev , epnum); - - CLEAR_IN_EP_INTR(epnum, emptyintr); } } epnum++; @@ -678,6 +639,7 @@ static uint32_t DCD_WriteEmptyTxFifo(USB_OTG_CORE_HANDLE *pdev, uint32_t epnum) uint32_t len = 0; uint32_t len32b; txstatus.d32 = 0; + uint32_t fifoemptymsk; ep = &pdev->dev.in_ep[epnum]; @@ -691,8 +653,6 @@ static uint32_t DCD_WriteEmptyTxFifo(USB_OTG_CORE_HANDLE *pdev, uint32_t epnum) len32b = (len + 3) / 4; txstatus.d32 = USB_OTG_READ_REG32( &pdev->regs.INEP_REGS[epnum]->DTXFSTS); - - while (txstatus.b.txfspcavail > len32b && ep->xfer_count < ep->xfer_len && ep->xfer_len != 0) @@ -712,6 +672,14 @@ static uint32_t DCD_WriteEmptyTxFifo(USB_OTG_CORE_HANDLE *pdev, uint32_t epnum) ep->xfer_count += len; txstatus.d32 = USB_OTG_READ_REG32(&pdev->regs.INEP_REGS[epnum]->DTXFSTS); + + /* Mask the TxFIFOEmpty interrupt */ + if (ep->xfer_len == ep->xfer_count) + { + fifoemptymsk = 0x1 << ep->num; + USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DIEPEMPMSK, + fifoemptymsk, 0); + } } return 1; @@ -800,26 +768,100 @@ static uint32_t DCD_HandleUsbReset_ISR(USB_OTG_CORE_HANDLE *pdev) */ static uint32_t DCD_HandleEnumDone_ISR(USB_OTG_CORE_HANDLE *pdev) { + uint32_t hclk = 168000000; + USB_OTG_GINTSTS_TypeDef gintsts; USB_OTG_GUSBCFG_TypeDef gusbcfg; - + RCC_ClocksTypeDef RCC_Clocks; USB_OTG_EP0Activate(pdev); - /* Set USB turn-around time based on device speed and PHY interface. */ + /* Get HCLK frequency */ + RCC_GetClocksFreq(&RCC_Clocks); + hclk = RCC_Clocks.HCLK_Frequency; + + /* Clear default TRDT value and Set USB turn-around time based on device speed and PHY interface. */ gusbcfg.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GUSBCFG); + gusbcfg.b.usbtrdtim = 0; + USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GUSBCFG, gusbcfg.d32); /* Full or High speed */ if ( USB_OTG_GetDeviceSpeed(pdev) == USB_SPEED_HIGH) { pdev->cfg.speed = USB_OTG_SPEED_HIGH; pdev->cfg.mps = USB_OTG_HS_MAX_PACKET_SIZE ; + + /*USBTRD min For HS device*/ gusbcfg.b.usbtrdtim = 9; } else { pdev->cfg.speed = USB_OTG_SPEED_FULL; pdev->cfg.mps = USB_OTG_FS_MAX_PACKET_SIZE ; - gusbcfg.b.usbtrdtim = 5; + + /* The USBTRD is configured according to the tables below, depending on AHB frequency + used by application. In the low AHB frequency range it is used to stretch enough the USB response + time to IN tokens, the USB turnaround time, so to compensate for the longer AHB read access + latency to the Data FIFO */ + + if((hclk >= 15000000)&&(hclk < 16000000)) + { + /* hclk Clock Range between 15-16 MHz */ + gusbcfg.b.usbtrdtim = 0xE; + } + + else if((hclk >= 16000000)&&(hclk < 17100000)) + { + /* hclk Clock Range between 16-17.1 MHz */ + gusbcfg.b.usbtrdtim = 0xD; + } + + else if((hclk >= 17100000)&&(hclk < 18400000)) + { + /* hclk Clock Range between 17-18.4 MHz */ + gusbcfg.b.usbtrdtim = 0xC; + } + + else if((hclk >= 18400000)&&(hclk < 20000000)) + { + /* hclk Clock Range between 18.4-20 MHz */ + gusbcfg.b.usbtrdtim = 0xB; + } + + else if((hclk >= 20000000)&&(hclk < 21800000)) + { + /* hclk Clock Range between 20-21.8 MHz */ + gusbcfg.b.usbtrdtim = 0xA; + } + + else if((hclk >= 21800000)&&(hclk < 24000000)) + { + /* hclk Clock Range between 21.8-24 MHz */ + gusbcfg.b.usbtrdtim = 0x9; + } + + else if((hclk >= 24000000)&&(hclk < 26600000)) + { + /* hclk Clock Range between 24-26.6 MHz */ + gusbcfg.b.usbtrdtim = 0x8; + } + + else if((hclk >= 26600000)&&(hclk < 30000000)) + { + /* hclk Clock Range between 26.6-30 MHz */ + gusbcfg.b.usbtrdtim = 0x7; + } + + else if((hclk >= 30000000)&&(hclk < 34300000)) + { + /* hclk Clock Range between 30-34.3 MHz */ + gusbcfg.b.usbtrdtim= 0x6; + } + + else /* if(hclk >= 34300000) */ + { + /* hclk Clock Range between 34.3-168 MHz */ + gusbcfg.b.usbtrdtim = 0x5; + } } USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GUSBCFG, gusbcfg.d32); @@ -888,8 +930,6 @@ static uint32_t DCD_ReadDevInEP (USB_OTG_CORE_HANDLE *pdev, uint8_t epnum) return v; } - - /** * @} */ diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c similarity index 89% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c index 115b1ad5d..7308a4bf7 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_hcd.c * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief Host Interface Layer ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -28,7 +28,6 @@ /* Includes ------------------------------------------------------------------*/ #include "usb_core.h" #include "usb_hcd.h" - #include "usb_conf.h" #include "usb_bsp.h" @@ -170,6 +169,19 @@ uint32_t HCD_IsDeviceConnected(USB_OTG_CORE_HANDLE *pdev) return (pdev->host.ConnSts); } + +/** + * @brief HCD_IsPortEnabled + * This function checks if port is enabled + * @param pdev : Selected device + * @retval Frame number + * + */ +uint32_t HCD_IsPortEnabled(USB_OTG_CORE_HANDLE *pdev) +{ + return (pdev->host.PortEnabled); +} + /** * @brief HCD_GetCurrentFrame * This function returns the frame number for sof packet diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c similarity index 91% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c index 4fdbe2fac..3c12161f1 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_hcd_int.c * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief Host driver interrupt subroutines ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. @@ -365,9 +365,10 @@ static uint32_t USB_OTG_USBH_handle_port_ISR (USB_OTG_CORE_HANDLE *pdev) USB_OTG_HPRT0_TypeDef hprt0; USB_OTG_HPRT0_TypeDef hprt0_dup; USB_OTG_HCFG_TypeDef hcfg; - uint32_t do_reset = 0; uint32_t retval = 0; + USB_OTG_GINTMSK_TypeDef intmsk; + intmsk.d32 = 0; hcfg.d32 = 0; hprt0.d32 = 0; hprt0_dup.d32 = 0; @@ -385,10 +386,9 @@ static uint32_t USB_OTG_USBH_handle_port_ISR (USB_OTG_CORE_HANDLE *pdev) /* Port Connect Detected */ if (hprt0.b.prtconndet) { - hprt0_dup.b.prtconndet = 1; USBH_HCD_INT_fops->DevConnected(pdev); - retval |= 1; + retval |= 1; } /* Port Enable Changed */ @@ -398,13 +398,9 @@ static uint32_t USB_OTG_USBH_handle_port_ISR (USB_OTG_CORE_HANDLE *pdev) if (hprt0.b.prtena == 1) { - - USBH_HCD_INT_fops->DevConnected(pdev); - if ((hprt0.b.prtspd == HPRT0_PRTSPD_LOW_SPEED) || (hprt0.b.prtspd == HPRT0_PRTSPD_FULL_SPEED)) - { - + { hcfg.d32 = USB_OTG_READ_REG32(&pdev->regs.HREGS->HCFG); if (hprt0.b.prtspd == HPRT0_PRTSPD_LOW_SPEED) @@ -414,38 +410,42 @@ static uint32_t USB_OTG_USBH_handle_port_ISR (USB_OTG_CORE_HANDLE *pdev) { if(pdev->cfg.phy_itface == USB_OTG_EMBEDDED_PHY) { - USB_OTG_InitFSLSPClkSel(pdev ,HCFG_6_MHZ ); + USB_OTG_InitFSLSPClkSel(pdev , HCFG_6_MHZ); } - do_reset = 1; - } - } - else - { - - USB_OTG_WRITE_REG32(&pdev->regs.HREGS->HFIR, 48000 ); - if (hcfg.b.fslspclksel != HCFG_48_MHZ) - { - USB_OTG_InitFSLSPClkSel(pdev ,HCFG_48_MHZ ); - do_reset = 1; + + else + { + USB_OTG_WRITE_REG32(&pdev->regs.HREGS->HFIR, 48000 ); + if (hcfg.b.fslspclksel != HCFG_48_MHZ) + { + USB_OTG_InitFSLSPClkSel(pdev ,HCFG_48_MHZ ); + } + } } } } - else - { - do_reset = 1; - } + + USBH_HCD_INT_fops->DevPortEnabled(pdev); + + /*unmask disconnect interrupt */ + intmsk.d32 = 0; + intmsk.b.disconnect = 1; + USB_OTG_MODIFY_REG32(&pdev->regs.GREGS->GINTMSK, intmsk.d32, intmsk.d32); + } + else + { + USBH_HCD_INT_fops->DevPortDisabled(pdev); + } } + /* Overcurrent Change Interrupt */ if (hprt0.b.prtovrcurrchng) { hprt0_dup.b.prtovrcurrchng = 1; retval |= 1; } - if (do_reset) - { - USB_OTG_ResetPort(pdev); - } + /* Clear Port Interrupts */ USB_OTG_WRITE_REG32(pdev->regs.HPRT0, hprt0_dup.d32); @@ -512,7 +512,10 @@ uint32_t USB_OTG_USBH_handle_hc_n_Out_ISR (USB_OTG_CORE_HANDLE *pdev , uint32_t { pdev->host.ErrCnt[num] = 0; UNMASK_HOST_INT_CHH (num); - USB_OTG_HC_Halt(pdev, num); + if (pdev->cfg.dma_enable == 0) + { + USB_OTG_HC_Halt(pdev, num); + } CLEAR_HC_INT(hcreg , nak); pdev->host.HC_Status[num] = HC_NAK; } @@ -521,7 +524,6 @@ uint32_t USB_OTG_USBH_handle_hc_n_Out_ISR (USB_OTG_CORE_HANDLE *pdev , uint32_t { UNMASK_HOST_INT_CHH (num); USB_OTG_HC_Halt(pdev, num); - pdev->host.ErrCnt[num] ++; pdev->host.HC_Status[num] = HC_XACTERR; CLEAR_HC_INT(hcreg , xacterr); } @@ -529,13 +531,15 @@ uint32_t USB_OTG_USBH_handle_hc_n_Out_ISR (USB_OTG_CORE_HANDLE *pdev , uint32_t { pdev->host.ErrCnt[num] = 0; UNMASK_HOST_INT_CHH (num); - USB_OTG_HC_Halt(pdev, num); + if (pdev->cfg.dma_enable == 0) + { + USB_OTG_HC_Halt(pdev, num); + } CLEAR_HC_INT(hcreg , nyet); pdev->host.HC_Status[num] = HC_NYET; } else if (hcint.b.datatglerr) { - UNMASK_HOST_INT_CHH (num); USB_OTG_HC_Halt(pdev, num); CLEAR_HC_INT(hcreg , nak); @@ -574,10 +578,8 @@ uint32_t USB_OTG_USBH_handle_hc_n_Out_ISR (USB_OTG_CORE_HANDLE *pdev , uint32_t } else if(pdev->host.HC_Status[num] == HC_XACTERR) { - if (pdev->host.ErrCnt[num] == 3) { pdev->host.URB_State[num] = URB_ERROR; - pdev->host.ErrCnt[num] = 0; } } CLEAR_HC_INT(hcreg , chhltd); @@ -604,7 +606,6 @@ uint32_t USB_OTG_USBH_handle_hc_n_In_ISR (USB_OTG_CORE_HANDLE *pdev , uint32_t n USB_OTG_HCTSIZn_TypeDef hctsiz; USB_OTG_HC_REGS *hcreg; - hcreg = pdev->regs.HC_REGS[num]; hcint.d32 = USB_OTG_READ_REG32(&hcreg->HCINT); hcintmsk.d32 = USB_OTG_READ_REG32(&hcreg->HCINTMSK); @@ -612,7 +613,6 @@ uint32_t USB_OTG_USBH_handle_hc_n_In_ISR (USB_OTG_CORE_HANDLE *pdev , uint32_t n hcchar.d32 = USB_OTG_READ_REG32(&pdev->regs.HC_REGS[num]->HCCHAR); hcintmsk.d32 = 0; - if (hcint.b.ahberr) { CLEAR_HC_INT(hcreg ,ahberr); @@ -636,7 +636,6 @@ uint32_t USB_OTG_USBH_handle_hc_n_In_ISR (USB_OTG_CORE_HANDLE *pdev , uint32_t n } else if (hcint.b.datatglerr) { - UNMASK_HOST_INT_CHH (num); USB_OTG_HC_Halt(pdev, num); CLEAR_HC_INT(hcreg , nak); @@ -653,7 +652,6 @@ uint32_t USB_OTG_USBH_handle_hc_n_In_ISR (USB_OTG_CORE_HANDLE *pdev , uint32_t n else if (hcint.b.xfercompl) { - if (pdev->cfg.dma_enable == 1) { hctsiz.d32 = USB_OTG_READ_REG32(&pdev->regs.HC_REGS[num]->HCTSIZ); @@ -678,8 +676,7 @@ uint32_t USB_OTG_USBH_handle_hc_n_In_ISR (USB_OTG_CORE_HANDLE *pdev , uint32_t n hcchar.b.oddfrm = 1; USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[num]->HCCHAR, hcchar.d32); pdev->host.URB_State[num] = URB_DONE; - } - + } } else if (hcint.b.chhltd) { @@ -713,20 +710,25 @@ uint32_t USB_OTG_USBH_handle_hc_n_In_ISR (USB_OTG_CORE_HANDLE *pdev , uint32_t n else if (hcint.b.xacterr) { UNMASK_HOST_INT_CHH (num); - pdev->host.ErrCnt[num] ++; pdev->host.HC_Status[num] = HC_XACTERR; USB_OTG_HC_Halt(pdev, num); CLEAR_HC_INT(hcreg , xacterr); - } else if (hcint.b.nak) { if(hcchar.b.eptype == EP_TYPE_INTR) { UNMASK_HOST_INT_CHH (num); - USB_OTG_HC_Halt(pdev, num); + if (pdev->cfg.dma_enable == 0) + { + USB_OTG_HC_Halt(pdev, num); + } } - else if ((hcchar.b.eptype == EP_TYPE_CTRL)|| + + pdev->host.HC_Status[num] = HC_NAK; + CLEAR_HC_INT(hcreg , nak); + + if ((hcchar.b.eptype == EP_TYPE_CTRL)|| (hcchar.b.eptype == EP_TYPE_BULK)) { /* re-activate the channel */ @@ -734,8 +736,6 @@ uint32_t USB_OTG_USBH_handle_hc_n_In_ISR (USB_OTG_CORE_HANDLE *pdev , uint32_t n hcchar.b.chdis = 0; USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[num]->HCCHAR, hcchar.d32); } - pdev->host.HC_Status[num] = HC_NAK; - CLEAR_HC_INT(hcreg , nak); } diff --git a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c similarity index 94% rename from radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c rename to radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c index 17c5eb685..8ca2fd7c9 100644 --- a/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c +++ b/radio/src/thirdparty/STM32_USB-Host-Device_Lib_V2.2.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c @@ -2,13 +2,13 @@ ****************************************************************************** * @file usb_otg.c * @author MCD Application Team - * @version V2.1.0 - * @date 19-March-2012 + * @version V2.2.0 + * @date 09-November-2015 * @brief OTG Core Layer ****************************************************************************** * @attention * - *

© COPYRIGHT 2012 STMicroelectronics

+ *

© COPYRIGHT 2015 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License.