From dd719275766f42d65d37f60b485b529724ffac33 Mon Sep 17 00:00:00 2001 From: David Kopf Date: Tue, 4 Oct 2011 14:10:32 -0400 Subject: [PATCH] Add ENERGEST, RIMESTATS, COMPOWER to status page --- apps/webserver-nano/httpd-cgi.c | 102 ++++++++++++++++++++++++++------ 1 file changed, 83 insertions(+), 19 deletions(-) diff --git a/apps/webserver-nano/httpd-cgi.c b/apps/webserver-nano/httpd-cgi.c index 7608a9da2..2b0fdfce3 100644 --- a/apps/webserver-nano/httpd-cgi.c +++ b/apps/webserver-nano/httpd-cgi.c @@ -524,14 +524,14 @@ static unsigned short generate_sensor_readings(void *arg) { uint16_t numprinted; - uint16_t h,m,s; + uint16_t days,h,m,s; unsigned long seconds=clock_seconds(); -// uint8_t p1; static const char httpd_cgi_sensor0[] HTTPD_STRING_ATTR = "[Updated %d seconds ago]

"; static const char httpd_cgi_sensor1[] HTTPD_STRING_ATTR = "Temperature: %s
"; static const char httpd_cgi_sensor2[] HTTPD_STRING_ATTR = "Battery: %s
"; // static const char httpd_cgi_sensr12[] HTTPD_STRING_ATTR = "Temperature: %s Battery: %s
"; - static const char httpd_cgi_sensor3[] HTTPD_STRING_ATTR = "Elapsed timer : %02d:%02d:%02d
"; + static const char httpd_cgi_sensor3[] HTTPD_STRING_ATTR = "Uptime : %02d:%02d:%02d
"; + static const char httpd_cgi_sensor3d[] HTTPD_STRING_ATTR = "Uptime : %u days %02u:%02u:%02u
"; // static const char httpd_cgi_sensor4[] HTTPD_STRING_ATTR = "Sleeping time : %02d:%02d:%02d (%d%%)
"; numprinted=0; @@ -554,33 +554,97 @@ generate_sensor_readings(void *arg) numprinted+=httpd_snprintf((char *)uip_appdata+numprinted, uip_mss()-numprinted, httpd_cgi_sensor2, sensor_extvoltage); // numprinted+=httpd_snprintf((char *)uip_appdata+numprinted, uip_mss()-numprinted, httpd_cgi_sensr12, sensor_temperature,sensor_extvoltage); + #if RADIOSTATS /* Remember radioontime for display below - slow connection might make it report longer than cpu ontime! */ savedradioontime = radioontime; #endif - h=seconds/3600; - s=seconds-h*3600; - m=s/60; - s=s-m*60; - numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor3, h,m,s); - -/* TODO: some gcc's have a bug with %02d format that adds a zero byte and extra chars to the end of the string. + h=seconds/3600;s=seconds-h*3600;m=s/60;s=s-m*60; + days=h/24; + if (days == 0) { + numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor3, h,m,s); + } else { + h=h-days*24; + numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor3d, days,h,m,s); + } +/* TODO: some gcc's have a bug with %02d format that adds an extra char after the string terminator. * Seen with arm-none-eabi-gcc.exe (Sourcery G++ Lite 2008q3-66) 4.3.2 * Quick cosmetic fix to strip that off: */ - if (*(char *)(uip_appdata + numprinted-3)==0) {numprinted-=3;} - else if (*(char *)(uip_appdata + numprinted-2)==0) {numprinted-=2;} - else if (*(char *)(uip_appdata + numprinted-1)==0) {numprinted-=1;} - + if (*(char *)(uip_appdata + numprinted-3)==0) {numprinted-=3;} + else if (*(char *)(uip_appdata + numprinted-2)==0) {numprinted-=2;} + else if (*(char *)(uip_appdata + numprinted-1)==0) {numprinted-=1;} + #if 0 if (sleepseconds) { - p1=100UL*sleepseconds/seconds; - h=sleepseconds/3600; - s=sleepseconds-h*3600; - m=s/60; - s=s-m*60; + uint8_t p1; + p1=100UL*sleepseconds/seconds;h=sleepseconds/3600;s=sleepseconds-h*3600;m=s/60;s=s-m*60; numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor4, h,m,s,p1); } #endif + +#if ENERGEST_CONF_ON +{uint8_t p1,p2; +#if 0 +/* Update all the timers to get current values */ + for (p1=1;p1