1
1
/* ***************************************************************************************************************************
2
2
AsyncWebResponseImpl_STM32.h - Dead simple AsyncWebServer for STM32 LAN8720 or built-in LAN8742A Ethernet
3
-
3
+
4
4
For STM32 with LAN8720 (STM32F4/F7) or built-in LAN8742A Ethernet (Nucleo-144, DISCOVERY, etc)
5
-
5
+
6
6
AsyncWebServer_STM32 is a library for the STM32 with LAN8720 or built-in LAN8742A Ethernet WebServer
7
-
7
+
8
8
Based on and modified from ESPAsyncWebServer (https://github.com/me-no-dev/ESPAsyncWebServer)
9
9
Built by Khoi Hoang https://github.com/khoih-prog/AsyncWebServer_STM32
10
10
Licensed under MIT license
11
-
11
+
12
12
Version: 1.3.0
13
-
13
+
14
14
Version Modified By Date Comments
15
15
------- ----------- ---------- -----------
16
16
1.2.3 K Hoang 02/09/2020 Initial coding for STM32 for built-in Ethernet (Nucleo-144, DISCOVERY, etc).
35
35
#include < vector>
36
36
// It is possible to restore these defines, but one can use _min and _max instead. Or std::min, std::max.
37
37
38
- class AsyncBasicResponse : public AsyncWebServerResponse
38
+
39
+ class AsyncBasicResponse : public AsyncWebServerResponse
39
40
{
40
41
private:
41
42
String _content;
42
-
43
+
43
44
public:
44
45
AsyncBasicResponse (int code, const String& contentType = String(), const String& content = String());
45
46
void _respond (AsyncWebServerRequest *request);
46
-
47
+
47
48
size_t _ack (AsyncWebServerRequest *request, size_t len, uint32_t time);
48
-
49
- bool _sourceValid () const
49
+
50
+ bool _sourceValid () const
50
51
{
51
52
return true ;
52
53
}
53
54
};
54
55
55
- class AsyncAbstractResponse : public AsyncWebServerResponse
56
+ class AsyncAbstractResponse : public AsyncWebServerResponse
56
57
{
57
58
private:
58
59
String _head;
@@ -63,21 +64,21 @@ class AsyncAbstractResponse: public AsyncWebServerResponse
63
64
std::vector<uint8_t > _cache;
64
65
size_t _readDataFromCacheOrContent (uint8_t * data, const size_t len);
65
66
size_t _fillBufferAndProcessTemplates (uint8_t * buf, size_t maxLen);
66
-
67
+
67
68
protected:
68
69
AwsTemplateProcessor _callback;
69
-
70
+
70
71
public:
71
72
AsyncAbstractResponse (AwsTemplateProcessor callback = nullptr );
72
73
void _respond (AsyncWebServerRequest *request);
73
74
size_t _ack (AsyncWebServerRequest *request, size_t len, uint32_t time);
74
-
75
- bool _sourceValid () const
75
+
76
+ bool _sourceValid () const
76
77
{
77
78
return false ;
78
79
}
79
-
80
- virtual size_t _fillBuffer (uint8_t *buf __attribute__ ((unused)), size_t maxLen __attribute__((unused)))
80
+
81
+ virtual size_t _fillBuffer (uint8_t *buf __attribute__ ((unused)), size_t maxLen __attribute__((unused)))
81
82
{
82
83
return 0 ;
83
84
}
@@ -89,72 +90,81 @@ class AsyncAbstractResponse: public AsyncWebServerResponse
89
90
90
91
#define TEMPLATE_PARAM_NAME_LENGTH 32
91
92
92
- class AsyncStreamResponse : public AsyncAbstractResponse
93
+ class AsyncStreamResponse : public AsyncAbstractResponse
93
94
{
94
95
private:
95
96
Stream *_content;
96
-
97
+
97
98
public:
98
99
AsyncStreamResponse (Stream &stream, const String& contentType, size_t len, AwsTemplateProcessor callback = nullptr );
99
-
100
- bool _sourceValid () const
100
+
101
+ bool _sourceValid () const
101
102
{
102
103
return !!(_content);
103
104
}
104
-
105
+
105
106
virtual size_t _fillBuffer (uint8_t *buf, size_t maxLen) override ;
106
107
};
107
108
108
- class AsyncCallbackResponse : public AsyncAbstractResponse
109
+ class AsyncCallbackResponse : public AsyncAbstractResponse
109
110
{
110
111
private:
111
112
AwsResponseFiller _content;
112
113
size_t _filledLength;
113
-
114
+
114
115
public:
115
116
AsyncCallbackResponse (const String& contentType, size_t len, AwsResponseFiller callback, AwsTemplateProcessor templateCallback = nullptr );
116
-
117
- bool _sourceValid () const
117
+
118
+ bool _sourceValid () const
118
119
{
119
120
return !!(_content);
120
121
}
121
-
122
+
122
123
virtual size_t _fillBuffer (uint8_t *buf, size_t maxLen) override ;
123
124
};
124
125
125
- class AsyncChunkedResponse : public AsyncAbstractResponse
126
+ class AsyncChunkedResponse : public AsyncAbstractResponse
126
127
{
127
128
private:
128
129
AwsResponseFiller _content;
129
130
size_t _filledLength;
130
-
131
+
131
132
public:
132
133
AsyncChunkedResponse (const String& contentType, AwsResponseFiller callback, AwsTemplateProcessor templateCallback = nullptr );
133
-
134
- bool _sourceValid () const
134
+
135
+ bool _sourceValid () const
135
136
{
136
137
return !!(_content);
137
138
}
138
-
139
+
139
140
virtual size_t _fillBuffer (uint8_t *buf, size_t maxLen) override ;
140
141
};
141
142
142
143
class cbuf ;
144
+ class AsyncProgmemResponse : public AsyncAbstractResponse {
145
+ private:
146
+ const uint8_t * _content;
147
+ size_t _readLength;
148
+ public:
149
+ AsyncProgmemResponse (int code, const String& contentType, const uint8_t * content, size_t len, AwsTemplateProcessor callback=nullptr );
150
+ bool _sourceValid () const { return true ; }
151
+ virtual size_t _fillBuffer (uint8_t *buf, size_t maxLen) override ;
152
+ };
143
153
144
- class AsyncResponseStream : public AsyncAbstractResponse , public Print
154
+ class AsyncResponseStream : public AsyncAbstractResponse , public Print
145
155
{
146
156
private:
147
157
cbuf *_content;
148
-
158
+
149
159
public:
150
160
AsyncResponseStream (const String& contentType, size_t bufferSize);
151
161
~AsyncResponseStream ();
152
-
153
- bool _sourceValid () const
162
+
163
+ bool _sourceValid () const
154
164
{
155
165
return (_state < RESPONSE_END);
156
166
}
157
-
167
+
158
168
virtual size_t _fillBuffer (uint8_t *buf, size_t maxLen) override ;
159
169
size_t write (const uint8_t *data, size_t len);
160
170
size_t write (uint8_t data);
0 commit comments