Soldered SD Card Arduino Library 1.0.0
Easily read and write files to and form the SD card breakout! A fork of the original SDFat library by Bill Greiman.
Loading...
Searching...
No Matches
SdSpiLibDriver.h
Go to the documentation of this file.
1
29#ifndef SdSpiLibDriver_h
30#define SdSpiLibDriver_h
31//------------------------------------------------------------------------------
33{
34 m_spi->beginTransaction(m_spiSettings);
35}
36//------------------------------------------------------------------------------
37inline void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig)
38{
39 if (spiConfig.spiPort)
40 {
41 m_spi = spiConfig.spiPort;
42#if defined(SDCARD_SPI) && defined(SDCARD_SS_PIN)
43 }
44 else if (spiConfig.csPin == SDCARD_SS_PIN)
45 {
46 m_spi = &SDCARD_SPI;
47#endif // defined(SDCARD_SPI) && defined(SDCARD_SS_PIN)
48 }
49 else
50 {
51 m_spi = &SPI;
52 }
53 m_spi->begin();
54}
55//------------------------------------------------------------------------------
57{
58 m_spi->endTransaction();
59}
60//------------------------------------------------------------------------------
61inline uint8_t SdSpiArduinoDriver::receive()
62{
63 return m_spi->transfer(0XFF);
64}
65//------------------------------------------------------------------------------
66inline uint8_t SdSpiArduinoDriver::receive(uint8_t *buf, size_t count)
67{
68#if USE_SPI_ARRAY_TRANSFER
69 memset(buf, 0XFF, count);
70 m_spi->transfer(buf, count);
71#else // USE_SPI_ARRAY_TRANSFER
72 for (size_t i = 0; i < count; i++)
73 {
74 buf[i] = m_spi->transfer(0XFF);
75 }
76#endif // USE_SPI_ARRAY_TRANSFER
77 return 0;
78}
79//------------------------------------------------------------------------------
80inline void SdSpiArduinoDriver::send(uint8_t data)
81{
82 m_spi->transfer(data);
83}
84//------------------------------------------------------------------------------
85inline void SdSpiArduinoDriver::send(const uint8_t *buf, size_t count)
86{
87#if USE_SPI_ARRAY_TRANSFER
88 if (count <= 512)
89 {
90 uint8_t tmp[count]; // NOLINT
91 memcpy(tmp, buf, count);
92 m_spi->transfer(tmp, count);
93 return;
94 }
95#endif // USE_SPI_ARRAY_TRANSFER
96 for (size_t i = 0; i < count; i++)
97 {
98 m_spi->transfer(buf[i]);
99 }
100}
101#endif // SdSpiLibDriver_h
void send(uint8_t data)
Definition SdSpiArtemis.cpp:63
SPISettings m_spiSettings
Definition SdSpiArduinoDriver.h:88
uint8_t receive()
Definition SdSpiArtemis.cpp:51
void activate()
Definition SdSpiArtemis.cpp:28
SPIClass * m_spi
Definition SdSpiArduinoDriver.h:87
void begin(SdSpiConfig spiConfig)
Definition SdSpiArtemis.cpp:33
void deactivate()
Definition SdSpiArtemis.cpp:46
SPI card configuration.
Definition SdSpiDriver.h:112
const SdCsPin_t csPin
Definition SdSpiDriver.h:152
SpiPort_t * spiPort
Definition SdSpiDriver.h:158