Skip to content

Commit a83fca7

Browse files
committed
update examples
1 parent 69ac54e commit a83fca7

19 files changed

+139
-217
lines changed

.clang-format

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ BreakConstructorInitializersBeforeComma: false
5050
BreakConstructorInitializers: BeforeColon
5151
BreakAfterJavaFieldAnnotations: false
5252
BreakStringLiterals: true
53-
ColumnLimit: 80
53+
ColumnLimit: 120
5454
CommentPragmas: '^ IWYU pragma:'
5555
CompactNamespaces: false
5656
ConstructorInitializerAllOnOneLineOrOnePerLine: true
@@ -164,4 +164,4 @@ StatementMacros:
164164
TabWidth: 4
165165
UseCRLF: false
166166
UseTab: Never
167-
...
167+
...

examples/capture/capture.ino

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,11 @@ void setup() {
2222
}
2323
Serial.println("Camera Init Success");
2424

25-
TimerCAM.Camera.sensor->set_pixformat(TimerCAM.Camera.sensor,
26-
PIXFORMAT_JPEG);
27-
TimerCAM.Camera.sensor->set_framesize(TimerCAM.Camera.sensor,
28-
FRAMESIZE_QVGA);
25+
TimerCAM.Camera.sensor->set_pixformat(TimerCAM.Camera.sensor, PIXFORMAT_JPEG);
26+
// 2MP Sensor
27+
TimerCAM.Camera.sensor->set_framesize(TimerCAM.Camera.sensor, FRAMESIZE_UXGA);
28+
// 3MP Sensor
29+
// TimerCAM.Camera.sensor->set_framesize(TimerCAM.Camera.sensor, FRAMESIZE_QXGA);
2930

3031
TimerCAM.Camera.sensor->set_vflip(TimerCAM.Camera.sensor, 1);
3132
TimerCAM.Camera.sensor->set_hmirror(TimerCAM.Camera.sensor, 0);

examples/ext_wakeup/ext_wakeup.ino

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,11 @@ void setup() {
3838
return;
3939
}
4040
Serial.println("Camera Init Success");
41-
TimerCAM.Camera.sensor->set_pixformat(TimerCAM.Camera.sensor,
42-
PIXFORMAT_JPEG);
43-
TimerCAM.Camera.sensor->set_framesize(TimerCAM.Camera.sensor,
44-
FRAMESIZE_QVGA);
41+
TimerCAM.Camera.sensor->set_pixformat(TimerCAM.Camera.sensor, PIXFORMAT_JPEG);
42+
// 2MP Sensor
43+
TimerCAM.Camera.sensor->set_framesize(TimerCAM.Camera.sensor, FRAMESIZE_UXGA);
44+
// 3MP Sensor
45+
// TimerCAM.Camera.sensor->set_framesize(TimerCAM.Camera.sensor, FRAMESIZE_QXGA);
4546

4647
TimerCAM.Camera.sensor->set_vflip(TimerCAM.Camera.sensor, 1);
4748
TimerCAM.Camera.sensor->set_hmirror(TimerCAM.Camera.sensor, 0);

examples/http_post/http_post.ino

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@ void setup() {
3434
}
3535
Serial.println("Camera Init Success");
3636

37-
TimerCAM.Camera.sensor->set_pixformat(TimerCAM.Camera.sensor,
38-
PIXFORMAT_JPEG);
39-
TimerCAM.Camera.sensor->set_framesize(TimerCAM.Camera.sensor,
40-
FRAMESIZE_QVGA);
37+
TimerCAM.Camera.sensor->set_pixformat(TimerCAM.Camera.sensor, PIXFORMAT_JPEG);
38+
// 2MP Sensor
39+
TimerCAM.Camera.sensor->set_framesize(TimerCAM.Camera.sensor, FRAMESIZE_UXGA);
40+
// 3MP Sensor
41+
// TimerCAM.Camera.sensor->set_framesize(TimerCAM.Camera.sensor, FRAMESIZE_QXGA);
4142

4243
TimerCAM.Camera.sensor->set_vflip(TimerCAM.Camera.sensor, 1);
4344
TimerCAM.Camera.sensor->set_hmirror(TimerCAM.Camera.sensor, 0);
@@ -69,8 +70,7 @@ void loop() {
6970
String contentType = "image/jpeg";
7071

7172
// client.post("/post", contentType, postData);
72-
client.post("/post", contentType.c_str(), TimerCAM.Camera.fb->len,
73-
TimerCAM.Camera.fb->buf);
73+
client.post("/post", contentType.c_str(), TimerCAM.Camera.fb->len, TimerCAM.Camera.fb->buf);
7474

7575
// read the status code and body of the response
7676
int statusCode = client.responseStatusCode();

examples/rtsp_stream/CRtspSession.cpp

Lines changed: 37 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
#include <time.h>
44

55
CRtspSession::CRtspSession(WiFiClient& aClient, CStreamer* aStreamer)
6-
: LinkedListElement(aStreamer->getClientsListHead()),
7-
m_Client(aClient),
8-
m_Streamer(aStreamer) {
6+
: LinkedListElement(aStreamer->getClientsListHead()), m_Client(aClient), m_Streamer(aStreamer) {
97
printf("Creating RTSP session\n");
108
Init();
119

@@ -37,8 +35,7 @@ void CRtspSession::Init() {
3735
m_ContentLength = 0;
3836
};
3937

40-
bool CRtspSession::ParseRtspRequest(char const* aRequest,
41-
unsigned aRequestSize) {
38+
bool CRtspSession::ParseRtspRequest(char const* aRequest, unsigned aRequestSize) {
4239
char CmdName[RTSP_PARAM_STRING_MAX];
4340
static char CurRequest[RTSP_BUFFER_SIZE]; // Note: we assume single
4441
// threaded, this large buf we
@@ -118,26 +115,20 @@ bool CRtspSession::ParseRtspRequest(char const* aRequest,
118115

119116
// Skip over the prefix of any "rtsp://" or "rtsp:/" URL that follows:
120117
unsigned j = i + 1;
121-
while (j < CurRequestSize &&
122-
(CurRequest[j] == ' ' || CurRequest[j] == '\t'))
118+
while (j < CurRequestSize && (CurRequest[j] == ' ' || CurRequest[j] == '\t'))
123119
++j; // skip over any additional white space
124120
for (; (int)j < (int)(CurRequestSize - 8); ++j) {
125-
if ((CurRequest[j] == 'r' || CurRequest[j] == 'R') &&
126-
(CurRequest[j + 1] == 't' || CurRequest[j + 1] == 'T') &&
121+
if ((CurRequest[j] == 'r' || CurRequest[j] == 'R') && (CurRequest[j + 1] == 't' || CurRequest[j + 1] == 'T') &&
127122
(CurRequest[j + 2] == 's' || CurRequest[j + 2] == 'S') &&
128-
(CurRequest[j + 3] == 'p' || CurRequest[j + 3] == 'P') &&
129-
CurRequest[j + 4] == ':' && CurRequest[j + 5] == '/') {
123+
(CurRequest[j + 3] == 'p' || CurRequest[j + 3] == 'P') && CurRequest[j + 4] == ':' &&
124+
CurRequest[j + 5] == '/') {
130125
j += 6;
131126
if (CurRequest[j] == '/') { // This is a "rtsp://" URL; skip over
132127
// the host:port part that follows:
133128
++j;
134129
unsigned uidx = 0;
135-
while (
136-
j < CurRequestSize && CurRequest[j] != '/' &&
137-
CurRequest[j] != ' ' &&
138-
uidx <
139-
sizeof(m_URLHostPort) -
140-
1) { // extract the host:port part of the URL here
130+
while (j < CurRequestSize && CurRequest[j] != '/' && CurRequest[j] != ' ' &&
131+
uidx < sizeof(m_URLHostPort) - 1) { // extract the host:port part of the URL here
141132
m_URLHostPort[uidx] = CurRequest[j];
142133
uidx++;
143134
++j;
@@ -152,8 +143,7 @@ bool CRtspSession::ParseRtspRequest(char const* aRequest,
152143
// Look for the URL suffix (before the following "RTSP/"):
153144
parseSucceeded = false;
154145
for (unsigned k = i + 1; (int)k < (int)(CurRequestSize - 5); ++k) {
155-
if (CurRequest[k] == 'R' && CurRequest[k + 1] == 'T' &&
156-
CurRequest[k + 2] == 'S' && CurRequest[k + 3] == 'P' &&
146+
if (CurRequest[k] == 'R' && CurRequest[k + 1] == 'T' && CurRequest[k + 2] == 'S' && CurRequest[k + 3] == 'P' &&
157147
CurRequest[k + 4] == '/') {
158148
while (--k >= i && CurRequest[k] == ' ') {
159149
}
@@ -181,16 +171,12 @@ bool CRtspSession::ParseRtspRequest(char const* aRequest,
181171
// or \n as 'CSeq':
182172
parseSucceeded = false;
183173
for (j = i; (int)j < (int)(CurRequestSize - 5); ++j) {
184-
if (CurRequest[j] == 'C' && CurRequest[j + 1] == 'S' &&
185-
CurRequest[j + 2] == 'e' && CurRequest[j + 3] == 'q' &&
174+
if (CurRequest[j] == 'C' && CurRequest[j + 1] == 'S' && CurRequest[j + 2] == 'e' && CurRequest[j + 3] == 'q' &&
186175
CurRequest[j + 4] == ':') {
187176
j += 5;
188-
while (j < CurRequestSize &&
189-
(CurRequest[j] == ' ' || CurRequest[j] == '\t'))
190-
++j;
177+
while (j < CurRequestSize && (CurRequest[j] == ' ' || CurRequest[j] == '\t')) ++j;
191178
unsigned n;
192-
for (n = 0; n < sizeof(m_CSeq) - 1 && j < CurRequestSize;
193-
++n, ++j) {
179+
for (n = 0; n < sizeof(m_CSeq) - 1 && j < CurRequestSize; ++n, ++j) {
194180
char c = CurRequest[j];
195181
if (c == '\r' || c == '\n') {
196182
parseSucceeded = true;
@@ -206,27 +192,21 @@ bool CRtspSession::ParseRtspRequest(char const* aRequest,
206192

207193
// Also: Look for "Content-Length:" (optional)
208194
for (j = i; (int)j < (int)(CurRequestSize - 15); ++j) {
209-
if (CurRequest[j] == 'C' && CurRequest[j + 1] == 'o' &&
210-
CurRequest[j + 2] == 'n' && CurRequest[j + 3] == 't' &&
211-
CurRequest[j + 4] == 'e' && CurRequest[j + 5] == 'n' &&
212-
CurRequest[j + 6] == 't' && CurRequest[j + 7] == '-' &&
213-
(CurRequest[j + 8] == 'L' || CurRequest[j + 8] == 'l') &&
214-
CurRequest[j + 9] == 'e' && CurRequest[j + 10] == 'n' &&
215-
CurRequest[j + 11] == 'g' && CurRequest[j + 12] == 't' &&
216-
CurRequest[j + 13] == 'h' && CurRequest[j + 14] == ':') {
195+
if (CurRequest[j] == 'C' && CurRequest[j + 1] == 'o' && CurRequest[j + 2] == 'n' && CurRequest[j + 3] == 't' &&
196+
CurRequest[j + 4] == 'e' && CurRequest[j + 5] == 'n' && CurRequest[j + 6] == 't' &&
197+
CurRequest[j + 7] == '-' && (CurRequest[j + 8] == 'L' || CurRequest[j + 8] == 'l') &&
198+
CurRequest[j + 9] == 'e' && CurRequest[j + 10] == 'n' && CurRequest[j + 11] == 'g' &&
199+
CurRequest[j + 12] == 't' && CurRequest[j + 13] == 'h' && CurRequest[j + 14] == ':') {
217200
j += 15;
218-
while (j < CurRequestSize &&
219-
(CurRequest[j] == ' ' || CurRequest[j] == '\t'))
220-
++j;
201+
while (j < CurRequestSize && (CurRequest[j] == ' ' || CurRequest[j] == '\t')) ++j;
221202
unsigned num;
222203
if (sscanf(&CurRequest[j], "%u", &num) == 1) m_ContentLength = num;
223204
}
224205
}
225206
return true;
226207
};
227208

228-
RTSP_CMD_TYPES CRtspSession::Handle_RtspRequest(char const* aRequest,
229-
unsigned aRequestSize) {
209+
RTSP_CMD_TYPES CRtspSession::Handle_RtspRequest(char const* aRequest, unsigned aRequestSize) {
230210
if (ParseRtspRequest(aRequest, aRequestSize)) {
231211
switch (m_RtspCmdType) {
232212
case RTSP_OPTIONS: {
@@ -272,15 +252,12 @@ void CRtspSession::Handle_RtspDESCRIBE() {
272252

273253
// check whether we know a stream with the URL which is requested
274254
m_StreamID = -1; // invalid URL
275-
if ((strcmp(m_URLPreSuffix, "mjpeg") == 0) &&
276-
(strcmp(m_URLSuffix, "1") == 0))
255+
if ((strcmp(m_URLPreSuffix, "mjpeg") == 0) && (strcmp(m_URLSuffix, "1") == 0))
277256
m_StreamID = 0;
278-
else if ((strcmp(m_URLPreSuffix, "mjpeg") == 0) &&
279-
(strcmp(m_URLSuffix, "2") == 0))
257+
else if ((strcmp(m_URLPreSuffix, "mjpeg") == 0) && (strcmp(m_URLSuffix, "2") == 0))
280258
m_StreamID = 1;
281259
if (m_StreamID == -1) { // Stream not available
282-
snprintf(Response, sizeof(Response),
283-
"RTSP/1.0 404 Stream Not Found\r\nCSeq: %s\r\n%s\r\n", m_CSeq,
260+
snprintf(Response, sizeof(Response), "RTSP/1.0 404 Stream Not Found\r\nCSeq: %s\r\n%s\r\n", m_CSeq,
284261
DateHeader());
285262

286263
socketsend(m_RtspClient, Response, strlen(Response));
@@ -294,16 +271,15 @@ void CRtspSession::Handle_RtspDESCRIBE() {
294271
ColonPtr = strstr(OBuf, ":");
295272
if (ColonPtr != nullptr) ColonPtr[0] = 0x00;
296273

297-
snprintf(
298-
SDPBuf, sizeof(SDPBuf),
299-
"v=0\r\n"
300-
"o=- %d 1 IN IP4 %s\r\n"
301-
"s=\r\n"
302-
"t=0 0\r\n" // start / stop - 0 -> unbounded and permanent session
303-
"m=video 0 RTP/AVP 26\r\n" // currently we just handle UDP sessions
304-
// "a=x-dimensions: 640,480\r\n"
305-
"c=IN IP4 0.0.0.0\r\n",
306-
rand(), OBuf);
274+
snprintf(SDPBuf, sizeof(SDPBuf),
275+
"v=0\r\n"
276+
"o=- %d 1 IN IP4 %s\r\n"
277+
"s=\r\n"
278+
"t=0 0\r\n" // start / stop - 0 -> unbounded and permanent session
279+
"m=video 0 RTP/AVP 26\r\n" // currently we just handle UDP sessions
280+
// "a=x-dimensions: 640,480\r\n"
281+
"c=IN IP4 0.0.0.0\r\n",
282+
rand(), OBuf);
307283
char StreamName[64];
308284
switch (m_StreamID) {
309285
case 0:
@@ -345,16 +321,13 @@ void CRtspSession::Handle_RtspSETUP() {
345321

346322
// simulate SETUP server response
347323
if (m_TcpTransport)
348-
snprintf(Transport, sizeof(Transport),
349-
"RTP/AVP/TCP;unicast;interleaved=0-1");
324+
snprintf(Transport, sizeof(Transport), "RTP/AVP/TCP;unicast;interleaved=0-1");
350325
else
351326
snprintf(Transport, sizeof(Transport),
352327
"RTP/"
353328
"AVP;unicast;destination=127.0.0.1;source=127.0.0.1;client_"
354329
"port=%i-%i;server_port=%i-%i",
355-
m_ClientRTPPort, m_ClientRTCPPort,
356-
m_Streamer->GetRtpServerPort(),
357-
m_Streamer->GetRtcpServerPort());
330+
m_ClientRTPPort, m_ClientRTCPPort, m_Streamer->GetRtpServerPort(), m_Streamer->GetRtcpServerPort());
358331
snprintf(Response, sizeof(Response),
359332
"RTSP/1.0 200 OK\r\nCSeq: %s\r\n"
360333
"%s\r\n"
@@ -397,17 +370,16 @@ int CRtspSession::GetStreamID() {
397370
bool CRtspSession::handleRequests(uint32_t readTimeoutMs) {
398371
if (m_stopped) return false; // Already closed down
399372

400-
static char
401-
RecvBuf[RTSP_BUFFER_SIZE]; // Note: we assume single threaded, this
402-
// large buf we keep off of the tiny stack
373+
static char RecvBuf[RTSP_BUFFER_SIZE]; // Note: we assume single threaded, this
374+
// large buf we keep off of the tiny stack
403375

404376
memset(RecvBuf, 0x00, sizeof(RecvBuf));
405377
int res = socketread(m_RtspClient, RecvBuf, sizeof(RecvBuf), readTimeoutMs);
406378
if (res > 0) {
407379
// we filter away everything which seems not to be an RTSP command:
408380
// O-ption, D-escribe, S-etup, P-lay, T-eardown
409-
if ((RecvBuf[0] == 'O') || (RecvBuf[0] == 'D') || (RecvBuf[0] == 'S') ||
410-
(RecvBuf[0] == 'P') || (RecvBuf[0] == 'T')) {
381+
if ((RecvBuf[0] == 'O') || (RecvBuf[0] == 'D') || (RecvBuf[0] == 'S') || (RecvBuf[0] == 'P') ||
382+
(RecvBuf[0] == 'T')) {
411383
RTSP_CMD_TYPES C = Handle_RtspRequest(RecvBuf, res);
412384
if (C == RTSP_PLAY)
413385
m_streaming = true;

examples/rtsp_stream/CRtspSession.h

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,7 @@
55
#include "platglue-esp32.h"
66

77
// supported command types
8-
enum RTSP_CMD_TYPES {
9-
RTSP_OPTIONS,
10-
RTSP_DESCRIBE,
11-
RTSP_SETUP,
12-
RTSP_PLAY,
13-
RTSP_TEARDOWN,
14-
RTSP_UNKNOWN
15-
};
8+
enum RTSP_CMD_TYPES { RTSP_OPTIONS, RTSP_DESCRIBE, RTSP_SETUP, RTSP_PLAY, RTSP_TEARDOWN, RTSP_UNKNOWN };
169

1710
#define RTSP_BUFFER_SIZE 10000 // for incoming requests, and outgoing responses
1811
#define RTSP_PARAM_STRING_MAX 200
@@ -23,8 +16,7 @@ class CRtspSession : public LinkedListElement {
2316
CRtspSession(WiFiClient& aRtspClient, CStreamer* aStreamer);
2417
~CRtspSession();
2518

26-
RTSP_CMD_TYPES Handle_RtspRequest(char const* aRequest,
27-
unsigned aRequestSize);
19+
RTSP_CMD_TYPES Handle_RtspRequest(char const* aRequest, unsigned aRequestSize);
2820
int GetStreamID();
2921

3022
/**
@@ -74,15 +66,13 @@ class CRtspSession : public LinkedListElement {
7466
// parameters of the last received RTSP request
7567

7668
RTSP_CMD_TYPES
77-
m_RtspCmdType; // command type (if any) of the current request
69+
m_RtspCmdType; // command type (if any) of the current request
7870
char m_URLPreSuffix[RTSP_PARAM_STRING_MAX]; // stream name pre suffix
7971
char m_URLSuffix[RTSP_PARAM_STRING_MAX]; // stream name suffix
8072
char m_CSeq[RTSP_PARAM_STRING_MAX]; // RTSP command sequence number
8173
char m_URLHostPort[MAX_HOSTNAME_LEN]; // host:port part of the URL
8274
unsigned m_ContentLength; // SDP string size
8375

84-
uint16_t
85-
m_RtpClientPort; // RTP receiver port on client (in host byte order!)
86-
uint16_t
87-
m_RtcpClientPort; // RTCP receiver port on client (in host byte order!)
76+
uint16_t m_RtpClientPort; // RTP receiver port on client (in host byte order!)
77+
uint16_t m_RtcpClientPort; // RTCP receiver port on client (in host byte order!)
8878
};

0 commit comments

Comments
 (0)