00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef SD_RAW_H
00012 #define SD_RAW_H
00013
00014 #include <stdint.h>
00015 #include "sd_raw_config.h"
00016
00017 #ifdef __cplusplus
00018 extern "C"
00019 {
00020 #endif
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #define SD_RAW_FORMAT_HARDDISK 0
00039
00040
00041
00042 #define SD_RAW_FORMAT_SUPERFLOPPY 1
00043
00044
00045
00046 #define SD_RAW_FORMAT_UNIVERSAL 2
00047
00048
00049
00050 #define SD_RAW_FORMAT_UNKNOWN 3
00051
00052
00053
00054
00055
00056 struct sd_raw_info
00057 {
00058
00059
00060
00061 uint8_t manufacturer;
00062
00063
00064
00065 uint8_t oem[3];
00066
00067
00068
00069 uint8_t product[6];
00070
00071
00072
00073
00074
00075 uint8_t revision;
00076
00077
00078
00079 uint32_t serial;
00080
00081
00082
00083
00084
00085 uint8_t manufacturing_year;
00086
00087
00088
00089 uint8_t manufacturing_month;
00090
00091
00092
00093 offset_t capacity;
00094
00095
00096
00097
00098
00099 uint8_t flag_copy;
00100
00101
00102
00103
00104
00105
00106 uint8_t flag_write_protect;
00107
00108
00109
00110
00111
00112
00113 uint8_t flag_write_protect_temp;
00114
00115
00116
00117
00118
00119
00120
00121 uint8_t format;
00122 };
00123
00124 typedef uint8_t (*sd_raw_read_interval_handler_t)(uint8_t* buffer, offset_t offset, void* p);
00125 typedef uintptr_t (*sd_raw_write_interval_handler_t)(uint8_t* buffer, offset_t offset, void* p);
00126
00127 uint8_t sd_raw_init();
00128 uint8_t sd_raw_available();
00129 uint8_t sd_raw_locked();
00130
00131 uint8_t sd_raw_read(offset_t offset, uint8_t* buffer, uintptr_t length);
00132 uint8_t sd_raw_read_interval(offset_t offset, uint8_t* buffer, uintptr_t interval, uintptr_t length, sd_raw_read_interval_handler_t callback, void* p);
00133 uint8_t sd_raw_write(offset_t offset, const uint8_t* buffer, uintptr_t length);
00134 uint8_t sd_raw_write_interval(offset_t offset, uint8_t* buffer, uintptr_t length, sd_raw_write_interval_handler_t callback, void* p);
00135 uint8_t sd_raw_sync();
00136
00137 uint8_t sd_raw_get_info(struct sd_raw_info* info);
00138
00139
00140
00141
00142
00143 #ifdef __cplusplus
00144 }
00145 #endif
00146
00147 #endif
00148