From f8eb55d58734c7324c5104fcf3dc148afa7ede97 Mon Sep 17 00:00:00 2001 From: logicog Date: Tue, 5 Aug 2025 09:33:42 +0200 Subject: [PATCH] Adding code for dynamic html page functions --- httpd/page_impl.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 httpd/page_impl.c diff --git a/httpd/page_impl.c b/httpd/page_impl.c new file mode 100644 index 0000000..67ce46b --- /dev/null +++ b/httpd/page_impl.c @@ -0,0 +1,84 @@ +#include "../rtl837x_common.h" +#include "uip.h" +#include "../html_data.h" + +#pragma codeseg BANK1 + +extern __xdata uint8_t outbuf[2048]; +extern __xdata uint16_t slen; +extern __code uint8_t * __code hex; +extern __xdata uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask; +extern __code uint8_t ownMAC[]; + +inline void byte_to_html(uint8_t a) +{ + outbuf[slen++] = hex[(a >> 4) & 0xf]; + outbuf[slen++] = hex[a & 0xf]; +} + + +inline void char_to_html(char c) +{ + outbuf[slen++] = c; +} + + +inline void itoa_html(uint8_t v) +{ + uint8_t t = (v / 100) % 10; + if (t) + char_to_html('0' + t); + t = (v / 10) % 10; + if (t) + char_to_html('0' + t); + char_to_html('0' + (v % 10)); +} + + +uint16_t stat_content(void) +{ + print_string("stat_content called\n"); + return 0; +} + + +uint16_t port_status(void) +{ + print_string("port_status called\n"); + return 0; +} + + +uint16_t html_index(void) +{ + print_string("html_index called\n"); + slen += strtox(outbuf + slen, "IP Address"); + print_string("\nIP:"); + print_byte(uip_hostaddr[0]); write_char('.'); + print_byte(uip_hostaddr[0] >> 8); write_char('.'); + print_byte(uip_hostaddr[1]); write_char('.'); + print_byte(uip_hostaddr[1] >> 8); write_char('\n'); + itoa_html(uip_hostaddr[0]); char_to_html('.'); + itoa_html(uip_hostaddr[0] >> 8); char_to_html('.'); + itoa_html(uip_hostaddr[1]); char_to_html('.'); + itoa_html(uip_hostaddr[1]); + slen += strtox(outbuf + slen, "Gateway"); + itoa_html(uip_draddr[0]); char_to_html('.'); + itoa_html(uip_draddr[0] >> 8); char_to_html('.'); + itoa_html(uip_draddr[1]); char_to_html('.'); + itoa_html(uip_draddr[1] >> 8); + slen += strtox(outbuf + slen, "Netmask"); + itoa_html(uip_netmask[0]); char_to_html('.'); + itoa_html(uip_netmask[0] >> 8); char_to_html('.'); + itoa_html(uip_netmask[1]); char_to_html('.'); + itoa_html(uip_netmask[1] >> 8); + slen += strtox(outbuf + slen, "MAC Address"); + byte_to_html(ownMAC[0]); char_to_html(':'); + byte_to_html(ownMAC[1]); char_to_html(':'); + byte_to_html(ownMAC[2]); char_to_html(':'); + byte_to_html(ownMAC[3]); char_to_html(':'); + byte_to_html(ownMAC[4]); char_to_html(':'); + byte_to_html(ownMAC[5]); + slen += strtox(outbuf + slen, ""); + return 0; +}