41 static FILE *eeprom_file;
45 eeprom_fill(eeprom_addr_t addr,
unsigned char value,
int size)
47 if((addr > EEPROM_END_ADDR) || (addr+size > EEPROM_END_ADDR+1) || size < 0) {
48 fprintf(stderr,
"eeprom_fill: Bad address and/or size (addr = %04x, size = %d)\n", addr, size);
60 fseek(eeprom_file, addr, SEEK_SET);
63 if(fputc(value, eeprom_file) != value) {
64 perror(
"fputc() failed");
75 char *eeprom_filename = getenv(
"CONTIKI_EEPROM");
78 eeprom_file = fopen(eeprom_filename,
"r+");
82 eeprom_file = fopen(eeprom_filename,
"w+");
85 perror(
"Unable to create EEPROM file");
90 fprintf(stderr,
"eeprom_init: Using \"%s\".\n", eeprom_filename);
92 eeprom_file = tmpfile();
95 perror(
"Unable to create temporary EEPROM file");
105 fseek(eeprom_file, 0, SEEK_END);
106 length = ftell(eeprom_file);
109 perror(
"ftell failed");
113 if(length < EEPROM_END_ADDR) {
115 eeprom_fill(length, 0xFF, EEPROM_SIZE - length);
123 if((addr > EEPROM_END_ADDR) || (addr+size > EEPROM_END_ADDR+1) || size < 0) {
124 fprintf(stderr,
"eeprom_write: Bad address and/or size (addr = %04x, size = %d)\n", addr, size);
136 fseek(eeprom_file, addr, SEEK_SET);
138 if(fwrite(buf, 1, size, eeprom_file) != size) {
139 perror(
"fwrite() failed");
148 if((addr > EEPROM_END_ADDR) || (addr+size > EEPROM_END_ADDR+1) || size < 0) {
149 fprintf(stderr,
"eeprom_read: Bad address and/or size (addr = %04x, size = %d)\n", addr, size);
160 fseek(eeprom_file, addr, SEEK_SET);
162 if(fread(buf, 1, size, eeprom_file) != size) {
163 perror(
"fread() failed");
void eeprom_read(eeprom_addr_t addr, unsigned char *buf, int size)
Read data from the EEPROM.
void eeprom_write(eeprom_addr_t addr, unsigned char *buf, int size)
Write a buffer into EEPROM.
void eeprom_init(void)
Initialize the EEPROM module.