Skip to content

Commit

Permalink
adjust indent
Browse files Browse the repository at this point in the history
  • Loading branch information
thinkyhead committed Feb 12, 2023
1 parent 8eb06c4 commit 21240dc
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 102 deletions.
183 changes: 94 additions & 89 deletions Marlin/src/sd/Sd2Card.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
#ifndef SD_RETRY_COUNT
#define SD_RETRY_COUNT 3
#elif SD_RETRY_COUNT < 1
#error "SD_RETRY_COUNT has to be at least 1"
#error "SD_RETRY_COUNT must be greater than or equal to 1."
#endif
#endif

Expand Down Expand Up @@ -105,17 +105,16 @@ uint8_t DiskIODriver_SPI_SD::cardCommand(const uint8_t cmd, const uint32_t arg)
// Select card
chipSelect();

#ifdef SD_WRITE_TIMEOUT
// Wait up to 300 ms if busy
waitNotBusy(SD_WRITE_TIMEOUT);
#endif
#ifdef SD_WRITE_TIMEOUT
waitNotBusy(SD_WRITE_TIMEOUT); // Wait up to 300 ms if busy
#endif

uint8_t *pa = (uint8_t *)(&arg);

#if ENABLED(SD_CHECK_AND_RETRY)

// Form message
uint8_t d[6] = {(uint8_t) (cmd | 0x40), pa[3], pa[2], pa[1], pa[0] };
uint8_t d[6] = { uint8_t(cmd | 0x40), pa[3], pa[2], pa[1], pa[0] };

// Add crc
d[5] = CRC7(d, 5);
Expand Down Expand Up @@ -203,7 +202,7 @@ bool DiskIODriver_SPI_SD::erase(uint32_t firstBlock, uint32_t lastBlock) {
if (!csd.v1.erase_blk_en) {
// erase size mask
uint8_t m = (csd.v1.sector_size_high << 1) | csd.v1.sector_size_low;
if ((firstBlock & m) != 0 || ((lastBlock + 1) & m) != 0) {
if ((firstBlock & m) || ((lastBlock + 1) & m)) {
// error card can't erase specified area
error(SD_CARD_ERROR_ERASE_SINGLE_BLOCK);
goto FAIL;
Expand All @@ -214,16 +213,18 @@ bool DiskIODriver_SPI_SD::erase(uint32_t firstBlock, uint32_t lastBlock) {
error(SD_CARD_ERROR_ERASE);
goto FAIL;
}
#ifdef SD_ERASE_TIMEOUT
if (!waitNotBusy(SD_ERASE_TIMEOUT)) {
error(SD_CARD_ERROR_ERASE_TIMEOUT);
goto FAIL;
}
#else
while (spiRec() != 0xFF) {}
#endif
#ifdef SD_ERASE_TIMEOUT
if (!waitNotBusy(SD_ERASE_TIMEOUT)) {
error(SD_CARD_ERROR_ERASE_TIMEOUT);
goto FAIL;
}
#else
while (spiRec() != 0xFF) {}
#endif

chipDeselect();
return true;

FAIL:
chipDeselect();
return false;
Expand Down Expand Up @@ -260,9 +261,9 @@ bool DiskIODriver_SPI_SD::init(const uint8_t sckRateID, const pin_t chipSelectPi
errorCode_ = type_ = 0;
chipSelectPin_ = chipSelectPin;
// 16-bit init start time allows over a minute
#ifdef SD_INIT_TIMEOUT
const millis_t init_timeout = millis() + SD_INIT_TIMEOUT;
#endif
#ifdef SD_INIT_TIMEOUT
const millis_t init_timeout = millis() + SD_INIT_TIMEOUT;
#endif
uint32_t arg;

hal.watchdog_refresh(); // In case init takes too long
Expand Down Expand Up @@ -290,12 +291,12 @@ bool DiskIODriver_SPI_SD::init(const uint8_t sckRateID, const pin_t chipSelectPi

// Command to go idle in SPI mode
while ((status_ = cardCommand(CMD0, 0)) != R1_IDLE_STATE) {
#ifdef SD_INIT_TIMEOUT
if (ELAPSED(millis(), init_timeout)) {
error(SD_CARD_ERROR_CMD0);
goto FAIL;
}
#endif
#ifdef SD_INIT_TIMEOUT
if (ELAPSED(millis(), init_timeout)) {
error(SD_CARD_ERROR_CMD0);
goto FAIL;
}
#endif
}

#if ENABLED(SD_CHECK_AND_RETRY)
Expand All @@ -318,26 +319,26 @@ bool DiskIODriver_SPI_SD::init(const uint8_t sckRateID, const pin_t chipSelectPi
break;
}

#ifdef SD_INIT_TIMEOUT
if (ELAPSED(millis(), init_timeout)) {
error(SD_CARD_ERROR_CMD8);
goto FAIL;
}
#endif
#ifdef SD_INIT_TIMEOUT
if (ELAPSED(millis(), init_timeout)) {
error(SD_CARD_ERROR_CMD8);
goto FAIL;
}
#endif
}

hal.watchdog_refresh(); // In case init takes too long

// Initialize card and send host supports SDHC if SD2
arg = type() == SD_CARD_TYPE_SD2 ? 0x40000000 : 0;
while ((status_ = cardAcmd(ACMD41, arg)) != R1_READY_STATE) {
#ifdef SD_INIT_TIMEOUT
// Check for timeout
if (ELAPSED(millis(), init_timeout)) {
error(SD_CARD_ERROR_ACMD41);
goto FAIL;
}
#endif
#ifdef SD_INIT_TIMEOUT
// Check for timeout
if (ELAPSED(millis(), init_timeout)) {
error(SD_CARD_ERROR_ACMD41);
goto FAIL;
}
#endif
}
// If SD2 read OCR register to check for SDHC card
if (type() == SD_CARD_TYPE_SD2) {
Expand Down Expand Up @@ -480,16 +481,17 @@ bool DiskIODriver_SPI_SD::readData(uint8_t *dst) {
bool DiskIODriver_SPI_SD::readData(uint8_t *dst, const uint16_t count) {
bool success = false;

#ifdef SD_READ_TIMEOUT
const millis_t read_timeout = millis() + SD_READ_TIMEOUT;
#endif
#ifdef SD_READ_TIMEOUT
const millis_t read_timeout = millis() + SD_READ_TIMEOUT;
#endif

while ((status_ = spiRec()) == 0xFF) { // Wait for start block token
#ifdef SD_READ_TIMEOUT
if (ELAPSED(millis(), read_timeout)) {
error(SD_CARD_ERROR_READ_TIMEOUT);
goto FAIL;
}
#endif
#ifdef SD_READ_TIMEOUT
if (ELAPSED(millis(), read_timeout)) {
error(SD_CARD_ERROR_READ_TIMEOUT);
goto FAIL;
}
#endif
}

if (status_ == DATA_START_BLOCK) {
Expand All @@ -507,9 +509,9 @@ bool DiskIODriver_SPI_SD::readData(uint8_t *dst, const uint16_t count) {
else
error(SD_CARD_ERROR_READ);

#ifdef SD_READ_TIMEOUT
FAIL:
#endif
#ifdef SD_READ_TIMEOUT
FAIL:
#endif
chipDeselect();
return success;
}
Expand Down Expand Up @@ -606,15 +608,16 @@ bool DiskIODriver_SPI_SD::writeBlock(uint32_t blockNumber, const uint8_t *src) {
if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9; // Use address if not SDHC card
if (!cardCommand(CMD24, blockNumber)) {
if (writeData(DATA_START_BLOCK, src)) {
#ifdef SD_WRITE_TIMEOUT
if (!waitNotBusy(SD_WRITE_TIMEOUT)) { // Wait for flashing to complete
error(SD_CARD_ERROR_WRITE_TIMEOUT);
}
else
#else
while (spiRec() != 0xFF) {}
#endif
{
#ifdef SD_WRITE_TIMEOUT
if (!waitNotBusy(SD_WRITE_TIMEOUT)) // Wait for flashing to complete
error(SD_CARD_ERROR_WRITE_TIMEOUT);
else
success = true;
#else
while (spiRec() != 0xFF) {}
success = true;
#endif
if (success) {
success = !(cardCommand(CMD13, 0) || spiRec()); // Response is r2 so get and check two bytes for nonzero
if (!success) error(SD_CARD_ERROR_WRITE_PROGRAMMING);
}
Expand All @@ -637,17 +640,20 @@ bool DiskIODriver_SPI_SD::writeData(const uint8_t *src) {

chipSelect();
// Wait for previous write to finish
#ifdef SD_WRITE_TIMEOUT
if (!waitNotBusy(SD_WRITE_TIMEOUT))
goto FAIL;
#else
while (spiRec() != 0xFF) {}
#endif
if (!writeData(WRITE_MULTIPLE_TOKEN, src))
goto FAIL;
chipDeselect();
return true;
FAIL:
#ifdef SD_WRITE_TIMEOUT
if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto FAIL;
#else
while (spiRec() != 0xFF) {}
#endif

if (writeData(WRITE_MULTIPLE_TOKEN, src)) {
chipDeselect();
return true;
}

#ifdef SD_WRITE_TIMEOUT
FAIL:
#endif
chipDeselect();
error(SD_CARD_ERROR_WRITE_MULTIPLE);
return false;
Expand Down Expand Up @@ -707,30 +713,29 @@ bool DiskIODriver_SPI_SD::writeStop() {
if (ENABLED(SDCARD_READONLY)) return false;

chipSelect();
#ifdef SD_WRITE_TIMEOUT
if (!waitNotBusy(SD_WRITE_TIMEOUT)) {
error(SD_CARD_ERROR_STOP_TRAN);
goto FAIL;
}
#else
while (spiRec() != 0xFF) {}
#endif
#ifdef SD_WRITE_TIMEOUT
if (!waitNotBusy(SD_WRITE_TIMEOUT)) {
error(SD_CARD_ERROR_STOP_TRAN);
goto FAIL;
}
#else
while (spiRec() != 0xFF) {}
#endif
spiSend(STOP_TRAN_TOKEN);
#ifdef SD_WRITE_TIMEOUT
if (!waitNotBusy(SD_WRITE_TIMEOUT)) {
goto FAIL;
}
#else
while (spiRec() != 0xFF) {}
#endif
#ifdef SD_WRITE_TIMEOUT
if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto FAIL;
#else
while (spiRec() != 0xFF) {}
#endif

chipDeselect();
return true;
#ifdef SD_WRITE_TIMEOUT
FAIL:
chipDeselect();
return false;
#endif

#ifdef SD_WRITE_TIMEOUT
FAIL:
chipDeselect();
return false;
#endif
}

#endif // NEED_SD2CARD_SPI
22 changes: 9 additions & 13 deletions Marlin/src/sd/Sd2Card.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,30 +41,26 @@

#ifndef SD_NO_DEFAULT_TIMEOUT
#ifndef SD_INIT_TIMEOUT
// (ms) Init timeout
#define SD_INIT_TIMEOUT 2000u
#define SD_INIT_TIMEOUT 2000u // (ms) Init timeout
#elif SD_INIT_TIMEOUT < 0
#error "SD_INIT_TIMEOUT has to be at least 0"
#error "SD_INIT_TIMEOUT must be greater than or equal to 0."
#endif
#ifndef SD_ERASE_TIMEOUT
// (ms) Erase timeout
#define SD_ERASE_TIMEOUT 10000u
#define SD_ERASE_TIMEOUT 10000u // (ms) Erase timeout
#elif SD_ERASE_TIMEOUT < 0
#error "SD_ERASE_TIMEOUT has to be at least 0"
#error "SD_ERASE_TIMEOUT must be greater than or equal to 0."
#endif
#ifndef SD_READ_TIMEOUT
// (ms) Read timeout
#define SD_READ_TIMEOUT 300u
#define SD_READ_TIMEOUT 300u // (ms) Read timeout
#elif SD_READ_TIMEOUT < 0
#error "SD_READ_TIMEOUT has to be at least 0"
#error "SD_READ_TIMEOUT must be greater than or equal to 0."
#endif
#ifndef SD_WRITE_TIMEOUT
// (ms) Write timeout
#define SD_WRITE_TIMEOUT 600u
#define SD_WRITE_TIMEOUT 600u // (ms) Write timeout
#elif SD_WRITE_TIMEOUT < 0
#error "SD_WRITE_TIMEOUT has to be at least 0"
#error "SD_WRITE_TIMEOUT must be greater than or equal to 0."
#endif
#endif //SD_NO_DEFAULT_TIMEOUT
#endif // SD_NO_DEFAULT_TIMEOUT

// SD card errors
typedef enum : uint8_t {
Expand Down

0 comments on commit 21240dc

Please sign in to comment.