From 9952ee8f266787f9d3211aa70afd4cf237c46361 Mon Sep 17 00:00:00 2001 From: nifi Date: Fri, 11 Jul 2008 15:27:57 +0000 Subject: [PATCH] Ported Coffee to the ESB platform --- platform/esb/Makefile.esb | 13 +++++- platform/esb/cfs-coffee-arch.c | 50 ++++++++++++++++++++++ platform/esb/cfs-coffee-arch.h | 77 ++++++++++++++++++++++++++++++++++ 3 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 platform/esb/cfs-coffee-arch.c create mode 100644 platform/esb/cfs-coffee-arch.h diff --git a/platform/esb/Makefile.esb b/platform/esb/Makefile.esb index c16019fdd..b19cccfc8 100644 --- a/platform/esb/Makefile.esb +++ b/platform/esb/Makefile.esb @@ -1,10 +1,13 @@ -# $Id: Makefile.esb,v 1.10 2008/01/18 18:26:02 nifi Exp $ +# $Id: Makefile.esb,v 1.11 2008/07/11 15:27:57 nifi Exp $ SENSORS = sensors.c irq.c button-sensor.c pir-sensor.c vib-sensor.c \ sound-sensor.c radio-sensor.c ctsrts-sensor.c battery-sensor.c \ temperature-sensor.c ESB = ir.c beep.c ds1629.c tr1001-uip.c tr1001-gcr.c gcr.c \ - esb-sensors.c node-id.c eeprom.c cfs-eeprom.c energest-arch.c + esb-sensors.c node-id.c eeprom.c energest-arch.c +CFS_EEPROM = cfs-eeprom.c +CFS_COFFEE = cfs-coffee.c cfs-coffee-arch.c + CONTIKI_TARGET_DIRS = . dev apps net loader ifndef CONTIKI_TARGET_MAIN CONTIKI_TARGET_MAIN = contiki-esb-main.c @@ -24,6 +27,12 @@ CONTIKI_TARGET_SOURCEFILES += contiki-esb-default-init-net.c endif endif +ifeq ($(CFS),coffee) +CONTIKI_TARGET_SOURCEFILES += $(CFS_COFFEE) +else +CONTIKI_TARGET_SOURCEFILES += $(CFS_EEPROM) +endif + include $(CONTIKI)/platform/$(TARGET)/apps/Makefile.apps #PROJECT_OBJECTFILES += $(OBJECTDIR)/contiki-esb-main.o diff --git a/platform/esb/cfs-coffee-arch.c b/platform/esb/cfs-coffee-arch.c new file mode 100644 index 000000000..e8cc1e739 --- /dev/null +++ b/platform/esb/cfs-coffee-arch.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2008, Swedish Institute of Computer Science + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the Contiki operating system. + * + */ + +/** + * \file + * Coffee architecture-dependent functionality for the ESB platform. + * \author + * Nicolas Tsiftes + * Niclas Finne + */ + +#include "cfs-coffee-arch.h" + +static const unsigned char nullb[COFFEE_SECTOR_SIZE] = {0}; + +void +cfs_coffee_arch_erase(uint16_t sector) +{ + eeprom_write(COFFEE_START + sector * COFFEE_SECTOR_SIZE, + (unsigned char *)nullb, sizeof(nullb)); +} diff --git a/platform/esb/cfs-coffee-arch.h b/platform/esb/cfs-coffee-arch.h new file mode 100644 index 000000000..174e98e44 --- /dev/null +++ b/platform/esb/cfs-coffee-arch.h @@ -0,0 +1,77 @@ +#ifndef CFS_COFFEE_ARCH_H +#define CFS_COFFEE_ARCH_H + +/* + * Copyright (c) 2008, Swedish Institute of Computer Science + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the Contiki operating system. + * + */ + +/** + * \file + * Coffee architecture-dependent header for the ESB platform. + * \author + * Nicolas Tsiftes + * Niclas Finne + */ + +#include "contiki-conf.h" +#include "dev/eeprom.h" + +#define COFFEE_SECTOR_SIZE 64UL +#define COFFEE_PAGE_SIZE 64UL +#define COFFEE_START CFS_EEPROM_CONF_OFFSET +#define COFFEE_SIZE ((32 kb) - COFFEE_START) +#define COFFEE_PAGE_COUNT (COFFEE_SIZE / COFFEE_PAGE_SIZE) +#define COFFEE_PAGES_PER_SECTOR (COFFEE_SECTOR_SIZE / COFFEE_PAGE_SIZE) +#define COFFEE_NAME_LENGTH 16 +#define COFFEE_DYN_SIZE (1 kb) +#define COFFEE_FD_SET_SIZE 2 +#define COFFEE_LOG_DIVISOR 4 +#define COFFEE_LOG_SIZE (256) +#define COFFEE_LOG_TABLE_LIMIT 16 +#define COFFEE_DIR_CACHE_ENTRIES 1 + +#define COFFEE_WRITE(buf, size, offset) \ + eeprom_write(COFFEE_START + (offset), (unsigned char *)(buf), (size)) + +#define COFFEE_READ(buf, size, offset) \ + eeprom_read(COFFEE_START + (offset), (unsigned char *)(buf), (size)) + +#define COFFEE_ERASE(sector) cfs_coffee_arch_erase(sector) + +#define READ_HEADER(hdr, page) \ + COFFEE_READ((hdr), sizeof (*hdr), (page) * COFFEE_PAGE_SIZE) + +#define WRITE_HEADER(hdr, page) \ + COFFEE_WRITE((hdr), sizeof (*hdr), (page) * COFFEE_PAGE_SIZE) + +void cfs_coffee_arch_erase(uint16_t sector); + +#endif /* !COFFEE_ARCH_H */