diff --git a/platform/esb/cfs-coffee-arch.c b/platform/esb/cfs-coffee-arch.c index e8cc1e739..558f079db 100644 --- a/platform/esb/cfs-coffee-arch.c +++ b/platform/esb/cfs-coffee-arch.c @@ -40,11 +40,19 @@ #include "cfs-coffee-arch.h" -static const unsigned char nullb[COFFEE_SECTOR_SIZE] = {0}; +static const unsigned char nullb[COFFEE_SECTOR_SIZE < 32 ? COFFEE_SECTOR_SIZE : 32] = {0}; void cfs_coffee_arch_erase(uint16_t sector) { - eeprom_write(COFFEE_START + sector * COFFEE_SECTOR_SIZE, - (unsigned char *)nullb, sizeof(nullb)); + unsigned int i; + for(i = 0; i <= COFFEE_SECTOR_SIZE - sizeof(nullb); i += sizeof(nullb)) { + eeprom_write(COFFEE_START + sector * COFFEE_SECTOR_SIZE + i, + (unsigned char *)nullb, sizeof(nullb)); + } + if(i < COFFEE_SECTOR_SIZE) { + eeprom_write(COFFEE_START + sector * COFFEE_SECTOR_SIZE + i, + (unsigned char *)nullb, COFFEE_SECTOR_SIZE - i); + + } } diff --git a/platform/esb/cfs-coffee-arch.h b/platform/esb/cfs-coffee-arch.h index 31ae1bbdd..7fd0ec604 100644 --- a/platform/esb/cfs-coffee-arch.h +++ b/platform/esb/cfs-coffee-arch.h @@ -44,18 +44,24 @@ #include "contiki-conf.h" #include "dev/eeprom.h" -#define COFFEE_SECTOR_SIZE 64UL +#define COFFEE_SECTOR_SIZE 1024UL #define COFFEE_PAGE_SIZE 64UL -#define COFFEE_START CFS_EEPROM_CONF_OFFSET +#define COFFEE_START COFFEE_SECTOR_SIZE #define COFFEE_SIZE (32 * 1024U - COFFEE_START) #define COFFEE_NAME_LENGTH 16 -#define COFFEE_MAX_OPEN_FILES 4 -#define COFFEE_FD_SET_SIZE 4 +#define COFFEE_MAX_OPEN_FILES 2 +#define COFFEE_FD_SET_SIZE 2 #define COFFEE_LOG_TABLE_LIMIT 16 -#define COFFEE_DIR_CACHE_ENTRIES 1 #define COFFEE_DYN_SIZE 1024 #define COFFEE_LOG_SIZE 256 +#define COFFEE_MICRO_LOGS 0 + +#if COFFEE_START < CFS_EEPROM_CONF_OFFSET +#error COFFEE_START must be at least as large as CFS_EEPROM_CONF_OFFSET +#error Change in cfs-coffee-arch.h +#endif /* COFFEE_START < CFS_EEPROM_CONF_OFFSET */ + #define COFFEE_WRITE(buf, size, offset) \ eeprom_write(COFFEE_START + (offset), (unsigned char *)(buf), (size))