Changed Contiki File System (cfs) from a service to a plain library.
This change means that one needs to select _ONE_ cfs implementation at Contiki library link time. But this doesn't appear to be an issue as all platforms have their "favorite" implementation anyway.
This commit is contained in:
parent
67ae9fbcb7
commit
9f97290665
|
@ -37,7 +37,6 @@ include $(CONTIKI)/core/net/mac/Makefile.mac
|
|||
SYSTEM = process.c procinit.c service.c autostart.c elfloader.c
|
||||
THREADS = mt.c
|
||||
LIBS = memb.c timer.c list.c etimer.c energest.c rtimer.c
|
||||
CFS = cfs.c cfs-ram.c
|
||||
CTK = ctk.c
|
||||
UIP = uip.c uiplib.c resolv.c tcpip.c psock.c hc.c uip-split.c \
|
||||
uip-fw.c uip-fw-service.c uipbuf.c uip_arp.c uiplib.c tcpdump.c \
|
||||
|
@ -49,7 +48,7 @@ CTKVNC = $(CTK) ctk-vncserver.c libconio.c vnc-server.c vnc-out.c \
|
|||
CTKTERM = $(CTK) libconio.c ctk-term.c ctk-term-in.c ctk-term-out.c \
|
||||
ctk-termtelnet.c
|
||||
|
||||
CONTIKIFILES = $(SYSTEM) $(CFS) $(LIBS) $(NET) $(DHCP) $(THREADS)
|
||||
CONTIKIFILES = $(SYSTEM) $(LIBS) $(NET) $(DHCP) $(THREADS)
|
||||
|
||||
CONTIKI_SOURCEFILES += $(CONTIKIFILES)
|
||||
|
||||
|
|
|
@ -30,12 +30,11 @@
|
|||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs-eeprom.c,v 1.1 2006/06/17 22:41:15 adamdunkels Exp $
|
||||
* $Id: cfs-eeprom.c,v 1.2 2007/05/19 21:05:48 oliverschmidt Exp $
|
||||
*/
|
||||
#include "contiki.h"
|
||||
|
||||
#include "cfs/cfs.h"
|
||||
#include "cfs/cfs-service.h"
|
||||
#include "dev/eeprom.h"
|
||||
|
||||
struct filestate {
|
||||
|
@ -54,8 +53,8 @@ static struct filestate file;
|
|||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_open(const char *n, int f)
|
||||
int
|
||||
cfs_open(const char *n, int f)
|
||||
{
|
||||
if(file.flag == FLAG_FILE_CLOSED) {
|
||||
file.flag = FLAG_FILE_OPEN;
|
||||
|
@ -66,14 +65,14 @@ s_open(const char *n, int f)
|
|||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static void
|
||||
s_close(int f)
|
||||
void
|
||||
cfs_close(int f)
|
||||
{
|
||||
file.flag = FLAG_FILE_CLOSED;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_read(int f, char *buf, unsigned int len)
|
||||
int
|
||||
cfs_read(int f, char *buf, unsigned int len)
|
||||
{
|
||||
if(f == 1) {
|
||||
eeprom_read(CFS_EEPROM_OFFSET + file.fileptr, buf, len);
|
||||
|
@ -84,8 +83,8 @@ s_read(int f, char *buf, unsigned int len)
|
|||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_write(int f, char *buf, unsigned int len)
|
||||
int
|
||||
cfs_write(int f, char *buf, unsigned int len)
|
||||
{
|
||||
if(f == 1) {
|
||||
eeprom_write(CFS_EEPROM_OFFSET + file.fileptr, buf, len);
|
||||
|
@ -96,8 +95,8 @@ s_write(int f, char *buf, unsigned int len)
|
|||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_seek(int f, unsigned int o)
|
||||
int
|
||||
cfs_seek(int f, unsigned int o)
|
||||
{
|
||||
if(f == 1) {
|
||||
file.fileptr = o;
|
||||
|
@ -107,44 +106,21 @@ s_seek(int f, unsigned int o)
|
|||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_opendir(struct cfs_dir *p, const char *n)
|
||||
int
|
||||
cfs_opendir(struct cfs_dir *p, const char *n)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_readdir(struct cfs_dir *p, struct cfs_dirent *e)
|
||||
int
|
||||
cfs_readdir(struct cfs_dir *p, struct cfs_dirent *e)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_closedir(struct cfs_dir *p)
|
||||
int
|
||||
cfs_closedir(struct cfs_dir *p)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/*
|
||||
* Service registration code follows.
|
||||
*/
|
||||
SERVICE(cfs_eeprom_service, cfs_service,
|
||||
{ s_open, s_close, s_read, s_write, s_seek,
|
||||
s_opendir, s_readdir, s_closedir });
|
||||
|
||||
PROCESS(cfs_eeprom_process, "CFS EEPROM service");
|
||||
|
||||
PROCESS_THREAD(cfs_eeprom_process, ev, data)
|
||||
{
|
||||
PROCESS_BEGIN();
|
||||
|
||||
SERVICE_REGISTER(cfs_eeprom_service);
|
||||
|
||||
PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_SERVICE_REMOVED ||
|
||||
ev == PROCESS_EVENT_EXIT);
|
||||
|
||||
SERVICE_REMOVE(cfs_eeprom_service);
|
||||
|
||||
PROCESS_END();
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2004, 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.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs-eeprom.h,v 1.1 2006/06/17 22:41:15 adamdunkels Exp $
|
||||
*/
|
||||
#ifndef __CFS_EEPROM_H__
|
||||
#define __CFS_EEPROM_H__
|
||||
|
||||
#include "contiki.h"
|
||||
#include "cfs/cfs.h"
|
||||
|
||||
PROCESS_NAME(cfs_eeprom_process);
|
||||
|
||||
#endif /* __CFS_EEPROM_H__ */
|
|
@ -30,12 +30,11 @@
|
|||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs-posix.c,v 1.2 2006/08/13 14:05:20 oliverschmidt Exp $
|
||||
* $Id: cfs-posix.c,v 1.3 2007/05/19 21:05:49 oliverschmidt Exp $
|
||||
*/
|
||||
#include "contiki.h"
|
||||
|
||||
#include "cfs/cfs.h"
|
||||
#include "cfs/cfs-service.h"
|
||||
|
||||
#undef LITTLE_ENDIAN
|
||||
#undef BIG_ENDIAN
|
||||
|
@ -51,41 +50,13 @@
|
|||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
static int s_open(const char *n, int f);
|
||||
static void s_close(int f);
|
||||
static int s_read(int f, char *b, unsigned int l);
|
||||
static int s_write(int f, char *b, unsigned int l);
|
||||
static int s_seek(int f, unsigned int offset);
|
||||
static int s_opendir(struct cfs_dir *p, const char *n);
|
||||
static int s_readdir(struct cfs_dir *p, struct cfs_dirent *e);
|
||||
static int s_closedir(struct cfs_dir *p);
|
||||
|
||||
SERVICE(cfs_posix_service, cfs_service,
|
||||
{ s_open, s_close, s_read, s_write, s_seek,
|
||||
s_opendir, s_readdir, s_closedir });
|
||||
|
||||
struct cfs_posix_dir {
|
||||
DIR *dirp;
|
||||
};
|
||||
|
||||
PROCESS(cfs_posix_process, "CFS POSIX service");
|
||||
|
||||
PROCESS_THREAD(cfs_posix_process, ev, data)
|
||||
{
|
||||
PROCESS_BEGIN();
|
||||
|
||||
SERVICE_REGISTER(cfs_posix_service);
|
||||
|
||||
PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_SERVICE_REMOVED ||
|
||||
ev == PROCESS_EVENT_EXIT);
|
||||
|
||||
SERVICE_REMOVE(cfs_posix_service);
|
||||
|
||||
PROCESS_END();
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_open(const char *n, int f)
|
||||
int
|
||||
cfs_open(const char *n, int f)
|
||||
{
|
||||
char filename[255];
|
||||
|
||||
|
@ -98,32 +69,32 @@ s_open(const char *n, int f)
|
|||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static void
|
||||
s_close(int f)
|
||||
void
|
||||
cfs_close(int f)
|
||||
{
|
||||
close(f);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_read(int f, char *b, unsigned int l)
|
||||
int
|
||||
cfs_read(int f, char *b, unsigned int l)
|
||||
{
|
||||
return read(f, b, l);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_write(int f, char *b, unsigned int l)
|
||||
int
|
||||
cfs_write(int f, char *b, unsigned int l)
|
||||
{
|
||||
return write(f, b, l);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_seek(int f, unsigned int o)
|
||||
int
|
||||
cfs_seek(int f, unsigned int o)
|
||||
{
|
||||
return lseek(f, o, SEEK_SET);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_opendir(struct cfs_dir *p, const char *n)
|
||||
int
|
||||
cfs_opendir(struct cfs_dir *p, const char *n)
|
||||
{
|
||||
struct cfs_posix_dir *dir = (struct cfs_posix_dir *)p;
|
||||
char dirname[255];
|
||||
|
@ -141,8 +112,8 @@ s_opendir(struct cfs_dir *p, const char *n)
|
|||
return dir->dirp == NULL;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_readdir(struct cfs_dir *p, struct cfs_dirent *e)
|
||||
int
|
||||
cfs_readdir(struct cfs_dir *p, struct cfs_dirent *e)
|
||||
{
|
||||
struct cfs_posix_dir *dir = (struct cfs_posix_dir *)p;
|
||||
struct dirent *res;
|
||||
|
@ -160,8 +131,8 @@ s_readdir(struct cfs_dir *p, struct cfs_dirent *e)
|
|||
return 0;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_closedir(struct cfs_dir *p)
|
||||
int
|
||||
cfs_closedir(struct cfs_dir *p)
|
||||
{
|
||||
struct cfs_posix_dir *dir = (struct cfs_posix_dir *)p;
|
||||
if(dir->dirp != NULL) {
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2004, 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.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs-posix.h,v 1.1 2006/06/17 22:41:15 adamdunkels Exp $
|
||||
*/
|
||||
#ifndef __CFS_POSIX_H__
|
||||
#define __CFS_POSIX_H__
|
||||
|
||||
#include "contiki.h"
|
||||
|
||||
PROCESS_NAME(cfs_posix_process);
|
||||
|
||||
#endif /* __CFS_POSIX_H__ */
|
|
@ -30,12 +30,11 @@
|
|||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs-ram.c,v 1.2 2007/03/22 23:55:03 adamdunkels Exp $
|
||||
* $Id: cfs-ram.c,v 1.3 2007/05/19 21:05:49 oliverschmidt Exp $
|
||||
*/
|
||||
#include "contiki.h"
|
||||
|
||||
#include "cfs/cfs.h"
|
||||
#include "cfs/cfs-service.h"
|
||||
#include <string.h>
|
||||
|
||||
struct filestate {
|
||||
|
@ -56,8 +55,8 @@ static struct filestate file;
|
|||
static char filemem[CFS_RAM_SIZE];
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_open(const char *n, int f)
|
||||
int
|
||||
cfs_open(const char *n, int f)
|
||||
{
|
||||
if(file.flag == FLAG_FILE_CLOSED) {
|
||||
file.flag = FLAG_FILE_OPEN;
|
||||
|
@ -71,14 +70,14 @@ s_open(const char *n, int f)
|
|||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static void
|
||||
s_close(int f)
|
||||
void
|
||||
cfs_close(int f)
|
||||
{
|
||||
file.flag = FLAG_FILE_CLOSED;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_read(int f, char *buf, unsigned int len)
|
||||
int
|
||||
cfs_read(int f, char *buf, unsigned int len)
|
||||
{
|
||||
if(file.fileptr + len > sizeof(filemem)) {
|
||||
len = sizeof(filemem) - file.fileptr;
|
||||
|
@ -97,8 +96,8 @@ s_read(int f, char *buf, unsigned int len)
|
|||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_write(int f, char *buf, unsigned int len)
|
||||
int
|
||||
cfs_write(int f, char *buf, unsigned int len)
|
||||
{
|
||||
if(file.fileptr >= sizeof(filemem)) {
|
||||
return 0;
|
||||
|
@ -121,8 +120,8 @@ s_write(int f, char *buf, unsigned int len)
|
|||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_seek(int f, unsigned int o)
|
||||
int
|
||||
cfs_seek(int f, unsigned int o)
|
||||
{
|
||||
if(f == 1) {
|
||||
if(o > file.filesize) {
|
||||
|
@ -135,50 +134,21 @@ s_seek(int f, unsigned int o)
|
|||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_opendir(struct cfs_dir *p, const char *n)
|
||||
int
|
||||
cfs_opendir(struct cfs_dir *p, const char *n)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_readdir(struct cfs_dir *p, struct cfs_dirent *e)
|
||||
int
|
||||
cfs_readdir(struct cfs_dir *p, struct cfs_dirent *e)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_closedir(struct cfs_dir *p)
|
||||
int
|
||||
cfs_closedir(struct cfs_dir *p)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/*
|
||||
* Service registration code follows.
|
||||
*/
|
||||
SERVICE(cfs_ram_service, cfs_service,
|
||||
{ s_open, s_close, s_read, s_write, s_seek,
|
||||
s_opendir, s_readdir, s_closedir });
|
||||
|
||||
PROCESS(cfs_ram_process, "CFS RAM service");
|
||||
|
||||
PROCESS_THREAD(cfs_ram_process, ev, data)
|
||||
{
|
||||
PROCESS_BEGIN();
|
||||
|
||||
SERVICE_REGISTER(cfs_ram_service);
|
||||
|
||||
PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_SERVICE_REMOVED ||
|
||||
ev == PROCESS_EVENT_EXIT);
|
||||
|
||||
SERVICE_REMOVE(cfs_ram_service);
|
||||
|
||||
PROCESS_END();
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
cfs_ram_init(void)
|
||||
{
|
||||
process_start(&cfs_ram_process, NULL);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2004, 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.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs-ram.h,v 1.1 2006/06/17 22:41:15 adamdunkels Exp $
|
||||
*/
|
||||
#ifndef __CFS_RAM_H__
|
||||
#define __CFS_RAM_H__
|
||||
|
||||
#include "contiki.h"
|
||||
#include "cfs/cfs.h"
|
||||
|
||||
PROCESS_NAME(cfs_ram_process);
|
||||
|
||||
#endif /* __CFS_RAM_H__ */
|
|
@ -1,76 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2004, 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.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs-service.h,v 1.1 2006/06/17 22:41:15 adamdunkels Exp $
|
||||
*/
|
||||
#ifndef __CFS_SERVICE_H__
|
||||
#define __CFS_SERVICE_H__
|
||||
|
||||
#include "contiki.h"
|
||||
#include "cfs/cfs.h"
|
||||
|
||||
struct cfs_dir {
|
||||
unsigned char dummy_space[32];
|
||||
};
|
||||
|
||||
struct cfs_dirent {
|
||||
unsigned char name[32];
|
||||
unsigned int size;
|
||||
};
|
||||
|
||||
struct cfs_service_interface {
|
||||
int (* open)(const char *name, int flags);
|
||||
void (* close)(int fd);
|
||||
int (* read)(int fd, char *buf, unsigned int len);
|
||||
int (* write)(int fd, char *buf, unsigned int len);
|
||||
int (* seek)(int fd, unsigned int offset);
|
||||
|
||||
int (* opendir)(struct cfs_dir *dir, const char *name);
|
||||
int (* readdir)(struct cfs_dir *dir, struct cfs_dirent *dirent);
|
||||
int (* closedir)(struct cfs_dir *dir);
|
||||
};
|
||||
|
||||
#define cfs_service_name "Filesystem"
|
||||
SERVICE_INTERFACE(cfs_service,
|
||||
{
|
||||
int (* open)(const char *name, int flags);
|
||||
void (* close)(int fd);
|
||||
int (* read)(int fd, char *buf, unsigned int len);
|
||||
int (* write)(int fd, char *buf, unsigned int len);
|
||||
int (* seek)(int fd, unsigned int offset);
|
||||
|
||||
int (* opendir)(struct cfs_dir *dir, const char *name);
|
||||
int (* readdir)(struct cfs_dir *dir, struct cfs_dirent *dirent);
|
||||
int (* closedir)(struct cfs_dir *dir);
|
||||
});
|
||||
|
||||
#endif /* __CFS_SERVICE_H__ */
|
|
@ -30,12 +30,11 @@
|
|||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs-xmem.c,v 1.3 2007/03/23 15:52:13 nifi Exp $
|
||||
* $Id: cfs-xmem.c,v 1.4 2007/05/19 21:05:49 oliverschmidt Exp $
|
||||
*/
|
||||
#include "contiki.h"
|
||||
|
||||
#include "cfs/cfs.h"
|
||||
#include "cfs/cfs-service.h"
|
||||
#include "dev/xmem.h"
|
||||
|
||||
struct filestate {
|
||||
|
@ -61,10 +60,9 @@ struct filestate {
|
|||
|
||||
static struct filestate file;
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_open(const char *n, int f)
|
||||
int
|
||||
cfs_open(const char *n, int f)
|
||||
{
|
||||
if(file.flag == FLAG_FILE_CLOSED) {
|
||||
file.flag = FLAG_FILE_OPEN;
|
||||
|
@ -79,14 +77,14 @@ s_open(const char *n, int f)
|
|||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static void
|
||||
s_close(int f)
|
||||
void
|
||||
cfs_close(int f)
|
||||
{
|
||||
file.flag = FLAG_FILE_CLOSED;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_read(int f, char *buf, unsigned int len)
|
||||
int
|
||||
cfs_read(int f, char *buf, unsigned int len)
|
||||
{
|
||||
if(file.fileptr + len > CFS_XMEM_SIZE) {
|
||||
len = CFS_XMEM_SIZE - file.fileptr;
|
||||
|
@ -105,8 +103,8 @@ s_read(int f, char *buf, unsigned int len)
|
|||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_write(int f, char *buf, unsigned int len)
|
||||
int
|
||||
cfs_write(int f, char *buf, unsigned int len)
|
||||
{
|
||||
if(file.fileptr >= CFS_XMEM_SIZE) {
|
||||
return 0;
|
||||
|
@ -129,8 +127,8 @@ s_write(int f, char *buf, unsigned int len)
|
|||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_seek(int f, unsigned int o)
|
||||
int
|
||||
cfs_seek(int f, unsigned int o)
|
||||
{
|
||||
if(f == 1) {
|
||||
if(o > file.filesize) {
|
||||
|
@ -143,52 +141,22 @@ s_seek(int f, unsigned int o)
|
|||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_opendir(struct cfs_dir *p, const char *n)
|
||||
int
|
||||
cfs_opendir(struct cfs_dir *p, const char *n)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_readdir(struct cfs_dir *p, struct cfs_dirent *e)
|
||||
int
|
||||
cfs_readdir(struct cfs_dir *p, struct cfs_dirent *e)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
s_closedir(struct cfs_dir *p)
|
||||
int
|
||||
cfs_closedir(struct cfs_dir *p)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/*
|
||||
* Service registration code follows.
|
||||
*/
|
||||
SERVICE(cfs_xmem_service, cfs_service,
|
||||
{ s_open, s_close, s_read, s_write, s_seek,
|
||||
s_opendir, s_readdir, s_closedir });
|
||||
|
||||
PROCESS(cfs_xmem_process, "CFS XMEM service");
|
||||
|
||||
PROCESS_THREAD(cfs_xmem_process, ev, data)
|
||||
{
|
||||
PROCESS_BEGIN();
|
||||
|
||||
file.fileptr = file.filesize = 0;
|
||||
|
||||
SERVICE_REGISTER(cfs_xmem_service);
|
||||
|
||||
PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_SERVICE_REMOVED ||
|
||||
ev == PROCESS_EVENT_EXIT);
|
||||
|
||||
SERVICE_REMOVE(cfs_xmem_service);
|
||||
|
||||
PROCESS_END();
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
cfs_xmem_init(void)
|
||||
{
|
||||
process_start(&cfs_xmem_process, NULL);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2004, 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.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs-xmem.h,v 1.1 2007/03/21 23:15:31 adamdunkels Exp $
|
||||
*/
|
||||
#ifndef __CFS_XMEM_H__
|
||||
#define __CFS_XMEM_H__
|
||||
|
||||
#include "contiki.h"
|
||||
#include "cfs/cfs.h"
|
||||
|
||||
PROCESS_NAME(cfs_xmem_process);
|
||||
|
||||
void cfs_xmem_init(void);
|
||||
|
||||
#endif /* __CFS_XMEM_H__ */
|
|
@ -1,76 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2004, 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.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs.c,v 1.2 2006/08/13 14:06:24 oliverschmidt Exp $
|
||||
*/
|
||||
#include "contiki.h"
|
||||
|
||||
#include "cfs/cfs.h"
|
||||
#include "cfs/cfs-service.h"
|
||||
|
||||
|
||||
static int null_open(const char *n, int f) {return -1;}
|
||||
static void null_close(int f) {return;}
|
||||
static int null_read(int f, char *b, unsigned int l) {return -1;}
|
||||
static int null_write(int f, char *b, unsigned int l) {return -1;}
|
||||
static int null_seek(int fd, unsigned int l) {return -1;}
|
||||
static int null_opendir(struct cfs_dir *p, const char *n) {return -1;}
|
||||
static int null_readdir(struct cfs_dir *p, struct cfs_dirent *e) {return -1;}
|
||||
static int null_closedir(struct cfs_dir *p) {return -1;}
|
||||
|
||||
SERVICE(cfs_nullservice, cfs_service,
|
||||
{
|
||||
null_open,
|
||||
null_close,
|
||||
null_read,
|
||||
null_write,
|
||||
null_seek,
|
||||
null_opendir,
|
||||
null_readdir,
|
||||
null_closedir
|
||||
});
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
const struct cfs_service_interface *
|
||||
cfs_find_service(void)
|
||||
{
|
||||
struct service *s;
|
||||
|
||||
s = service_find(cfs_service_name);
|
||||
|
||||
if(s != NULL) {
|
||||
return s->interface;
|
||||
} else {
|
||||
return cfs_nullservice.interface;
|
||||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
|
@ -54,12 +54,21 @@
|
|||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs.h,v 1.4 2007/03/22 23:55:32 adamdunkels Exp $
|
||||
* $Id: cfs.h,v 1.5 2007/05/19 21:05:49 oliverschmidt Exp $
|
||||
*/
|
||||
#ifndef __CFS_H__
|
||||
#define __CFS_H__
|
||||
|
||||
#include "cfs/cfs-service.h"
|
||||
#include "contiki.h"
|
||||
|
||||
struct cfs_dir {
|
||||
unsigned char dummy_space[32];
|
||||
};
|
||||
|
||||
struct cfs_dirent {
|
||||
unsigned char name[32];
|
||||
unsigned int size;
|
||||
};
|
||||
|
||||
/**
|
||||
* Specify that cfs_open() should open a file for reading.
|
||||
|
@ -115,7 +124,7 @@
|
|||
* \sa CFS_WRITE
|
||||
* \sa cfs_close()
|
||||
*/
|
||||
int cfs_open(const char *name, int flags);
|
||||
CCIF int cfs_open(const char *name, int flags);
|
||||
|
||||
/**
|
||||
* \brief Close an open file.
|
||||
|
@ -124,7 +133,7 @@ int cfs_open(const char *name, int flags);
|
|||
* This function closes a file that has previously been
|
||||
* opened with cfs_open().
|
||||
*/
|
||||
void cfs_close(int fd);
|
||||
CCIF void cfs_close(int fd);
|
||||
|
||||
/**
|
||||
* \brief Read data from an open file.
|
||||
|
@ -137,7 +146,7 @@ void cfs_close(int fd);
|
|||
* buffer. The file must have first been opened with
|
||||
* cfs_open() and the CFS_READ flag.
|
||||
*/
|
||||
int cfs_read(int fd, char *buf, unsigned int len);
|
||||
CCIF int cfs_read(int fd, char *buf, unsigned int len);
|
||||
|
||||
/**
|
||||
* \brief Write data to an open file.
|
||||
|
@ -150,7 +159,7 @@ int cfs_read(int fd, char *buf, unsigned int len);
|
|||
* an open file. The file must have been opened with
|
||||
* cfs_open() and the CFS_WRITE flag.
|
||||
*/
|
||||
int cfs_write(int fd, char *buf, unsigned int len);
|
||||
CCIF int cfs_write(int fd, char *buf, unsigned int len);
|
||||
|
||||
/**
|
||||
* \brief Seek to a specified position in an open file.
|
||||
|
@ -163,7 +172,7 @@ int cfs_write(int fd, char *buf, unsigned int len);
|
|||
* or written to the file will be at the position given by
|
||||
* the offset parameter.
|
||||
*/
|
||||
int cfs_seek(int fd, unsigned int offset);
|
||||
CCIF int cfs_seek(int fd, unsigned int offset);
|
||||
|
||||
/**
|
||||
* \brief Open a directory for reading directory entries.
|
||||
|
@ -174,7 +183,7 @@ int cfs_seek(int fd, unsigned int offset);
|
|||
* \sa cfs_readdir()
|
||||
* \sa cfs_closedir()
|
||||
*/
|
||||
int cfs_opendir(struct cfs_dir *dirp, const char *name);
|
||||
CCIF int cfs_opendir(struct cfs_dir *dirp, const char *name);
|
||||
|
||||
/**
|
||||
* \brief Read a directory entry
|
||||
|
@ -186,7 +195,7 @@ int cfs_opendir(struct cfs_dir *dirp, const char *name);
|
|||
* \sa cfs_opendir()
|
||||
* \sa cfs_closedir()
|
||||
*/
|
||||
int cfs_readdir(struct cfs_dir *dirp, struct cfs_dirent *dirent);
|
||||
CCIF int cfs_readdir(struct cfs_dir *dirp, struct cfs_dirent *dirent);
|
||||
|
||||
/**
|
||||
* \brief Close a directory opened with cfs_opendir().
|
||||
|
@ -195,20 +204,7 @@ int cfs_readdir(struct cfs_dir *dirp, struct cfs_dirent *dirent);
|
|||
* \sa cfs_opendir()
|
||||
* \sa cfs_readdir()
|
||||
*/
|
||||
int cfs_closedir(struct cfs_dir *dirp);
|
||||
|
||||
CCIF const struct cfs_service_interface *cfs_find_service(void);
|
||||
|
||||
#define cfs_open(name, flags) (cfs_find_service()->open(name, flags))
|
||||
#define cfs_close(fd) (cfs_find_service()->close(fd))
|
||||
#define cfs_read(fd, buf, len) (cfs_find_service()->read(fd, buf, len))
|
||||
#define cfs_write(fd, buf, len) (cfs_find_service()->write(fd, buf, len))
|
||||
#define cfs_seek(fd, off) (cfs_find_service()->seek(fd, off))
|
||||
|
||||
#define cfs_opendir(dirp, name) (cfs_find_service()->opendir(dirp, name))
|
||||
#define cfs_readdir(dirp, ent) (cfs_find_service()->readdir(dirp, ent))
|
||||
#define cfs_closedir(dirp) (cfs_find_service()->closedir(dirp))
|
||||
|
||||
CCIF int cfs_closedir(struct cfs_dir *dirp);
|
||||
|
||||
#endif /* __CFS_H__ */
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
*
|
||||
* This file is part of the Contiki operating system.
|
||||
*
|
||||
* $Id: test-cfs.c,v 1.1 2007/03/23 12:17:28 adamdunkels Exp $
|
||||
* $Id: test-cfs.c,v 1.2 2007/05/19 21:07:07 oliverschmidt Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -40,15 +40,12 @@
|
|||
|
||||
#include "contiki.h"
|
||||
#include "cfs/cfs.h"
|
||||
/*---------------------------------------------------------------------------*/
|
||||
PROCESS(cfs_process, "xmem cfs");
|
||||
AUTOSTART_PROCESSES(&cfs_process);
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
PROCESS_THREAD(cfs_process, ev, data)
|
||||
{
|
||||
PROCESS_BEGIN();
|
||||
|
||||
|
||||
{
|
||||
int i, j, fd;
|
||||
int errors = 0;
|
||||
|
@ -112,7 +109,7 @@ PROCESS_THREAD(cfs_process, ev, data)
|
|||
}
|
||||
}
|
||||
printf("CFS xmem test 2 completed with %d errors\n", errors);
|
||||
}
|
||||
}
|
||||
|
||||
PROCESS_END();
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
*
|
||||
* This file is part of the Contiki operating system.
|
||||
*
|
||||
* @(#)$Id: contiki-esb-main.c,v 1.9 2007/05/15 08:11:33 adamdunkels Exp $
|
||||
* @(#)$Id: contiki-esb-main.c,v 1.10 2007/05/19 21:08:43 oliverschmidt Exp $
|
||||
*/
|
||||
|
||||
#include <io.h>
|
||||
|
@ -40,15 +40,12 @@
|
|||
#include "sys/autostart.h"
|
||||
#include "contiki-esb.h"
|
||||
|
||||
#include "cfs/cfs-eeprom.h"
|
||||
|
||||
SENSORS(&button_sensor, &sound_sensor, &vib_sensor,
|
||||
&pir_sensor, &radio_sensor, &battery_sensor, &ctsrts_sensor,
|
||||
&temperature_sensor);
|
||||
|
||||
PROCINIT(&sensors_process, /*&ir_process,*/
|
||||
&etimer_process,
|
||||
&cfs_eeprom_process);
|
||||
&etimer_process);
|
||||
|
||||
PROCESS(contiki_esb_main_init_process, "Contiki ESB init process");
|
||||
|
||||
|
|
Loading…
Reference in a new issue