Improve USB Media Host conditions (#20176)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
		@@ -20,3 +20,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#if DISABLED(NO_SD_HOST_DRIVE)
 | 
			
		||||
  #define HAS_SD_HOST_DRIVE 1
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -122,7 +122,7 @@ void HAL_init() {
 | 
			
		||||
  delay(1000);                              // Give OS time to notice
 | 
			
		||||
  USB_Connect(TRUE);
 | 
			
		||||
 | 
			
		||||
  #if DISABLED(NO_SD_HOST_DRIVE)
 | 
			
		||||
  #if HAS_SD_HOST_DRIVE
 | 
			
		||||
    MSC_SD_Init(0);                         // Enable USB SD card access
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
@@ -140,7 +140,7 @@ void HAL_init() {
 | 
			
		||||
 | 
			
		||||
// HAL idle task
 | 
			
		||||
void HAL_idletask() {
 | 
			
		||||
  #if HAS_SHARED_MEDIA
 | 
			
		||||
  #if HAS_SD_HOST_DRIVE
 | 
			
		||||
    // If Marlin is using the SD card we need to lock it to prevent access from
 | 
			
		||||
    // a PC via USB.
 | 
			
		||||
    // Other HALs use IS_SD_PRINTING() and IS_SD_FILE_OPEN() to check for access but
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,7 @@
 | 
			
		||||
  #error "ERROR - Only STM32F103xE, STM32F103xG, STM32F4xx or STM32F7xx CPUs supported"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef USBD_USE_CDC_COMPOSITE
 | 
			
		||||
#if HAS_SD_HOST_DRIVE
 | 
			
		||||
 | 
			
		||||
  // use USB drivers
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -20,3 +20,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#if defined(USBD_USE_CDC_COMPOSITE) && DISABLED(NO_SD_HOST_DRIVE)
 | 
			
		||||
  #define HAS_SD_HOST_DRIVE 1
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -82,7 +82,7 @@
 | 
			
		||||
// Public Variables
 | 
			
		||||
// ------------------------
 | 
			
		||||
 | 
			
		||||
#if (defined(SERIAL_USB) && !defined(USE_USB_COMPOSITE))
 | 
			
		||||
#if defined(SERIAL_USB) && !HAS_SD_HOST_DRIVE
 | 
			
		||||
  USBSerial SerialUSB;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@@ -251,7 +251,7 @@ void HAL_init() {
 | 
			
		||||
  #if PIN_EXISTS(LED)
 | 
			
		||||
    OUT_WRITE(LED_PIN, LOW);
 | 
			
		||||
  #endif
 | 
			
		||||
  #ifdef USE_USB_COMPOSITE
 | 
			
		||||
  #if HAS_SD_HOST_DRIVE
 | 
			
		||||
    MSC_SD_init();
 | 
			
		||||
  #endif
 | 
			
		||||
  #if PIN_EXISTS(USB_CONNECT)
 | 
			
		||||
@@ -263,17 +263,15 @@ void HAL_init() {
 | 
			
		||||
 | 
			
		||||
// HAL idle task
 | 
			
		||||
void HAL_idletask() {
 | 
			
		||||
  #ifdef USE_USB_COMPOSITE
 | 
			
		||||
    #if HAS_SHARED_MEDIA
 | 
			
		||||
      // If Marlin is using the SD card we need to lock it to prevent access from
 | 
			
		||||
      // a PC via USB.
 | 
			
		||||
      // Other HALs use IS_SD_PRINTING() and IS_SD_FILE_OPEN() to check for access but
 | 
			
		||||
      // this will not reliably detect delete operations. To be safe we will lock
 | 
			
		||||
      // the disk if Marlin has it mounted. Unfortunately there is currently no way
 | 
			
		||||
      // to unmount the disk from the LCD menu.
 | 
			
		||||
      // if (IS_SD_PRINTING() || IS_SD_FILE_OPEN())
 | 
			
		||||
      /* copy from lpc1768 framework, should be fixed later for process HAS_SHARED_MEDIA*/
 | 
			
		||||
    #endif
 | 
			
		||||
  #if HAS_SD_HOST_DRIVE
 | 
			
		||||
    // If Marlin is using the SD card we need to lock it to prevent access from
 | 
			
		||||
    // a PC via USB.
 | 
			
		||||
    // Other HALs use IS_SD_PRINTING() and IS_SD_FILE_OPEN() to check for access but
 | 
			
		||||
    // this will not reliably detect delete operations. To be safe we will lock
 | 
			
		||||
    // the disk if Marlin has it mounted. Unfortunately there is currently no way
 | 
			
		||||
    // to unmount the disk from the LCD menu.
 | 
			
		||||
    // if (IS_SD_PRINTING() || IS_SD_FILE_OPEN())
 | 
			
		||||
    /* copy from lpc1768 framework, should be fixed later for process HAS_SD_HOST_DRIVE*/
 | 
			
		||||
    // process USB mass storage device class loop
 | 
			
		||||
    MarlinMSC.loop();
 | 
			
		||||
  #endif
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@
 | 
			
		||||
 | 
			
		||||
#include "../../inc/MarlinConfigPre.h"
 | 
			
		||||
 | 
			
		||||
#ifdef USE_USB_COMPOSITE
 | 
			
		||||
#if HAS_SD_HOST_DRIVE
 | 
			
		||||
  #include "msc_sd.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@@ -61,7 +61,7 @@
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef SERIAL_USB
 | 
			
		||||
  #ifndef USE_USB_COMPOSITE
 | 
			
		||||
  #if !HAS_SD_HOST_DRIVE
 | 
			
		||||
    #define UsbSerial Serial
 | 
			
		||||
  #else
 | 
			
		||||
    #define UsbSerial MarlinCompositeSerial
 | 
			
		||||
 
 | 
			
		||||
@@ -20,8 +20,3 @@
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#if ENABLED(USE_USB_COMPOSITE)
 | 
			
		||||
  //#warning "SD_CHECK_AND_RETRY isn't needed with USE_USB_COMPOSITE."
 | 
			
		||||
  #undef SD_CHECK_AND_RETRY
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -20,3 +20,11 @@
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#ifdef USE_USB_COMPOSITE
 | 
			
		||||
  //#warning "SD_CHECK_AND_RETRY isn't needed with USE_USB_COMPOSITE."
 | 
			
		||||
  #undef SD_CHECK_AND_RETRY
 | 
			
		||||
  #if DISABLED(NO_SD_HOST_DRIVE)
 | 
			
		||||
    #define HAS_SD_HOST_DRIVE 1
 | 
			
		||||
  #endif
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
#if defined(__STM32F1__) && defined(USE_USB_COMPOSITE)
 | 
			
		||||
#if defined(__STM32F1__) && HAS_SD_HOST_DRIVE
 | 
			
		||||
 | 
			
		||||
#include "msc_sd.h"
 | 
			
		||||
#include "SPI.h"
 | 
			
		||||
@@ -77,4 +77,4 @@ void MSC_SD_init() {
 | 
			
		||||
  #endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif // __STM32F1__ && USE_USB_COMPOSITE
 | 
			
		||||
#endif // __STM32F1__ && HAS_SD_HOST_DRIVE
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,11 @@
 | 
			
		||||
#include "SPI.h"
 | 
			
		||||
#include "fastio.h"
 | 
			
		||||
 | 
			
		||||
#if HAS_SHARED_MEDIA
 | 
			
		||||
  #ifndef ONBOARD_SPI_DEVICE
 | 
			
		||||
    #define ONBOARD_SPI_DEVICE SPI_DEVICE
 | 
			
		||||
  #endif
 | 
			
		||||
#ifndef ONBOARD_SPI_DEVICE
 | 
			
		||||
  #define ONBOARD_SPI_DEVICE SPI_DEVICE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if HAS_SD_HOST_DRIVE
 | 
			
		||||
  #define ONBOARD_SD_SPI SPI
 | 
			
		||||
#else
 | 
			
		||||
  SPIClass OnboardSPI(ONBOARD_SPI_DEVICE);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user