Initial HTTP server associated with the WiFi AP

pull/30/head
Pawel Jalocha 2020-10-30 04:05:03 +00:00
rodzic d5871b8ffa
commit 13bdd66295
2 zmienionych plików z 54 dodań i 2 usunięć

Wyświetl plik

@ -5,6 +5,7 @@
#include "tcpip_adapter.h"
#include "esp_wifi.h"
#include "esp_event_loop.h"
#include "esp_http_server.h"
#include "format.h"
#include "fifo.h"
@ -16,6 +17,47 @@
#ifdef WITH_AP
// ============================================================================================================
static void RespChunk(httpd_req_t *Req, const char *Resp, int Len) { httpd_resp_send_chunk(Req, Resp, Len); }
static void RespChunk(httpd_req_t *Req, const char *Resp) { httpd_resp_send_chunk(Req, Resp, strlen(Resp)); }
static void RespEnd(httpd_req_t *Req) { httpd_resp_send_chunk(Req, 0, 0); };
static esp_err_t status_get_handler(httpd_req_t *Req)
{ char Line[64];
RespChunk(Req, "\
<!DOCTYPE html>\r\n\
<html>\r\n\
<title>OGN-Tracker status</title>\r\n\
");
int Len=Parameters.Print(Line);
RespChunk(Req, Line, Len);
RespChunk(Req, "</html>\r\n");
RespEnd(Req);
return ESP_OK; }
static const httpd_uri_t HTTPstatus =
{ .uri = "/status.html",
.method = HTTP_GET,
.handler = status_get_handler,
.user_ctx = 0 };
static httpd_handle_t HTTPserver = 0;
static esp_err_t HTTP_Start(int MaxSockets=4, int Port=80)
{ httpd_config_t Config = HTTPD_DEFAULT_CONFIG();
Config.server_port = Port;
Config.task_priority = tskIDLE_PRIORITY+3;
Config.max_open_sockets = MaxSockets;
esp_err_t Err=httpd_start(&HTTPserver, &Config); if(Err!=ESP_OK) return Err;
httpd_register_uri_handler(HTTPserver, &HTTPstatus);
return Err; }
static void HTTP_Stop(void)
{ if(HTTPserver) httpd_stop(HTTPserver); HTTPserver=0; }
// ============================================================================================================
DataServer PortServer;
static FIFO<char, 1024> AP_TxFIFO;
@ -32,6 +74,8 @@ static int AP_TxPush(size_t MaxLen=256) // transmit pa
AP_TxFIFO.flushReadBlock(Len); // remove the transmitted block from the FIFO
return Len; } // return number of transmitted bytes
// ============================================================================================================
extern "C"
void vTaskAP(void* pvParameters)
{ esp_err_t Err;
@ -63,7 +107,15 @@ void vTaskAP(void* pvParameters)
xSemaphoreGive(CONS_Mutex);
#endif
vTaskDelay(1000);
Err=HTTP_Start();
#ifdef DEBUG_PRINT
xSemaphoreTake(CONS_Mutex, portMAX_DELAY);
Format_String(CONS_UART_Write, "HTTP_Start() => ");
Format_SignDec(CONS_UART_Write, Err);
Format_String(CONS_UART_Write, "\n");
xSemaphoreGive(CONS_Mutex);
#endif
// vTaskDelay(1000);
for( ; ; ) // main (endless) loop
{ Err=AP_TxPush();

Wyświetl plik

@ -555,7 +555,7 @@ CONFIG_LWIP_LOCAL_HOSTNAME="espressif"
# CONFIG_LWIP_L2_TO_L3_COPY is not set
# CONFIG_LWIP_IRAM_OPTIMIZATION is not set
CONFIG_LWIP_TIMERS_ONDEMAND=y
CONFIG_LWIP_MAX_SOCKETS=8
CONFIG_LWIP_MAX_SOCKETS=10
# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
# CONFIG_LWIP_SO_REUSE is not set
# CONFIG_LWIP_SO_RCVBUF is not set