Merge remote-tracking branch 'check/next-cc'

...only build-tested, needs fixes
This commit is contained in:
Stefan Seyfried
2014-02-15 20:22:07 +01:00
77 changed files with 1056 additions and 396 deletions

View File

@@ -199,6 +199,11 @@
<td><a href="http://dbox/control/screenshot">
http://dbox/control/screenshot</a></td>
</tr>
<tr>
<td>43. <a href="#signal">Signalst&auml;rke anzeigen</a></td>
<td><a href="http://dbox/control/signal">
http://dbox/control/signal</a></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
@@ -1777,19 +1782,6 @@ ok<br>
&nbsp;</div>
<br>
<!-- ----------------------------------------------------------- -->
<div class="title1"><a name="reloadplugins"></a>41. Plugins neu laden</div>
<div class="URL">Handler: http://dbox/control/reloadplugins</div>
<br>
<b>Parameter:</b> keine<br>
<b>R<EFBFBD>ckgabe</b>: ok<br>
<br>
Die Pluginliste wird neu geladen.
<br>
<!-- ----------------------------------------------------------- -->
@@ -1840,6 +1832,28 @@ Beispiel:<br>
&gt;&gt;&gt;http://dbox/control/screenshot?osd=0&amp;video=1<br>
ok<br>
&nbsp;</div>
<!-- ----------------------------------------------------------- -->
<div class="title1"><a name="signal"></a>43. Signalst&auml;rke zeigen</div>
<div class="URL">Handler: http://dbox/control/signal</div>
<br>
<b>Parameter:</b> keine oder sig, snr, ber<br><br>
<b>R&uuml;ckgabe</b>:<br>
SIG: 100<br>
SNR: 90<br>
BER: 0<br>
<br>
Signalst&auml;rke SIG in %, SNR in % und BER wird ausgegeben.
Wird ein spezieller Wert als Parameter angegeben, wird keine Beschreibung ausgegeben.
<br>
<div class="example">
Beispiel:<br>
<br>
&gt;&gt;&gt;http://dbox/control/signal?sig<br>
100<br>
&nbsp;</div>
&nbsp;&nbsp;</p>

View File

@@ -49,6 +49,8 @@
#include "neutrinoapi.h"
#include "controlapi.h"
#include <video.h>
#include <zapit/femanager.h>
extern cVideo * videoDecoder;
extern CPlugins *g_PluginList;//for relodplugins
@@ -161,6 +163,7 @@ const CControlAPI::TyCgiCall CControlAPI::yCgiCallList[]=
{"epgsearch", &CControlAPI::EpgSearchTXTCGI, ""},
{"epg", &CControlAPI::EpgCGI, ""},
{"zapto", &CControlAPI::ZaptoCGI, "text/plain"},
{"signal", &CControlAPI::SignalInfoCGI, "text/plain"},
{"getonidsid", &CControlAPI::GetChannel_IDCGI, "text/plain"},
{"currenttpchannels", &CControlAPI::GetTPChannel_IDCGI, "text/plain"},
// boxcontrol - system
@@ -212,7 +215,7 @@ const CControlAPI::TyCgiCall CControlAPI::yCgiCallList[]=
// settings
{"config", &CControlAPI::ConfigCGI, "text/plain"},
// filehandling
{"file", &CControlAPI::FileCGI, "+xml"},
{"file", &CControlAPI::FileCGI, "+xml"}
};
@@ -780,12 +783,14 @@ void CControlAPI::VolumeCGI(CyhookHandler *hh)
}
else if (hh->ParamList["1"].compare("mute") == 0)
{
NeutrinoAPI->Zapit->muteAudio(true);
char mute = 1;
NeutrinoAPI->EventServer->sendEvent(NeutrinoMessages::EVT_SET_MUTE, CEventServer::INITID_HTTPD, (void *)&mute, sizeof(char));
hh->SendOk();
}
else if (hh->ParamList["1"].compare("unmute") == 0)
{
NeutrinoAPI->Zapit->muteAudio(false);
char mute = 0;
NeutrinoAPI->EventServer->sendEvent(NeutrinoMessages::EVT_SET_MUTE, CEventServer::INITID_HTTPD, (void *)&mute, sizeof(char));
hh->SendOk();
}
else if (hh->ParamList["1"].compare("status") == 0) { // Mute status
@@ -793,7 +798,7 @@ void CControlAPI::VolumeCGI(CyhookHandler *hh)
}
else if(hh->ParamList["1"]!="") { //set volume
char vol = atol( hh->ParamList["1"].c_str() );
NeutrinoAPI->Zapit->setVolume(vol,vol);
NeutrinoAPI->EventServer->sendEvent(NeutrinoMessages::EVT_SET_VOLUME, CEventServer::INITID_HTTPD, (void *)&vol, sizeof(char));
hh->SendOk();
}
else
@@ -1392,7 +1397,7 @@ void CControlAPI::EpgSearchCGI(CyhookHandler *hh, bool xml_forat )
struct tm *tmStartZeit = localtime(&eventIterator->startTime);
if(xml_forat){
hh->printf("\t<epgsearch>");
hh->printf("\t\t<channelname>%s</channelname>\n",NeutrinoAPI->GetServiceName(eventIterator->channelID).c_str());
hh->printf("\t\t<channelname>%s</channelname>\n",ZapitTools::UTF8_to_UTF8XML(NeutrinoAPI->GetServiceName(eventIterator->channelID).c_str()).c_str());;
hh->printf("\t\t<epgtitle>%s</epgtitle>\n",ZapitTools::UTF8_to_UTF8XML(epg.title.c_str()).c_str());
hh->printf("\t\t<info1>%s</info1>\n",ZapitTools::UTF8_to_UTF8XML(epg.info1.c_str()).c_str());
hh->printf("\t\t<info2>%s</info2>\n",ZapitTools::UTF8_to_UTF8XML(epg.info2.c_str()).c_str());
@@ -1760,6 +1765,40 @@ void CControlAPI::SendChannelList(CyhookHandler *hh, bool currentTP)
}
}
//-----------------------------------------------------------------------------
void CControlAPI::SignalInfoCGI(CyhookHandler *hh)
{
CFrontend *frontend = CFEManager::getInstance()->getLiveFE();
if(frontend){
bool parame_empty = false;
if (hh->ParamList["1"].empty())
parame_empty = true;
if ( parame_empty || (hh->ParamList["1"] == "sig") ){
unsigned int sig = frontend->getSignalStrength() & 0xFFFF;
sig = (sig & 0xFFFF) * 100 / 65535;
if (parame_empty)
hh->printf("SIG: ");
hh->printf("%3u\n", sig);
}
if ( parame_empty || (hh->ParamList["1"] == "snr") ){
unsigned int snr = frontend->getSignalNoiseRatio() & 0xFFFF;
snr = (snr & 0xFFFF) * 100 / 65535;
if (parame_empty)
hh->printf("SNR: ");
hh->printf("%3u\n", snr);
}
if ( parame_empty || (hh->ParamList["1"] == "ber") ){
unsigned int ber = frontend->getBitErrorRate();
if (parame_empty)
hh->printf("BER: ");
hh->printf("%3u\n", ber);
}
}else
hh->SendError();
}
//-----------------------------------------------------------------------------
void CControlAPI::SendStreamInfo(CyhookHandler *hh)
{

View File

@@ -111,6 +111,8 @@ private:
void logoCGI(CyhookHandler *hh);
void ConfigCGI(CyhookHandler *hh);
void FileCGI(CyhookHandler *hh);
void SignalInfoCGI(CyhookHandler *hh);
protected:
static const unsigned int PLUGIN_DIR_COUNT = 7;

View File

@@ -132,6 +132,8 @@ CNeutrinoAPI::CNeutrinoAPI()
EventServer->registerEvent2( NeutrinoMessages::RELOAD_SETUP, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");//reload neutrino conf
EventServer->registerEvent2( NeutrinoMessages::EVT_HDMI_CEC_VIEW_ON, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
EventServer->registerEvent2( NeutrinoMessages::EVT_HDMI_CEC_STANDBY, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
EventServer->registerEvent2( NeutrinoMessages::EVT_SET_MUTE, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
EventServer->registerEvent2( NeutrinoMessages::EVT_SET_VOLUME, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
}
//-------------------------------------------------------------------------

View File

@@ -347,7 +347,7 @@ function do_submit()
<div class="work_box_body">
<form name="f" class="y_form" action="/y/cgi">
<table border="0" width="100%">
<tr><td colspan="2" class="y_form_header">Wellcome to yWeb</td></tr>
<tr><td colspan="2" class="y_form_header">Welcome to yWeb</td></tr>
<tr>
<td>{=L:language=}</td>
<td colspan="3"> <select name="language" title="{=L:language=}">

View File

@@ -1,10 +1,68 @@
{=var-set:cancache=yPInstall=}
{=include-block:Y_Blocks.txt;head=}
<script type="text/javascript" src="/prototype.js"></script>
<script type="text/javascript" src="/Y_Baselib.js"></script>
<script type="text/javascript" src="/Y_yweb.js"></script>
<script type="text/javascript">
//<![CDATA[
var g_sig = 100;
function set_sigbar(_sig){
var l = $("sigbar_left");
var r = $("sigbar_right");
/*IE: width=0 -> =""*/
if(_sig > 0)
l.width = _sig.toString()+"%";
else
l.width = "";
if(_sig >= 100)
r.width = "";
else
r.width = (100-_sig).toString()+"%";
}
function sig_get(){
var __sig_str = loadSyncURL("/control/signal?sig");
var __sig = parseInt(__sig_str,10);
if(isNaN(__sig)) __sig=100;
set_sigbar(__sig);
g_sig = __sig;
$('sig_value').update(g_sig);
return __sig;
}
var g_snr = 100;
function set_snrbar(_snr){
var l = $("snrbar_left");
var r = $("snrbar_right");
/*IE: width=0 -> =""*/
if(_snr > 0)
l.width = _snr.toString()+"%";
else
l.width = "";
if(_snr >= 100)
r.width = "";
else
r.width = (100-_snr).toString()+"%";
}
function snr_get(){
var __snr_str = loadSyncURL("/control/signal?snr");
var __snr = parseInt(__snr_str,10);
if(isNaN(__snr)) __snr=100;
set_snrbar(__snr);
g_snr = __snr;
$('snr_value').update(g_snr);
return __snr;
}
var g_ber = 0;
function ber_get(){
var __ber_str = loadSyncURL("/control/signal?ber");
var __ber = parseInt(__ber_str,10);
if(isNaN(__ber)) __ber=100;
g_ber = __ber;
$('ber_value').update(g_ber);
//return __ber;
}
var g_volumen = 100;
function volumen_set_audiobar(_volumen){
var l = $("audiobar_left");
@@ -57,6 +115,16 @@ function init(){
volumen_set_audiobar(volumen_get());
set_mute_button();
add_yExtensions('boxcontrol', 'secmenu_boxcontrol');
set_sigbar(sig_get());
set_snrbar(snr_get());
ber_get();
}
function get_data(){
volumen_set_audiobar(volumen_get());
set_sigbar(sig_get());
set_snrbar(snr_get());
ber_get();
}
//]]>
</script>
@@ -138,6 +206,32 @@ function init(){
</center>
</div>
</div>
<div class="y_menu_sec_box">
<div class="y_menu_sec_box_head"><h2>{=L:bc.menue.signal=}</h2></div>
<div class="y_menu_sec_box_body">
<center>
<div class="y_text_boxcontrol_div_progress">SIG <span id="sig_value"></span>%</div>
<table class="y_text_boxcontrol_table_progress" cellspacing="0" cellpadding="0" title="{=L:bc.menue.sig_display=}">
<tr>
<td id="sigbar_left" width="100%"><img src="/images/blank.gif" height="1" width="0" alt="." /></td>
<td id="sigbar_right" width="0%" bgcolor="white"><img src="/images/blank.gif" height="1" width="0" alt="." /></td>
</tr>
</table>
</center>
<center>
<div class="y_text_boxcontrol_div_progress">SNR <span id="snr_value"></span>%</div>
<table class="y_text_boxcontrol_table_progress" cellspacing="0" cellpadding="0" title="{=L:bc.menue.snr_display=}">
<tr>
<td id="snrbar_left" width="100%"><img src="/images/blank.gif" height="1" width="0" alt="." /></td>
<td id="snrbar_right" width="0%" bgcolor="white"><img src="/images/blank.gif" height="1" width="0" alt="." /></td>
</tr>
</table>
</center>
<center>
<div class="y_text_boxcontrol_div_progress">BER <span id="ber_value"></span></div>
</center>
</div>
</div>
{=if-empty:{=ini-get:/var/tuxbox/config/Y-Web.conf;slavebox=}~~
<div class="y_menu_sec_box">
<div class="y_menu_sec_box_head"><h2>Switch to</h2></div>
@@ -155,6 +249,7 @@ function init(){
<script type="text/javascript">
//<![CDATA[
init();
window.setInterval("get_data();",5000);
//]]>
</script>
</body>

View File

@@ -557,6 +557,30 @@ tr {
margin-top: 10px;
border: #FF8e42 solid 1px;
}
.y_text_boxcontrol_table_progress {
width: 114px;
height: 12px;
padding: 0;
margin-bottom: 5px;
border: #FF8e42 solid 1px;
border-top: 0 none;
background: #ffffff; /* Old browsers */
background: -moz-linear-gradient(left, #ff0000 0%, #ffff00 74%, #ffff00 75%, #00ff00 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, right top, color-stop(0%,#ff0000), color-stop(74%,#ffff00), color-stop(75%,#ffff00), color-stop(100%,#00ff00)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(left, #ff0000 0%,#ffff00 74%,#ffff00 75%,#00ff00 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(left, #ff0000 0%,#ffff00 74%,#ffff00 75%,#00ff00 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(left, #ff0000 0%,#ffff00 74%,#ffff00 75%,#00ff00 100%); /* IE10+ */
background: linear-gradient(to right, #ff0000 0%,#ffff00 74%,#ffff00 75%,#00ff00 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff0000', endColorstr='#00ff00',GradientType=1 ); /* IE6-9 */
}
.y_text_boxcontrol_div_progress {
width: 112px;
border: #FF8e42 solid 1px;
font-size: 9px;
margin-top: 5px;
margin-bottom: -1px;
}
.y_epg_info {
border: 1px solid #CCCCCC;
background-color: white;

View File

@@ -15,6 +15,10 @@ function goUrl(_url){
}
$("out").update(res);
}
function standby(_standby){
var _cec = (document.getElementById('checkCEC').checked == true) ? "on" : "off";
goUrl("/control/standby?"+_standby+"&cec="+_cec);
}
//]]>
</script>
</head>
@@ -32,9 +36,10 @@ function goUrl(_url){
<input type="button" value="{=L:bc.control.shutdown=}" onclick='goConfirmUrl("{=L:bc.control.shutdown.ask=}","/control/shutdown");'/>
</td>
<td>
<input type="button" value="{=L:on=}" onclick='goUrl("/control/standby?on");'/>
<input type="button" value="{=L:off=}" onclick='goUrl("/control/standby?off");'/>
<input type="button" value="{=L:on=}" onclick='standby("on");'/>
<input type="button" value="{=L:off=}" onclick='standby("off");'/>
<input type="button" value="{=L:bc.control.status=}" onclick='goUrl("/control/standby");'/>
CEC: <input id="checkCEC" name="checkCEC" type="checkbox" checked="checked"/>
</td>
</tr>
<tr><td class="y_form_header">{=L:bc.control.playback=}</td><td class="y_form_header">{=L:bc.control.recording_mode=}</td></tr>

View File

@@ -1,4 +1,4 @@
version=2.8.0.44
date=09.08.2013
version=2.8.0.59
date=12.02.2014
type=Release
info=Port CST

View File

@@ -99,6 +99,8 @@ bc.menue.switch_to_radio=Zum Radio umschalten
bc.menue.webinf_slavebox=Webinterface der SlaveBox
bc.menue.volumen_display=Lautstärke Anzeige
bc.menue.signal=Signalstärke
========= Boxcontrol
bc.control.freemem=FreeMem
bc.control.lock=sperren

View File

@@ -101,6 +101,8 @@ bc.menue.switch_to_radio=switch to Radio
bc.menue.webinf_slavebox=Webinterface der SlaveBox
bc.menue.volumen_display=volumen display
bc.menue.signal=Signal strength
========= Boxcontrol
bc.control.freemem=FreeMem
bc.control.lock=lock