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 u16_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 u16_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 u16_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__ */