mirror of
https://github.com/DigitalDevices/octonet.git
synced 2023-10-10 13:36:52 +02:00
- support quad/quattro switching
- also offer status values as json files
This commit is contained in:
parent
48b5b8ef84
commit
aeac33b1a9
@ -700,7 +700,7 @@ static int32_t dvbsq(uint32_t snr, uint32_t fec,
|
|||||||
Quality = ((SignalToNoiseRel + 70) * BERQuality) / 100;
|
Quality = ((SignalToNoiseRel + 70) * BERQuality) / 100;
|
||||||
else
|
else
|
||||||
Quality = BERQuality;
|
Quality = BERQuality;
|
||||||
return (Quality * 3) / 20;
|
return Quality;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -753,7 +753,7 @@ int32_t dvbs2q(int32_t snr, uint32_t fec, uint32_t mod,
|
|||||||
Quality = ((SignalToNoiseRel + 30) * BERQuality) / 60;
|
Quality = ((SignalToNoiseRel + 30) * BERQuality) / 60;
|
||||||
else
|
else
|
||||||
Quality = 100;
|
Quality = 100;
|
||||||
return (Quality * 3) / 20;
|
return Quality;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t dvbcq(int32_t snr, uint32_t mod,
|
static int32_t dvbcq(int32_t snr, uint32_t mod,
|
||||||
@ -777,7 +777,7 @@ static int32_t dvbcq(int32_t snr, uint32_t mod,
|
|||||||
Quality = ((SignalToNoiseRel + 70) * BERQuality) / 100;
|
Quality = ((SignalToNoiseRel + 70) * BERQuality) / 100;
|
||||||
else
|
else
|
||||||
Quality = BERQuality;
|
Quality = BERQuality;
|
||||||
return (Quality * 3) / 20;
|
return Quality;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t dvbtq(int32_t snr, uint32_t mod, uint32_t fec,
|
static int32_t dvbtq(int32_t snr, uint32_t mod, uint32_t fec,
|
||||||
@ -825,7 +825,7 @@ static int32_t dvbtq(int32_t snr, uint32_t mod, uint32_t fec,
|
|||||||
else
|
else
|
||||||
Quality = BERQuality;
|
Quality = BERQuality;
|
||||||
|
|
||||||
return (Quality * 3) / 20;
|
return Quality;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t dvbt2q(int32_t snr, uint32_t mod, uint32_t fec, uint32_t trans, uint32_t pilot,
|
static int32_t dvbt2q(int32_t snr, uint32_t mod, uint32_t fec, uint32_t trans, uint32_t pilot,
|
||||||
@ -915,18 +915,19 @@ static int32_t dvbt2q(int32_t snr, uint32_t mod, uint32_t fec, uint32_t trans, u
|
|||||||
else
|
else
|
||||||
Quality = 100;
|
Quality = 100;
|
||||||
|
|
||||||
return (Quality * 3) / 20;
|
return Quality;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void calc_lq(struct dvbfe *fe)
|
static void calc_lq(struct dvbfe *fe)
|
||||||
{
|
{
|
||||||
struct dtv_fe_stats st;
|
struct dtv_fe_stats st;
|
||||||
int64_t str, snr;
|
int64_t str, snr;
|
||||||
uint32_t mod, fec, ber_num, ber_den, trans, pilot = 0;
|
uint32_t mod, fec, ber_num, ber_den, trans, pilot = 0, quality = 0;
|
||||||
|
|
||||||
get_stat(fe->fd, DTV_STAT_SIGNAL_STRENGTH, &st);
|
get_stat(fe->fd, DTV_STAT_SIGNAL_STRENGTH, &st);
|
||||||
str = st.stat[0].uvalue;
|
str = st.stat[0].uvalue;
|
||||||
dbgprintf(DEBUG_DVB, "fe%d: str=%lld\n", fe->nr, str);
|
dbgprintf(DEBUG_DVB, "fe%d: str=%lld\n", fe->nr, str);
|
||||||
|
fe->strength = str;
|
||||||
str = (str * 48) / 10000 + 344;
|
str = (str * 48) / 10000 + 344;
|
||||||
if (str < 0)
|
if (str < 0)
|
||||||
str = 0;
|
str = 0;
|
||||||
@ -937,6 +938,7 @@ static void calc_lq(struct dvbfe *fe)
|
|||||||
// qual: 0-15 15=BER<2*10^-4 PER<10^-7
|
// qual: 0-15 15=BER<2*10^-4 PER<10^-7
|
||||||
get_stat(fe->fd, DTV_STAT_CNR, &st);
|
get_stat(fe->fd, DTV_STAT_CNR, &st);
|
||||||
snr = st.stat[0].uvalue;
|
snr = st.stat[0].uvalue;
|
||||||
|
fe->snr = snr;
|
||||||
get_property(fe->fd, DTV_INNER_FEC, &fec);
|
get_property(fe->fd, DTV_INNER_FEC, &fec);
|
||||||
fe->param[PARAM_FEC] = fec + 1;
|
fe->param[PARAM_FEC] = fec + 1;
|
||||||
get_property(fe->fd, DTV_MODULATION, &mod);
|
get_property(fe->fd, DTV_MODULATION, &mod);
|
||||||
@ -952,27 +954,28 @@ static void calc_lq(struct dvbfe *fe)
|
|||||||
dbgprintf(DEBUG_DVB, "fe%d: fec=%u mod=%u\n", fe->nr, fec, mod);
|
dbgprintf(DEBUG_DVB, "fe%d: fec=%u mod=%u\n", fe->nr, fec, mod);
|
||||||
switch (fe->n_param[PARAM_MSYS] - 1) {
|
switch (fe->n_param[PARAM_MSYS] - 1) {
|
||||||
case SYS_DVBS:
|
case SYS_DVBS:
|
||||||
fe->quality = dvbsq(snr, fec, ber_num, ber_den);
|
quality = dvbsq(snr, fec, ber_num, ber_den);
|
||||||
break;
|
break;
|
||||||
case SYS_DVBS2:
|
case SYS_DVBS2:
|
||||||
fe->quality = dvbs2q(snr, fec, mod, ber_num, ber_den);
|
quality = dvbs2q(snr, fec, mod, ber_num, ber_den);
|
||||||
break;
|
break;
|
||||||
case SYS_DVBC_ANNEX_A:
|
case SYS_DVBC_ANNEX_A:
|
||||||
fe->quality = dvbcq(snr, mod, ber_num, ber_den);
|
quality = dvbcq(snr, mod, ber_num, ber_den);
|
||||||
break;
|
break;
|
||||||
case SYS_DVBT:
|
case SYS_DVBT:
|
||||||
fe->quality = dvbtq(snr, mod, fec, ber_num, ber_den);
|
quality = dvbtq(snr, mod, fec, ber_num, ber_den);
|
||||||
break;
|
break;
|
||||||
case SYS_DVBT2:
|
case SYS_DVBT2:
|
||||||
get_property(fe->fd, DTV_TRANSMISSION_MODE, &trans);
|
get_property(fe->fd, DTV_TRANSMISSION_MODE, &trans);
|
||||||
dbgprintf(DEBUG_DVB, "fe%d: trans=%u pilot=%u\n", fe->nr, trans, pilot);
|
dbgprintf(DEBUG_DVB, "fe%d: trans=%u pilot=%u\n", fe->nr, trans, pilot);
|
||||||
fe->quality = dvbt2q(snr, mod, fec, trans, pilot, ber_num, ber_den);
|
quality = dvbt2q(snr, mod, fec, trans, pilot, ber_num, ber_den);
|
||||||
break;
|
break;
|
||||||
case SYS_DVBC2:
|
case SYS_DVBC2:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
fe->quality = quality;
|
||||||
dbgprintf(DEBUG_DVB, "fe%d: level=%u quality=%u\n", fe->nr, fe->level, fe->quality);
|
dbgprintf(DEBUG_DVB, "fe%d: level=%u quality=%u\n", fe->nr, fe->level, fe->quality);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1132,15 +1135,13 @@ static int init_fe(struct octoserve *os, int a, int f, int fd, int nodvbt, int m
|
|||||||
}
|
}
|
||||||
if (fe->input[3]) {
|
if (fe->input[3]) {
|
||||||
os->has_feswitch = 1;
|
os->has_feswitch = 1;
|
||||||
if (!msmode) {
|
if (!os->scif_type && !msmode) {
|
||||||
if (fe->input[2] >= fe->input[1]) {
|
if (fe->input[2] >= fe->input[1]) {
|
||||||
fe->type = 0;
|
fe->type = 0;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else
|
|
||||||
os->do_feswitch = msmode;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
os->dvbfe_num++;
|
os->dvbfe_num++;
|
||||||
pthread_mutex_init(&fe->mutex, 0);
|
pthread_mutex_init(&fe->mutex, 0);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1750,26 +1751,23 @@ void lnb_config(struct octoserve *os, char *name, char *val)
|
|||||||
int init_dvb(struct octoserve *os, int nodvbt, int msmode)
|
int init_dvb(struct octoserve *os, int nodvbt, int msmode)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
uint32_t fmode;
|
||||||
|
|
||||||
pthread_mutex_init(&nsd_lock, 0);
|
pthread_mutex_init(&nsd_lock, 0);
|
||||||
pthread_mutex_init(&os->uni_lock, 0);
|
pthread_mutex_init(&os->uni_lock, 0);
|
||||||
|
os->scif_type = 0;
|
||||||
|
parse_config(os, "scif", &scif_config);
|
||||||
|
|
||||||
scan_dvbfe(os, nodvbt, msmode);
|
scan_dvbfe(os, nodvbt, msmode);
|
||||||
scan_dvbca(os);
|
scan_dvbca(os);
|
||||||
|
|
||||||
os->scif_type = 0;
|
|
||||||
parse_config(os, "scif", &scif_config);
|
|
||||||
|
|
||||||
if (os->has_feswitch) {
|
|
||||||
uint32_t fmode = 0;
|
|
||||||
|
|
||||||
if (os->do_feswitch) {
|
|
||||||
fmode = msmode;
|
|
||||||
if (os->scif_type)
|
if (os->scif_type)
|
||||||
fmode = 0;//3;
|
fmode = 0;
|
||||||
}
|
else
|
||||||
|
fmode = msmode;
|
||||||
|
if (os->has_feswitch)
|
||||||
set_fmode(fmode);
|
set_fmode(fmode);
|
||||||
}
|
|
||||||
set_lnb(os, 0, 0, 9750000, 10600000, 11700000);
|
set_lnb(os, 0, 0, 9750000, 10600000, 11700000);
|
||||||
parse_config(os, "LNB", &lnb_config);
|
parse_config(os, "LNB", &lnb_config);
|
||||||
}
|
}
|
||||||
|
156
octoserve/http.c
156
octoserve/http.c
@ -196,6 +196,10 @@ char httpjava[] =
|
|||||||
"HTTP/1.0 200 OK\r\nConnection: close\r\nPragma: no-cache\r\n"
|
"HTTP/1.0 200 OK\r\nConnection: close\r\nPragma: no-cache\r\n"
|
||||||
"Content-Type: application/x-javascript\r\n\r\n";
|
"Content-Type: application/x-javascript\r\n\r\n";
|
||||||
|
|
||||||
|
char httpjson[] =
|
||||||
|
"HTTP/1.0 200 OK\r\nConnection: close\r\nPragma: no-cache\r\n"
|
||||||
|
"Content-Type: application/json\r\n\r\n";
|
||||||
|
|
||||||
#define sendstr(_fd_,...) do { \
|
#define sendstr(_fd_,...) do { \
|
||||||
len = snprintf(buf, sizeof(buf), __VA_ARGS__); \
|
len = snprintf(buf, sizeof(buf), __VA_ARGS__); \
|
||||||
if (len <= 0 || len >= sizeof(buf)) \
|
if (len <= 0 || len >= sizeof(buf)) \
|
||||||
@ -219,7 +223,7 @@ void send_serverinfo(struct os_ssdp *ss)
|
|||||||
sendstr(fd, "Octoserve.MAC = \"%02x:%02x:%02x:%02x:%02x:%02x\";\r\n",
|
sendstr(fd, "Octoserve.MAC = \"%02x:%02x:%02x:%02x:%02x:%02x\";\r\n",
|
||||||
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||||
sendstr(fd, "Octoserve.TunerList = new Array();\r\n");
|
sendstr(fd, "Octoserve.TunerList = new Array();\r\n");
|
||||||
for (i = 0; i < MAX_DVB_FE; i++) {
|
for (i = 0; i < os->dvbfe_num; i++) {
|
||||||
struct dvbfe *fe = &os->dvbfe[i];
|
struct dvbfe *fe = &os->dvbfe[i];
|
||||||
|
|
||||||
if (fe->type) {
|
if (fe->type) {
|
||||||
@ -265,6 +269,73 @@ void send_serverinfo(struct os_ssdp *ss)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void send_json_serverinfo(struct os_ssdp *ss)
|
||||||
|
{
|
||||||
|
struct octoserve *os = ss->os;
|
||||||
|
struct dvbfe *fe;
|
||||||
|
uint8_t buf[2048];
|
||||||
|
int i, j, fd = ss->csock, len;
|
||||||
|
uint8_t *mac = &ss->os->mac[0];
|
||||||
|
|
||||||
|
sendlen(fd, httpjson, sizeof(httpjson) - 1);
|
||||||
|
sendstr(fd, "{\r\n");
|
||||||
|
sendstr(fd, "\"Version\":" OCTOSERVE_VERSION ",\r\n");
|
||||||
|
sendstr(fd, "\"BootID\":%u,\r\n", ss->bootid);
|
||||||
|
sendstr(fd, "\"DeviceID\":%u,\r\n", ss->devid);
|
||||||
|
sendstr(fd, "\"MAC\":\"%02x:%02x:%02x:%02x:%02x:%02x\",\r\n",
|
||||||
|
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||||
|
sendstr(fd, "TunerList\":[\r\n");
|
||||||
|
for (i = 0; i < os->dvbfe_num; i++) {
|
||||||
|
struct dvbfe *fe = &os->dvbfe[i];
|
||||||
|
|
||||||
|
if (i)
|
||||||
|
sendstr(fd, ",\r\n");
|
||||||
|
sendstr(fd, "{\"Input\":\"%u\"", i);
|
||||||
|
if (fe->type) {
|
||||||
|
char types[80];
|
||||||
|
int pos;
|
||||||
|
|
||||||
|
types[0] = 0;
|
||||||
|
if (fe->type & 0xb00ee) {
|
||||||
|
strcat(types, "DVB");
|
||||||
|
pos = strlen(types);
|
||||||
|
if (fe->type & (1 << SYS_DVBS))
|
||||||
|
strcat(types, "/S");
|
||||||
|
if (fe->type & (1 << SYS_DVBS2))
|
||||||
|
strcat(types, "/S2");
|
||||||
|
if (fe->type & (1 << SYS_DVBC_ANNEX_A))
|
||||||
|
strcat(types, "/C");
|
||||||
|
if (fe->type & (1 << SYS_DVBC2))
|
||||||
|
strcat(types, "/C2");
|
||||||
|
if (fe->type & (1 << SYS_DVBT))
|
||||||
|
strcat(types, "/T");
|
||||||
|
if (fe->type & (1 << SYS_DVBT2))
|
||||||
|
strcat(types, "/T2");
|
||||||
|
strcat(types, " ");
|
||||||
|
types[pos] = '-';
|
||||||
|
}
|
||||||
|
if (fe->type & 0x700) {
|
||||||
|
strcat(types, "ISDB");
|
||||||
|
pos = strlen(types);
|
||||||
|
if (fe->type & (1 << SYS_ISDBT))
|
||||||
|
strcat(types, "/T");
|
||||||
|
if (fe->type & (1 << SYS_ISDBS))
|
||||||
|
strcat(types, "/S");
|
||||||
|
if (fe->type & (1 << SYS_ISDBC))
|
||||||
|
strcat(types, "/C");
|
||||||
|
types[pos] = '-';
|
||||||
|
}
|
||||||
|
sendstr(fd, ",\"Present\":true", i);
|
||||||
|
sendstr(fd, ",\"Type\":0");
|
||||||
|
sendstr(fd, ",\"Desc\":\"%s\"", types);
|
||||||
|
} else {
|
||||||
|
sendstr(fd, "\"Present\":false", i);
|
||||||
|
}
|
||||||
|
sendstr(fd, "}");
|
||||||
|
}
|
||||||
|
sendstr(fd, "\r\n]\r\n}\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
void send_tunerstatus(struct os_ssdp *ss)
|
void send_tunerstatus(struct os_ssdp *ss)
|
||||||
{
|
{
|
||||||
struct octoserve *os = ss->os;
|
struct octoserve *os = ss->os;
|
||||||
@ -274,7 +345,7 @@ void send_tunerstatus(struct os_ssdp *ss)
|
|||||||
|
|
||||||
sendlen(fd, httpjava, sizeof(httpjava) - 1);
|
sendlen(fd, httpjava, sizeof(httpjava) - 1);
|
||||||
sendstr(fd, "TunerList = new Array();\r\n");
|
sendstr(fd, "TunerList = new Array();\r\n");
|
||||||
for (i = 0; i < MAX_DVB_FE; i++) {
|
for (i = 0; i < os->dvbfe_num; i++) {
|
||||||
fe = &os->dvbfe[i];
|
fe = &os->dvbfe[i];
|
||||||
sendstr(fd, "TunerList[%d] = new Object();\r\n", i);
|
sendstr(fd, "TunerList[%d] = new Object();\r\n", i);
|
||||||
sendstr(fd, "TunerList[%d].Active = %s;\r\n", i, fe->state ? "true" : "false");
|
sendstr(fd, "TunerList[%d].Active = %s;\r\n", i, fe->state ? "true" : "false");
|
||||||
@ -286,6 +357,31 @@ void send_tunerstatus(struct os_ssdp *ss)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void send_json_tunerstatus(struct os_ssdp *ss)
|
||||||
|
{
|
||||||
|
struct octoserve *os = ss->os;
|
||||||
|
struct dvbfe *fe;
|
||||||
|
uint8_t buf[2048];
|
||||||
|
int len, i, fd = ss->csock;
|
||||||
|
|
||||||
|
sendlen(fd, httpjson, sizeof(httpjson) - 1);
|
||||||
|
sendstr(fd, "{\"TunerList\":[\r\n");
|
||||||
|
for (i = 0; i < os->dvbfe_num; i++) {
|
||||||
|
if (i)
|
||||||
|
sendstr(fd, ",\r\n");
|
||||||
|
fe = &os->dvbfe[i];
|
||||||
|
sendstr(fd, "{\"Input\":\"%u\"", i);
|
||||||
|
sendstr(fd, ",\"Status\":\"%s\"", fe->state ? "Active" : "Inactive");
|
||||||
|
sendstr(fd, ",\"Lock\":%s", fe->lock ? "true" : "false");
|
||||||
|
sendstr(fd, ",\"Strength\":\"%d\"", fe->strength);
|
||||||
|
sendstr(fd, ",\"SNR\":\"%d\"", fe->snr);
|
||||||
|
sendstr(fd, ",\"Quality\":\"%u\"", fe->quality);
|
||||||
|
sendstr(fd, ",\"Level\":\"%u\"", fe->level);
|
||||||
|
sendstr(fd, "}");
|
||||||
|
}
|
||||||
|
sendstr(fd, "\r\n]}\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
static uint32_t ddreg(int fd, uint32_t reg)
|
static uint32_t ddreg(int fd, uint32_t reg)
|
||||||
{
|
{
|
||||||
struct ddb_reg ddr = { .reg = reg };
|
struct ddb_reg ddr = { .reg = reg };
|
||||||
@ -343,6 +439,51 @@ static void send_streamstatus(struct os_ssdp *ss)
|
|||||||
close(dd);
|
close(dd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void send_json_streamstatus(struct os_ssdp *ss)
|
||||||
|
{
|
||||||
|
struct octoserve *os = ss->os;
|
||||||
|
struct osstrm *oss;
|
||||||
|
uint8_t buf[2048];
|
||||||
|
int len, i, fd = ss->csock;
|
||||||
|
struct timeval tval;
|
||||||
|
struct timespec tp;
|
||||||
|
int dd;
|
||||||
|
|
||||||
|
dd = open("/dev/ddbridge/card0", O_RDWR); /* FIXME: replace with ioctls */
|
||||||
|
if (dd < 0)
|
||||||
|
return;
|
||||||
|
clock_gettime(CLOCK_MONOTONIC, &tp);
|
||||||
|
gettimeofday(&tval, NULL);
|
||||||
|
sendlen(fd, httpjson, sizeof(httpjson) - 1);
|
||||||
|
sendstr(fd, "{\"Timestamp\":%u,\r\n", (uint32_t) (tp.tv_sec * 1000 + tp.tv_nsec / 1000000));
|
||||||
|
sendstr(fd, "\"StreamList\":[\r\n");
|
||||||
|
for (i = 0; i < MAX_STREAM; i++) {
|
||||||
|
uint32_t ctrl = ddreg(dd, 0x400 + i*0x20);
|
||||||
|
|
||||||
|
if (i)
|
||||||
|
sendstr(fd, ",\r\n");
|
||||||
|
sendstr(fd, "{\"Status\":\"%s\"", (ctrl & 1) ? "Active" : "Inactive");
|
||||||
|
sendstr(fd, ",\"Input\":%u", (ctrl >> 8) & 7);
|
||||||
|
sendstr(fd, ",\"Packets\":%u", ddreg(dd, 0x41c + i*0x20));
|
||||||
|
sendstr(fd, ",\"Bytes\":%u", ddreg(dd, 0x418 + i*0x20));
|
||||||
|
if (ctrl & 1) {
|
||||||
|
uint32_t off = 0x2000 + i * 0x200;
|
||||||
|
uint8_t mem[64];
|
||||||
|
|
||||||
|
ddrmem(dd, mem, off, sizeof(mem));
|
||||||
|
off = 30;
|
||||||
|
if (mem[12] == 0x81)
|
||||||
|
off += 4;
|
||||||
|
sendstr(fd, ",\"Client\":\"%u.%u.%u.%u\"",
|
||||||
|
mem[off], mem[off + 1], mem[off + 2], mem[off + 3]);
|
||||||
|
} else
|
||||||
|
sendstr(fd, ",\"Client\":\"\"");
|
||||||
|
sendstr(fd, "}");
|
||||||
|
}
|
||||||
|
sendstr(fd, "\r\n]\r\n}\r\n");
|
||||||
|
close(dd);
|
||||||
|
}
|
||||||
|
|
||||||
static void send_octoserve(struct os_ssdp *ss)
|
static void send_octoserve(struct os_ssdp *ss)
|
||||||
{
|
{
|
||||||
struct octoserve *os = ss->os;
|
struct octoserve *os = ss->os;
|
||||||
@ -351,7 +492,7 @@ static void send_octoserve(struct os_ssdp *ss)
|
|||||||
int len, i;
|
int len, i;
|
||||||
|
|
||||||
send(ss->csock, httptxt, sizeof(httptxt), 0);
|
send(ss->csock, httptxt, sizeof(httptxt), 0);
|
||||||
for (i = 0; i < MAX_DVB_FE; i++) {
|
for (i = 0; i < os->dvbfe_num; i++) {
|
||||||
fe = &os->dvbfe[i];
|
fe = &os->dvbfe[i];
|
||||||
if (!fe->state)
|
if (!fe->state)
|
||||||
continue;
|
continue;
|
||||||
@ -389,12 +530,21 @@ void handle_http(struct os_ssdp *ss)
|
|||||||
if (!strncasecmp("GET /octonet.xml", buf, 16)) {
|
if (!strncasecmp("GET /octonet.xml", buf, 16)) {
|
||||||
send_xml(ss);
|
send_xml(ss);
|
||||||
break;
|
break;
|
||||||
|
} else if (!strncasecmp("GET /serverinfo.json", buf, 20)) {
|
||||||
|
send_json_serverinfo(ss);
|
||||||
|
break;
|
||||||
} else if (!strncasecmp("GET /serverinfo.js", buf, 18)) {
|
} else if (!strncasecmp("GET /serverinfo.js", buf, 18)) {
|
||||||
send_serverinfo(ss);
|
send_serverinfo(ss);
|
||||||
break;
|
break;
|
||||||
|
} else if (!strncasecmp("GET /streamstatus.json", buf, 22)) {
|
||||||
|
send_json_streamstatus(ss);
|
||||||
|
break;
|
||||||
} else if (!strncasecmp("GET /streamstatus.js", buf, 20)) {
|
} else if (!strncasecmp("GET /streamstatus.js", buf, 20)) {
|
||||||
send_streamstatus(ss);
|
send_streamstatus(ss);
|
||||||
break;
|
break;
|
||||||
|
} else if (!strncasecmp("GET /tunerstatus.json", buf, 21)) {
|
||||||
|
send_json_tunerstatus(ss);
|
||||||
|
break;
|
||||||
} else if (!strncasecmp("GET /tunerstatus.js", buf, 19)) {
|
} else if (!strncasecmp("GET /tunerstatus.js", buf, 19)) {
|
||||||
send_tunerstatus(ss);
|
send_tunerstatus(ss);
|
||||||
break;
|
break;
|
||||||
|
@ -728,7 +728,7 @@ static int session_string(struct ossess *sess, char *msg, int mlen)
|
|||||||
if (str->fe){
|
if (str->fe){
|
||||||
level = str->fe->level;
|
level = str->fe->level;
|
||||||
lock = str->fe->lock;
|
lock = str->fe->lock;
|
||||||
quality = str->fe->quality;
|
quality = (str->fe->quality * 3) / 20;
|
||||||
tuner = str->fe->nr;
|
tuner = str->fe->nr;
|
||||||
}
|
}
|
||||||
p = &sess->p;
|
p = &sess->p;
|
||||||
|
@ -202,6 +202,8 @@ struct dvbfe {
|
|||||||
uint32_t level;
|
uint32_t level;
|
||||||
uint32_t lock;
|
uint32_t lock;
|
||||||
uint32_t quality;
|
uint32_t quality;
|
||||||
|
int32_t strength;
|
||||||
|
int32_t snr;
|
||||||
int first;
|
int first;
|
||||||
|
|
||||||
uint32_t tune;
|
uint32_t tune;
|
||||||
@ -458,7 +460,6 @@ struct octoserve {
|
|||||||
|
|
||||||
int scif_type;
|
int scif_type;
|
||||||
int has_feswitch;
|
int has_feswitch;
|
||||||
int do_feswitch;
|
|
||||||
int strict_satip;
|
int strict_satip;
|
||||||
|
|
||||||
int dvbfe_num;
|
int dvbfe_num;
|
||||||
|
@ -19,5 +19,5 @@
|
|||||||
|
|
||||||
#ifndef _OCTOSERVE_VERSION_
|
#ifndef _OCTOSERVE_VERSION_
|
||||||
#define _OCTOSERVE_VERSION_
|
#define _OCTOSERVE_VERSION_
|
||||||
#define OCTOSERVE_VERSION "1.0.68"
|
#define OCTOSERVE_VERSION "1.0.67"
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user