diff -Naur /home/aleph/Downloads/USB_Host_Shield_2.0-master/masstorage.cpp lib/masstorage.cpp --- /home/aleph/Downloads/USB_Host_Shield_2.0-master/masstorage.cpp 2018-09-21 10:19:36.107502252 -0600 +++ lib/masstorage.cpp 2018-09-21 09:46:19.620175519 -0600 @@ -24,6 +24,8 @@ #include "masstorage.h" +#if ENABLED(USB_FLASH_DRIVE_SUPPORT) + const uint8_t BulkOnly::epDataInIndex = 1; const uint8_t BulkOnly::epDataOutIndex = 2; const uint8_t BulkOnly::epInterruptInIndex = 3; @@ -796,6 +798,9 @@ buf[i] = 0x00; } WriteOk[lun] = true; + #if ENABLED(USB_FLASH_DRIVE_SUPPORT) && defined(SKIP_WRITE_PROTECT) + return 0; + #endif uint8_t rc = ModeSense6(lun, 0, 0x3f, 0, 192, buf); if(!rc) { WriteOk[lun] = ((buf[2] & 0x80) == 0); @@ -1271,3 +1276,5 @@ return MASS_ERR_NOT_IMPLEMENTED; #endif } + +#endif // USB_FLASH_DRIVE_SUPPORT \ No newline at end of file diff -Naur /home/aleph/Downloads/USB_Host_Shield_2.0-master/message.cpp lib/message.cpp --- /home/aleph/Downloads/USB_Host_Shield_2.0-master/message.cpp 2018-09-21 10:20:15.995647957 -0600 +++ lib/message.cpp 2018-09-19 07:43:46.520339375 -0600 @@ -23,6 +23,9 @@ */ #include "Usb.h" + +#if ENABLED(USB_FLASH_DRIVE_SUPPORT) + // 0x80 is the default (i.e. trace) to turn off set this global to something lower. // this allows for 126 other debugging levels. // TO-DO: Allow assignment to a different serial port by software @@ -120,4 +123,6 @@ D_PrintHex (rcode, 0x80); Notify(PSTR("\r\n"), 0x80); } -#endif +#endif // DEBUG_USB_HOST + +#endif // USB_FLASH_DRIVE_SUPPORT \ No newline at end of file diff -Naur /home/aleph/Downloads/USB_Host_Shield_2.0-master/parsetools.cpp lib/parsetools.cpp --- /home/aleph/Downloads/USB_Host_Shield_2.0-master/parsetools.cpp 2018-09-21 10:21:16.215867769 -0600 +++ lib/parsetools.cpp 2018-09-19 07:43:46.520339375 -0600 @@ -23,6 +23,8 @@ */ #include "Usb.h" +#if ENABLED(USB_FLASH_DRIVE_SUPPORT) + bool MultiByteValueParser::Parse(uint8_t **pp, uint16_t *pcntdn) { if(!pBuf) { Notify(PSTR("Buffer pointer is NULL!\r\n"), 0x80); @@ -72,3 +74,5 @@ } return true; } + +#endif // USB_FLASH_DRIVE_SUPPORT \ No newline at end of file diff -Naur /home/aleph/Downloads/USB_Host_Shield_2.0-master/settings.h lib/settings.h --- /home/aleph/Downloads/USB_Host_Shield_2.0-master/settings.h 2018-09-21 10:22:21.792106872 -0600 +++ lib/settings.h 2018-09-21 10:01:53.383594081 -0600 @@ -25,7 +25,21 @@ #ifndef USB_HOST_SHIELD_SETTINGS_H #define USB_HOST_SHIELD_SETTINGS_H #include "macros.h" - +#if ENABLED(USB_FLASH_DRIVE_SUPPORT) + //////////////////////////////////////////////////////////////////////////////// + /* Added by Bill Greiman to speed up mass storage initialization with USB + * flash drives and simple USB hard drives. + * Disable this by defining DELAY(x) to be delay(x). + */ + #define delay(x) if((x) < 200) safe_delay(x) + /* Almost all USB flash drives and simple USB hard drives fail the write + * protect test and add 20 - 30 seconds to USB init. Set SKIP_WRITE_PROTECT + * to nonzero to skip the test and assume the drive is writable. + */ + #define SKIP_WRITE_PROTECT 1 + /* Since Marlin only cares about USB flash drives, we only need one LUN. */ + #define MASS_MAX_SUPPORTED_LUN 1 +#endif //////////////////////////////////////////////////////////////////////////////// // SPI Configuration //////////////////////////////////////////////////////////////////////////////// @@ -45,6 +59,10 @@ * multiple serial ports are available. * For example Serial3. */ +#if ENABLED(USB_FLASH_DRIVE_SUPPORT) + #define USB_HOST_SERIAL MYSERIAL0 +#endif + #ifndef USB_HOST_SERIAL #define USB_HOST_SERIAL Serial #endif @@ -99,7 +117,7 @@ // No user serviceable parts below this line. // DO NOT change anything below here unless you are a developer! -#include "version_helper.h" +//#include "version_helper.h" #if defined(__GNUC__) && defined(__AVR__) #ifndef GCC_VERSION @@ -149,7 +167,6 @@ #else #define USING_SPI4TEENSY3 0 #endif - #if ((defined(ARDUINO_SAM_DUE) && defined(__SAM3X8E__)) || defined(__ARDUINO_X86__) || ARDUINO >= 10600) && !USING_SPI4TEENSY3 #include // Use the Arduino SPI library for the Arduino Due, Intel Galileo 1 & 2, Intel Edison or if the SPI library with transaction is available #endif diff -Naur /home/aleph/Downloads/USB_Host_Shield_2.0-master/UsbCore.h lib/UsbCore.h --- /home/aleph/Downloads/USB_Host_Shield_2.0-master/UsbCore.h 2018-09-21 10:23:09.348280107 -0600 +++ lib/UsbCore.h 2018-09-19 07:43:46.520339375 -0600 @@ -32,7 +32,10 @@ //#define USB_METHODS_INLINE /* shield pins. First parameter - SS pin, second parameter - INT pin */ -#ifdef BOARD_BLACK_WIDDOW + +#if defined(__MARLIN_H__) +typedef MAX3421e MAX3421E; // Marlin redefines this class in "../usb_host.h" +#elif defined(BOARD_BLACK_WIDDOW) typedef MAX3421e MAX3421E; // Black Widow #elif defined(CORE_TEENSY) && (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)) #if EXT_RAM diff -Naur /home/aleph/Downloads/USB_Host_Shield_2.0-master/Usb.cpp lib/Usb.cpp --- /home/aleph/Downloads/USB_Host_Shield_2.0-master/Usb.cpp 2018-09-21 10:23:20.732321559 -0600 +++ lib/Usb.cpp 2018-09-19 07:43:46.520339375 -0600 @@ -25,6 +25,8 @@ #include "Usb.h" +#if ENABLED(USB_FLASH_DRIVE_SUPPORT) + static uint8_t usb_error = 0; static uint8_t usb_task_state; @@ -825,3 +827,4 @@ } #endif // defined(USB_METHODS_INLINE) +#endif // USB_FLASH_DRIVE_SUPPORT diff -Naur /home/aleph/Downloads/USB_Host_Shield_2.0-master/Usb.h lib/Usb.h --- /home/aleph/Downloads/USB_Host_Shield_2.0-master/Usb.h 2018-09-21 10:23:33.756368972 -0600 +++ lib/Usb.h 2018-09-19 07:43:46.520339375 -0600 @@ -25,6 +25,8 @@ #ifndef _usb_h_ #define _usb_h_ +#include "../../../Marlin.h" + // WARNING: Do not change the order of includes, or stuff will break! #include #include @@ -34,13 +36,15 @@ #include "settings.h" #include "printhex.h" #include "message.h" + #include "hexdump.h" -#include "sink_parser.h" +//#include "sink_parser.h" #include "max3421e.h" #include "address.h" -#include "avrpins.h" +//#include "avrpins.h" #include "usb_ch9.h" -#include "usbhost.h" +//#include "usbhost.h" +#include "../usb_host.h" #include "UsbCore.h" #include "parsetools.h" #include "confdescparser.h"