mongoose/examples/esp32/main/main.c

55 lines
1.8 KiB
C
Raw Normal View History

2020-12-14 20:58:27 +08:00
// Copyright (c) 2020 Cesanta Software Limited
// All rights reserved
#include "mongoose.h"
2020-12-27 09:29:42 +08:00
#define WIFI_SSID "WIFI_NETWORK" // SET THIS!
#define WIFI_PASS "WIFI_PASSWORD" // SET THIS!
2020-12-14 20:58:27 +08:00
2020-12-25 00:52:12 +08:00
#define SERVER_URL "http://0.0.0.0:80"
#define CLIENT_URL "http://info.cern.ch"
// Event handler for an server (accepted) connection
2020-12-14 20:58:27 +08:00
static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
if (ev == MG_EV_HTTP_MSG) {
2020-12-27 09:29:42 +08:00
mg_http_reply(c, 200, "", "Hello from ESP!\n");
2020-12-25 00:52:12 +08:00
}
}
// Event handler for a client connection - fetch the first web page in history
// To enable TLS for HTTP,
// 1. Copy "ca.pem" file to the ESP32 flash FS
// 2. Add TLS init snippet for the connection, see examples/http-client
static void cb2(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
if (ev == MG_EV_CONNECT) {
struct mg_str s = mg_url_host(CLIENT_URL);
mg_printf(c, "GET / HTTP/1.0\r\nHost: %.*s\r\n\r\n", (int) s.len, s.ptr);
} else if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = ev_data; // Print HTTP response
LOG(LL_INFO, ("Fetched:\n%.*s", (int) hm->message.len, hm->message.ptr));
c->is_closing = 1;
2020-12-14 20:58:27 +08:00
}
}
// Called after we're connected to WiFi network
2020-12-25 00:52:12 +08:00
static void run_mongoose(void) {
2020-12-14 20:58:27 +08:00
struct mg_mgr mgr;
mg_log_set("3");
mg_mgr_init(&mgr);
2020-12-25 00:52:12 +08:00
mg_http_listen(&mgr, SERVER_URL, cb, &mgr); // Listening server
mg_http_connect(&mgr, CLIENT_URL, cb2, &mgr); // Example client
2020-12-14 20:58:27 +08:00
LOG(LL_INFO, ("Starting Mongoose web server v%s", MG_VERSION));
for (;;) mg_mgr_poll(&mgr, 1000);
mg_mgr_free(&mgr);
}
void app_main(void) {
// Setup wifi. This function is implemented in wifi.c
// It blocks until connected to the configured WiFi network
void wifi_init(const char *ssid, const char *pass);
wifi_init(WIFI_SSID, WIFI_PASS);
// Done connecting to WiFi, now start HTTP server
2020-12-25 00:52:12 +08:00
run_mongoose();
2020-12-14 20:58:27 +08:00
}