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