mirror of
https://github.com/DigitalDevices/octonet.git
synced 2023-10-10 13:36:52 +02:00
support setting of friendlyName
This commit is contained in:
parent
6ac1b77e9c
commit
20f7ed5a03
111
octoserve/dvb.c
111
octoserve/dvb.c
@ -795,7 +795,7 @@ static int32_t dvbcq(int32_t snr, uint32_t mod,
|
||||
return (Quality * 3) / 20;
|
||||
}
|
||||
|
||||
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,
|
||||
uint32_t ber_num, uint32_t ber_den)
|
||||
{
|
||||
int32_t Quality = 0;
|
||||
@ -843,54 +843,101 @@ int32_t dvbtq(int32_t snr, uint32_t mod, uint32_t fec,
|
||||
return (Quality * 3) / 20;
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
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,
|
||||
uint32_t ber_num, uint32_t ber_den)
|
||||
{
|
||||
int32_t Quality = 0;
|
||||
int32_t BERQuality = BERQualityBCH(BERNominator, BERDenominator);
|
||||
int32_t SignalToNoiseRel = -1000;
|
||||
int32_t BERQuality = berq_bch(ber_num, ber_den);
|
||||
int32_t SignalToNoiseRel = -1000, snc = 0;
|
||||
|
||||
static const int32_t QE_SN[] = {
|
||||
// 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 1/3, 2/5
|
||||
32, 49, 59, 68, 74, 80, 15, 24, // 16K QPSK
|
||||
82, 104, 116, 130, 136, 141, 62, 74, // 16K 16-QAM
|
||||
123, 151, 165, 181, 190, 197, 101, 114, // 16K 64-QAM
|
||||
164, 202, 211, 232, 246, 255, 137, 153, // 16K 256-QAM
|
||||
static const int32_t QE_SN_16K_QPSK[] = {
|
||||
// 1/2 2/3 3/4 4/5 5/6 6/7 7/8 8/9 AUT 3/5 9/10 2/5 1/4 1/3
|
||||
0, 32, 59, 68, 74, 80, 0, 0, 0, 0, 49, 0, 24, 0, 15 };
|
||||
static const int32_t QE_SN_16K_16QAM[] = {
|
||||
// 1/2 2/3 3/4 4/5 5/6 6/7 7/8 8/9 AUT 3/5 9/10 2/5 1/4 1/3
|
||||
0, 82,116,130,136,141, 0, 0, 0, 0, 104, 0, 74, 0, 62 };
|
||||
static const int32_t QE_SN_16K_64QAM[] = {
|
||||
// 1/2 2/3 3/4 4/5 5/6 6/7 7/8 8/9 AUT 3/5 9/10 2/5 1/4 1/3
|
||||
0,123,165,181,190,197, 0, 0, 0, 0, 151, 0,114, 0,101 };
|
||||
static const int32_t QE_SN_16K_256QAM[] = {
|
||||
// 1/2 2/3 3/4 4/5 5/6 6/7 7/8 8/9 AUT 3/5 9/10 2/5 1/4 1/3
|
||||
0,164,211,232,246,255, 0, 0, 0, 0, 202, 0,153, 0,137 };
|
||||
static const int32_t QE_SN_64K_QPSK[] = {
|
||||
// 1/2 2/3 3/4 4/5 5/6 6/7 7/8 8/9 AUT 3/5 9/10 2/5 1/4 1/3
|
||||
0, 35, 56, 66, 72, 77, 0, 0, 0, 0, 47, 0, 22, 0, 13 };
|
||||
static const int32_t QE_SN_64K_16QAM[] = {
|
||||
// 1/2 2/3 3/4 4/5 5/6 6/7 7/8 8/9 AUT 3/5 9/10 2/5 1/4 1/3
|
||||
0, 87,114,125,133,138, 0, 0, 0, 0, 101, 0, 72, 0, 60 };
|
||||
static const int32_t QE_SN_64K_64QAM[] = {
|
||||
// 1/2 2/3 3/4 4/5 5/6 6/7 7/8 8/9 AUT 3/5 9/10 2/5 1/4 1/3
|
||||
0,130,162,177,187,194, 0, 0, 0, 0, 148, 0,111, 0, 98 };
|
||||
static const int32_t QE_SN_64K_256QAM[] = {
|
||||
// 1/2 2/3 3/4 4/5 5/6 6/7 7/8 8/9 AUT 3/5 9/10 2/5 1/4 1/3
|
||||
0,170,208,229,243,251, 0, 0, 0, 0, 194, 0,148, 0,132 };
|
||||
|
||||
35, 47, 56, 66, 72, 77, 13, 22, // 64K QPSK
|
||||
87, 101, 114, 125, 133, 138, 60, 72, // 64K 16-QAM
|
||||
130, 148, 162, 177, 187, 194, 98, 111, // 64K 64-QAM
|
||||
170, 194, 208, 229, 243, 251, 132, 148, // 64K 256-QAM
|
||||
};
|
||||
|
||||
if( Modulation <= DVBT2_256QAM && CodeRate <= DVBT2_CR_2_5 && FECType <= DVBT2_64K )
|
||||
{
|
||||
int Index = int(FECType) * 32 + int(Modulation) * 8 + int(CodeRate);
|
||||
SignalToNoiseRel = SignalToNoise - QE_SN[Index];
|
||||
|
||||
if( PilotPattern >= DVBT2_PP3 && PilotPattern <= DVBT2_PP4 ) SignalToNoiseRel += 5;
|
||||
else if( PilotPattern >= DVBT2_PP5 && PilotPattern <= DVBT2_PP8 ) SignalToNoiseRel += 10;
|
||||
if (trans == TRANSMISSION_MODE_16K) {
|
||||
switch (mod) {
|
||||
case QPSK:
|
||||
snc = QE_SN_16K_QPSK[fec];
|
||||
break;
|
||||
case QAM_16:
|
||||
snc = QE_SN_16K_16QAM[fec];
|
||||
break;
|
||||
case QAM_64:
|
||||
snc = QE_SN_16K_64QAM[fec];
|
||||
break;
|
||||
case QAM_256:
|
||||
snc = QE_SN_16K_256QAM[fec];
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (trans == TRANSMISSION_MODE_C3780 + 1) { /* TRANSMISSION_MODE_64K */
|
||||
switch (mod) {
|
||||
case QPSK:
|
||||
snc = QE_SN_64K_QPSK[fec];
|
||||
break;
|
||||
case QAM_16:
|
||||
snc = QE_SN_64K_16QAM[fec];
|
||||
break;
|
||||
case QAM_64:
|
||||
snc = QE_SN_64K_64QAM[fec];
|
||||
break;
|
||||
case QAM_256:
|
||||
snc = QE_SN_64K_256QAM[fec];
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( SignalToNoiseRel < -30 ) Quality = 0;
|
||||
if (snc) {
|
||||
SignalToNoiseRel = snr - snc;
|
||||
#if 0 //FIXME
|
||||
if (PilotPattern >= DVBT2_PP3 &&
|
||||
PilotPattern <= DVBT2_PP4 )
|
||||
SignalToNoiseRel += 5;
|
||||
else if
|
||||
( PilotPattern >= DVBT2_PP5 && PilotPattern <= DVBT2_PP8 )
|
||||
SignalToNoiseRel += 10;
|
||||
#endif
|
||||
}
|
||||
if( SignalToNoiseRel < -30 )
|
||||
Quality = 0;
|
||||
else if (SignalToNoiseRel < 30 )
|
||||
{
|
||||
Quality = ((SignalToNoiseRel + 30) * BERQuality)/60;
|
||||
}
|
||||
else
|
||||
Quality = 100;
|
||||
|
||||
return (Quality * 3) / 20;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void calc_lq(struct dvbfe *fe)
|
||||
{
|
||||
struct dtv_fe_stats st;
|
||||
int64_t str, snr;
|
||||
uint32_t mod, fec, ber_num, ber_den;
|
||||
uint32_t mod, fec, ber_num, ber_den, trans, pilot = 0;
|
||||
|
||||
get_stat(fe->fd, DTV_STAT_SIGNAL_STRENGTH, &st);
|
||||
str = st.stat[0].uvalue;
|
||||
@ -932,7 +979,9 @@ static void calc_lq(struct dvbfe *fe)
|
||||
fe->quality = dvbtq(snr, mod, fec, ber_num, ber_den);
|
||||
break;
|
||||
case SYS_DVBT2:
|
||||
//fe->quality = dvbtq(snr, mod, fec, ber_num, ber_den);
|
||||
get_property(fe->fd, DTV_TRANSMISSION_MODE, &trans);
|
||||
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);
|
||||
break;
|
||||
case SYS_DVBC2:
|
||||
break;
|
||||
|
@ -32,7 +32,7 @@ char xmldesc[] =
|
||||
"<specVersion>\r\n<major>1</major>\r\n<minor>1</minor>\r\n</specVersion>\r\n"
|
||||
"<device>\r\n"
|
||||
"<deviceType>urn:ses-com:device:SatIPServer:1</deviceType>\r\n"
|
||||
"<friendlyName>OctopusNet</friendlyName>\r\n"
|
||||
"<friendlyName>%s</friendlyName>\r\n"
|
||||
"<manufacturer>Digital Devices GmbH</manufacturer>\r\n"
|
||||
"<manufacturerURL>http://www.digitaldevices.de</manufacturerURL>\r\n"
|
||||
"<modelDescription>OctopusNet</modelDescription>\r\n"
|
||||
@ -138,6 +138,22 @@ void send_http_file(int sock, char *fn)
|
||||
close(fd);
|
||||
}
|
||||
|
||||
static int read_boxname(char *name)
|
||||
{
|
||||
int fd, len;
|
||||
|
||||
strcpy(name, "OctopusNet");
|
||||
fd = open("/config/boxname", O_RDONLY);
|
||||
if (fd < 0)
|
||||
return 0;
|
||||
printf("read boxname from /etc/boxname\n");
|
||||
len = read(fd, name, 79);
|
||||
if (len > 0)
|
||||
name[len] = 0;
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void send_xml(struct os_ssdp *ss)
|
||||
{
|
||||
struct octoserve *os = ss->os;
|
||||
@ -145,7 +161,9 @@ void send_xml(struct os_ssdp *ss)
|
||||
int len, len2;
|
||||
uint8_t *mac = &os->mac[0];
|
||||
int serial = (mac[5] | (mac[4] << 8) | (mac[3] << 16)) / 2;
|
||||
char boxname[80];
|
||||
|
||||
read_boxname(boxname);
|
||||
len = 0;
|
||||
if (os->dvbs2num)
|
||||
len += sprintf(cap + len, ",DVBS2-%u", os->dvbs2num);
|
||||
@ -158,7 +176,8 @@ void send_xml(struct os_ssdp *ss)
|
||||
if (os->dvbc2num)
|
||||
len += sprintf(cap + len, ",DVBC2-%u", os->dvbc2num);
|
||||
len = snprintf(buf, sizeof(buf), xmldesc,
|
||||
ss->configid, serial, ss->uuid_str, cap + 1);
|
||||
ss->configid, boxname,
|
||||
serial, ss->uuid_str, cap + 1);
|
||||
if (len <= 0 || len >= sizeof(buf))
|
||||
return;
|
||||
len2=sprintf(buf2, httpxml, len);
|
||||
|
@ -47,6 +47,7 @@ static int read_id(char *type, uint32_t *id)
|
||||
name[len] = 0;
|
||||
*id = strtol(name, NULL, 10);
|
||||
printf("%s.id = %d\n", type, *id);
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user