Mistake on this page?
Report an issue in GitHub or email us
fs.h
1 /*
2  * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without modification,
6  * are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  * 3. The name of the author may not be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
21  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
25  * OF SUCH DAMAGE.
26  *
27  * This file is part of the lwIP TCP/IP stack.
28  *
29  * Author: Adam Dunkels <adam@sics.se>
30  *
31  */
32 #ifndef LWIP_HDR_APPS_FS_H
33 #define LWIP_HDR_APPS_FS_H
34 
35 #include "httpd_opts.h"
36 #include "lwip/err.h"
37 
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41 
42 #define FS_READ_EOF -1
43 #define FS_READ_DELAYED -2
44 
45 #if HTTPD_PRECALCULATED_CHECKSUM
46 struct fsdata_chksum {
47  u32_t offset;
48  u16_t chksum;
49  u16_t len;
50 };
51 #endif /* HTTPD_PRECALCULATED_CHECKSUM */
52 
53 #define FS_FILE_FLAGS_HEADER_INCLUDED 0x01
54 #define FS_FILE_FLAGS_HEADER_PERSISTENT 0x02
55 #define FS_FILE_FLAGS_HEADER_HTTPVER_1_1 0x04
56 #define FS_FILE_FLAGS_SSI 0x08
57 
58 /** Define FS_FILE_EXTENSION_T_DEFINED if you have typedef'ed to your private
59  * pointer type (defaults to 'void' so the default usage is 'void*')
60  */
61 #ifndef FS_FILE_EXTENSION_T_DEFINED
62 typedef void fs_file_extension;
63 #endif
64 
65 struct fs_file {
66  const char *data;
67  int len;
68  int index;
69  /* pextension is free for implementations to hold private (extensional)
70  arbitrary data, e.g. holding some file state or file system handle */
71  fs_file_extension *pextension;
72 #if HTTPD_PRECALCULATED_CHECKSUM
73  const struct fsdata_chksum *chksum;
74  u16_t chksum_count;
75 #endif /* HTTPD_PRECALCULATED_CHECKSUM */
76  u8_t flags;
77 #if LWIP_HTTPD_CUSTOM_FILES
78  u8_t is_custom_file;
79 #endif /* LWIP_HTTPD_CUSTOM_FILES */
80 #if LWIP_HTTPD_FILE_STATE
81  void *state;
82 #endif /* LWIP_HTTPD_FILE_STATE */
83 };
84 
85 #if LWIP_HTTPD_FS_ASYNC_READ
86 typedef void (*fs_wait_cb)(void *arg);
87 #endif /* LWIP_HTTPD_FS_ASYNC_READ */
88 
89 err_t fs_open(struct fs_file *file, const char *name);
90 void fs_close(struct fs_file *file);
91 #if LWIP_HTTPD_DYNAMIC_FILE_READ
92 #if LWIP_HTTPD_FS_ASYNC_READ
93 int fs_read_async(struct fs_file *file, char *buffer, int count, fs_wait_cb callback_fn, void *callback_arg);
94 #else /* LWIP_HTTPD_FS_ASYNC_READ */
95 int fs_read(struct fs_file *file, char *buffer, int count);
96 #endif /* LWIP_HTTPD_FS_ASYNC_READ */
97 #endif /* LWIP_HTTPD_DYNAMIC_FILE_READ */
98 #if LWIP_HTTPD_FS_ASYNC_READ
99 int fs_is_file_ready(struct fs_file *file, fs_wait_cb callback_fn, void *callback_arg);
100 #endif /* LWIP_HTTPD_FS_ASYNC_READ */
101 int fs_bytes_left(struct fs_file *file);
102 
103 #if LWIP_HTTPD_FILE_STATE
104 /** This user-defined function is called when a file is opened. */
105 void *fs_state_init(struct fs_file *file, const char *name);
106 /** This user-defined function is called when a file is closed. */
107 void fs_state_free(struct fs_file *file, void *state);
108 #endif /* #if LWIP_HTTPD_FILE_STATE */
109 
110 struct fsdata_file {
111  const struct fsdata_file *next;
112  const unsigned char *name;
113  const unsigned char *data;
114  int len;
115  u8_t flags;
116 #if HTTPD_PRECALCULATED_CHECKSUM
117  u16_t chksum_count;
118  const struct fsdata_chksum *chksum;
119 #endif /* HTTPD_PRECALCULATED_CHECKSUM */
120 };
121 
122 #ifdef __cplusplus
123 }
124 #endif
125 
126 #endif /* LWIP_HDR_APPS_FS_H */
Definition: fs.h:65
HTTP server options list.
lwIP Error codes
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.