mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-17 10:49:47 +00:00
move embedded tutorials out of protocol tree
This commit is contained in:
1 parent
338756d0b0
commit
8fc5651044
287 files changed
+720
-267
No files matched your search
@@ -1,8 +1,10 @@
|
||||
REPO_ROOT ?= ../../..
|
||||
|
||||
PROG ?= example # Program we are building
|
||||
DELETE = rm -rf # Command to remove files
|
||||
OUT ?= -o $(PROG) # Compiler argument for output file
|
||||
SOURCES = main.c mongoose.c # Source code files
|
||||
CFLAGS = -W -Wall -Wextra -g -I. # Build options
|
||||
SOURCES = main.c $(REPO_ROOT)/mongoose.c # Source code files
|
||||
CFLAGS = -I$(REPO_ROOT) -W -Wall -Wextra -g -I. # Build options
|
||||
#CFLAGS += -fsanitize=address,undefined,alignment
|
||||
|
||||
# Mongoose build options. See https://mongoose.ws/documentation/#build-options
|
||||
@@ -30,4 +32,4 @@ clean: # Cleanup. Delete built program and all build artifact
|
||||
|
||||
vc98: CC = cl
|
||||
vc98:
|
||||
$(CC) $(SOURCES) $(CFLAGS_MONGOOSE) -DMG_ENABLE_IPV6=0 $(CFLAGS_EXTRA) /MD /Feserver.exe
|
||||
$(CC) $(SOURCES) -I$(REPO_ROOT) $(CFLAGS_MONGOOSE) -DMG_ENABLE_IPV6=0 $(CFLAGS_EXTRA) /MD /Feserver.exe
|
||||
@@ -1,63 +0,0 @@
|
||||
#include "mongoose.h"
|
||||
#include "WiFi.h"
|
||||
|
||||
#define LED_PIN LED_BUILTIN
|
||||
#define WIFI_SSID "wifi_network_name" // Change this
|
||||
#define WIFI_PASS "wifi_password" // And this
|
||||
|
||||
struct mg_mgr mgr;
|
||||
|
||||
// Crude function to get available RAM, for quick profiling
|
||||
size_t getFreeRAM(void) {
|
||||
size_t size = 0, increment = 1024;
|
||||
void *p;
|
||||
while ((p = malloc(size)) != NULL) free(p), size += increment;
|
||||
return size;
|
||||
}
|
||||
|
||||
void http_ev_handler(struct mg_connection *c, int ev, void *ev_data) {
|
||||
if (ev == MG_EV_HTTP_MSG) {
|
||||
struct mg_http_message *hm = (struct mg_http_message *)ev_data;
|
||||
if (mg_match(hm->uri, mg_str("/api/led/on"), NULL)) {
|
||||
digitalWrite(LED_PIN, HIGH);
|
||||
mg_http_reply(c, 200, "", "{%m: %d}\n", MG_ESC("led"), digitalRead(LED_PIN));
|
||||
} else if (mg_match(hm->uri, mg_str("/api/led/off"), NULL)) {
|
||||
digitalWrite(LED_PIN, LOW);
|
||||
mg_http_reply(c, 200, "", "{%m: %d}\n", MG_ESC("led"), digitalRead(LED_PIN));
|
||||
} else {
|
||||
mg_http_reply(c, 200, "", "ok, free RAM: %u\n", xPortGetFreeHeapSize());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
pinMode(LED_PIN, OUTPUT);
|
||||
Serial.begin(115200);
|
||||
while (!Serial) delay(50);
|
||||
|
||||
WiFi.mode(WIFI_STA);
|
||||
WiFi.begin(WIFI_SSID, WIFI_PASS);
|
||||
while(WiFi.status() != WL_CONNECTED) Serial.print("."), delay(100);
|
||||
|
||||
Serial.println("\nConnected to the WiFi network");
|
||||
Serial.print("IP Address: ");
|
||||
Serial.println(WiFi.localIP());
|
||||
|
||||
mg_mgr_init(&mgr);
|
||||
mg_log_set(MG_LL_DEBUG);
|
||||
mg_log_set_fn([](char ch, void *) { Serial.print(ch); }, NULL);
|
||||
mg_http_listen(&mgr, "http://0.0.0.0", http_ev_handler, NULL);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
mg_mgr_poll(&mgr, 0);
|
||||
}
|
||||
|
||||
extern "C" int lwip_hook_ip6_input(struct pbuf *p, struct netif *inp) __attribute__((weak));
|
||||
extern "C" int lwip_hook_ip6_input(struct pbuf *p, struct netif *inp) {
|
||||
if (ip6_addr_isany_val(inp->ip6_addr[0].u_addr.ip6)) {
|
||||
pbuf_free(p);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
../../../../../mongoose.c
|
||||
@@ -1 +0,0 @@
|
||||
../../../../../mongoose.h
|
||||
@@ -1,5 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "Arduino.h"
|
||||
|
||||
#define MG_ARCH MG_ARCH_ESP32
|
||||
@@ -1 +0,0 @@
|
||||
../../../../../mongoose.c
|
||||
@@ -1 +0,0 @@
|
||||
../../../../../mongoose.h
|
||||
@@ -1,10 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#define MG_ARCH MG_ARCH_ARMGCC // Use ARM toolchain
|
||||
#define MG_ENABLE_TCPIP 1 // Enable built-in network stack
|
||||
#define MG_ENABLE_DRIVER_IMXRT10 1 // Enable RTxx driver
|
||||
#define MG_ENABLE_CUSTOM_MILLIS 1 // Let user implement mg_millis()
|
||||
#define MG_ENABLE_POSIX_FS 0 // Disable POSIX filesystem
|
||||
|
||||
#define HTTP_URL "http://0.0.0.0"
|
||||
#define HTTPS_URL "https://0.0.0.0"
|
||||
@@ -1 +0,0 @@
|
||||
../../../device-dashboard/net.c
|
||||
@@ -1 +0,0 @@
|
||||
../../../device-dashboard/net.h
|
||||
@@ -1 +0,0 @@
|
||||
../../../device-dashboard/packed_fs.c
|
||||
@@ -1,149 +0,0 @@
|
||||
#include "mongoose.h"
|
||||
#include "net.h"
|
||||
|
||||
void ethernet_init(void);
|
||||
struct mg_mgr mgr;
|
||||
struct mg_tcpip_driver_imxrt_data data = {.mdc_cr = 24, .phy_addr = 0};
|
||||
struct mg_tcpip_if mif = {
|
||||
// Construct MAC address from the unique chip ID
|
||||
.mac = {2, (uint8_t) (HW_OCOTP_CFG0 & 255),
|
||||
(uint8_t) ((HW_OCOTP_CFG0 >> 10) & 255),
|
||||
(uint8_t) (((HW_OCOTP_CFG0 >> 19) ^ (HW_OCOTP_CFG1 >> 19)) & 255),
|
||||
(uint8_t) ((HW_OCOTP_CFG1 >> 10) & 255),
|
||||
(uint8_t) (HW_OCOTP_CFG1 & 255)},
|
||||
// The default is DHCP. Uncomment 3 lines below for static IP config:
|
||||
// .ip = mg_htonl(MG_U32(192, 168, 0, 223)),
|
||||
// .mask = mg_htonl(MG_U32(255, 255, 255, 0)),
|
||||
// .gw = mg_htonl(MG_U32(192, 168, 0, 1)),
|
||||
.driver = &mg_tcpip_driver_imxrt,
|
||||
.driver_data = &data};
|
||||
|
||||
uint64_t mg_millis(void) { // Let Mongoose use our uptime function
|
||||
return millis();
|
||||
}
|
||||
|
||||
// Simple HTTP server that runs on port 8000
|
||||
// Mongoose event handler function, gets called by the mg_mgr_poll()
|
||||
// See https://mongoose.ws/documentation/#2-minute-integration-guide
|
||||
static void simple_http_listener(struct mg_connection *c, int ev, void *ev_data) {
|
||||
if (ev == MG_EV_HTTP_MSG) {
|
||||
// The MG_EV_HTTP_MSG event means HTTP request. `hm` holds parsed request,
|
||||
// see https://mongoose.ws/documentation/#struct-mg_http_message
|
||||
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
|
||||
|
||||
// If the requested URI is "/api/hi", send a simple JSON response back
|
||||
if (mg_match(hm->uri, mg_str("/api/hi"), NULL)) {
|
||||
// Use mg_http_reply() API function to generate JSON response. It adds a
|
||||
// Content-Length header automatically. In the response, we show
|
||||
// the requested URI and HTTP body:
|
||||
mg_http_reply(c, 200, "", "{%m:%m,%m:%m}\n", // See mg_snprintf doc
|
||||
MG_ESC("uri"), mg_print_esc, hm->uri.len, hm->uri.buf,
|
||||
MG_ESC("body"), mg_print_esc, hm->body.len, hm->body.buf);
|
||||
} else {
|
||||
// For all other URIs, serve some static content
|
||||
mg_http_reply(c, 200, "", "<html>millis: %lu</html>", millis());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
pinMode(LED_BUILTIN, OUTPUT);
|
||||
Serial.begin(115200);
|
||||
while (!Serial) delay(50);
|
||||
|
||||
mg_mgr_init(&mgr); // Initialise Mongoose event manager
|
||||
mg_log_set(MG_LL_DEBUG); // Set log level and log function
|
||||
mg_log_set_fn([](char ch, void *) { Serial.print(ch); }, NULL);
|
||||
|
||||
MG_INFO(("CPU %g MHz. Starting TCP/IP stack", (double) F_CPU / 1000000));
|
||||
ethernet_init();
|
||||
mg_tcpip_init(&mgr, &mif); // Initialise built-in TCP/IP stack
|
||||
|
||||
MG_INFO(("Waiting for IP..."));
|
||||
while (mif.state != MG_TCPIP_STATE_READY) mg_mgr_poll(&mgr, 1);
|
||||
|
||||
// We start two HTTP listeners: one is a simple one on port 8000,
|
||||
// with event handler function defined above - simple_http_listener
|
||||
// See https://mongoose.ws/documentation/#2-minute-integration-guide
|
||||
// Another listener is for a more sophisticated Web device dashboard
|
||||
MG_INFO(("Starting web dashboard"));
|
||||
mg_http_listen(&mgr, "http://0.0.0.0:8000", simple_http_listener, NULL);
|
||||
web_init(&mgr); // Sophisticated Web UI, see net.c :: fn()
|
||||
}
|
||||
|
||||
void loop() {
|
||||
static uint64_t timer;
|
||||
if (mg_timer_expired(&timer, 500, mg_millis())) { // Every 500ms
|
||||
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); // blink an LED
|
||||
}
|
||||
|
||||
mg_mgr_poll(&mgr, 1); // Process network events
|
||||
}
|
||||
|
||||
extern "C" void ENET_IRQHandler(void);
|
||||
|
||||
#define CLRSET(reg, clear, set) ((reg) = ((reg) & ~(clear)) | (set))
|
||||
#define RMII_PAD_INPUT_PULLDOWN 0x30E9
|
||||
#define RMII_PAD_INPUT_PULLUP 0xB0E9
|
||||
#define RMII_PAD_CLOCK 0x0031
|
||||
|
||||
// initialize the ethernet hardware
|
||||
void ethernet_init(void) {
|
||||
CCM_CCGR1 |= CCM_CCGR1_ENET(CCM_CCGR_ON);
|
||||
// configure PLL6 for 50 MHz, pg 1173
|
||||
CCM_ANALOG_PLL_ENET_CLR =
|
||||
CCM_ANALOG_PLL_ENET_POWERDOWN | CCM_ANALOG_PLL_ENET_BYPASS | 0x0F;
|
||||
CCM_ANALOG_PLL_ENET_SET = CCM_ANALOG_PLL_ENET_ENABLE |
|
||||
CCM_ANALOG_PLL_ENET_BYPASS
|
||||
/*| CCM_ANALOG_PLL_ENET_ENET2_REF_EN*/
|
||||
| CCM_ANALOG_PLL_ENET_ENET_25M_REF_EN
|
||||
/*| CCM_ANALOG_PLL_ENET_ENET2_DIV_SELECT(1)*/
|
||||
| CCM_ANALOG_PLL_ENET_DIV_SELECT(1);
|
||||
while (!(CCM_ANALOG_PLL_ENET & CCM_ANALOG_PLL_ENET_LOCK))
|
||||
; // wait for PLL lock
|
||||
CCM_ANALOG_PLL_ENET_CLR = CCM_ANALOG_PLL_ENET_BYPASS;
|
||||
// configure REFCLK to be driven as output by PLL6, pg 326
|
||||
|
||||
CLRSET(IOMUXC_GPR_GPR1,
|
||||
IOMUXC_GPR_GPR1_ENET1_CLK_SEL | IOMUXC_GPR_GPR1_ENET_IPG_CLK_S_EN,
|
||||
IOMUXC_GPR_GPR1_ENET1_TX_CLK_DIR);
|
||||
|
||||
// Configure pins
|
||||
IOMUXC_SW_MUX_CTL_PAD_GPIO_B0_14 = 5; // Reset B0_14 Alt5 GPIO7.15
|
||||
IOMUXC_SW_MUX_CTL_PAD_GPIO_B0_15 = 5; // Power B0_15 Alt5 GPIO7.14
|
||||
GPIO7_GDIR |= (1 << 14) | (1 << 15);
|
||||
GPIO7_DR_SET = (1 << 15); // Power on
|
||||
GPIO7_DR_CLEAR = (1 << 14); // Reset PHY chip
|
||||
IOMUXC_SW_PAD_CTL_PAD_GPIO_B1_04 = RMII_PAD_INPUT_PULLDOWN; // PhyAdd[0] = 0
|
||||
IOMUXC_SW_PAD_CTL_PAD_GPIO_B1_06 = RMII_PAD_INPUT_PULLDOWN; // PhyAdd[1] = 1
|
||||
IOMUXC_SW_PAD_CTL_PAD_GPIO_B1_05 = RMII_PAD_INPUT_PULLUP; // Slave mode
|
||||
IOMUXC_SW_PAD_CTL_PAD_GPIO_B1_11 = RMII_PAD_INPUT_PULLDOWN; // Auto MDIX
|
||||
IOMUXC_SW_PAD_CTL_PAD_GPIO_B1_07 = RMII_PAD_INPUT_PULLUP;
|
||||
IOMUXC_SW_PAD_CTL_PAD_GPIO_B1_08 = RMII_PAD_INPUT_PULLUP;
|
||||
IOMUXC_SW_PAD_CTL_PAD_GPIO_B1_09 = RMII_PAD_INPUT_PULLUP;
|
||||
IOMUXC_SW_PAD_CTL_PAD_GPIO_B1_10 = RMII_PAD_CLOCK;
|
||||
IOMUXC_SW_MUX_CTL_PAD_GPIO_B1_05 = 3; // RXD1 B1_05 Alt3, pg 525
|
||||
IOMUXC_SW_MUX_CTL_PAD_GPIO_B1_04 = 3; // RXD0 B1_04 Alt3, pg 524
|
||||
IOMUXC_SW_MUX_CTL_PAD_GPIO_B1_10 = 6 | 0x10; // REFCLK B1_10 Alt6, pg 530
|
||||
IOMUXC_SW_MUX_CTL_PAD_GPIO_B1_11 = 3; // RXER B1_11 Alt3, pg 531
|
||||
IOMUXC_SW_MUX_CTL_PAD_GPIO_B1_06 = 3; // RXEN B1_06 Alt3, pg 526
|
||||
IOMUXC_SW_MUX_CTL_PAD_GPIO_B1_09 = 3; // TXEN B1_09 Alt3, pg 529
|
||||
IOMUXC_SW_MUX_CTL_PAD_GPIO_B1_07 = 3; // TXD0 B1_07 Alt3, pg 527
|
||||
IOMUXC_SW_MUX_CTL_PAD_GPIO_B1_08 = 3; // TXD1 B1_08 Alt3, pg 528
|
||||
IOMUXC_SW_MUX_CTL_PAD_GPIO_B1_15 = 0; // MDIO B1_15 Alt0, pg 535
|
||||
IOMUXC_SW_MUX_CTL_PAD_GPIO_B1_14 = 0; // MDC B1_14 Alt0, pg 534
|
||||
IOMUXC_ENET_MDIO_SELECT_INPUT = 2; // GPIO_B1_15_ALT0, pg 792
|
||||
IOMUXC_ENET0_RXDATA_SELECT_INPUT = 1; // GPIO_B1_04_ALT3, pg 792
|
||||
IOMUXC_ENET1_RXDATA_SELECT_INPUT = 1; // GPIO_B1_05_ALT3, pg 793
|
||||
IOMUXC_ENET_RXEN_SELECT_INPUT = 1; // GPIO_B1_06_ALT3, pg 794
|
||||
IOMUXC_ENET_RXERR_SELECT_INPUT = 1; // GPIO_B1_11_ALT3, pg 795
|
||||
IOMUXC_ENET_IPG_CLK_RMII_SELECT_INPUT = 1; // GPIO_B1_10_ALT6, pg 791
|
||||
delay(1);
|
||||
GPIO7_DR_SET = (1 << 14); // Start PHY chip
|
||||
// ENET_MSCR = ENET_MSCR_MII_SPEED(9);
|
||||
delay(1);
|
||||
|
||||
// Setup IRQ handler
|
||||
attachInterruptVector(IRQ_ENET, ENET_IRQHandler);
|
||||
NVIC_ENABLE_IRQ(IRQ_ENET);
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
../../../../../mongoose.c
|
||||
@@ -1 +0,0 @@
|
||||
../../../../../mongoose.h
|
||||
@@ -1,18 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "Arduino.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
|
||||
#define MG_ARCH MG_ARCH_CUSTOM
|
||||
#define MG_ENABLE_TCPIP 1
|
||||
#define MG_ENABLE_DRIVER_W5500 1
|
||||
#define MG_ENABLE_TCPIP_DRIVER_INIT 0
|
||||
#define MG_ENABLE_TCPIP_PRINT_DEBUG_STATS 0
|
||||
#define MG_ENABLE_CUSTOM_MILLIS 1
|
||||
#define MG_ENABLE_CUSTOM_RANDOM 1
|
||||
#define MG_TLS MG_TLS_BUILTIN
|
||||
#define MG_IO_SIZE 256
|
||||
@@ -1,116 +0,0 @@
|
||||
#include <SPI.h>
|
||||
#include "mongoose.h"
|
||||
|
||||
#define LED_PIN LED_BUILTIN // LED pin
|
||||
#define SS_PIN 17 // Slave select pin for the W5500 module
|
||||
|
||||
struct mg_tcpip_spi spi = {
|
||||
NULL, // SPI metadata
|
||||
[](void *) { digitalWrite(SS_PIN, LOW); SPI.beginTransaction(SPISettings()); },
|
||||
[](void *) { digitalWrite(SS_PIN, HIGH); SPI.endTransaction(); },
|
||||
[](void *, uint8_t *w, uint8_t *r, size_t n) { // Execute transaction
|
||||
while (n--) {
|
||||
uint8_t c = (w != NULL) ? *w++ : 0xFF;
|
||||
uint8_t d = SPI.transfer(c);
|
||||
if (r != NULL) *r++ = d;
|
||||
}
|
||||
},
|
||||
};
|
||||
struct mg_mgr mgr; // Mongoose event manager
|
||||
struct mg_tcpip_if mif = {.mac = {2, 0, 1, 2, 3, 5}}; // Network interface
|
||||
|
||||
// Used by Mongoose for time tracking
|
||||
uint64_t mg_millis(void) {
|
||||
return millis();
|
||||
}
|
||||
|
||||
// Used by Mongoose to generate random data
|
||||
bool mg_random(void *buf, size_t len) { // For TLS
|
||||
uint8_t *p = (uint8_t *) buf;
|
||||
while (len--) *p++ = (unsigned char) (rand() & 255);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Crude function to get available RAM, for quick profiling
|
||||
extern "C" char *sbrk(int);
|
||||
extern char *__brkval;
|
||||
int getFreeRAM() {
|
||||
char top;
|
||||
#ifdef __arm__
|
||||
return &top - (char *) sbrk(0);
|
||||
#elif defined(CORE_TEENSY) || (ARDUINO > 103 && ARDUINO != 151)
|
||||
return &top - __brkval;
|
||||
#else
|
||||
return __brkval ? &top - __brkval : &top - __malloc_heap_start;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void http_ev_handler(struct mg_connection *c, int ev, void *ev_data) {
|
||||
if (ev == MG_EV_HTTP_MSG) {
|
||||
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
|
||||
if (mg_match(hm->uri, mg_str("/api/led/on"), NULL)) {
|
||||
digitalWrite(LED_PIN, HIGH);
|
||||
mg_http_reply(c, 200, "", "{%m: %d}\n", MG_ESC("led"), digitalRead(LED_PIN));
|
||||
} else if (mg_match(hm->uri, mg_str("/api/led/off"), NULL)) {
|
||||
digitalWrite(LED_PIN, LOW);
|
||||
mg_http_reply(c, 200, "", "{%m: %d}\n", MG_ESC("led"), digitalRead(LED_PIN));
|
||||
} else {
|
||||
mg_http_reply(c, 200, "", "ok, free RAM: %u\n", getFreeRAM());
|
||||
}
|
||||
}
|
||||
// Initialise TLS if we're a TLS listener
|
||||
if (c->is_tls && ev == MG_EV_ACCEPT) {
|
||||
struct mg_tls_opts opts;
|
||||
memset(&opts, 0, sizeof(opts));
|
||||
|
||||
// Generated by https://mongoose.ws/tls/
|
||||
#define TLS_CERT \
|
||||
"-----BEGIN CERTIFICATE-----\n" \
|
||||
"MIIBkzCCATqgAwIBAgIEZ3E9lzAKBggqhkjOPQQDAjATMREwDwYDVQQDEwhNb25n\n" \
|
||||
"b29zZTAeFw0yNDEyMjkxMjE2MjNaFw0zNDEyMjcxMjE2MjNaMBQxEjAQBgNVBAMT\n" \
|
||||
"CWxvY2FsaG9zdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHxxuByu5K2k7DYq\n" \
|
||||
"b3eQsHb3VY5NWglWun7axh69OWF7V9OUUyON1y8ISirL0Gj5ZPOogIgrB9iOcz6K\n" \
|
||||
"q9n8NQOjezB5MA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAM\n" \
|
||||
"BgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGn8GpPWaM0JC7U4zlg+bCljSjLoMCMG\n" \
|
||||
"A1UdEQQcMBqCCWxvY2FsaG9zdIINMTkyLjE2OC4wLjEwMDAKBggqhkjOPQQDAgNH\n" \
|
||||
"ADBEAiAr1fO3QLLm+vjYarctNI+gfnxxB4edRTRmcFWHmBS8oQIgY5lkq2JCwATG\n" \
|
||||
"YsVQUmS+2Tbc7ij7lkduXO42pvr/0fw=\n" \
|
||||
"-----END CERTIFICATE-----"
|
||||
|
||||
#define TLS_KEY \
|
||||
"-----BEGIN EC PRIVATE KEY-----\n" \
|
||||
"MHcCAQEEIHKu84eEw9dX8nez82g3F94OsZJ14LVbAN+OBW+++V2poAoGCCqGSM49\n" \
|
||||
"AwEHoUQDQgAEfHG4HK7kraTsNipvd5CwdvdVjk1aCVa6ftrGHr05YXtX05RTI43X\n" \
|
||||
"LwhKKsvQaPlk86iAiCsH2I5zPoqr2fw1Aw==\n" \
|
||||
"-----END EC PRIVATE KEY-----"
|
||||
|
||||
opts.cert = mg_str(TLS_CERT);
|
||||
opts.key = mg_str(TLS_KEY);
|
||||
|
||||
mg_tls_init(c, &opts);
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200); // Initialise serial
|
||||
while (!Serial) delay(50); // for debug output
|
||||
|
||||
SPI.begin(); // Iniitialise SPI
|
||||
pinMode(SS_PIN, OUTPUT); // to communicate with W5500 Ethernet module
|
||||
pinMode(LED_PIN, OUTPUT); // Initialise LED
|
||||
|
||||
mg_mgr_init(&mgr); // Initialise Mongoose event manager
|
||||
mg_log_set(MG_LL_DEBUG); // Set debug log level
|
||||
mg_log_set_fn([](char ch, void *) { Serial.print(ch); }, NULL); // Log serial
|
||||
mif.driver = &mg_tcpip_driver_w5500; // Use W5500 built-in driver
|
||||
mif.driver_data = &spi; // Pass SPI interface to W5500 driver
|
||||
mg_tcpip_init(&mgr, &mif); // Initialise built-in TCP/IP stack
|
||||
|
||||
// Setup HTTP & HTTPS listeners. Respond "ok" on any HTTP request
|
||||
mg_http_listen(&mgr, "http://0.0.0.0:80", http_ev_handler, NULL);
|
||||
mg_http_listen(&mgr, "https://0.0.0.0:443", http_ev_handler, NULL);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
mg_mgr_poll(&mgr, 1);
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
../../http-client/esp8266/http-client-server
|
||||
@@ -1 +0,0 @@
|
||||
../../../mongoose.c
|
||||
@@ -1 +0,0 @@
|
||||
../../../mongoose.h
|
||||
@@ -1 +0,0 @@
|
||||
../../zephyr/http-server
|
||||
Reference in new issue
Block a user