Browse Source

Merge pull request #3527 from thinkyhead/rc_sd_readblock_cleanup

Improve code in Sd2Card::readBlock
pull/1/head
Scott Lahteine 9 years ago
parent
commit
5847738bf9
  1. 37
      Marlin/Sd2Card.cpp

37
Marlin/Sd2Card.cpp

@ -383,38 +383,31 @@ fail:
* the value zero, false, is returned for failure.
*/
bool Sd2Card::readBlock(uint32_t blockNumber, uint8_t* dst) {
#if ENABLED(SD_CHECK_AND_RETRY)
uint8_t retryCnt = 3;
// use address if not SDHC card
if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9;
retry2:
retryCnt --;
if (cardCommand(CMD17, blockNumber)) {
error(SD_CARD_ERROR_CMD17);
if (retryCnt > 0) goto retry;
goto fail;
}
if (!readData(dst, 512)) {
if (retryCnt > 0) goto retry;
goto fail;
#if ENABLED(SD_CHECK_AND_RETRY)
uint8_t retryCnt = 3;
do {
if (!cardCommand(CMD17, blockNumber)) {
if (readData(dst, 512)) return true;
}
return true;
retry:
else
error(SD_CARD_ERROR_CMD17);
if (--retryCnt) break;
chipSelectHigh();
cardCommand(CMD12, 0);//Try sending a stop command, but ignore the result.
cardCommand(CMD12, 0); // Try sending a stop command, ignore the result.
errorCode_ = 0;
goto retry2;
} while (true);
#else
// use address if not SDHC card
if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9;
if (cardCommand(CMD17, blockNumber)) {
if (cardCommand(CMD17, blockNumber))
error(SD_CARD_ERROR_CMD17);
goto fail;
}
else
return readData(dst, 512);
#endif
fail:
chipSelectHigh();
return false;
}

Loading…
Cancel
Save