X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fdrv%2Fsd.h;h=df12bb6e7a0639a2cdd05bdff6cf7513f862307c;hb=010a2d0611571ec1e4bace00b4b6efe8462f512f;hp=85e7b11cca4b56d409ddf85ddca56afb27a33a8d;hpb=b883250b42adfbfab013f265fa5073a3a3455b8b;p=bertos.git diff --git a/bertos/drv/sd.h b/bertos/drv/sd.h index 85e7b11c..df12bb6e 100644 --- a/bertos/drv/sd.h +++ b/bertos/drv/sd.h @@ -31,13 +31,11 @@ * * \brief Function library for secure digital memory. * - * Right now, the interface for these function is the one defined in diskio.h from - * the FatFS module. * * \author Francesco Sacchi * * $WIZ$ module_name = "sd" - * $WIZ$ module_depends = "kfile", "timer" + * $WIZ$ module_depends = "kfile", "timer", "kblock" * $WIZ$ module_hw = "bertos/hw/hw_sd.h" * $WIZ$ module_configuration = "bertos/cfg/cfg_sd.h" */ @@ -46,27 +44,35 @@ #ifndef DRV_SD_H #define DRV_SD_H +#include "cfg/cfg_sd.h" + #include #include #include -#include "cfg/cfg_sd.h" +#define SD_UNBUFFERED BV(0) ///< Open SD memory disabling page caching, no modification and partial write are allowed. +/** + * SD Card context structure. + */ typedef struct Sd { - KBlock b; + KBlock b; ///< KBlock base class KFile *ch; ///< SPI communication channel - uint16_t r1; + uint16_t r1; ///< Last status data received from SD + uint16_t tranfer_len; ///< Lenght for the read/write commands, cached in order to increase speed. } Sd; bool sd_initUnbuf(Sd *sd, KFile *ch); bool sd_initBuf(Sd *sd, KFile *ch); #if CONFIG_SD_OLD_INIT - #warning "Deprecated: this API will be removed in the next major release," - #warning "please disable CONFIG_SD_OLD_INIT and pass explicitly the SD context to sd_init()." + #if !(ARCH & ARCH_NIGHTTEST) + #warning "Deprecated: this API will be removed in the next major release," + #warning "please disable CONFIG_SD_OLD_INIT and pass explicitly the SD context to sd_init()." + #endif /** * Initializes the SD driver. @@ -77,6 +83,8 @@ bool sd_initBuf(Sd *sd, KFile *ch); * * \note This API is deprecated, disable CONFIG_SD_OLD_INIT and * use the new one instead. + * + * \see CONFIG_SD_OLD_INIT. */ #define sd_init(ch) {static struct Sd sd; sd_initUnbuf(&sd, (ch));} @@ -94,7 +102,7 @@ bool sd_initBuf(Sd *sd, KFile *ch); * * \return true if initialization succeds, false otherwise. */ - #define sd_init(sd, ch, buffered) ((buffered) ? sd_initBuf((sd), (ch)) : sd_initUnbuf((sd), (ch))) + #define sd_init(sd, ch, buffered) ((buffered & SD_UNBUFFERED) ? sd_initUnbuf((sd), (ch)) : sd_initBuf((sd), (ch))) #endif @@ -102,6 +110,7 @@ bool sd_initBuf(Sd *sd, KFile *ch); #define KBT_SD MAKE_ID('S', 'D', 'B', 'K') bool sd_test(Sd *sd); +void sd_writeTest(Sd *sd); INLINE Sd *SD_CAST(KBlock *b) {