Keep track of sleeptime and display on status web page.

This commit is contained in:
dak664 2010-12-23 19:41:07 +00:00
parent 662b0e064c
commit 90a6d768ea
2 changed files with 27 additions and 14 deletions

View file

@ -9,6 +9,7 @@
static volatile clock_time_t count; static volatile clock_time_t count;
static volatile uint8_t scount; static volatile uint8_t scount;
volatile unsigned long seconds; volatile unsigned long seconds;
long sleepseconds;
/* Set RADIOSTATS to monitor radio on time (must also be set in the radio driver) */ /* Set RADIOSTATS to monitor radio on time (must also be set in the radio driver) */
#if RF230BB && WEBSERVER #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 /* This routine can be called to add seconds to the clock after a sleep
* of an integral number of seconds. * of an integral number of seconds.
* TODO:keep separate track of elapsed time, cpu ontime, and radioontime
*/ */
void clock_adjust_seconds(uint8_t howmany) { void clock_adjust_seconds(uint8_t howmany) {
seconds += howmany; seconds += howmany;
sleepseconds +=howmany;
#if RADIOSTATS #if RADIOSTATS
if (RF230_receive_on) radioontime += howmany; if (RF230_receive_on) radioontime += howmany;
#endif #endif

View file

@ -28,7 +28,7 @@
* *
* This file is part of the uIP TCP/IP stack. * 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_temperature[12]="Not Enabled";
static char sensor_extvoltage[12]="Not Enabled"; static char sensor_extvoltage[12]="Not Enabled";
static unsigned long last_tempupdate,last_extvoltageupdate; static unsigned long last_tempupdate,last_extvoltageupdate;
extern unsigned long seconds; extern unsigned long seconds, sleepseconds;
#if RADIOSTATS #if RADIOSTATS
extern unsigned long radioontime; extern unsigned long radioontime;
static unsigned long savedradioontime; static unsigned long savedradioontime;
@ -392,17 +392,21 @@ generate_sensor_readings(void *arg)
{ {
uint16_t numprinted; uint16_t numprinted;
uint16_t h,m,s; uint16_t h,m,s;
uint8_t p1;
static const char httpd_cgi_sensor0[] HTTPD_STRING_ATTR = "[Updated %d seconds ago]<br><br>"; static const char httpd_cgi_sensor0[] HTTPD_STRING_ATTR = "[Updated %d seconds ago]<br><br>";
static const char httpd_cgi_sensor1[] HTTPD_STRING_ATTR = "<em>Temperature:</em> %s<br>"; // static const char httpd_cgi_sensor1[] HTTPD_STRING_ATTR = "<em>Temperature:</em> %s<br>";
static const char httpd_cgi_sensor2[] HTTPD_STRING_ATTR = "<em>Voltage:</em> %s<br>"; // static const char httpd_cgi_sensor2[] HTTPD_STRING_ATTR = "<em>Battery:</em> %s<br>";
static const char httpd_cgi_sensor3[] HTTPD_STRING_ATTR = "<em>Up time:</em> %02d:%02d:%02d<br>"; static const char httpd_cgi_sensr12[] HTTPD_STRING_ATTR = "<em>Temperature:</em> %s <em>Battery:<em> %s<br>";
static const char httpd_cgi_sensor3[] HTTPD_STRING_ATTR = "<em>Elapsed timer :</em> %02d:%02d:%02d<br>";
static const char httpd_cgi_sensor4[] HTTPD_STRING_ATTR = "<em>Sleeping time :</em> %02d:%02d:%02d (%d%%)<br>";
numprinted=0; numprinted=0;
if (last_tempupdate) { if (last_tempupdate) {
numprinted =httpd_snprintf((char *)uip_appdata, uip_mss(), httpd_cgi_sensor0,seconds-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 #if 0
//Measuring AVcc might be useful to check on battery condition but on ext power it's always 3v3 //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 h=1131632UL/ADC; //Get supply voltage
#endif #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 #if RADIOSTATS
/* Remember radioontime for display below - slow connection might make it report longer than cpu ontime! */ /* Remember radioontime for display below - slow connection might make it report longer than cpu ontime! */
savedradioontime = radioontime; savedradioontime = radioontime;
@ -426,6 +430,14 @@ generate_sensor_readings(void *arg)
m=s/60; m=s/60;
s=s-m*60; s=s-m*60;
numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor3, h,m,s); 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; return numprinted;
} }
#if RADIOSTATS #if RADIOSTATS
@ -436,8 +448,8 @@ generate_radio_stats(void *arg)
uint16_t numprinted; uint16_t numprinted;
uint16_t h,m,s; uint16_t h,m,s;
uint8_t p1,p2; uint8_t p1,p2;
static const char httpd_cgi_sensor4[] HTTPD_STRING_ATTR = "<em>Radio on:</em> %02d:%02d:%02d (%d.%02d%%)<br>"; static const char httpd_cgi_sensor10[] HTTPD_STRING_ATTR = "<em>Radio on time :</em> %02d:%02d:%02d (%d.%02d%%)<br>";
static const char httpd_cgi_sensor5[] HTTPD_STRING_ATTR = "<em>Packets:</em> Tx=%5d Rx=%5d TxL=%5d RxL=%5d RSSI=%2ddBm\n"; static const char httpd_cgi_sensor11[] HTTPD_STRING_ATTR = "<em>Packets:</em> Tx=%5d Rx=%5d TxL=%5d RxL=%5d RSSI=%2ddBm\n";
s=(10000UL*savedradioontime)/seconds; s=(10000UL*savedradioontime)/seconds;
p1=s/100; p1=s/100;
@ -447,17 +459,17 @@ generate_radio_stats(void *arg)
m=s/60; m=s/60;
s=s-m*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); h,m,s,p1,p2);
#if RF230BB #if RF230BB
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,-92+rf230_last_rssi); RF230_sendpackets,RF230_receivepackets,RF230_sendfail,RF230_receivefail,-92+rf230_last_rssi);
#else #else
p1=0; p1=0;
radio_get_rssi_value(&p1); radio_get_rssi_value(&p1);
p1 = -91*3(p1-1); 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); RF230_sendpackets,RF230_receivepackets,RF230_sendfail,RF230_receivefail,p1);
#endif #endif