mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
Merge pull request #74 from logicog/dbg
Convert unconditional prints to debug prints in httpd
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
#ifndef __DEBUG_H__
|
||||||
|
#define __DEBUG_H__
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define dbg_string(s) print_string(s)
|
||||||
|
#define dbg_string_x(s) print_string_x(s)
|
||||||
|
#define dbg_byte(s) print_byte(s)
|
||||||
|
#define dbg_short(s) print_short(s)
|
||||||
|
#define dbg_char(s) write_char(s)
|
||||||
|
#else
|
||||||
|
#define dbg_string(s)
|
||||||
|
#define dbg_string_x(s)
|
||||||
|
#define dbg_byte(s)
|
||||||
|
#define dbg_short(s)
|
||||||
|
#define dbg_char(s)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
CC = sdcc
|
CC = sdcc
|
||||||
CC_FLAGS = -mmcs51 -I. -I../uip
|
CC_FLAGS = -mmcs51 -I. -I.. -I../uip
|
||||||
ASM = sdas8051
|
ASM = sdas8051
|
||||||
AFLAGS= -plosgff
|
AFLAGS= -plosgff
|
||||||
|
|
||||||
|
|||||||
+64
-58
@@ -1,12 +1,16 @@
|
|||||||
|
|
||||||
#include "httpd.h"
|
#include "httpd.h"
|
||||||
#include "page_impl.h"
|
#include "page_impl.h"
|
||||||
#include "../rtl837x_common.h"
|
#include "rtl837x_common.h"
|
||||||
#include "../rtl837x_regs.h"
|
#include "rtl837x_regs.h"
|
||||||
#include "../cmd_parser.h"
|
#include "cmd_parser.h"
|
||||||
#include "../rtl837x_flash.h"
|
#include "rtl837x_flash.h"
|
||||||
#include "uip.h"
|
#include "uip.h"
|
||||||
#include "../html_data.h"
|
#include "html_data.h"
|
||||||
|
|
||||||
|
// #define DEBUG
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
|
|
||||||
#define SESSION_ID_LENGTH 12
|
#define SESSION_ID_LENGTH 12
|
||||||
#define SESSION_TIMEOUT 200
|
#define SESSION_TIMEOUT 200
|
||||||
@@ -209,7 +213,7 @@ __xdata uint8_t *scan_header(__xdata uint8_t *p)
|
|||||||
authenticated = 0;
|
authenticated = 0;
|
||||||
|
|
||||||
while (*p != '\r' || *(p + 1) != '\n' || *(p + 2) != '\r' || *(p + 3) != '\n') {
|
while (*p != '\r' || *(p + 1) != '\n' || *(p + 2) != '\r' || *(p + 3) != '\n') {
|
||||||
write_char(*p);
|
dbg_char(*p);
|
||||||
if (!*p++)
|
if (!*p++)
|
||||||
break;
|
break;
|
||||||
if (is_word(p, "\nContent-Type:"))
|
if (is_word(p, "\nContent-Type:"))
|
||||||
@@ -218,7 +222,7 @@ __xdata uint8_t *scan_header(__xdata uint8_t *p)
|
|||||||
session = p + 17;
|
session = p + 17;
|
||||||
}
|
}
|
||||||
if (content_type && is_word(content_type, "multipart/form-data; boundary")) {
|
if (content_type && is_word(content_type, "multipart/form-data; boundary")) {
|
||||||
print_string("\nFound multipart\n");
|
dbg_string("\nFound multipart\n");
|
||||||
content_type += 30;
|
content_type += 30;
|
||||||
uint8_t i = 0;
|
uint8_t i = 0;
|
||||||
while (content_type[i] != '\r' && content_type[i] != '\n') {
|
while (content_type[i] != '\r' && content_type[i] != '\n') {
|
||||||
@@ -237,12 +241,12 @@ __xdata uint8_t *scan_header(__xdata uint8_t *p)
|
|||||||
|
|
||||||
if (session) {
|
if (session) {
|
||||||
if (now - last_session_use > SESSION_TIMEOUT) {
|
if (now - last_session_use > SESSION_TIMEOUT) {
|
||||||
print_string("Session expired\n");
|
dbg_string("Session expired\n");
|
||||||
} else {
|
} else {
|
||||||
if (is_word_x(session, session_id))
|
if (is_word_x(session, session_id))
|
||||||
authenticated = 1;
|
authenticated = 1;
|
||||||
else
|
else
|
||||||
print_string("Invalid session cookie!\n");
|
dbg_string("Invalid session cookie!\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return p;
|
return p;
|
||||||
@@ -273,8 +277,8 @@ uint8_t stream_upload(uint16_t bptr)
|
|||||||
__xdata uint8_t *p = uip_appdata;
|
__xdata uint8_t *p = uip_appdata;
|
||||||
__xdata struct httpd_state * __xdata s = &(uip_conn->appstate);
|
__xdata struct httpd_state * __xdata s = &(uip_conn->appstate);
|
||||||
|
|
||||||
print_string("Stream_upload called: ");
|
dbg_string("Stream_upload called: ");
|
||||||
print_short(bptr); write_char('\n');
|
dbg_short(bptr); dbg_char('\n');
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (bptr >= uip_len) {
|
if (bptr >= uip_len) {
|
||||||
@@ -284,7 +288,7 @@ uint8_t stream_upload(uint16_t bptr)
|
|||||||
// Have we reached the end of the part?
|
// Have we reached the end of the part?
|
||||||
if (!boundary[bindex]) {
|
if (!boundary[bindex]) {
|
||||||
s->tstate = TSTATE_NONE;
|
s->tstate = TSTATE_NONE;
|
||||||
print_string("len 2: "); print_short(write_len); write_char(' ');
|
dbg_string("len 2: "); dbg_short(write_len); dbg_char(' ');
|
||||||
flash_region.addr = uptr;
|
flash_region.addr = uptr;
|
||||||
flash_region.len = write_len;
|
flash_region.len = write_len;
|
||||||
flash_write_bytes(flash_buf);
|
flash_write_bytes(flash_buf);
|
||||||
@@ -292,13 +296,13 @@ uint8_t stream_upload(uint16_t bptr)
|
|||||||
write_len = 0;
|
write_len = 0;
|
||||||
// TODO: This is a bit premature, what about a nice web-page saying the device will reset???
|
// TODO: This is a bit premature, what about a nice web-page saying the device will reset???
|
||||||
if (verify_crc) {
|
if (verify_crc) {
|
||||||
print_string("CRC16: "); print_short(crc_final); write_char('\n');
|
dbg_string("CRC16: "); dbg_short(crc_final); dbg_char('\n');
|
||||||
if (crc_final == 0xb001) {
|
if (crc_final == 0xb001) {
|
||||||
print_string("Checksum OK.");
|
dbg_string("Checksum OK.");
|
||||||
} else {
|
} else {
|
||||||
print_string("Checksum incorrect!");
|
dbg_string("Checksum incorrect!");
|
||||||
}
|
}
|
||||||
print_string("Upload to flash done, will reset!\n");
|
dbg_string("Upload to flash done, will reset!\n");
|
||||||
reset_chip();
|
reset_chip();
|
||||||
}
|
}
|
||||||
// Make sure there is a 0 at the end of the uploaded data
|
// Make sure there is a 0 at the end of the uploaded data
|
||||||
@@ -325,8 +329,8 @@ uint8_t stream_upload(uint16_t bptr)
|
|||||||
crc16(p + bptr);
|
crc16(p + bptr);
|
||||||
flash_buf[write_len++] = p[bptr++];
|
flash_buf[write_len++] = p[bptr++];
|
||||||
if (write_len >= FLASHMEM_PAGE_SIZE) {
|
if (write_len >= FLASHMEM_PAGE_SIZE) {
|
||||||
print_string("len: "); print_short(write_len); write_char(' ');
|
dbg_string("len: "); dbg_short(write_len); dbg_char(' ');
|
||||||
print_string("CRC16: "); print_short(crc_value); write_char('\n');
|
dbg_string("CRC16: "); dbg_short(crc_value); dbg_char('\n');
|
||||||
flash_region.addr = uptr;
|
flash_region.addr = uptr;
|
||||||
flash_region.len = FLASHMEM_PAGE_SIZE;
|
flash_region.len = FLASHMEM_PAGE_SIZE;
|
||||||
flash_write_bytes(flash_buf);
|
flash_write_bytes(flash_buf);
|
||||||
@@ -350,7 +354,7 @@ void handle_post(void)
|
|||||||
__xdata uint8_t *p = uip_appdata;
|
__xdata uint8_t *p = uip_appdata;
|
||||||
__xdata uint8_t *request_path = p + 6;
|
__xdata uint8_t *request_path = p + 6;
|
||||||
|
|
||||||
print_string("Is POST\n");
|
dbg_string("Is POST\n");
|
||||||
p += 5; // Skip post
|
p += 5; // Skip post
|
||||||
// Find end of request path
|
// Find end of request path
|
||||||
while (*p && !is_separator(*p))
|
while (*p && !is_separator(*p))
|
||||||
@@ -360,9 +364,9 @@ void handle_post(void)
|
|||||||
// Find end of request header
|
// Find end of request header
|
||||||
boundary[0] ='\0';
|
boundary[0] ='\0';
|
||||||
p = scan_header(p);
|
p = scan_header(p);
|
||||||
print_string("Boundary: >"); print_string_x(boundary); print_string("<\n");
|
dbg_string("Boundary: >"); dbg_string_x(boundary); dbg_string("<\n");
|
||||||
if (!*p || !content_type) {
|
if (!*p || !content_type) {
|
||||||
print_string("Bad Request!\n");
|
dbg_string("Bad Request!\n");
|
||||||
send_not_found();
|
send_not_found();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -380,10 +384,10 @@ void handle_post(void)
|
|||||||
if (i)
|
if (i)
|
||||||
cmd_available = 1;
|
cmd_available = 1;
|
||||||
} else if (is_word(request_path, "login")) {
|
} else if (is_word(request_path, "login")) {
|
||||||
print_string("POST login\n");
|
dbg_string("POST login\n");
|
||||||
p += 8; // Read also over "pwd="
|
p += 8; // Read also over "pwd="
|
||||||
if (is_word_x(p, passwd)) {
|
if (is_word_x(p, passwd)) {
|
||||||
print_string("Password accepted!\n");
|
dbg_string("Password accepted!\n");
|
||||||
read_reg_timer(&last_session_use);
|
read_reg_timer(&last_session_use);
|
||||||
gen_random_bytes(session_id, SESSION_ID_LENGTH);
|
gen_random_bytes(session_id, SESSION_ID_LENGTH);
|
||||||
session_id[SESSION_ID_LENGTH] = '\0';
|
session_id[SESSION_ID_LENGTH] = '\0';
|
||||||
@@ -397,13 +401,13 @@ void handle_post(void)
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
} else if (is_word(request_path, "upload") || is_word(request_path, "config")) {
|
} else if (is_word(request_path, "upload") || is_word(request_path, "config")) {
|
||||||
print_string("POST upload/config request\n");
|
dbg_string("POST upload/config request\n");
|
||||||
if (!authenticated) {
|
if (!authenticated) {
|
||||||
send_unauthorized();
|
send_unauthorized();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!boundary[0]) {
|
if (!boundary[0]) {
|
||||||
print_string("Bad request, no boundary!\n");
|
dbg_string("Bad request, no boundary!\n");
|
||||||
send_bad_request();
|
send_bad_request();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -418,7 +422,7 @@ void handle_post(void)
|
|||||||
if (!content_type) // We are waiting for the part with the octet stream
|
if (!content_type) // We are waiting for the part with the octet stream
|
||||||
continue;
|
continue;
|
||||||
} while (!is_word(content_type, "application/octet-stream"));
|
} while (!is_word(content_type, "application/octet-stream"));
|
||||||
print_string("Have content octets\n");
|
dbg_string("Have content octets\n");
|
||||||
p += 4; // Skip \r\n\r\n sequence at end of preamble of part
|
p += 4; // Skip \r\n\r\n sequence at end of preamble of part
|
||||||
|
|
||||||
if (is_word(request_path, "upload")) {
|
if (is_word(request_path, "upload")) {
|
||||||
@@ -426,7 +430,7 @@ void handle_post(void)
|
|||||||
verify_crc = 1;
|
verify_crc = 1;
|
||||||
max_upload = 1024576;
|
max_upload = 1024576;
|
||||||
} else {
|
} else {
|
||||||
print_string("Configuration upload, erasing config mem!\n");
|
dbg_string("Configuration upload, erasing config mem!\n");
|
||||||
uptr = CONFIG_START;
|
uptr = CONFIG_START;
|
||||||
verify_crc = 0;
|
verify_crc = 0;
|
||||||
max_upload = 2048;
|
max_upload = 2048;
|
||||||
@@ -438,7 +442,7 @@ void handle_post(void)
|
|||||||
write_len = 0;
|
write_len = 0;
|
||||||
stream_upload(p - uip_appdata);
|
stream_upload(p - uip_appdata);
|
||||||
|
|
||||||
print_string("Done reading first fragment\n");
|
dbg_string("Done reading first fragment\n");
|
||||||
return;
|
return;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -457,26 +461,26 @@ void httpd_appcall(void)
|
|||||||
{
|
{
|
||||||
__xdata struct httpd_state * __xdata s = &(uip_conn->appstate);
|
__xdata struct httpd_state * __xdata s = &(uip_conn->appstate);
|
||||||
|
|
||||||
write_char('P');
|
dbg_char('P');
|
||||||
if(uip_connected() && s->tstate == TSTATE_CLOSED) {
|
if(uip_connected() && s->tstate == TSTATE_CLOSED) {
|
||||||
print_string("Connected...\n");
|
dbg_string("Connected...\n");
|
||||||
s->tstate = TSTATE_NONE;
|
s->tstate = TSTATE_NONE;
|
||||||
} else if (uip_closed()) {
|
} else if (uip_closed()) {
|
||||||
print_string("Connection closed\n");
|
dbg_string("Connection closed\n");
|
||||||
s->tstate = TSTATE_CLOSED;
|
s->tstate = TSTATE_CLOSED;
|
||||||
} else if (uip_aborted()) {
|
} else if (uip_aborted()) {
|
||||||
print_string("Connection aborted\n");
|
dbg_string("Connection aborted\n");
|
||||||
uip_close();
|
uip_close();
|
||||||
s->tstate = TSTATE_CLOSED;
|
s->tstate = TSTATE_CLOSED;
|
||||||
} else if (uip_poll()) {
|
} else if (uip_poll()) {
|
||||||
uip_len = 0;
|
uip_len = 0;
|
||||||
if (s->tstate == TSTATE_ACKED) {
|
if (s->tstate == TSTATE_ACKED) {
|
||||||
print_string("Closing because everything has been transmitted\n");
|
dbg_string("Closing because everything has been transmitted\n");
|
||||||
uip_close();
|
uip_close();
|
||||||
s->tstate = TSTATE_CLOSED;
|
s->tstate = TSTATE_CLOSED;
|
||||||
}
|
}
|
||||||
} else if (uip_acked() && s->tstate == TSTATE_TX) {
|
} else if (uip_acked() && s->tstate == TSTATE_TX) {
|
||||||
print_string("ACK\n");
|
dbg_string("ACK\n");
|
||||||
if (slen > uip_mss()) {
|
if (slen > uip_mss()) {
|
||||||
slen -= uip_mss();
|
slen -= uip_mss();
|
||||||
o_idx += uip_mss();
|
o_idx += uip_mss();
|
||||||
@@ -488,15 +492,15 @@ void httpd_appcall(void)
|
|||||||
s->tstate = TSTATE_ACKED;
|
s->tstate = TSTATE_ACKED;
|
||||||
|
|
||||||
if (slen > uip_mss()) {
|
if (slen > uip_mss()) {
|
||||||
print_string("Sending A: "); print_short(slen); write_char('\n');
|
dbg_string("Sending A: "); dbg_short(slen); dbg_char('\n');
|
||||||
uip_send(outbuf + o_idx, uip_mss());
|
uip_send(outbuf + o_idx, uip_mss());
|
||||||
s->tstate = TSTATE_TX;
|
s->tstate = TSTATE_TX;
|
||||||
} else if (slen > 0) {
|
} else if (slen > 0) {
|
||||||
print_string("Sending B: "); print_short(slen); write_char('\n');
|
dbg_string("Sending B: "); dbg_short(slen); dbg_char('\n');
|
||||||
uip_send(outbuf + o_idx, slen);
|
uip_send(outbuf + o_idx, slen);
|
||||||
s->tstate = TSTATE_TX;
|
s->tstate = TSTATE_TX;
|
||||||
} else if (cont_len) {
|
} else if (cont_len) {
|
||||||
print_string("CONT cont_len: "); print_short(cont_len);
|
dbg_string("CONT cont_len: "); dbg_short(cont_len);
|
||||||
slen = cont_len > uip_mss() ? uip_mss() : cont_len;
|
slen = cont_len > uip_mss() ? uip_mss() : cont_len;
|
||||||
if (slen > TCP_OUTBUF_SIZE)
|
if (slen > TCP_OUTBUF_SIZE)
|
||||||
slen = TCP_OUTBUF_SIZE;
|
slen = TCP_OUTBUF_SIZE;
|
||||||
@@ -518,13 +522,15 @@ void httpd_appcall(void)
|
|||||||
}
|
}
|
||||||
} else if (uip_newdata() && s->tstate != TSTATE_TX) {
|
} else if (uip_newdata() && s->tstate != TSTATE_TX) {
|
||||||
cont_len = 0;
|
cont_len = 0;
|
||||||
write_char('<'); print_short(uip_len); write_char('\n');
|
dbg_char('<'); dbg_short(uip_len); dbg_char('\n');
|
||||||
__xdata uint8_t *p = uip_appdata;
|
__xdata uint8_t *p = uip_appdata;
|
||||||
// Mark end of request header with \0
|
// Mark end of request header with \0
|
||||||
p[uip_len] = 0;
|
p[uip_len] = 0;
|
||||||
|
#ifdef DEBUG
|
||||||
while (*p)
|
while (*p)
|
||||||
write_char(*p++);
|
dbg_char(*p++);
|
||||||
write_char('\n');
|
dbg_char('\n');
|
||||||
|
#endif
|
||||||
p = uip_appdata;
|
p = uip_appdata;
|
||||||
if (is_word(p, "POST")) {
|
if (is_word(p, "POST")) {
|
||||||
handle_post();
|
handle_post();
|
||||||
@@ -537,26 +543,26 @@ void httpd_appcall(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (is_word(p, "GET"))
|
if (is_word(p, "GET"))
|
||||||
print_string("GET request ");
|
dbg_string("GET request ");
|
||||||
p += 4;
|
p += 4;
|
||||||
scan_header(p);
|
scan_header(p);
|
||||||
__xdata uint8_t *q = p;
|
__xdata uint8_t *q = p;
|
||||||
while (!is_separator(*p))
|
while (!is_separator(*p))
|
||||||
p++;
|
p++;
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
print_string_x(q);
|
dbg_string_x(q);
|
||||||
write_char('\n');
|
dbg_char('\n');
|
||||||
|
|
||||||
s->tstate = TSTATE_NONE;
|
s->tstate = TSTATE_NONE;
|
||||||
entry = find_entry(q);
|
entry = find_entry(q);
|
||||||
print_string("Entry is: "); print_byte(entry); write_char('\n');
|
dbg_string("Entry is: "); dbg_byte(entry); dbg_char('\n');
|
||||||
if (entry == 0xff) {
|
if (entry == 0xff) {
|
||||||
if (!authenticated) {
|
if (!authenticated) {
|
||||||
print_string("Not authorized!\n");
|
dbg_string("Not authorized!\n");
|
||||||
send_unauthorized();
|
send_unauthorized();
|
||||||
goto do_send;
|
goto do_send;
|
||||||
}
|
}
|
||||||
print_string("Not file entry\n");
|
dbg_string("Not file entry\n");
|
||||||
if (!strcmp(q, "/status.json")) {
|
if (!strcmp(q, "/status.json")) {
|
||||||
send_status();
|
send_status();
|
||||||
} else if (!strcmp(q, "/information.json")) {
|
} else if (!strcmp(q, "/information.json")) {
|
||||||
@@ -582,7 +588,7 @@ void httpd_appcall(void)
|
|||||||
send_not_found();
|
send_not_found();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print_string("Have entry, authenticated: "); print_byte(authenticated); write_char('\n');
|
dbg_string("Have entry, authenticated: "); dbg_byte(authenticated); dbg_char('\n');
|
||||||
if (!authenticated && !(f_data[entry].start == FDATA_START_login_html
|
if (!authenticated && !(f_data[entry].start == FDATA_START_login_html
|
||||||
|| f_data[entry].start == FDATA_START_style_css)) {
|
|| f_data[entry].start == FDATA_START_style_css)) {
|
||||||
send_to_login();
|
send_to_login();
|
||||||
@@ -602,35 +608,35 @@ void httpd_appcall(void)
|
|||||||
len_left = TCP_OUTBUF_SIZE - slen;
|
len_left = TCP_OUTBUF_SIZE - slen;
|
||||||
cont_addr = f_data[entry].start + len_left;
|
cont_addr = f_data[entry].start + len_left;
|
||||||
}
|
}
|
||||||
print_string("MIME: "); print_string(mime_strings[f_data[entry].mime]); write_char('\n');
|
dbg_string("MIME: "); dbg_string(mime_strings[f_data[entry].mime]); dbg_char('\n');
|
||||||
flash_region.addr = f_data[entry].start;
|
flash_region.addr = f_data[entry].start;
|
||||||
flash_region.len = len_left;
|
flash_region.len = len_left;
|
||||||
flash_read_bulk(outbuf + slen);
|
flash_read_bulk(outbuf + slen);
|
||||||
slen += len_left;
|
slen += len_left;
|
||||||
}
|
}
|
||||||
do_send:
|
do_send:
|
||||||
print_string("slen: "); print_short(slen); write_char('\n');
|
dbg_string("slen: "); dbg_short(slen); dbg_char('\n');
|
||||||
o_idx = 0;
|
o_idx = 0;
|
||||||
if (slen > uip_mss()) {
|
if (slen > uip_mss()) {
|
||||||
print_string("Sending a: "); print_short(slen); write_char('\n');
|
dbg_string("Sending a: "); dbg_short(slen); dbg_char('\n');
|
||||||
uip_send(outbuf + o_idx, uip_mss());
|
uip_send(outbuf + o_idx, uip_mss());
|
||||||
print_string("Sending a done\n");
|
dbg_string("Sending a done\n");
|
||||||
} else {
|
} else {
|
||||||
print_string("Sending b: "); print_short(slen); write_char('\n');
|
dbg_string("Sending b: "); dbg_short(slen); dbg_char('\n');
|
||||||
uip_send(outbuf + o_idx, slen);
|
uip_send(outbuf + o_idx, slen);
|
||||||
print_string("Sending b done\n");
|
dbg_string("Sending b done\n");
|
||||||
}
|
}
|
||||||
s->tstate = TSTATE_TX;
|
s->tstate = TSTATE_TX;
|
||||||
} else if (uip_rexmit()) { // Connection established, need to rexmit?
|
} else if (uip_rexmit()) { // Connection established, need to rexmit?
|
||||||
print_string("RETRANSMIT requested\n");
|
dbg_string("RETRANSMIT requested\n");
|
||||||
if (slen > uip_mss()) {
|
if (slen > uip_mss()) {
|
||||||
print_string("Sending C: "); print_short(slen); write_char('\n');
|
dbg_string("Sending C: "); dbg_short(slen); dbg_char('\n');
|
||||||
uip_send(outbuf + o_idx, uip_mss());
|
uip_send(outbuf + o_idx, uip_mss());
|
||||||
print_string("Sending C done\n");
|
dbg_string("Sending C done\n");
|
||||||
} else if (slen > 0) {
|
} else if (slen > 0) {
|
||||||
print_string("Sending D: "); print_short(slen); write_char('\n');
|
dbg_string("Sending D: "); dbg_short(slen); dbg_char('\n');
|
||||||
uip_send(outbuf + o_idx, slen);
|
uip_send(outbuf + o_idx, slen);
|
||||||
print_string("Sending D done\n");
|
dbg_string("Sending D done\n");
|
||||||
}
|
}
|
||||||
s->tstate = TSTATE_TX;
|
s->tstate = TSTATE_TX;
|
||||||
uip_len = 0;
|
uip_len = 0;
|
||||||
|
|||||||
+29
-26
@@ -1,18 +1,21 @@
|
|||||||
// #define REGDBG 1
|
// #define REGDBG 1
|
||||||
|
|
||||||
#include "../rtl837x_sfr.h"
|
#include "rtl837x_sfr.h"
|
||||||
#include "../rtl837x_common.h"
|
#include "rtl837x_common.h"
|
||||||
#include "../rtl837x_regs.h"
|
#include "rtl837x_regs.h"
|
||||||
#include "../rtl837x_port.h"
|
#include "rtl837x_port.h"
|
||||||
#include "../rtl837x_flash.h"
|
#include "rtl837x_flash.h"
|
||||||
#include "uip.h"
|
#include "uip.h"
|
||||||
#include "../html_data.h"
|
#include "html_data.h"
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "../phy.h"
|
#include "phy.h"
|
||||||
#include "../version.h"
|
#include "version.h"
|
||||||
#include "../machine.h"
|
#include "machine.h"
|
||||||
#include "page_impl.h"
|
#include "page_impl.h"
|
||||||
|
|
||||||
|
// #define DEBUG
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
#pragma codeseg BANK1
|
#pragma codeseg BANK1
|
||||||
#pragma constseg BANK1
|
#pragma constseg BANK1
|
||||||
|
|
||||||
@@ -94,14 +97,14 @@ void itoa_html(uint8_t v)
|
|||||||
|
|
||||||
uint16_t stat_content(void)
|
uint16_t stat_content(void)
|
||||||
{
|
{
|
||||||
print_string("stat_content called\n");
|
dbg_string("stat_content called\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint16_t port_status(void)
|
uint16_t port_status(void)
|
||||||
{
|
{
|
||||||
print_string("port_status called\n");
|
dbg_string("port_status called\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,7 +193,7 @@ void sfp_send_data(uint8_t slot, uint8_t reg, uint8_t len)
|
|||||||
void send_basic_info(void)
|
void send_basic_info(void)
|
||||||
{
|
{
|
||||||
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
||||||
print_string("send_basic_info called\n");
|
dbg_string("send_basic_info called\n");
|
||||||
slen += strtox(outbuf + slen, "{\"ip_address\":\"");
|
slen += strtox(outbuf + slen, "{\"ip_address\":\"");
|
||||||
itoa_html(uip_hostaddr[0]); char_to_html('.');
|
itoa_html(uip_hostaddr[0]); char_to_html('.');
|
||||||
itoa_html(uip_hostaddr[0] >> 8); char_to_html('.');
|
itoa_html(uip_hostaddr[0] >> 8); char_to_html('.');
|
||||||
@@ -232,7 +235,7 @@ void send_basic_info(void)
|
|||||||
void send_vlan(uint16_t vlan)
|
void send_vlan(uint16_t vlan)
|
||||||
{
|
{
|
||||||
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
||||||
print_string("sending VLAN\n");
|
dbg_string("sending VLAN\n");
|
||||||
//{"members":"0x00060011"}
|
//{"members":"0x00060011"}
|
||||||
slen += strtox(outbuf + slen, "{\"members\":\"0x");
|
slen += strtox(outbuf + slen, "{\"members\":\"0x");
|
||||||
vlan_get(vlan);
|
vlan_get(vlan);
|
||||||
@@ -240,7 +243,7 @@ void send_vlan(uint16_t vlan)
|
|||||||
slen += strtox(outbuf + slen, "\",\"name\":\"");
|
slen += strtox(outbuf + slen, "\",\"name\":\"");
|
||||||
__xdata uint16_t n = vlan_name(vlan);
|
__xdata uint16_t n = vlan_name(vlan);
|
||||||
if (n== 0xffff) {
|
if (n== 0xffff) {
|
||||||
print_string("VLAN has no name\n");
|
dbg_string("VLAN has no name\n");
|
||||||
} else {
|
} else {
|
||||||
while(vlan_names[n] && vlan_names[n] != ' ')
|
while(vlan_names[n] && vlan_names[n] != ' ')
|
||||||
char_to_html(vlan_names[n++]);
|
char_to_html(vlan_names[n++]);
|
||||||
@@ -251,9 +254,9 @@ void send_vlan(uint16_t vlan)
|
|||||||
|
|
||||||
void send_counters(char port)
|
void send_counters(char port)
|
||||||
{
|
{
|
||||||
print_string("send_counters called: "); print_byte(port); write_char('\n');
|
dbg_string("send_counters called: "); dbg_byte(port); dbg_char('\n');
|
||||||
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
||||||
print_string("sending counters\n");
|
dbg_string("sending counters\n");
|
||||||
|
|
||||||
port--;
|
port--;
|
||||||
uint8_t i = machine.phys_to_log_port[port];
|
uint8_t i = machine.phys_to_log_port[port];
|
||||||
@@ -274,7 +277,7 @@ void send_counters(char port)
|
|||||||
|
|
||||||
void send_mirror(void)
|
void send_mirror(void)
|
||||||
{
|
{
|
||||||
print_string("send_mirror called\n");
|
dbg_string("send_mirror called\n");
|
||||||
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
||||||
|
|
||||||
reg_read_m(RTL837x_MIRROR_CTRL);
|
reg_read_m(RTL837x_MIRROR_CTRL);
|
||||||
@@ -308,7 +311,7 @@ void send_mirror(void)
|
|||||||
|
|
||||||
void send_lag(void)
|
void send_lag(void)
|
||||||
{
|
{
|
||||||
print_string("send_lag called\n");
|
dbg_string("send_lag called\n");
|
||||||
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
||||||
|
|
||||||
char_to_html('[');
|
char_to_html('[');
|
||||||
@@ -334,7 +337,7 @@ void send_lag(void)
|
|||||||
|
|
||||||
void send_eee(void)
|
void send_eee(void)
|
||||||
{
|
{
|
||||||
print_string("send_eee called\nsending EEE status\n");
|
dbg_string("send_eee called\nsending EEE status\n");
|
||||||
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
||||||
|
|
||||||
reg_read_m(RTL8373_PHY_EEE_ABLTY);
|
reg_read_m(RTL8373_PHY_EEE_ABLTY);
|
||||||
@@ -382,7 +385,7 @@ void send_eee(void)
|
|||||||
|
|
||||||
void send_mtu(void)
|
void send_mtu(void)
|
||||||
{
|
{
|
||||||
print_string("send_mtu called\n");
|
dbg_string("send_mtu called\n");
|
||||||
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
||||||
char_to_html('[');
|
char_to_html('[');
|
||||||
for (uint8_t i = machine.min_port; i <= machine.max_port; i++) {
|
for (uint8_t i = machine.min_port; i <= machine.max_port; i++) {
|
||||||
@@ -406,7 +409,7 @@ void send_mtu(void)
|
|||||||
void send_status(void)
|
void send_status(void)
|
||||||
{
|
{
|
||||||
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
||||||
print_string("sending status\n");
|
dbg_string("sending status\n");
|
||||||
char_to_html('[');
|
char_to_html('[');
|
||||||
|
|
||||||
for (uint8_t i = machine.min_port; i <= machine.max_port; i++) {
|
for (uint8_t i = machine.min_port; i <= machine.max_port; i++) {
|
||||||
@@ -507,14 +510,14 @@ void send_status(void)
|
|||||||
|
|
||||||
void send_config(void)
|
void send_config(void)
|
||||||
{
|
{
|
||||||
print_string("send_config called\n");
|
dbg_string("send_config called\n");
|
||||||
__xdata uint32_t pos = CONFIG_START; // 70000 , 6c000 / 0xc000 = 9
|
__xdata uint32_t pos = CONFIG_START; // 70000 , 6c000 / 0xc000 = 9
|
||||||
|
|
||||||
extern __xdata uint16_t len_left = CONFIG_LEN;
|
extern __xdata uint16_t len_left = CONFIG_LEN;
|
||||||
slen = strtox(outbuf, HTTP_RESPONCE_TXT);
|
slen = strtox(outbuf, HTTP_RESPONCE_TXT);
|
||||||
while (read_flash((CONFIG_START-CODE0_SIZE) / CODE_BANK_SIZE + 1,
|
while (read_flash((CONFIG_START-CODE0_SIZE) / CODE_BANK_SIZE + 1,
|
||||||
(__code uint8_t *) (((CONFIG_START + len_left - CODE0_SIZE) % CODE_BANK_SIZE) + CODE0_SIZE + len_left)) == 0xff) {
|
(__code uint8_t *) (((CONFIG_START + len_left - CODE0_SIZE) % CODE_BANK_SIZE) + CODE0_SIZE + len_left)) == 0xff) {
|
||||||
print_short(len_left);
|
dbg_short(len_left);
|
||||||
len_left--;
|
len_left--;
|
||||||
}
|
}
|
||||||
len_left++;
|
len_left++;
|
||||||
@@ -532,12 +535,12 @@ void send_config(void)
|
|||||||
|
|
||||||
void send_cmd_log(void)
|
void send_cmd_log(void)
|
||||||
{
|
{
|
||||||
print_string("send_cmd_log called\n");
|
dbg_string("send_cmd_log called\n");
|
||||||
slen = strtox(outbuf, HTTP_RESPONCE_TXT);
|
slen = strtox(outbuf, HTTP_RESPONCE_TXT);
|
||||||
__xdata uint16_t p = (cmd_history_ptr + 1) & CMD_HISTORY_MASK;
|
__xdata uint16_t p = (cmd_history_ptr + 1) & CMD_HISTORY_MASK;
|
||||||
__xdata uint8_t found_begin = 0;
|
__xdata uint8_t found_begin = 0;
|
||||||
print_string("History ptr: ");
|
dbg_string("History ptr: ");
|
||||||
print_short(cmd_history_ptr); write_char('\n');
|
dbg_short(cmd_history_ptr); dbg_char('\n');
|
||||||
while (p != cmd_history_ptr) {
|
while (p != cmd_history_ptr) {
|
||||||
if (!cmd_history[p] || cmd_history[p] == '\n')
|
if (!cmd_history[p] || cmd_history[p] == '\n')
|
||||||
found_begin = 1;
|
found_begin = 1;
|
||||||
|
|||||||
+3
-1
@@ -899,7 +899,9 @@ void handle_tx(void)
|
|||||||
for(uint8_t i = 0; i < UIP_CONNS; i++) {
|
for(uint8_t i = 0; i < UIP_CONNS; i++) {
|
||||||
uip_periodic(i);
|
uip_periodic(i);
|
||||||
if(uip_len > 0) {
|
if(uip_len > 0) {
|
||||||
write_char('.'); print_short(i);
|
#ifdef RXTXDBG
|
||||||
|
write_char('.'); print_short(i);
|
||||||
|
#endif
|
||||||
uip_arp_out();
|
uip_arp_out();
|
||||||
tcpip_output();
|
tcpip_output();
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
CC = sdcc
|
CC = sdcc
|
||||||
CC_FLAGS = -mmcs51 -I. -I../httpd
|
CC_FLAGS = -mmcs51 -I. -I.. -I../httpd
|
||||||
ASM = sdas8051
|
ASM = sdas8051
|
||||||
AFLAGS= -plosgff
|
AFLAGS= -plosgff
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
#define DEBUG_PRINTF(...) /*printf(__VA_ARGS__)*/
|
#define DEBUG_PRINTF(...) /*printf(__VA_ARGS__)*/
|
||||||
|
|
||||||
|
// #define DEBUG
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \defgroup uip The uIP TCP/IP stack
|
* \defgroup uip The uIP TCP/IP stack
|
||||||
* @{
|
* @{
|
||||||
@@ -691,9 +694,9 @@ uip_process(u8_t flag) __banked
|
|||||||
if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED &&
|
if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED &&
|
||||||
!uip_outstanding(uip_connr)) {
|
!uip_outstanding(uip_connr)) {
|
||||||
uip_flags = UIP_POLL;
|
uip_flags = UIP_POLL;
|
||||||
write_char('B');
|
dbg_char('B');
|
||||||
UIP_APPCALL();
|
UIP_APPCALL();
|
||||||
write_char('b');
|
dbg_char('b');
|
||||||
goto appsend;
|
goto appsend;
|
||||||
}
|
}
|
||||||
goto drop;
|
goto drop;
|
||||||
@@ -745,9 +748,9 @@ uip_process(u8_t flag) __banked
|
|||||||
UIP_TIMEDOUT to inform the application that the
|
UIP_TIMEDOUT to inform the application that the
|
||||||
connection has timed out. */
|
connection has timed out. */
|
||||||
uip_flags = UIP_TIMEDOUT;
|
uip_flags = UIP_TIMEDOUT;
|
||||||
write_char('C');
|
dbg_char('C');
|
||||||
UIP_APPCALL();
|
UIP_APPCALL();
|
||||||
write_char('c');
|
dbg_char('c');
|
||||||
|
|
||||||
/* We also send a reset packet to the remote host. */
|
/* We also send a reset packet to the remote host. */
|
||||||
BUF->flags = TCP_RST | TCP_ACK;
|
BUF->flags = TCP_RST | TCP_ACK;
|
||||||
@@ -786,7 +789,7 @@ uip_process(u8_t flag) __banked
|
|||||||
the code for sending out the packet (the apprexmit
|
the code for sending out the packet (the apprexmit
|
||||||
label). */
|
label). */
|
||||||
uip_flags = UIP_REXMIT;
|
uip_flags = UIP_REXMIT;
|
||||||
write_char('R');
|
dbg_char('R');
|
||||||
UIP_APPCALL();
|
UIP_APPCALL();
|
||||||
goto apprexmit;
|
goto apprexmit;
|
||||||
|
|
||||||
@@ -1386,9 +1389,9 @@ uip_process(u8_t flag) __banked
|
|||||||
uip_connr->tcpstateflags = UIP_CLOSED;
|
uip_connr->tcpstateflags = UIP_CLOSED;
|
||||||
UIP_LOG("tcp: got reset, aborting connection.");
|
UIP_LOG("tcp: got reset, aborting connection.");
|
||||||
uip_flags = UIP_ABORT;
|
uip_flags = UIP_ABORT;
|
||||||
write_char('F');
|
dbg_char('F');
|
||||||
UIP_APPCALL();
|
UIP_APPCALL();
|
||||||
write_char('f');
|
dbg_char('f');
|
||||||
goto drop;
|
goto drop;
|
||||||
}
|
}
|
||||||
/* Calculated the length of the data, if the application has sent
|
/* Calculated the length of the data, if the application has sent
|
||||||
@@ -1532,16 +1535,16 @@ uip_process(u8_t flag) __banked
|
|||||||
uip_connr->len = 0;
|
uip_connr->len = 0;
|
||||||
uip_len = 0;
|
uip_len = 0;
|
||||||
uip_slen = 0;
|
uip_slen = 0;
|
||||||
write_char('H');
|
dbg_char('H');
|
||||||
UIP_APPCALL();
|
UIP_APPCALL();
|
||||||
write_char('h');
|
dbg_char('h');
|
||||||
goto appsend;
|
goto appsend;
|
||||||
}
|
}
|
||||||
/* Inform the application that the connection failed */
|
/* Inform the application that the connection failed */
|
||||||
uip_flags = UIP_ABORT;
|
uip_flags = UIP_ABORT;
|
||||||
write_char('I');
|
dbg_char('I');
|
||||||
UIP_APPCALL();
|
UIP_APPCALL();
|
||||||
write_char('I');
|
dbg_char('I');
|
||||||
/* The connection is closed after we send the RST */
|
/* The connection is closed after we send the RST */
|
||||||
uip_conn->tcpstateflags = UIP_CLOSED;
|
uip_conn->tcpstateflags = UIP_CLOSED;
|
||||||
goto reset;
|
goto reset;
|
||||||
@@ -1568,9 +1571,9 @@ uip_process(u8_t flag) __banked
|
|||||||
if(uip_len > 0) {
|
if(uip_len > 0) {
|
||||||
uip_flags |= UIP_NEWDATA;
|
uip_flags |= UIP_NEWDATA;
|
||||||
}
|
}
|
||||||
write_char('J');
|
dbg_char('J');
|
||||||
UIP_APPCALL();
|
UIP_APPCALL();
|
||||||
write_char('j');
|
dbg_char('j');
|
||||||
uip_connr->len = 1;
|
uip_connr->len = 1;
|
||||||
uip_connr->tcpstateflags = UIP_LAST_ACK;
|
uip_connr->tcpstateflags = UIP_LAST_ACK;
|
||||||
uip_connr->nrtx = 0;
|
uip_connr->nrtx = 0;
|
||||||
@@ -1728,9 +1731,9 @@ uip_process(u8_t flag) __banked
|
|||||||
if(uip_flags & UIP_ACKDATA) {
|
if(uip_flags & UIP_ACKDATA) {
|
||||||
uip_connr->tcpstateflags = UIP_CLOSED;
|
uip_connr->tcpstateflags = UIP_CLOSED;
|
||||||
uip_flags = UIP_CLOSE;
|
uip_flags = UIP_CLOSE;
|
||||||
write_char('L');
|
dbg_char('L');
|
||||||
UIP_APPCALL();
|
UIP_APPCALL();
|
||||||
write_char('l');
|
dbg_char('l');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -1751,9 +1754,9 @@ uip_process(u8_t flag) __banked
|
|||||||
}
|
}
|
||||||
uip_add_rcv_nxt(1);
|
uip_add_rcv_nxt(1);
|
||||||
uip_flags = UIP_CLOSE;
|
uip_flags = UIP_CLOSE;
|
||||||
write_char('M');
|
dbg_char('M');
|
||||||
UIP_APPCALL();
|
UIP_APPCALL();
|
||||||
write_char('m');
|
dbg_char('m');
|
||||||
goto tcp_send_ack;
|
goto tcp_send_ack;
|
||||||
} else if(uip_flags & UIP_ACKDATA) {
|
} else if(uip_flags & UIP_ACKDATA) {
|
||||||
uip_connr->tcpstateflags = UIP_FIN_WAIT_2;
|
uip_connr->tcpstateflags = UIP_FIN_WAIT_2;
|
||||||
@@ -1774,9 +1777,9 @@ uip_process(u8_t flag) __banked
|
|||||||
uip_connr->timer = 0;
|
uip_connr->timer = 0;
|
||||||
uip_add_rcv_nxt(1);
|
uip_add_rcv_nxt(1);
|
||||||
uip_flags = UIP_CLOSE;
|
uip_flags = UIP_CLOSE;
|
||||||
write_char('N');
|
dbg_char('N');
|
||||||
UIP_APPCALL();
|
UIP_APPCALL();
|
||||||
write_char('n');
|
dbg_char('n');
|
||||||
goto tcp_send_ack;
|
goto tcp_send_ack;
|
||||||
}
|
}
|
||||||
if(uip_len > 0) {
|
if(uip_len > 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user