From: Andreas Ă–man Date: Wed, 21 Oct 2009 19:47:34 +0000 (+0000) Subject: Add a status page displaying status via XML X-Git-Tag: 2.12~461 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=167dff2fae7bc05bf5eeed78f9bda8b8c02e0f33;p=thirdparty%2Ftvheadend.git Add a status page displaying status via XML Patch by FreddyAV --- diff --git a/src/webui/simpleui.c b/src/webui/simpleui.c index ca4316fb4..ce45a6244 100644 --- a/src/webui/simpleui.c +++ b/src/webui/simpleui.c @@ -344,6 +344,97 @@ page_pvrinfo(http_connection_t *hc, const char *remain, void *opaque) } +/** + * + */ +static int +page_status(http_connection_t *hc, + const char *remain, void *opaque) +{ + htsbuf_queue_t *hq = &hc->hc_reply; + int c, i, cc, timeleft, timelefttemp; + struct tm a, b; + dvr_entry_t *de; + dvr_query_result_t dqr; + const char *rstatus; + time_t now; + + htsbuf_qprintf(hq, "\n" + "\n" + "\n"); + + pthread_mutex_lock(&global_lock); + + dvr_query(&dqr); + dvr_query_sort(&dqr); + + c = dqr.dqr_entries; + cc = 0; + timeleft = INT_MAX; + + now = time(NULL); + + for(i = 0; i < c; i++) { + de = dqr.dqr_array[i]; + + if (DVR_SCHEDULED == de->de_sched_state) + { + timelefttemp = (int) (de->de_start - now) / 60; // output minutes + if (timelefttemp < timeleft) + timeleft = timelefttemp; + } + else if (DVR_RECORDING == de->de_sched_state) + { + localtime_r(&de->de_start, &a); + localtime_r(&de->de_stop, &b); + + htsbuf_qprintf(hq, + "" + "" + "%02d/%02d/%02d" + "" + "%d" + "" + "" + "%02d/%02d/%02d" + "" + "%d" + "" + "%s", + a.tm_year + 1900, a.tm_mon, a.tm_mday, + a.tm_hour, a.tm_min, + de->de_start, + b.tm_year+1900, b.tm_mon, b.tm_mday, + b.tm_hour, b.tm_min, + de->de_stop, + de->de_title); + + rstatus = val2str(de->de_sched_state, recstatustxt); + htsbuf_qprintf(hq, "%s\n", rstatus); + cc++; + timeleft = -1; + } + } + + if ((cc==0) && (timeleft < INT_MAX)) { + htsbuf_qprintf(hq, "%d\n",timeleft); + } + + dvr_query_free(&dqr); + + htsbuf_qprintf(hq, "\n"); + htsbuf_qprintf(hq, "%d\n",subscriptions_active()); + + pthread_mutex_unlock(&global_lock); + + htsbuf_qprintf(hq, ""); + http_output_content(hc, "text/xml"); + + return 0; +} + + + /** * Simple web ui */ @@ -353,4 +444,7 @@ simpleui_start(void) http_path_add("/simple.html", NULL, page_simple, ACCESS_SIMPLE); http_path_add("/eventinfo", NULL, page_einfo, ACCESS_SIMPLE); http_path_add("/pvrinfo", NULL, page_pvrinfo, ACCESS_SIMPLE); + http_path_add("/status.xml", NULL, page_status, ACCESS_SIMPLE); } + +