kopia lustrzana https://github.com/pjalocha/esp32-ogn-tracker
Initial HTTP server associated with the WiFi AP
rodzic
d5871b8ffa
commit
13bdd66295
54
main/ap.cpp
54
main/ap.cpp
|
@ -5,6 +5,7 @@
|
||||||
#include "tcpip_adapter.h"
|
#include "tcpip_adapter.h"
|
||||||
#include "esp_wifi.h"
|
#include "esp_wifi.h"
|
||||||
#include "esp_event_loop.h"
|
#include "esp_event_loop.h"
|
||||||
|
#include "esp_http_server.h"
|
||||||
|
|
||||||
#include "format.h"
|
#include "format.h"
|
||||||
#include "fifo.h"
|
#include "fifo.h"
|
||||||
|
@ -16,6 +17,47 @@
|
||||||
|
|
||||||
#ifdef WITH_AP
|
#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;
|
DataServer PortServer;
|
||||||
|
|
||||||
static FIFO<char, 1024> AP_TxFIFO;
|
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
|
AP_TxFIFO.flushReadBlock(Len); // remove the transmitted block from the FIFO
|
||||||
return Len; } // return number of transmitted bytes
|
return Len; } // return number of transmitted bytes
|
||||||
|
|
||||||
|
// ============================================================================================================
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
void vTaskAP(void* pvParameters)
|
void vTaskAP(void* pvParameters)
|
||||||
{ esp_err_t Err;
|
{ esp_err_t Err;
|
||||||
|
@ -63,7 +107,15 @@ void vTaskAP(void* pvParameters)
|
||||||
xSemaphoreGive(CONS_Mutex);
|
xSemaphoreGive(CONS_Mutex);
|
||||||
#endif
|
#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
|
for( ; ; ) // main (endless) loop
|
||||||
{ Err=AP_TxPush();
|
{ Err=AP_TxPush();
|
||||||
|
|
|
@ -555,7 +555,7 @@ CONFIG_LWIP_LOCAL_HOSTNAME="espressif"
|
||||||
# CONFIG_LWIP_L2_TO_L3_COPY is not set
|
# CONFIG_LWIP_L2_TO_L3_COPY is not set
|
||||||
# CONFIG_LWIP_IRAM_OPTIMIZATION is not set
|
# CONFIG_LWIP_IRAM_OPTIMIZATION is not set
|
||||||
CONFIG_LWIP_TIMERS_ONDEMAND=y
|
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_USE_ONLY_LWIP_SELECT is not set
|
||||||
# CONFIG_LWIP_SO_REUSE is not set
|
# CONFIG_LWIP_SO_REUSE is not set
|
||||||
# CONFIG_LWIP_SO_RCVBUF is not set
|
# CONFIG_LWIP_SO_RCVBUF is not set
|
||||||
|
|
Ładowanie…
Reference in New Issue