27#if !defined(_usb_h_) || defined(_USBHOST_H_)
28#error "Never include usbhost.h directly; include Usb.h instead"
33#include <spi4teensy3.h>
38template<
typename SPI_CLK,
typename SPI_MOSI,
typename SPI_MISO,
typename SPI_SS >
class SPi {
49#elif defined(SPI_HAS_TRANSACTION)
56#warning "You need to initialize the SPI interface manually when using the STM32F4 platform"
65#if defined(__MIPSEL__)
67#elif defined(__ARDUINO_X86__)
69 USB_SPI.setClockSpeed(12000000);
73#elif !defined(RBL_NRF51822) && !defined(NRF52_SERIES)
95#if defined(PIN_SPI_SCK) && defined(PIN_SPI_MOSI) && defined(PIN_SPI_MISO) && defined(PIN_SPI_SS)
98#define NOTHING_EXTRACT
99#define EXTRACT(...) EXTRACT __VA_ARGS__
100#define PASTE(x, ...) x ## __VA_ARGS__
101#define EVALUATING_PASTE(x, ...) PASTE(x, __VA_ARGS__)
102#define UNPAREN(x) EVALUATING_PASTE(NOTHING_, EXTRACT x)
103#define APPEND_PIN(pin) P ## pin
104#define MAKE_PIN(x) EVALUATING_PASTE(APPEND_, PIN(UNPAREN(x)))
107#elif defined(__AVR_ATmega1280__) || (__AVR_ATmega2560__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
109#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
111#elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)
113#elif (defined(CORE_TEENSY) && (defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MK64FX512__) || defined(__MK66FX1M0__) || defined(__MKL26Z64__))) || defined(__ARDUINO_ARC__) || defined(__ARDUINO_X86__) || defined(__MIPSEL__) || defined(STM32F4) || defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
115#elif defined(ARDUINO_SAM_DUE) && defined(__SAM3X8E__)
117#elif defined(RBL_NRF51822)
119#elif defined(ESP8266)
121#elif defined(ARDUINO_M5STACK_CORES3)
123#elif defined(ARDUINO_XIAO_ESP32S3)
127#elif defined(ARDUINO_NRF52840_FEATHER) || defined(ARDUINO_NRF52840_FEATHER_SENSE)
129#elif defined(ARDUINO_Seeed_XIAO_nRF52840_Sense)
132#error "No SPI entry in usbhost.h"
140template<
typename SPI_SS,
typename INTR >
class MAX3421e {
169template<
typename SPI_SS,
typename INTR >
173template<
typename SPI_SS,
typename INTR >
184template<
typename SPI_SS,
typename INTR >
187#if defined(SPI_HAS_TRANSACTION)
196 spi4teensy3::send(
c, 2);
197#elif defined(SPI_HAS_TRANSACTION) && !defined(ESP8266) && !defined(ESP32)
202#elif defined(STM32F4)
218#if defined(SPI_HAS_TRANSACTION)
227template<
typename SPI_SS,
typename INTR >
230#if defined(SPI_HAS_TRANSACTION)
236 spi4teensy3::send(
reg | 0x02);
239#elif defined(STM32F4)
244#elif !defined(__AVR__) || !defined(SPDR)
245#if defined(ESP8266) || defined(ESP32)
266#if defined(SPI_HAS_TRANSACTION)
276template<
typename SPI_SS,
typename INTR >
285template<
typename SPI_SS,
typename INTR >
288#if defined(SPI_HAS_TRANSACTION)
294 spi4teensy3::send(
reg);
297#elif defined(STM32F4)
302#elif !defined(SPDR) || defined(SPI_HAS_TRANSACTION)
315#if defined(SPI_HAS_TRANSACTION)
324template<
typename SPI_SS,
typename INTR >
327#if defined(SPI_HAS_TRANSACTION)
333 spi4teensy3::send(
reg);
336#elif defined(SPI_HAS_TRANSACTION) && !defined(ESP8266) && !defined(ESP32)
341#elif defined(__ARDUINO_X86__)
345#elif defined(STM32F4)
379#if defined(SPI_HAS_TRANSACTION)
391template<
typename SPI_SS,
typename INTR >
404template<
typename SPI_SS,
typename INTR >
415template<
typename SPI_SS,
typename INTR >
429template<
typename SPI_SS,
typename INTR >
466template<
typename SPI_SS,
typename INTR >
510template<
typename SPI_SS,
typename INTR >
545template<
typename SPI_SS,
typename INTR >
554 rcode = IntHandler();
564template<
typename SPI_SS,
typename INTR >
ConfigDescParser(UsbConfigXtracter *xtractor)
uint8_t regRd(uint8_t reg)
void vbusPower(VBUS_t state)
void regWr(uint8_t reg, uint8_t data)
uint8_t * bytesWr(uint8_t reg, uint8_t nbytes, uint8_t *data_p)
uint8_t getVbusState(void)
uint8_t gpioRd()
Reads the current GPI input values.
uint8_t gpioRdOutput()
Reads the current GPI output values.
uint8_t * bytesRd(uint8_t reg, uint8_t nbytes, uint8_t *data_p)
void gpioWr(uint8_t data)
#define XMEM_ACQUIRE_SPI()
#define XMEM_RELEASE_SPI()