added console web page

v0.9.0
Thorsten von Eicken 10 years ago
parent 2f8b39357e
commit 57662b0824
  1. 4
      Makefile
  2. 11
      html/console.tpl
  3. 4
      html/index.tpl
  4. 65
      user/console.c
  5. 9
      user/console.h
  6. 3
      user/user_main.c

@ -64,9 +64,7 @@ ESP_HOSTNAME ?= esp8266
# which modules (subdirectories) of the project to include in compiling # which modules (subdirectories) of the project to include in compiling
#MODULES = driver user lwip/api lwip/app lwip/core lwip/core/ipv4 lwip/netif #MODULES = driver user lwip/api lwip/app lwip/core lwip/core/ipv4 lwip/netif
MODULES = espfs httpd user serial MODULES = espfs httpd user serial
EXTRA_INCDIR = include \ EXTRA_INCDIR = include . lib/heatshrink/
. \
lib/heatshrink/
# libraries used in this project, mainly provided by the SDK # libraries used in this project, mainly provided by the SDK
LIBS = c gcc hal phy pp net80211 wpa main lwip LIBS = c gcc hal phy pp net80211 wpa main lwip

@ -0,0 +1,11 @@
<html><head><title>Console - ESP Link</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="main">
<h1>ESP Link - Debug Console</h1>
<pre>
%console%
</pre>
</div>
</body></html>

@ -5,7 +5,9 @@
<body> <body>
<div id="main"> <div id="main">
<p><a href="/index.tpl">Home</a> | <a href="/wifi/wifi.tpl">Wifi</a> | <p><a href="/index.tpl">Home</a> | <a href="/wifi/wifi.tpl">Wifi</a> |
Serial | <a href="/led.tpl">LED</a> | <a href="/help.tpl">Help</a></p> Serial | <a href="/led.tpl">LED</a> | <a href="/help.tpl">Help</a> |
<a href="/console.tpl">Console</a>
</p>
<h1>ESP Link</h1> <h1>ESP Link</h1>
<p> <p>

@ -0,0 +1,65 @@
#include <esp8266.h>
#include "console.h"
// Web console for the esp8266 to replace outputting to uart1.
// The web console has a 1KB circular in-memory buffer which os_printf prints into and
// the HTTP handler simply displays the buffer content on a web page.
#define BUF_MAX (1024)
static char console_buf[BUF_MAX];
static int console_wr, console_rd;
static void ICACHE_FLASH_ATTR
console_write(char c) {
int wr = (console_wr+1)%BUF_MAX;
if (wr != console_rd) {
console_buf[console_wr] = c;
console_wr = wr;
}
}
static char ICACHE_FLASH_ATTR
console_read(void) {
char c = 0;
if (console_rd != console_wr) {
c = console_buf[console_rd];
console_rd = (console_rd+1) % BUF_MAX;
}
return c;
}
static void ICACHE_FLASH_ATTR
console_write_char(char c) {
if (c == '\n') console_write('\r');
console_write(c);
}
//===== Display a web page with the console
int ICACHE_FLASH_ATTR
tplConsole(HttpdConnData *connData, char *token, void **arg) {
if (token==NULL) return HTTPD_CGI_DONE;
if (os_strcmp(token, "console") == 0) {
char buf[128];
int n = 0;
while (console_rd != console_wr) {
buf[n++] = console_read();
if (n == 128) {
httpdSend(connData, buf, n);
n = 0;
}
}
if (n > 0) httpdSend(connData, buf, n);
} else {
httpdSend(connData, "Unknown\n", -1);
}
return HTTPD_CGI_DONE;
}
void ICACHE_FLASH_ATTR consoleInit() {
console_wr = 0;
console_rd = 0;
os_install_putc1((void *)console_write_char);
}

@ -0,0 +1,9 @@
#ifndef CONSOLE_H
#define CONSOLE_H
#include "httpd.h"
void consoleInit(void);
int tplConsole(HttpdConnData *connData, char *token, void **arg);
#endif

@ -23,6 +23,7 @@
#include "uart.h" #include "uart.h"
#include "serbridge.h" #include "serbridge.h"
#include "status.h" #include "status.h"
#include "console.h"
#define MCU_RESET 12 #define MCU_RESET 12
#define MCU_ISP 13 #define MCU_ISP 13
#include <gpio.h> #include <gpio.h>
@ -66,6 +67,7 @@ HttpdBuiltInUrl builtInUrls[]={
{"/led.tpl", cgiEspFsTemplate, tplLed}, {"/led.tpl", cgiEspFsTemplate, tplLed},
{"/index.tpl", cgiEspFsTemplate, tplCounter}, {"/index.tpl", cgiEspFsTemplate, tplCounter},
{"/led.cgi", cgiLed, NULL}, {"/led.cgi", cgiLed, NULL},
{"/console.tpl", cgiEspFsTemplate, tplConsole},
//Routines to make the /wifi URL and everything beneath it work. //Routines to make the /wifi URL and everything beneath it work.
@ -124,4 +126,5 @@ void user_init(void) {
os_timer_arm(&prHeapTimer, 3000, 1); os_timer_arm(&prHeapTimer, 3000, 1);
#endif #endif
os_printf("** esp-link ready\n"); os_printf("** esp-link ready\n");
consoleInit();
} }

Loading…
Cancel
Save