00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef SD_RAW_H
00019 #define SD_RAW_H
00020
00021 #include <stdint.h>
00022 #include "sd_mmc_config.h"
00023
00040 #define SD_RAW_FORMAT_HARDDISK 0
00041
00044 #define SD_RAW_FORMAT_SUPERFLOPPY 1
00045
00048 #define SD_RAW_FORMAT_UNIVERSAL 2
00049
00052 #define SD_RAW_FORMAT_UNKNOWN 3
00053
00058 struct sd_raw_info
00059 {
00063 uint8_t manufacturer;
00067 uint8_t oem[3];
00071 uint8_t product[6];
00077 uint8_t revision;
00081 uint32_t serial;
00087 uint8_t manufacturing_year;
00091 uint8_t manufacturing_month;
00095 uint32_t capacity;
00101 uint8_t flag_copy;
00108 uint8_t flag_write_protect;
00115 uint8_t flag_write_protect_temp;
00123 uint8_t format;
00124 };
00125
00126 typedef uint8_t (*sd_raw_read_interval_handler_t)(uint8_t* buffer, uint32_t offset, void* p);
00127 typedef uint16_t (*sd_raw_write_interval_handler_t)(uint8_t* buffer, uint32_t offset, void* p);
00128
00129 uint8_t sd_init();
00130 uint8_t sd_available();
00131 uint8_t sd_locked();
00132
00133 uint8_t sd_read(uint32_t offset, uint8_t* buffer, uint16_t length);
00134 uint8_t sd_read_interval(uint32_t offset, uint8_t* buffer, uint16_t interval, uint16_t length, sd_raw_read_interval_handler_t callback, void* p);
00135 uint8_t sd_write(uint32_t offset, const uint8_t* buffer, uint16_t length);
00136 uint8_t sd_write_interval(uint32_t offset, uint8_t* buffer, uint16_t length, sd_raw_write_interval_handler_t callback, void* p);
00137 uint8_t sd_sync();
00138
00139 uint8_t sd_get_info(struct sd_raw_info* info);
00140
00145 #endif
00146