Go to the documentation of this file.00001 #ifndef _DEV_SERIALFLASH_H_
00002 #define _DEV_SERIALFLASH_H_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include <dev/spibus.h>
00039
00044
00046 #ifndef SERIALFLASH_MAX_UNITS
00047 #if defined(__AVR__)
00048 #define SERIALFLASH_MAX_UNITS 65535
00049 #else
00050 #define SERIALFLASH_MAX_UNITS 65536
00051 #endif
00052 #endif
00053
00054 #if SERIALFLASH_MAX_UNITS <= 65535
00055 typedef uint16_t sf_unit_t;
00056 typedef uint_fast16_t sf_unit_fast_t;
00057 #else
00058 typedef uint32_t sf_unit_t;
00059 typedef uint_fast32_t sf_unit_fast_t;
00060 #endif
00061
00065 typedef struct _NUTSERIALFLASH NUTSERIALFLASH;
00066
00070 struct _NUTSERIALFLASH {
00072 NUTSPINODE *sf_node;
00074 void *sf_info;
00076 size_t sf_unit_size;
00078 sf_unit_t sf_units;
00080 sf_unit_t sf_rsvbot;
00082 sf_unit_t sf_rsvtop;
00084 int (*sf_init) (NUTSERIALFLASH *);
00086 void (*sf_exit) (NUTSERIALFLASH *);
00088 int (*sf_check) (NUTSERIALFLASH *, sf_unit_t, int);
00090 int (*sf_read) (NUTSERIALFLASH *, sf_unit_t, int, void *, int);
00092 int (*sf_compare) (NUTSERIALFLASH *, sf_unit_t, int, CONST void *, int);
00094 int (*sf_used) (NUTSERIALFLASH *, sf_unit_t, int);
00096 int (*sf_write) (NUTSERIALFLASH *, sf_unit_t, int, CONST void *, int);
00098 int (*sf_copy) (NUTSERIALFLASH *, sf_unit_t, sf_unit_t);
00100 int (*sf_commit) (NUTSERIALFLASH *, sf_unit_t);
00102 int (*sf_erase) (NUTSERIALFLASH *, sf_unit_t, int);
00103 };
00104
00107 #endif