Explorar o código

Added support for ST-USB-Device middleware.

Benedikt-Alexander Mokroß %!s(int64=8) %!d(string=hai) anos
pai
achega
feb44d708b
Modificáronse 1 ficheiros con 128 adicións e 0 borrados
  1. 128 0
      cmake/FindUSBDevice.cmake

+ 128 - 0
cmake/FindUSBDevice.cmake

@@ -0,0 +1,128 @@
+IF(NOT STM32Cube_DIR)
+    SET(STM32Cube_DIR "/opt/STM32Cube_FW_F1_V1.2.0")
+    MESSAGE(STATUS "No STM32Cube_DIR specified, using default: " ${STM32Cube_DIR})
+ENDIF()
+
+SET(USBDevice_SRC
+    Core/Src/usbd_ctlreq.c
+    Core/Src/usbd_core.c
+    Core/Src/usbd_ioreq.c
+#    Core/Src/usbd_conf_template.c
+)
+
+SET(USBDevice_INC
+    Core/Inc/usbd_ctlreq.h
+    Core/Inc/usbd_ioreq.h
+    Core/Inc/usbd_core.h
+#    Core/Inc/usbd_conf_template.h
+    Core/Inc/usbd_def.h
+)
+
+SET(USBDevice_COMPONENTS CDC DFU AUDIO Template MSC HID CustomHID)
+
+SET(USBDevice_COMPONENTS_CDC_HEADERS
+    Class/CDC/Inc/usbd_cdc.h
+#    Class/CDC/Inc/usbd_cdc_if_template.h
+)
+SET(USBDevice_COMPONENTS_CDC_SOURCES
+    Class/CDC/Src/usbd_cdc.c
+#    Class/CDC/Src/usbd_cdc_if_template.c
+)
+
+SET(USBDevice_COMPONENTS_DFU_HEADERS
+#    Class/DFU/Inc/usbd_dfu_media_template.h
+    Class/DFU/Inc/usbd_dfu.h
+)
+SET(USBDevice_COMPONENTS_DFU_SOURCES
+    Class/DFU/Src/usbd_dfu.c
+#    Class/DFU/Src/usbd_dfu_media_template.c
+)
+
+SET(USBDevice_COMPONENTS_AUDIO_HEADERS
+    Class/AUDIO/Inc/usbd_audio.h
+#    Class/AUDIO/Inc/usbd_audio_if_template.h
+)
+SET(USBDevice_COMPONENTS_AUDIO_SOURCES
+#    Class/AUDIO/Src/usbd_audio_if_template.c
+    Class/AUDIO/Src/usbd_audio.c
+)
+
+SET(USBDevice_COMPONENTS_Template_HEADERS
+    Class/Template/Inc/usbd_template.h
+) 
+SET(USBDevice_COMPONENTS_Template_SOURCES
+    Class/Template/Src/usbd_template.c
+)
+
+SET(USBDevice_COMPONENTS_MSC_HEADERS
+    Class/MSC/Inc/usbd_msc_scsi.h
+#    Class/MSC/Inc/usbd_msc_storage_template.h
+    Class/MSC/Inc/usbd_msc_data.h
+    Class/MSC/Inc/usbd_msc.h
+    Class/MSC/Inc/usbd_msc_bot.h
+)
+SET(USBDevice_COMPONENTS_MSC_SOURCES
+    Class/MSC/Src/usbd_msc.c
+    Class/MSC/Src/usbd_msc_data.c
+    Class/MSC/Src/usbd_msc_bot.c
+    Class/MSC/Src/usbd_msc_scsi.c
+#    Class/MSC/Src/usbd_msc_storage_template.c
+)
+
+SET(USBDevice_COMPONENTS_HID_HEADERS
+    Class/HID/Inc/usbd_hid.h
+)
+SET(USBDevice_COMPONENTS_HID_SOURCES
+    Class/HID/Src/usbd_hid.c
+)
+
+SET(USBDevice_COMPONENTS_CustomHID_HEADERS
+#    Class/CustomHID/Inc/usbd_customhid_if_template.h
+    Class/CustomHID/Inc/usbd_customhid.h
+)
+SET(USBDevice_COMPONENTS_CustomHID_SOURCES
+    Class/CustomHID/Src/usbd_customhid.c
+#    Class/CustomHID/Src/usbd_customhid_if_template.c
+)
+
+IF(NOT USBDevice_FIND_COMPONENTS)
+    SET(USBDevice_FIND_COMPONENTS ${USBDevice_COMPONENTS})
+    MESSAGE(STATUS "No USBDevice components selected, using all: ${USBDevice_FIND_COMPONENTS}")
+ENDIF()
+
+FOREACH(cmp ${USBDevice_FIND_COMPONENTS})
+    LIST(FIND USBDevice_COMPONENTS ${cmp} USBDevice_FOUND_INDEX)
+    IF(${USBDevice_FOUND_INDEX} LESS 0)
+        MESSAGE(FATAL_ERROR "Unknown USBDevice component: ${cmp}. Available components: ${USBDevice_COMPONENTS}")
+    ENDIF()
+    LIST(FIND USBDevice_COMPONENTS ${cmp} USBDevice_FOUND_INDEX)
+    IF(NOT (${USBDevice_FOUND_INDEX} LESS 0))
+        LIST(APPEND USBDevice_INC ${USBDevice_COMPONENTS_${cmp}_HEADERS})
+        LIST(APPEND USBDevice_SRC ${USBDevice_COMPONENTS_${cmp}_SOURCES})
+    ENDIF()
+ENDFOREACH()
+
+LIST(REMOVE_DUPLICATES USBDevice_INC)
+LIST(REMOVE_DUPLICATES USBDevice_SRC)
+
+FOREACH(INC ${USBDevice_INC})
+    SET(INC_FILE INC_FILE-NOTFOUND)
+    GET_FILENAME_COMPONENT(INC_FILE ${STM32Cube_DIR}/Middlewares/ST/STM32_USB_Device_Library/${INC} DIRECTORY)
+    MESSAGE(STATUS "Found ${INC}: ${INC_FILE}")
+    LIST(APPEND USBDevice_INCLUDE_DIR ${INC_FILE})
+ENDFOREACH()
+LIST(REMOVE_DUPLICATES USBDevice_INCLUDE_DIR)
+
+FOREACH(SRC ${USBDevice_SRC})
+    SET(SRC_FILE SRC_FILE-NOTFOUND)
+    FIND_FILE(SRC_FILE ${SRC}
+        HINTS ${STM32Cube_DIR}/Middlewares/ST/STM32_USB_Device_Library
+        CMAKE_FIND_ROOT_PATH_BOTH
+    )
+    MESSAGE(STATUS "Found ${SRC}: ${SRC_FILE}")
+    LIST(APPEND USBDevice_SOURCES ${SRC_FILE})
+ENDFOREACH()
+
+INCLUDE(FindPackageHandleStandardArgs)
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(USBDevice DEFAULT_MSG USBDevice_INCLUDE_DIR USBDevice_SOURCES)