From 90a6d768eaba3418a58025e7abed861ae7e6330b Mon Sep 17 00:00:00 2001 From: dak664 Date: Thu, 23 Dec 2010 19:41:07 +0000 Subject: [PATCH] Keep track of sleeptime and display on status web page. --- cpu/avr/dev/clock.c | 3 +- .../apps/raven-webserver/httpd-cgi.c | 38 ++++++++++++------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/cpu/avr/dev/clock.c b/cpu/avr/dev/clock.c index 0c1b2637a..b1dd469d0 100644 --- a/cpu/avr/dev/clock.c +++ b/cpu/avr/dev/clock.c @@ -9,6 +9,7 @@ static volatile clock_time_t count; static volatile uint8_t scount; volatile unsigned long seconds; +long sleepseconds; /* Set RADIOSTATS to monitor radio on time (must also be set in the radio driver) */ #if RF230BB && WEBSERVER @@ -36,10 +37,10 @@ extern uint8_t RF230_receive_on; /*---------------------------------------------------------------------------*/ /* This routine can be called to add seconds to the clock after a sleep * of an integral number of seconds. - * TODO:keep separate track of elapsed time, cpu ontime, and radioontime */ void clock_adjust_seconds(uint8_t howmany) { seconds += howmany; + sleepseconds +=howmany; #if RADIOSTATS if (RF230_receive_on) radioontime += howmany; #endif diff --git a/platform/avr-raven/apps/raven-webserver/httpd-cgi.c b/platform/avr-raven/apps/raven-webserver/httpd-cgi.c index 55df54ffc..528407a88 100644 --- a/platform/avr-raven/apps/raven-webserver/httpd-cgi.c +++ b/platform/avr-raven/apps/raven-webserver/httpd-cgi.c @@ -28,7 +28,7 @@ * * This file is part of the uIP TCP/IP stack. * - * $Id: httpd-cgi.c,v 1.12 2010/12/18 20:44:02 dak664 Exp $ + * $Id: httpd-cgi.c,v 1.13 2010/12/23 19:41:07 dak664 Exp $ * */ @@ -109,7 +109,7 @@ static const char *states[] = { static char sensor_temperature[12]="Not Enabled"; static char sensor_extvoltage[12]="Not Enabled"; static unsigned long last_tempupdate,last_extvoltageupdate; - extern unsigned long seconds; + extern unsigned long seconds, sleepseconds; #if RADIOSTATS extern unsigned long radioontime; static unsigned long savedradioontime; @@ -392,17 +392,21 @@ generate_sensor_readings(void *arg) { uint16_t numprinted; uint16_t h,m,s; + 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 = "Voltage: %s
"; - static const char httpd_cgi_sensor3[] HTTPD_STRING_ATTR = "Up time: %02d:%02d:%02d
"; +// 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_sensor4[] HTTPD_STRING_ATTR = "Sleeping time : %02d:%02d:%02d (%d%%)
"; numprinted=0; if (last_tempupdate) { numprinted =httpd_snprintf((char *)uip_appdata, uip_mss(), httpd_cgi_sensor0,seconds-last_tempupdate); } - numprinted+=httpd_snprintf((char *)uip_appdata+numprinted, uip_mss()-numprinted, httpd_cgi_sensor1, sensor_temperature); +// numprinted+=httpd_snprintf((char *)uip_appdata+numprinted, uip_mss()-numprinted, httpd_cgi_sensor1, sensor_temperature); + numprinted+=httpd_snprintf((char *)uip_appdata+numprinted, uip_mss()-numprinted, httpd_cgi_sensr12, sensor_temperature,sensor_extvoltage); #if 0 //Measuring AVcc might be useful to check on battery condition but on ext power it's always 3v3 @@ -416,7 +420,7 @@ generate_sensor_readings(void *arg) h=1131632UL/ADC; //Get supply voltage #endif - 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_sensor2, sensor_extvoltage); #if RADIOSTATS /* Remember radioontime for display below - slow connection might make it report longer than cpu ontime! */ savedradioontime = radioontime; @@ -426,6 +430,14 @@ generate_sensor_readings(void *arg) m=s/60; s=s-m*60; numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor3, h,m,s); + if (sleepseconds) { + 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); + } return numprinted; } #if RADIOSTATS @@ -436,8 +448,8 @@ generate_radio_stats(void *arg) uint16_t numprinted; uint16_t h,m,s; uint8_t p1,p2; - static const char httpd_cgi_sensor4[] HTTPD_STRING_ATTR = "Radio on: %02d:%02d:%02d (%d.%02d%%)
"; - static const char httpd_cgi_sensor5[] HTTPD_STRING_ATTR = "Packets: Tx=%5d Rx=%5d TxL=%5d RxL=%5d RSSI=%2ddBm\n"; + static const char httpd_cgi_sensor10[] HTTPD_STRING_ATTR = "Radio on time : %02d:%02d:%02d (%d.%02d%%)
"; + static const char httpd_cgi_sensor11[] HTTPD_STRING_ATTR = "Packets: Tx=%5d Rx=%5d TxL=%5d RxL=%5d RSSI=%2ddBm\n"; s=(10000UL*savedradioontime)/seconds; p1=s/100; @@ -447,17 +459,17 @@ generate_radio_stats(void *arg) m=s/60; s=s-m*60; - numprinted =httpd_snprintf((char *)uip_appdata , uip_mss() , httpd_cgi_sensor4,\ + numprinted =httpd_snprintf((char *)uip_appdata , uip_mss() , httpd_cgi_sensor10,\ h,m,s,p1,p2); - #if RF230BB - numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor5,\ +#if RF230BB + numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor11,\ RF230_sendpackets,RF230_receivepackets,RF230_sendfail,RF230_receivefail,-92+rf230_last_rssi); #else p1=0; radio_get_rssi_value(&p1); p1 = -91*3(p1-1); - numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor5,\ + numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor11,\ RF230_sendpackets,RF230_receivepackets,RF230_sendfail,RF230_receivefail,p1); #endif