add webserver

master
Firmware Batman 2017-04-27 16:46:09 -07:00
parent 7a1da479ac
commit 213f886e64
3 changed files with 39 additions and 2 deletions

View File

@ -22,7 +22,7 @@ tcp_ota.o: tcp_ota.c
oldflash: proxy-0x00000.bin
./tools/esptool.py write_flash 0 proxy-0x00000.bin 0x40000 proxy-0x40000.bin
user1.bin: proxy.o tcp_ota.o st_ota.o elm327.o
user1.bin: proxy.o tcp_ota.o st_ota.o elm327.o webserver.o
$(CC) $(CFLAGS) $^ -o a.out -L$(SDK_BASE)/ld -T$(SDK_BASE)/ld/eagle.app.v6.new.1024.app1.ld $(LDLIBS)
$(OBJCP) --only-section .text -O binary a.out eagle.app.v6.text.bin
$(OBJCP) --only-section .data -O binary a.out eagle.app.v6.data.bin
@ -32,7 +32,7 @@ user1.bin: proxy.o tcp_ota.o st_ota.o elm327.o
rm -f eagle.app.v6.*.bin
mv eagle.app.flash.bin $@
user2.bin: proxy.o tcp_ota.o st_ota.o elm327.o
user2.bin: proxy.o tcp_ota.o st_ota.o elm327.o webserver.o
$(CC) $(CFLAGS) $^ -o a.out -L$(SDK_BASE)/ld -T$(SDK_BASE)/ld/eagle.app.v6.new.1024.app2.ld $(LDLIBS)
$(OBJCP) --only-section .text -O binary a.out eagle.app.v6.text.bin
$(OBJCP) --only-section .data -O binary a.out eagle.app.v6.data.bin

View File

@ -194,6 +194,7 @@ void ICACHE_FLASH_ATTR wifi_init() {
static os_event_t my_queue[QUEUE_SIZE];
void loop();
void ICACHE_FLASH_ATTR web_init();
void ICACHE_FLASH_ATTR elm327_init();
void ICACHE_FLASH_ATTR st_ota_init();
void ICACHE_FLASH_ATTR uart0_init(int flashing_mode);
@ -237,6 +238,7 @@ void ICACHE_FLASH_ATTR user_init()
ota_init();
st_ota_init();
elm327_init();
web_init();
// jump to OS
system_os_task(loop, LOOP_PRIO, my_queue, QUEUE_SIZE);

View File

@ -0,0 +1,35 @@
#include "ets_sys.h"
#include "osapi.h"
#include "gpio.h"
#include "os_type.h"
#include "user_interface.h"
#include "espconn.h"
char staticpage[] = "HTTP/1.0 200 OK\nContent-Type: text/html\n\n"
"<html><body><tt>This is your comma.ai panda<br/><br/>\n"
"It's open source. Find the code <a href=\"https://github.com/commaai/panda\">here</a>";
static struct espconn web_conn;
static esp_tcp web_proto;
static void ICACHE_FLASH_ATTR web_rx_cb(void *arg, char *data, uint16_t len) {
struct espconn *conn = (struct espconn *)arg;
espconn_send(&web_conn, staticpage, strlen(staticpage));
espconn_disconnect(conn);
}
void ICACHE_FLASH_ATTR web_tcp_connect_cb(void *arg) {
struct espconn *conn = (struct espconn *)arg;
espconn_set_opt(&web_conn, ESPCONN_NODELAY);
espconn_regist_recvcb(conn, web_rx_cb);
}
void ICACHE_FLASH_ATTR web_init() {
web_proto.local_port = 80;
web_conn.type = ESPCONN_TCP;
web_conn.state = ESPCONN_NONE;
web_conn.proto.tcp = &web_proto;
espconn_regist_connectcb(&web_conn, web_tcp_connect_cb);
espconn_accept(&web_conn);
}