Contiki 2.6

httpd-fs.h

00001 /*
00002  * Copyright (c) 2001, Swedish Institute of Computer Science.
00003  * All rights reserved. 
00004  *
00005  * Redistribution and use in source and binary forms, with or without 
00006  * modification, are permitted provided that the following conditions 
00007  * are met: 
00008  * 1. Redistributions of source code must retain the above copyright 
00009  *    notice, this list of conditions and the following disclaimer. 
00010  * 2. Redistributions in binary form must reproduce the above copyright 
00011  *    notice, this list of conditions and the following disclaimer in the 
00012  *    documentation and/or other materials provided with the distribution. 
00013  * 3. Neither the name of the Institute nor the names of its contributors 
00014  *    may be used to endorse or promote products derived from this software 
00015  *    without specific prior written permission. 
00016  *
00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
00027  * SUCH DAMAGE. 
00028  *
00029  * This file is part of the lwIP TCP/IP stack.
00030  * 
00031  * Author: Adam Dunkels <adam@sics.se>
00032  *
00033  * $Id: httpd-fs.h,v 1.3 2009/07/23 16:16:07 dak664 Exp $
00034  */
00035 #ifndef __HTTPD_FS_H__
00036 #define __HTTPD_FS_H__
00037 
00038 #include "contiki-net.h"
00039 
00040 //#define HTTPD_FS_STATISTICS 1   //Puts count in file system
00041 #define HTTPD_FS_STATISTICS 2     //Puts count in RAM array
00042 
00043 #if HTTPD_FS_STATISTICS==2
00044 extern uint16_t httpd_filecount[];
00045 #endif /* HTTPD_FS_STATISTICS */
00046 
00047 #include <avr/pgmspace.h>
00048 #if COFFEE_FILES
00049 #include "cfs-coffee-arch.h"
00050 #include <string.h>
00051 #endif
00052 
00053 struct httpd_fs_file {
00054   char *data;
00055   int len;
00056 };
00057 /* Initialize the file system and set statistics to zero */
00058 void  httpd_fs_init(void);
00059 /* Returns root of http files in program flash */
00060 void* httpd_fs_get_root();
00061 /* Returns size of http files in any flash */
00062 uint16_t httpd_fs_get_size();
00063 /* Open a file in any flash and return statistics if enabled.
00064    If file is allocated by caller it will be filled in.
00065    If NULL, just file stats are returned.
00066  */
00067 uint16_t httpd_fs_open(const char *name, struct httpd_fs_file *file);
00068 
00069 #if COFFEE_FILES
00070 /* Coffee file system can be static or dynamic. If static, new files
00071    can not be created and rewrites of an existing file can not be
00072    made beyond the initial allocation.
00073  */
00074 #define httpd_fs_cpy         avr_httpd_fs_cpy
00075 #define httpd_fs_getchar avr_httpd_fs_getchar
00076 #define httpd_fs_strcmp   avr_httpd_fs_strcmp
00077 #define httpd_fs_strchr   avr_httpd_fs_strchr
00078 
00079 #else
00080 /* These will fail if the web content is above 64K in program flash */
00081 #define httpd_fs_cpy                 memcpy_P
00082 #define httpd_fs_strcmp              strcmp_P
00083 #define httpd_fs_strchr              strchr_P
00084 #define httpd_fs_getchar(x)  pgm_read_byte(x)
00085 #endif
00086 
00087 #endif /* __HTTPD_FS_H__ */