#pragma once // // SD card low-level I/O utilities // // Inspired by: // http://www.avrfreaks.net/forum/tutc-simple-fat-and-sd-tutorial // #include #include #include #include #include #include "iopins.h" #include "spi.h" /** Init SD card on SPI */ bool sd_init(); /** * Send a command to the SD card * * @param cmd command to send * @param arg command argument * @return return value on success, 0xFF if nothing received back. */ uint8_t sd_command(uint8_t cmd, uint32_t arg); /** * Read from a sector into a buffer memory structure. * * @param sector sector to read (512 bytes long each) * @param read_at offset within the sector * @param buffer target buffer * @param write_at target starting address * @param len number of bytes to read * @return true on success */ bool sd_read(uint32_t sector, uint16_t read_at, uint8_t * buffer, uint16_t write_at, uint16_t len); /** * Write bytes from a buffer into a sector. * * @param sector sector to write (512 bytes long each) * @param buffer512 source buffer * @return true on success */ bool sd_write(uint32_t sector, const uint8_t * buffer512);