updated minisatip8 - multistream, diseqc address
This commit is contained in:
parent
9c91484e29
commit
83d670b4c8
@ -1,8 +1,49 @@
|
|||||||
|
diff --git a/html/status.html b/html/status.html
|
||||||
|
index 8812322..519f3da 100755
|
||||||
|
--- a/html/status.html
|
||||||
|
+++ b/html/status.html
|
||||||
|
@@ -133,6 +133,7 @@
|
||||||
|
myTable += "<th class='dt-right'>Pos.</th>";
|
||||||
|
myTable += "<th class='dt-right'>Frequency</th>";
|
||||||
|
myTable += "<th class='dt-right'>SR/BW</th>";
|
||||||
|
+ myTable += "<th class='dt-right'>Stream</th>";
|
||||||
|
myTable += "<th class='dt-right'>Signal</th>";
|
||||||
|
if (has_axe) {
|
||||||
|
myTable += "<th class='dt-right'>Packets</th>";
|
||||||
|
@@ -202,6 +203,12 @@
|
||||||
|
else
|
||||||
|
myTable += "<td class='dt-right'></td>";
|
||||||
|
|
||||||
|
+ // STREAM
|
||||||
|
+ var stream = state['ad_stream'][i];
|
||||||
|
+ if (parseInt(stream) <= 0)
|
||||||
|
+ stream = '';
|
||||||
|
+ myTable += "<td class='dt-right'>" + stream + " </td>";
|
||||||
|
+
|
||||||
|
// SIGNAL
|
||||||
|
var signal = "";
|
||||||
|
if (!ad_enabled) {
|
||||||
|
@@ -227,6 +234,7 @@
|
||||||
|
}
|
||||||
|
myTable += "<td class='dt-right'>" + signal + " </td>";
|
||||||
|
|
||||||
|
+ // AXE
|
||||||
|
if (has_axe) {
|
||||||
|
myTable += "<td class='dt-right'>" + state['ad_axe_pktc'][i] + " </td>";
|
||||||
|
myTable += "<td class='dt-right'>" + state['ad_axe_ccerr'][i] + " </td>";
|
||||||
diff --git a/src/adapter.c b/src/adapter.c
|
diff --git a/src/adapter.c b/src/adapter.c
|
||||||
index e034e3e..f7727b8 100644
|
index e034e3e..9862114 100644
|
||||||
--- a/src/adapter.c
|
--- a/src/adapter.c
|
||||||
+++ b/src/adapter.c
|
+++ b/src/adapter.c
|
||||||
@@ -550,7 +550,7 @@ int getAdaptersCount()
|
@@ -75,6 +75,7 @@ adapter *adapter_alloc()
|
||||||
|
|
||||||
|
/* diseqc setup */
|
||||||
|
ad->diseqc_param.fast = opts.diseqc_fast;
|
||||||
|
+ ad->diseqc_param.addr = opts.diseqc_addr;
|
||||||
|
ad->diseqc_param.committed_no = opts.diseqc_committed_no;
|
||||||
|
ad->diseqc_param.uncommitted_no = opts.diseqc_uncommitted_no;
|
||||||
|
|
||||||
|
@@ -550,7 +551,7 @@ int getAdaptersCount()
|
||||||
memset(&fe_map, -1, sizeof(fe_map));
|
memset(&fe_map, -1, sizeof(fe_map));
|
||||||
|
|
||||||
k = 0;
|
k = 0;
|
||||||
@ -11,7 +52,7 @@ index e034e3e..f7727b8 100644
|
|||||||
{
|
{
|
||||||
int sys = order[i];
|
int sys = order[i];
|
||||||
for (j = 0; j < ifes[sys]; j++)
|
for (j = 0; j < ifes[sys]; j++)
|
||||||
@@ -676,7 +676,7 @@ int get_free_adapter(transponder *tp)
|
@@ -676,7 +677,7 @@ int get_free_adapter(transponder *tp)
|
||||||
|
|
||||||
adapter *ad = a[0];
|
adapter *ad = a[0];
|
||||||
|
|
||||||
@ -20,7 +61,7 @@ index e034e3e..f7727b8 100644
|
|||||||
{
|
{
|
||||||
fe = fe_map[fe - 1];
|
fe = fe_map[fe - 1];
|
||||||
ad = a[fe];
|
ad = a[fe];
|
||||||
@@ -878,7 +878,7 @@ int update_pids(int aid)
|
@@ -878,7 +879,7 @@ int update_pids(int aid)
|
||||||
if (dp)
|
if (dp)
|
||||||
dump_pids(aid);
|
dump_pids(aid);
|
||||||
dp = 0;
|
dp = 0;
|
||||||
@ -29,7 +70,7 @@ index e034e3e..f7727b8 100644
|
|||||||
if ((ad->pids[i].fd = ad->set_pid(ad, ad->pids[i].pid)) < 0)
|
if ((ad->pids[i].fd = ad->set_pid(ad, ad->pids[i].pid)) < 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -888,6 +888,8 @@ int update_pids(int aid)
|
@@ -888,6 +889,8 @@ int update_pids(int aid)
|
||||||
LOG0("Maximum pid filter reached, lowering the value to %d", opts.max_pids);
|
LOG0("Maximum pid filter reached, lowering the value to %d", opts.max_pids);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -38,7 +79,7 @@ index e034e3e..f7727b8 100644
|
|||||||
ad->pids[i].flags = 1;
|
ad->pids[i].flags = 1;
|
||||||
if (ad->pids[i].pid == 0)
|
if (ad->pids[i].pid == 0)
|
||||||
ad->pat_processed = 0;
|
ad->pat_processed = 0;
|
||||||
@@ -895,7 +897,6 @@ int update_pids(int aid)
|
@@ -895,7 +898,6 @@ int update_pids(int aid)
|
||||||
ad->pids[i].cc = 255;
|
ad->pids[i].cc = 255;
|
||||||
ad->pids[i].cc_err = 0;
|
ad->pids[i].cc_err = 0;
|
||||||
ad->pids[i].dec_err = 0;
|
ad->pids[i].dec_err = 0;
|
||||||
@ -46,7 +87,7 @@ index e034e3e..f7727b8 100644
|
|||||||
}
|
}
|
||||||
if (ad->commit)
|
if (ad->commit)
|
||||||
ad->commit(ad);
|
ad->commit(ad);
|
||||||
@@ -906,7 +907,9 @@ int update_pids(int aid)
|
@@ -906,7 +908,9 @@ int update_pids(int aid)
|
||||||
|
|
||||||
void post_tune(adapter *ad)
|
void post_tune(adapter *ad)
|
||||||
{
|
{
|
||||||
@ -56,7 +97,7 @@ index e034e3e..f7727b8 100644
|
|||||||
#ifndef DISABLE_PMT
|
#ifndef DISABLE_PMT
|
||||||
SPid *p = find_pid(aid, 0);
|
SPid *p = find_pid(aid, 0);
|
||||||
SPid *p_all = find_pid(aid, 8192);
|
SPid *p_all = find_pid(aid, 8192);
|
||||||
@@ -1066,7 +1069,7 @@ void mark_pids_deleted(int aid, int sid, char *pids) //pids==NULL -> delete all
|
@@ -1066,7 +1070,7 @@ void mark_pids_deleted(int aid, int sid, char *pids) //pids==NULL -> delete all
|
||||||
pids ? pids : "NULL");
|
pids ? pids : "NULL");
|
||||||
if (pids)
|
if (pids)
|
||||||
{
|
{
|
||||||
@ -65,7 +106,7 @@ index e034e3e..f7727b8 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
pid = map_int(arg[i], NULL);
|
pid = map_int(arg[i], NULL);
|
||||||
@@ -1146,7 +1149,7 @@ int mark_pids_add(int sid, int aid, char *pids)
|
@@ -1146,7 +1150,7 @@ int mark_pids_add(int sid, int aid, char *pids)
|
||||||
LOG("adding pids to adapter %d, sid %d, pids=%s", aid, sid,
|
LOG("adding pids to adapter %d, sid %d, pids=%s", aid, sid,
|
||||||
pids ? pids : "NULL");
|
pids ? pids : "NULL");
|
||||||
|
|
||||||
@ -74,7 +115,40 @@ index e034e3e..f7727b8 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
pid = map_intd(arg[i], NULL, -1);
|
pid = map_intd(arg[i], NULL, -1);
|
||||||
@@ -1242,7 +1245,7 @@ int set_adapter_parameters(int aid, int sid, transponder *tp)
|
@@ -1165,11 +1169,11 @@ int compare_tunning_parameters(int aid, transponder *tp)
|
||||||
|
if (!ad)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
- LOGM("new parameters: f:%d, plp:%d, diseqc:%d, pol:%d, sr:%d, mtype:%d",
|
||||||
|
- tp->freq, tp->plp, tp->diseqc, tp->pol, tp->sr, tp->mtype);
|
||||||
|
- LOGM("old parameters: f:%d, plp:%d, diseqc:%d, pol:%d, sr:%d, mtype:%d",
|
||||||
|
- ad->tp.freq, ad->tp.plp, ad->tp.diseqc, ad->tp.pol, ad->tp.sr, ad->tp.mtype);
|
||||||
|
- if (tp->freq != ad->tp.freq || tp->plp != ad->tp.plp || tp->diseqc != ad->tp.diseqc || (tp->pol > 0 && tp->pol != ad->tp.pol) || (tp->sr > 1000 && tp->sr != ad->tp.sr) || (tp->mtype > 0 && tp->mtype != ad->tp.mtype))
|
||||||
|
+ LOGM("new parameters: f:%d, plp/isi:%d, diseqc:%d, pol:%d, sr:%d, mtype:%d",
|
||||||
|
+ tp->freq, tp->plp_isi, tp->diseqc, tp->pol, tp->sr, tp->mtype);
|
||||||
|
+ LOGM("old parameters: f:%d, plp/isi:%d, diseqc:%d, pol:%d, sr:%d, mtype:%d",
|
||||||
|
+ ad->tp.freq, ad->tp.plp_isi, ad->tp.diseqc, ad->tp.pol, ad->tp.sr, ad->tp.mtype);
|
||||||
|
+ if (tp->freq != ad->tp.freq || tp->plp_isi != ad->tp.plp_isi || tp->diseqc != ad->tp.diseqc || (tp->pol > 0 && tp->pol != ad->tp.pol) || (tp->sr > 1000 && tp->sr != ad->tp.sr) || (tp->mtype > 0 && tp->mtype != ad->tp.mtype))
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
@@ -1196,11 +1200,11 @@ int set_adapter_parameters(int aid, int sid, transponder *tp)
|
||||||
|
{
|
||||||
|
mutex_unlock(&ad->mutex);
|
||||||
|
LOG(
|
||||||
|
- "secondary stream requested tune, not gonna happen ad: f:%d sr:%d pol:%d plp:%d src:%d mod %d -> \
|
||||||
|
- new: f:%d sr:%d pol:%d plp:%d src:%d mod %d",
|
||||||
|
- ad->tp.freq, ad->tp.sr, ad->tp.pol, ad->tp.plp,
|
||||||
|
+ "secondary stream requested tune, not gonna happen ad: f:%d sr:%d pol:%d plp/isi:%d src:%d mod %d -> \
|
||||||
|
+ new: f:%d sr:%d pol:%d plp/isi:%d src:%d mod %d",
|
||||||
|
+ ad->tp.freq, ad->tp.sr, ad->tp.pol, ad->tp.plp_isi,
|
||||||
|
ad->tp.diseqc, ad->tp.mtype, tp->freq, tp->sr, tp->pol,
|
||||||
|
- tp->plp, tp->diseqc, tp->mtype);
|
||||||
|
+ tp->plp_isi, tp->diseqc, tp->mtype);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
ad->do_tune = 1;
|
||||||
|
@@ -1242,7 +1246,7 @@ int set_adapter_parameters(int aid, int sid, transponder *tp)
|
||||||
{
|
{
|
||||||
char *arg[64];
|
char *arg[64];
|
||||||
int i, la;
|
int i, la;
|
||||||
@ -83,7 +157,25 @@ index e034e3e..f7727b8 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
int pmt = map_int(arg[i], NULL);
|
int pmt = map_int(arg[i], NULL);
|
||||||
@@ -1436,12 +1439,12 @@ void set_disable(int i, int v)
|
@@ -1346,7 +1350,7 @@ describe_adapter(int sid, int aid, char *dad, int ld)
|
||||||
|
ad ? ad->tp.fe : aid + 1, strength, status, snr,
|
||||||
|
(double)t->freq / 1000.0, t->bw / 1000000, get_delsys(t->sys),
|
||||||
|
get_tmode(t->tmode), get_modulation(t->mtype),
|
||||||
|
- get_gi(t->gi), get_fec(t->fec), t->plp, t->t2id, t->sm);
|
||||||
|
+ get_gi(t->gi), get_fec(t->fec), t->plp_isi, t->t2id, t->sm);
|
||||||
|
else
|
||||||
|
len =
|
||||||
|
snprintf(dad, ld,
|
||||||
|
@@ -1354,7 +1358,7 @@ describe_adapter(int sid, int aid, char *dad, int ld)
|
||||||
|
ad ? ad->tp.fe : aid + 1, strength, status, snr,
|
||||||
|
(double)t->freq / 1000, get_delsys(t->sys),
|
||||||
|
get_modulation(t->mtype), t->sr / 1000, t->c2tft, t->ds,
|
||||||
|
- t->plp, get_inversion(t->inversion));
|
||||||
|
+ t->plp_isi, get_inversion(t->inversion));
|
||||||
|
|
||||||
|
if (use_ad)
|
||||||
|
len += strlen(get_stream_pids(sid, dad + len, ld - len));
|
||||||
|
@@ -1436,12 +1440,12 @@ void set_disable(int i, int v)
|
||||||
void enable_adapters(char *o)
|
void enable_adapters(char *o)
|
||||||
{
|
{
|
||||||
int i, la, st, end, j;
|
int i, la, st, end, j;
|
||||||
@ -98,7 +190,7 @@ index e034e3e..f7727b8 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
sep = strchr(arg[i], '-');
|
sep = strchr(arg[i], '-');
|
||||||
@@ -1463,10 +1466,10 @@ void enable_adapters(char *o)
|
@@ -1463,10 +1467,10 @@ void enable_adapters(char *o)
|
||||||
void set_unicable_adapters(char *o, int type)
|
void set_unicable_adapters(char *o, int type)
|
||||||
{
|
{
|
||||||
int i, la, a_id, slot, freq, pin, o13v;
|
int i, la, a_id, slot, freq, pin, o13v;
|
||||||
@ -111,11 +203,13 @@ index e034e3e..f7727b8 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
a_id = map_intd(arg[i], NULL, -1);
|
a_id = map_intd(arg[i], NULL, -1);
|
||||||
@@ -1504,10 +1507,10 @@ void set_unicable_adapters(char *o, int type)
|
@@ -1503,11 +1507,11 @@ void set_unicable_adapters(char *o, int type)
|
||||||
|
|
||||||
void set_diseqc_adapters(char *o)
|
void set_diseqc_adapters(char *o)
|
||||||
{
|
{
|
||||||
int i, la, a_id, fast, committed_no, uncommitted_no;
|
- int i, la, a_id, fast, committed_no, uncommitted_no;
|
||||||
- char buf[100], *arg[20], *sep1, *sep2;
|
- char buf[100], *arg[20], *sep1, *sep2;
|
||||||
|
+ int i, la, a_id, fast, addr, committed_no, uncommitted_no;
|
||||||
+ char buf[1000], *arg[40], *sep1, *sep2;
|
+ char buf[1000], *arg[40], *sep1, *sep2;
|
||||||
adapter *ad;
|
adapter *ad;
|
||||||
SAFE_STRCPY(buf, o);
|
SAFE_STRCPY(buf, o);
|
||||||
@ -124,7 +218,69 @@ index e034e3e..f7727b8 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
if (arg[i] && arg[i][0] == '*')
|
if (arg[i] && arg[i][0] == '*')
|
||||||
@@ -1567,10 +1570,10 @@ void set_diseqc_adapters(char *o)
|
@@ -1531,8 +1535,28 @@ void set_diseqc_adapters(char *o)
|
||||||
|
|
||||||
|
if (!sep1 || !sep2)
|
||||||
|
continue;
|
||||||
|
- if ((fast = (sep1[1] == '*')) != 0)
|
||||||
|
- sep1++;
|
||||||
|
+
|
||||||
|
+ fast = 0;
|
||||||
|
+ addr = 0x10;
|
||||||
|
+ while (sep1[1] == '*' || sep1[1] == '@' || sep1[1] == '.')
|
||||||
|
+ {
|
||||||
|
+ if (sep1[1] == '*')
|
||||||
|
+ {
|
||||||
|
+ fast = 1;
|
||||||
|
+ sep1++;
|
||||||
|
+ }
|
||||||
|
+ else if (sep1[1] == '@')
|
||||||
|
+ {
|
||||||
|
+ addr = 0;
|
||||||
|
+ sep1++;
|
||||||
|
+ }
|
||||||
|
+ else if (sep1[1] == '.')
|
||||||
|
+ {
|
||||||
|
+ addr = 0x11;
|
||||||
|
+ sep1++;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
committed_no = map_intd(sep1 + 1, NULL, -1);
|
||||||
|
uncommitted_no = map_intd(sep2 + 1, NULL, -1);
|
||||||
|
if (committed_no < 0 || uncommitted_no < 0)
|
||||||
|
@@ -1541,12 +1565,14 @@ void set_diseqc_adapters(char *o)
|
||||||
|
if (ad)
|
||||||
|
{
|
||||||
|
ad->diseqc_param.fast = fast;
|
||||||
|
+ ad->diseqc_param.addr = addr;
|
||||||
|
ad->diseqc_param.committed_no = committed_no;
|
||||||
|
ad->diseqc_param.uncommitted_no = uncommitted_no;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
opts.diseqc_fast = fast;
|
||||||
|
+ opts.diseqc_addr = addr;
|
||||||
|
opts.diseqc_committed_no = committed_no;
|
||||||
|
opts.diseqc_uncommitted_no = uncommitted_no;
|
||||||
|
int j;
|
||||||
|
@@ -1554,23 +1580,24 @@ void set_diseqc_adapters(char *o)
|
||||||
|
if (a[j])
|
||||||
|
{
|
||||||
|
a[j]->diseqc_param.fast = fast;
|
||||||
|
+ a[j]->diseqc_param.addr = addr;
|
||||||
|
a[j]->diseqc_param.committed_no = committed_no;
|
||||||
|
a[j]->diseqc_param.uncommitted_no = uncommitted_no;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LOG(
|
||||||
|
- "Setting diseqc adapter %d fast %d committed_no %d uncommitted_no %d",
|
||||||
|
- a_id, fast, committed_no, uncommitted_no);
|
||||||
|
+ "Setting diseqc adapter %d fast %d addr 0x%02x committed_no %d uncommitted_no %d",
|
||||||
|
+ a_id, fast, addr, committed_no, uncommitted_no);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void set_diseqc_multi(char *o)
|
void set_diseqc_multi(char *o)
|
||||||
{
|
{
|
||||||
int i, la, a_id, position;
|
int i, la, a_id, position;
|
||||||
@ -137,7 +293,7 @@ index e034e3e..f7727b8 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
if (arg[i] && arg[i][0] == '*')
|
if (arg[i] && arg[i][0] == '*')
|
||||||
@@ -1619,10 +1622,10 @@ void set_diseqc_multi(char *o)
|
@@ -1619,10 +1646,10 @@ void set_diseqc_multi(char *o)
|
||||||
void set_lnb_adapters(char *o)
|
void set_lnb_adapters(char *o)
|
||||||
{
|
{
|
||||||
int i, la, a_id, lnb_low, lnb_high, lnb_switch;
|
int i, la, a_id, lnb_low, lnb_high, lnb_switch;
|
||||||
@ -150,7 +306,7 @@ index e034e3e..f7727b8 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
if (arg[i] && arg[i][0] == '*')
|
if (arg[i] && arg[i][0] == '*')
|
||||||
@@ -1692,11 +1695,11 @@ void set_diseqc_timing(char *o)
|
@@ -1692,11 +1719,11 @@ void set_diseqc_timing(char *o)
|
||||||
int i, la, a_id;
|
int i, la, a_id;
|
||||||
int before_cmd, after_cmd, after_repeated_cmd;
|
int before_cmd, after_cmd, after_repeated_cmd;
|
||||||
int after_switch, after_burst, after_tone;
|
int after_switch, after_burst, after_tone;
|
||||||
@ -164,7 +320,7 @@ index e034e3e..f7727b8 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
if (arg[i] && arg[i][0] == '*')
|
if (arg[i] && arg[i][0] == '*')
|
||||||
@@ -1773,10 +1776,10 @@ void set_diseqc_timing(char *o)
|
@@ -1773,10 +1800,10 @@ void set_diseqc_timing(char *o)
|
||||||
void set_slave_adapters(char *o)
|
void set_slave_adapters(char *o)
|
||||||
{
|
{
|
||||||
int i, j, la, a_id, a_id2, master = 0;
|
int i, j, la, a_id, a_id2, master = 0;
|
||||||
@ -177,7 +333,7 @@ index e034e3e..f7727b8 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
a_id = map_intd(arg[i], NULL, -1);
|
a_id = map_intd(arg[i], NULL, -1);
|
||||||
@@ -1826,13 +1829,13 @@ void set_timeout_adapters(char *o)
|
@@ -1826,13 +1853,13 @@ void set_timeout_adapters(char *o)
|
||||||
{
|
{
|
||||||
int i, j, la, a_id, a_id2;
|
int i, j, la, a_id, a_id2;
|
||||||
int timeout = opts.adapter_timeout / 1000;
|
int timeout = opts.adapter_timeout / 1000;
|
||||||
@ -193,7 +349,7 @@ index e034e3e..f7727b8 100644
|
|||||||
if (arg[0] && (arg[0][0] == '*'))
|
if (arg[0] && (arg[0][0] == '*'))
|
||||||
{
|
{
|
||||||
opts.adapter_timeout = timeout * 1000;
|
opts.adapter_timeout = timeout * 1000;
|
||||||
@@ -1876,10 +1879,10 @@ extern char *fe_delsys[];
|
@@ -1876,10 +1903,10 @@ extern char *fe_delsys[];
|
||||||
void set_adapters_delsys(char *o)
|
void set_adapters_delsys(char *o)
|
||||||
{
|
{
|
||||||
int i, la, a_id, ds;
|
int i, la, a_id, ds;
|
||||||
@ -206,7 +362,7 @@ index e034e3e..f7727b8 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
a_id = map_intd(arg[i], NULL, -1);
|
a_id = map_intd(arg[i], NULL, -1);
|
||||||
@@ -1916,10 +1919,10 @@ void set_adapters_delsys(char *o)
|
@@ -1916,10 +1943,10 @@ void set_adapters_delsys(char *o)
|
||||||
void set_adapter_dmxsource(char *o)
|
void set_adapter_dmxsource(char *o)
|
||||||
{
|
{
|
||||||
int i, j, la, st, end, fd;
|
int i, j, la, st, end, fd;
|
||||||
@ -219,7 +375,7 @@ index e034e3e..f7727b8 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
sep = strchr(arg[i], '-');
|
sep = strchr(arg[i], '-');
|
||||||
@@ -1956,10 +1959,10 @@ void set_signal_multiplier(char *o)
|
@@ -1956,10 +1983,10 @@ void set_signal_multiplier(char *o)
|
||||||
{
|
{
|
||||||
int i, la, a_id;
|
int i, la, a_id;
|
||||||
float strength_multiplier, snr_multiplier;
|
float strength_multiplier, snr_multiplier;
|
||||||
@ -232,8 +388,16 @@ index e034e3e..f7727b8 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
if (arg[i] && arg[i][0] == '*')
|
if (arg[i] && arg[i][0] == '*')
|
||||||
|
@@ -2193,6 +2220,7 @@ _symbols adapters_sym[] =
|
||||||
|
{"ad_sr", VAR_AARRAY_INT, a, 1. / 1000, MAX_ADAPTERS, offsetof(adapter, tp.sr)},
|
||||||
|
{"ad_bw", VAR_AARRAY_INT, a, 1. / 1000, MAX_ADAPTERS, offsetof(adapter, tp.bw)},
|
||||||
|
{"ad_diseqc", VAR_AARRAY_INT, a, 1, MAX_ADAPTERS, offsetof(adapter, tp.diseqc)},
|
||||||
|
+ {"ad_stream", VAR_AARRAY_INT, a, 1, MAX_ADAPTERS, offsetof(adapter, tp.plp_isi)},
|
||||||
|
{"ad_fe", VAR_AARRAY_INT, a, 1, MAX_ADAPTERS, offsetof(adapter, fe)},
|
||||||
|
{"ad_master", VAR_AARRAY_UINT8, a, 1, MAX_ADAPTERS, offsetof(adapter, master_sid)},
|
||||||
|
{"ad_sidcount", VAR_AARRAY_UINT8, a, 1, MAX_ADAPTERS, offsetof(adapter, sid_cnt)},
|
||||||
diff --git a/src/axe.c b/src/axe.c
|
diff --git a/src/axe.c b/src/axe.c
|
||||||
index 52e8dad..b3fe35e 100644
|
index 52e8dad..57ba3a6 100644
|
||||||
--- a/src/axe.c
|
--- a/src/axe.c
|
||||||
+++ b/src/axe.c
|
+++ b/src/axe.c
|
||||||
@@ -48,7 +48,7 @@
|
@@ -48,7 +48,7 @@
|
||||||
@ -245,7 +409,66 @@ index 52e8dad..b3fe35e 100644
|
|||||||
int send_jess(adapter *ad, int fd, int freq, int pos, int pol, int hiband, diseqc *d);
|
int send_jess(adapter *ad, int fd, int freq, int pos, int pol, int hiband, diseqc *d);
|
||||||
int send_unicable(adapter *ad, int fd, int freq, int pos, int pol, int hiband, diseqc *d);
|
int send_unicable(adapter *ad, int fd, int freq, int pos, int pol, int hiband, diseqc *d);
|
||||||
int send_diseqc(adapter *ad, int fd, int pos, int pos_change, int pol, int hiband, diseqc *d);
|
int send_diseqc(adapter *ad, int fd, int pos, int pos_change, int pol, int hiband, diseqc *d);
|
||||||
@@ -210,7 +210,7 @@ static inline int extra_quattro(int input, int diseqc, int *equattro)
|
@@ -68,6 +68,8 @@ static inline void axe_fp_fd_write(const char *s)
|
||||||
|
ssize_t r;
|
||||||
|
|
||||||
|
axe_fp_fd_open();
|
||||||
|
+ if (axe_fp_fd < 0)
|
||||||
|
+ return;
|
||||||
|
len = strlen(b = s);
|
||||||
|
while (len > 0)
|
||||||
|
{
|
||||||
|
@@ -152,6 +154,49 @@ void axe_post_init(adapter *ad)
|
||||||
|
sockets_setread(ad->sock, axe_read);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void axe_stv0900_i2c_4(const char *name, int pa, int v)
|
||||||
|
+{
|
||||||
|
+ char buf[64];
|
||||||
|
+ const char *b;
|
||||||
|
+ int fd;
|
||||||
|
+ size_t len;
|
||||||
|
+ ssize_t r;
|
||||||
|
+
|
||||||
|
+ snprintf(buf, sizeof(buf), "/sys/devices/platform/i2c-stm.0/i2c-0/stv0900_%s%d", name, pa + 1);
|
||||||
|
+ fd = open(buf, O_WRONLY);
|
||||||
|
+ if (fd < 0)
|
||||||
|
+ return;
|
||||||
|
+ snprintf(buf, sizeof(buf), "%d", v);
|
||||||
|
+ len = strlen(b = buf);
|
||||||
|
+ while (len > 0)
|
||||||
|
+ {
|
||||||
|
+ r = write(fd, b, len);
|
||||||
|
+ if (r > 0)
|
||||||
|
+ {
|
||||||
|
+ len -= r;
|
||||||
|
+ b += r;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ close(fd);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void axe_pls_isi(adapter *ad, transponder *tp)
|
||||||
|
+{
|
||||||
|
+ static int isi[4] = { -2, -2, -2, -2 };
|
||||||
|
+ static int pls_code[4] = { -2, -2, -2, -2 };
|
||||||
|
+ int v;
|
||||||
|
+ if (tp->plp_isi != isi[ad->pa]) {
|
||||||
|
+ v = tp->plp_isi < 0 ? -1 : (tp->plp_isi & 0xff);
|
||||||
|
+ axe_stv0900_i2c_4("mis", ad->pa, v);
|
||||||
|
+ isi[ad->pa] = tp->plp_isi;
|
||||||
|
+ }
|
||||||
|
+ if (tp->pls_code != pls_code[ad->pa]) {
|
||||||
|
+ v = tp->pls_code < 0 ? 0 : (tp->pls_code & 0x3ffff);
|
||||||
|
+ axe_stv0900_i2c_4("pls", ad->pa, v);
|
||||||
|
+ pls_code[ad->pa] = tp->pls_code;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void axe_wakeup(void *_ad, int fe_fd, int voltage)
|
||||||
|
{
|
||||||
|
int i, mask;
|
||||||
|
@@ -210,7 +255,7 @@ static inline int extra_quattro(int input, int diseqc, int *equattro)
|
||||||
return *equattro;
|
return *equattro;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -254,13 +477,13 @@ index 52e8dad..b3fe35e 100644
|
|||||||
{
|
{
|
||||||
int input2 = input < 4 ? input : -1;
|
int input2 = input < 4 ? input : -1;
|
||||||
adapter *ad = get_configured_adapter(input2);
|
adapter *ad = get_configured_adapter(input2);
|
||||||
@@ -229,8 +229,30 @@ adapter *use_adapter(int input)
|
@@ -229,8 +274,30 @@ adapter *use_adapter(int input)
|
||||||
return ad;
|
return ad;
|
||||||
}
|
}
|
||||||
|
|
||||||
-int tune_check(adapter *ad, int pol, int hiband, int diseqc)
|
-int tune_check(adapter *ad, int pol, int hiband, int diseqc)
|
||||||
+int axe_get_hiband(transponder *tp, diseqc *diseqc_param)
|
+int axe_get_hiband(transponder *tp, diseqc *diseqc_param)
|
||||||
{
|
+{
|
||||||
+ if (tp->pol > 2 && diseqc_param->lnb_circular > 0)
|
+ if (tp->pol > 2 && diseqc_param->lnb_circular > 0)
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+ if (tp->freq < diseqc_param->lnb_switch)
|
+ if (tp->freq < diseqc_param->lnb_switch)
|
||||||
@ -280,13 +503,13 @@ index 52e8dad..b3fe35e 100644
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+int axe_tune_check(adapter *ad, transponder *tp, diseqc *diseqc_param, int diseqc)
|
+int axe_tune_check(adapter *ad, transponder *tp, diseqc *diseqc_param, int diseqc)
|
||||||
+{
|
{
|
||||||
+ int pol = (tp->pol - 1) & 1;
|
+ int pol = (tp->pol - 1) & 1;
|
||||||
+ int hiband = axe_get_hiband(tp, diseqc_param);
|
+ int hiband = axe_get_hiband(tp, diseqc_param);
|
||||||
LOGM("axe: tune check for adapter %d, pol %d/%d, hiband %d/%d, diseqc %d/%d",
|
LOGM("axe: tune check for adapter %d, pol %d/%d, hiband %d/%d, diseqc %d/%d",
|
||||||
ad->id, ad->old_pol, pol, ad->old_hiband, hiband, ad->old_diseqc, diseqc);
|
ad->id, ad->old_pol, pol, ad->old_hiband, hiband, ad->old_diseqc, diseqc);
|
||||||
if (ad->old_pol != pol)
|
if (ad->old_pol != pol)
|
||||||
@@ -249,33 +271,25 @@ int axe_setup_switch(adapter *ad)
|
@@ -249,33 +316,25 @@ int axe_setup_switch(adapter *ad)
|
||||||
{
|
{
|
||||||
int frontend_fd = ad->fe;
|
int frontend_fd = ad->fe;
|
||||||
transponder *tp = &ad->tp;
|
transponder *tp = &ad->tp;
|
||||||
@ -332,7 +555,7 @@ index 52e8dad..b3fe35e 100644
|
|||||||
{
|
{
|
||||||
input = ad->id;
|
input = ad->id;
|
||||||
if (!opts.quattro || extra_quattro(input, diseqc, &equattro))
|
if (!opts.quattro || extra_quattro(input, diseqc, &equattro))
|
||||||
@@ -298,7 +312,7 @@ int axe_setup_switch(adapter *ad)
|
@@ -298,7 +357,7 @@ int axe_setup_switch(adapter *ad)
|
||||||
continue;
|
continue;
|
||||||
if ((ad2->axe_used & ~(1 << ad->id)) == 0)
|
if ((ad2->axe_used & ~(1 << ad->id)) == 0)
|
||||||
continue;
|
continue;
|
||||||
@ -341,7 +564,7 @@ index 52e8dad..b3fe35e 100644
|
|||||||
continue;
|
continue;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -327,7 +341,7 @@ int axe_setup_switch(adapter *ad)
|
@@ -327,7 +386,7 @@ int axe_setup_switch(adapter *ad)
|
||||||
}
|
}
|
||||||
diseqc = pos;
|
diseqc = pos;
|
||||||
master = aid;
|
master = aid;
|
||||||
@ -350,7 +573,7 @@ index 52e8dad..b3fe35e 100644
|
|||||||
if (adm == NULL)
|
if (adm == NULL)
|
||||||
{
|
{
|
||||||
LOG("axe_fe: unknown master adapter for input %d", input);
|
LOG("axe_fe: unknown master adapter for input %d", input);
|
||||||
@@ -337,7 +351,7 @@ int axe_setup_switch(adapter *ad)
|
@@ -337,7 +396,7 @@ int axe_setup_switch(adapter *ad)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
master = (ad->master_source >= 0) ? ad->master_source : ad->pa;
|
master = (ad->master_source >= 0) ? ad->master_source : ad->pa;
|
||||||
@ -359,7 +582,7 @@ index 52e8dad..b3fe35e 100644
|
|||||||
if (adm == NULL)
|
if (adm == NULL)
|
||||||
{
|
{
|
||||||
LOG("axe_fe: unknown master adapter for input %d", input);
|
LOG("axe_fe: unknown master adapter for input %d", input);
|
||||||
@@ -357,7 +371,7 @@ int axe_setup_switch(adapter *ad)
|
@@ -357,7 +416,7 @@ int axe_setup_switch(adapter *ad)
|
||||||
if (ad2->sid_cnt > 0)
|
if (ad2->sid_cnt > 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -368,7 +591,7 @@ index 52e8dad..b3fe35e 100644
|
|||||||
{
|
{
|
||||||
LOG("unable to use slave adapter %d (master %d)", input, adm->pa);
|
LOG("unable to use slave adapter %d (master %d)", input, adm->pa);
|
||||||
return 0;
|
return 0;
|
||||||
@@ -368,10 +382,13 @@ int axe_setup_switch(adapter *ad)
|
@@ -368,10 +427,13 @@ int axe_setup_switch(adapter *ad)
|
||||||
if (master >= 0)
|
if (master >= 0)
|
||||||
{
|
{
|
||||||
input = master;
|
input = master;
|
||||||
@ -384,7 +607,7 @@ index 52e8dad..b3fe35e 100644
|
|||||||
adm->old_pol = pol;
|
adm->old_pol = pol;
|
||||||
adm->old_hiband = hiband;
|
adm->old_hiband = hiband;
|
||||||
adm->old_diseqc = diseqc;
|
adm->old_diseqc = diseqc;
|
||||||
@@ -381,6 +398,7 @@ int axe_setup_switch(adapter *ad)
|
@@ -381,6 +443,7 @@ int axe_setup_switch(adapter *ad)
|
||||||
}
|
}
|
||||||
else if (opts.quattro)
|
else if (opts.quattro)
|
||||||
{
|
{
|
||||||
@ -392,7 +615,7 @@ index 52e8dad..b3fe35e 100644
|
|||||||
if (opts.quattro_hiband == 1 && hiband)
|
if (opts.quattro_hiband == 1 && hiband)
|
||||||
{
|
{
|
||||||
LOG("axe_fe: hiband is not allowed for quattro config (adapter %d)", input);
|
LOG("axe_fe: hiband is not allowed for quattro config (adapter %d)", input);
|
||||||
@@ -392,17 +410,19 @@ int axe_setup_switch(adapter *ad)
|
@@ -392,17 +455,19 @@ int axe_setup_switch(adapter *ad)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
input = ((hiband ^ 1) << 1) | (pol ^ 1);
|
input = ((hiband ^ 1) << 1) | (pol ^ 1);
|
||||||
@ -416,7 +639,7 @@ index 52e8dad..b3fe35e 100644
|
|||||||
adm->old_pol = pol;
|
adm->old_pol = pol;
|
||||||
adm->old_hiband = hiband;
|
adm->old_hiband = hiband;
|
||||||
adm->old_diseqc = 0;
|
adm->old_diseqc = 0;
|
||||||
@@ -414,9 +434,15 @@ int axe_setup_switch(adapter *ad)
|
@@ -414,9 +479,15 @@ int axe_setup_switch(adapter *ad)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
aid = ad->id & 3;
|
aid = ad->id & 3;
|
||||||
@ -434,7 +657,7 @@ index 52e8dad..b3fe35e 100644
|
|||||||
if (ad == NULL)
|
if (ad == NULL)
|
||||||
{
|
{
|
||||||
LOGM("axe setup: unable to find adapter %d", input);
|
LOGM("axe setup: unable to find adapter %d", input);
|
||||||
@@ -429,17 +455,20 @@ int axe_setup_switch(adapter *ad)
|
@@ -429,17 +500,20 @@ int axe_setup_switch(adapter *ad)
|
||||||
ad->id, input, ad->fe, ad->fe2);
|
ad->id, input, ad->fe, ad->fe2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -460,7 +683,7 @@ index 52e8dad..b3fe35e 100644
|
|||||||
{
|
{
|
||||||
LOG("FD %d (%d) is a slave adapter", frontend_fd);
|
LOG("FD %d (%d) is a slave adapter", frontend_fd);
|
||||||
}
|
}
|
||||||
@@ -447,7 +476,7 @@ int axe_setup_switch(adapter *ad)
|
@@ -447,7 +521,7 @@ int axe_setup_switch(adapter *ad)
|
||||||
{
|
{
|
||||||
if (ad->old_pol != pol || ad->old_hiband != hiband || ad->old_diseqc != diseqc)
|
if (ad->old_pol != pol || ad->old_hiband != hiband || ad->old_diseqc != diseqc)
|
||||||
send_diseqc(ad, frontend_fd, diseqc, ad->old_diseqc != diseqc, pol,
|
send_diseqc(ad, frontend_fd, diseqc, ad->old_diseqc != diseqc, pol,
|
||||||
@ -469,7 +692,46 @@ index 52e8dad..b3fe35e 100644
|
|||||||
else
|
else
|
||||||
LOGM("Skip sending diseqc commands since "
|
LOGM("Skip sending diseqc commands since "
|
||||||
"the switch position doesn't need to be changed: "
|
"the switch position doesn't need to be changed: "
|
||||||
@@ -669,8 +698,8 @@ fe_delivery_system_t axe_delsys(int aid, int fd, fe_delivery_system_t *sys)
|
@@ -545,7 +619,10 @@ int axe_tune(int aid, transponder *tp)
|
||||||
|
ADD_PROP(DTV_SYMBOL_RATE, tp->sr)
|
||||||
|
ADD_PROP(DTV_INNER_FEC, tp->fec)
|
||||||
|
#if DVBAPIVERSION >= 0x0502
|
||||||
|
- ADD_PROP(DTV_STREAM_ID, tp->plp)
|
||||||
|
+ ADD_PROP(DTV_STREAM_ID, tp->plp_isi)
|
||||||
|
+#endif
|
||||||
|
+#if DVBAPIVERSION >= 0x050b /* 5.11 */
|
||||||
|
+ ADD_PROP(DTV_SCRAMBLING_SEQUENCE_INDEX, tp->pls_code)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
LOG("tuning to %d(%d) pol: %s (%d) sr:%d fec:%s delsys:%s mod:%s rolloff:%s pilot:%s, ts clear=%jd, ts pol=%jd",
|
||||||
|
@@ -569,7 +646,7 @@ int axe_tune(int aid, transponder *tp)
|
||||||
|
ADD_PROP(DTV_TRANSMISSION_MODE, tp->tmode)
|
||||||
|
ADD_PROP(DTV_HIERARCHY, HIERARCHY_AUTO)
|
||||||
|
#if DVBAPIVERSION >= 0x0502
|
||||||
|
- ADD_PROP(DTV_STREAM_ID, tp->plp & 0xFF)
|
||||||
|
+ ADD_PROP(DTV_STREAM_ID, tp->plp_isi & 0xFF)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
LOG(
|
||||||
|
@@ -588,7 +665,7 @@ int axe_tune(int aid, transponder *tp)
|
||||||
|
freq = freq * 1000;
|
||||||
|
ADD_PROP(DTV_SYMBOL_RATE, tp->sr)
|
||||||
|
#if DVBAPIVERSION >= 0x0502
|
||||||
|
- ADD_PROP(DTV_STREAM_ID, ((tp->ds & 0xFF) << 8) | (tp->plp & 0xFF))
|
||||||
|
+ ADD_PROP(DTV_STREAM_ID, ((tp->ds & 0xFF) << 8) | (tp->plp_isi & 0xFF))
|
||||||
|
#endif
|
||||||
|
// valid for DD DVB-C2 devices
|
||||||
|
|
||||||
|
@@ -617,6 +694,8 @@ int axe_tune(int aid, transponder *tp)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ axe_pls_isi(ad, tp);
|
||||||
|
+
|
||||||
|
if ((ioctl(fd_frontend, FE_SET_PROPERTY, &p)) == -1)
|
||||||
|
if (ioctl(fd_frontend, FE_SET_PROPERTY, &p) == -1)
|
||||||
|
{
|
||||||
|
@@ -669,8 +748,8 @@ fe_delivery_system_t axe_delsys(int aid, int fd, fe_delivery_system_t *sys)
|
||||||
|
|
||||||
void axe_get_signal(adapter *ad)
|
void axe_get_signal(adapter *ad)
|
||||||
{
|
{
|
||||||
@ -480,7 +742,7 @@ index 52e8dad..b3fe35e 100644
|
|||||||
get_signal(ad, &status, &ber, &strength, &snr);
|
get_signal(ad, &status, &ber, &strength, &snr);
|
||||||
|
|
||||||
strength = strength * 240 / 24000;
|
strength = strength * 240 / 24000;
|
||||||
@@ -819,9 +848,11 @@ void free_axe_input(adapter *ad)
|
@@ -819,9 +898,11 @@ void free_axe_input(adapter *ad)
|
||||||
|
|
||||||
for (aid = 0; aid < 4; aid++)
|
for (aid = 0; aid < 4; aid++)
|
||||||
{
|
{
|
||||||
@ -494,7 +756,7 @@ index 52e8dad..b3fe35e 100644
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -829,11 +860,11 @@ void free_axe_input(adapter *ad)
|
@@ -829,11 +910,11 @@ void free_axe_input(adapter *ad)
|
||||||
void set_link_adapters(char *o)
|
void set_link_adapters(char *o)
|
||||||
{
|
{
|
||||||
int i, la, a_id, b_id;
|
int i, la, a_id, b_id;
|
||||||
@ -508,7 +770,7 @@ index 52e8dad..b3fe35e 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
a_id = map_intd(arg[i], NULL, -1);
|
a_id = map_intd(arg[i], NULL, -1);
|
||||||
@@ -857,11 +888,11 @@ void set_link_adapters(char *o)
|
@@ -857,11 +938,11 @@ void set_link_adapters(char *o)
|
||||||
void set_absolute_src(char *o)
|
void set_absolute_src(char *o)
|
||||||
{
|
{
|
||||||
int i, la, src, inp, pos;
|
int i, la, src, inp, pos;
|
||||||
@ -523,10 +785,20 @@ index 52e8dad..b3fe35e 100644
|
|||||||
{
|
{
|
||||||
inps = strchr(arg[i], ':');
|
inps = strchr(arg[i], ':');
|
||||||
diff --git a/src/dvb.c b/src/dvb.c
|
diff --git a/src/dvb.c b/src/dvb.c
|
||||||
index 5184c4d..f3b6ac3 100644
|
index 5184c4d..1171f54 100644
|
||||||
--- a/src/dvb.c
|
--- a/src/dvb.c
|
||||||
+++ b/src/dvb.c
|
+++ b/src/dvb.c
|
||||||
@@ -192,7 +192,7 @@ int detect_dvb_parameters(char *s, transponder *tp)
|
@@ -177,7 +177,8 @@ int detect_dvb_parameters(char *s, transponder *tp)
|
||||||
|
tp->diseqc = -1;
|
||||||
|
tp->c2tft = -1;
|
||||||
|
tp->ds = -1;
|
||||||
|
- tp->plp = -1;
|
||||||
|
+ tp->plp_isi = -1;
|
||||||
|
+ tp->pls_code = -1;
|
||||||
|
|
||||||
|
tp->pids = tp->apids = tp->dpids = tp->x_pmt = NULL;
|
||||||
|
|
||||||
|
@@ -192,7 +193,7 @@ int detect_dvb_parameters(char *s, transponder *tp)
|
||||||
init_dvb_parameters(tp);
|
init_dvb_parameters(tp);
|
||||||
|
|
||||||
LOG("detect_dvb_parameters (S)-> %s", s);
|
LOG("detect_dvb_parameters (S)-> %s", s);
|
||||||
@ -535,11 +807,150 @@ index 5184c4d..f3b6ac3 100644
|
|||||||
|
|
||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
|
@@ -228,8 +229,11 @@ int detect_dvb_parameters(char *s, transponder *tp)
|
||||||
|
tp->c2tft = map_int(arg[i] + 6, NULL);
|
||||||
|
if (strncmp("ds=", arg[i], 3) == 0)
|
||||||
|
tp->ds = map_int(arg[i] + 3, NULL);
|
||||||
|
- if (strncmp("plp=", arg[i], 4) == 0)
|
||||||
|
- tp->plp = map_int(arg[i] + 4, NULL);
|
||||||
|
+ if (strncmp("plp=", arg[i], 4) == 0 ||
|
||||||
|
+ strncmp("isi=", arg[i], 4) == 0)
|
||||||
|
+ tp->plp_isi = map_int(arg[i] + 4, NULL);
|
||||||
|
+ if (strncmp("plsc=", arg[i], 5) == 0)
|
||||||
|
+ tp->pls_code = map_int(arg[i] + 5, NULL);
|
||||||
|
|
||||||
|
if (strncmp("x_pmt=", arg[i], 6) == 0)
|
||||||
|
tp->x_pmt = arg[i] + 6;
|
||||||
|
@@ -323,8 +327,10 @@ void copy_dvb_parameters(transponder *s, transponder *d)
|
||||||
|
d->c2tft = s->c2tft;
|
||||||
|
if (s->ds != -1)
|
||||||
|
d->ds = s->ds;
|
||||||
|
- if (s->plp != -1)
|
||||||
|
- d->plp = s->plp;
|
||||||
|
+ if (s->plp_isi != -1)
|
||||||
|
+ d->plp_isi = s->plp_isi;
|
||||||
|
+ if (s->pls_code != -1)
|
||||||
|
+ d->pls_code = s->pls_code;
|
||||||
|
|
||||||
|
d->x_pmt = s->x_pmt;
|
||||||
|
d->apids = s->apids;
|
||||||
|
@@ -506,7 +512,9 @@ int send_diseqc(adapter *ad, int fd, int pos, int pos_change, int pol, int hiban
|
||||||
|
posu = pos / 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ cmd.msg[1] = d->addr;
|
||||||
|
cmd.msg[3] = 0xf0 | (((posc << 2) & 0x0c) | (hiband ? 1 : 0) | (pol ? 2 : 0));
|
||||||
|
+ uncmd.msg[1] = d->addr;
|
||||||
|
uncmd.msg[3] = 0xf0 | (posu & 0x0f);
|
||||||
|
|
||||||
|
LOGM("send_diseqc fd %d, pos = %d (c %d u %d), pol = %d, hiband = %d",
|
||||||
|
@@ -554,12 +562,13 @@ int send_unicable(adapter *ad, int fd, int freq, int pos, int pol, int hiband, d
|
||||||
|
{
|
||||||
|
struct dvb_diseqc_master_cmd cmd =
|
||||||
|
{
|
||||||
|
- {0xe0, 0x11, 0x5a, 0x00, 0x00}, 5};
|
||||||
|
+ {0xe0, 0x10, 0x5a, 0x00, 0x00}, 5};
|
||||||
|
int t;
|
||||||
|
int committed_no = d->committed_no;
|
||||||
|
|
||||||
|
t = (freq + d->ufreq + 2) / 4 - 350;
|
||||||
|
|
||||||
|
+ cmd.msg[1] = d->addr;
|
||||||
|
cmd.msg[3] = ((t & 0x0300) >> 8) | (d->uslot << 5) | (pos ? 0x10 : 0) | (hiband ? 4 : 0) | (pol ? 8 : 0);
|
||||||
|
cmd.msg[4] = t & 0xff;
|
||||||
|
|
||||||
|
@@ -825,7 +834,10 @@ int dvb_tune(int aid, transponder *tp)
|
||||||
|
ADD_PROP(DTV_PILOT, tp->plts)
|
||||||
|
ADD_PROP(DTV_ROLLOFF, tp->ro)
|
||||||
|
#if DVBAPIVERSION >= 0x0502
|
||||||
|
- ADD_PROP(DTV_STREAM_ID, tp->plp)
|
||||||
|
+ ADD_PROP(DTV_STREAM_ID, tp->plp_isi)
|
||||||
|
+#endif
|
||||||
|
+#if DVBAPIVERSION >= 0x050b /* 5.11 */
|
||||||
|
+ ADD_PROP(DTV_SCRAMBLING_SEQUENCE_INDEX, tp->pls_code)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_DVBAPI3
|
||||||
|
@@ -856,7 +868,7 @@ int dvb_tune(int aid, transponder *tp)
|
||||||
|
ADD_PROP(DTV_TRANSMISSION_MODE, tp->tmode)
|
||||||
|
ADD_PROP(DTV_HIERARCHY, HIERARCHY_AUTO)
|
||||||
|
#if DVBAPIVERSION >= 0x0502
|
||||||
|
- ADD_PROP(DTV_STREAM_ID, tp->plp & 0xFF)
|
||||||
|
+ ADD_PROP(DTV_STREAM_ID, tp->plp_isi & 0xFF)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// old DVBAPI version 3
|
||||||
|
@@ -894,7 +906,7 @@ int dvb_tune(int aid, transponder *tp)
|
||||||
|
freq = freq * 1000;
|
||||||
|
ADD_PROP(DTV_SYMBOL_RATE, tp->sr)
|
||||||
|
#if DVBAPIVERSION >= 0x0502
|
||||||
|
- ADD_PROP(DTV_STREAM_ID, ((tp->ds & 0xFF) << 8) | (tp->plp & 0xFF))
|
||||||
|
+ ADD_PROP(DTV_STREAM_ID, ((tp->ds & 0xFF) << 8) | (tp->plp_isi & 0xFF))
|
||||||
|
#endif
|
||||||
|
// valid for DD DVB-C2 devices
|
||||||
|
|
||||||
|
diff --git a/src/dvb.h b/src/dvb.h
|
||||||
|
index 9830487..21622dc 100644
|
||||||
|
--- a/src/dvb.h
|
||||||
|
+++ b/src/dvb.h
|
||||||
|
@@ -189,12 +189,14 @@ typedef struct diseqc
|
||||||
|
#define SWITCH_SLAVE 3
|
||||||
|
int switch_type;
|
||||||
|
/* parameters */
|
||||||
|
- int uslot; // unicable/jess slot
|
||||||
|
- int ufreq; // unicable/jess frequency
|
||||||
|
- int pin;
|
||||||
|
- int only13v; // unicable - use 13V voltage only
|
||||||
|
- int fast; // don't send diseqc without position change
|
||||||
|
- int committed_no, uncommitted_no; // diseqc info
|
||||||
|
+ int uslot; // unicable/jess slot
|
||||||
|
+ int ufreq; // unicable/jess frequency
|
||||||
|
+ int pin; // unicable pin code
|
||||||
|
+ int only13v; // unicable - use 13V voltage only
|
||||||
|
+ int fast; // don't send diseqc without position change
|
||||||
|
+ int addr; // diseqc address (second byte in the sequence)
|
||||||
|
+ int committed_no; // committed switch number
|
||||||
|
+ int uncommitted_no; // uncommitted switch number
|
||||||
|
/* timing */
|
||||||
|
int before_cmd;
|
||||||
|
int after_cmd;
|
||||||
|
@@ -232,10 +234,10 @@ typedef struct struct_transponder
|
||||||
|
|
||||||
|
diseqc diseqc_param;
|
||||||
|
|
||||||
|
- // DVB-C2
|
||||||
|
- int c2tft;
|
||||||
|
- int ds;
|
||||||
|
- int plp;
|
||||||
|
+ int c2tft; // DVB-C2
|
||||||
|
+ int ds; // DVB-C2 (data slice)
|
||||||
|
+ int plp_isi; // DVB-T2/DVB-S2
|
||||||
|
+ int pls_code; // DVB-S2
|
||||||
|
|
||||||
|
char *apids, *pids, *dpids, *x_pmt;
|
||||||
|
} transponder;
|
||||||
diff --git a/src/minisatip.c b/src/minisatip.c
|
diff --git a/src/minisatip.c b/src/minisatip.c
|
||||||
index 0cd9b0b..a35ef19 100644
|
index 0cd9b0b..884f14c 100644
|
||||||
--- a/src/minisatip.c
|
--- a/src/minisatip.c
|
||||||
+++ b/src/minisatip.c
|
+++ b/src/minisatip.c
|
||||||
@@ -552,7 +552,7 @@ void set_options(int argc, char *argv[])
|
@@ -286,6 +286,8 @@ Help\n\
|
||||||
|
* eg: -d 0:1-0 (which is the default for each adapter).\n\
|
||||||
|
- note: * as adapter means apply to all adapters\n\
|
||||||
|
- note: * before committed number enables fast-switch (only voltage/tone)\n\
|
||||||
|
+ - note: @ before committed number sets 'Any Device' diseqc address (0x00)\n\
|
||||||
|
+ - note: . before committed number sets 'LNB' diseqc address (0x11)\n\
|
||||||
|
\n\
|
||||||
|
* -q --diseqc-timing ADAPTER1:BEFORE_CMD1-AFTER_CMD1-AFTER_REPEATED_CMD1-AFTER_SWITCH1-AFTER_BURST1-AFTER_TONE1[,...]\n\
|
||||||
|
\t* All timing values are in ms, default adapter values are: 15-54-15-15-15-0\n\
|
||||||
|
@@ -513,6 +515,7 @@ void set_options(int argc, char *argv[])
|
||||||
|
opts.document_root = "html";
|
||||||
|
opts.xml_path = DESC_XML;
|
||||||
|
opts.th_priority = -1;
|
||||||
|
+ opts.diseqc_addr = 0x10;
|
||||||
|
opts.diseqc_before_cmd = 15;
|
||||||
|
opts.diseqc_after_cmd = 54;
|
||||||
|
opts.diseqc_after_repeated_cmd = 15;
|
||||||
|
@@ -552,7 +555,7 @@ void set_options(int argc, char *argv[])
|
||||||
#endif
|
#endif
|
||||||
#ifdef AXE
|
#ifdef AXE
|
||||||
opts.no_threads = 1;
|
opts.no_threads = 1;
|
||||||
@ -548,7 +959,7 @@ index 0cd9b0b..a35ef19 100644
|
|||||||
#define AXE_OPTS "7:QW:8:A:"
|
#define AXE_OPTS "7:QW:8:A:"
|
||||||
#else
|
#else
|
||||||
#define AXE_OPTS ""
|
#define AXE_OPTS ""
|
||||||
@@ -614,7 +614,7 @@ void set_options(int argc, char *argv[])
|
@@ -614,7 +617,7 @@ void set_options(int argc, char *argv[])
|
||||||
int i;
|
int i;
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(buf, 0, sizeof(buf));
|
||||||
strncpy(buf, optarg, sizeof(buf) - 1);
|
strncpy(buf, optarg, sizeof(buf) - 1);
|
||||||
@ -557,7 +968,7 @@ index 0cd9b0b..a35ef19 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
int level = map_intd(arg[i], loglevels, -1);
|
int level = map_intd(arg[i], loglevels, -1);
|
||||||
@@ -1046,7 +1046,7 @@ int read_rtsp(sockets *s)
|
@@ -1046,7 +1049,7 @@ int read_rtsp(sockets *s)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -566,7 +977,7 @@ index 0cd9b0b..a35ef19 100644
|
|||||||
cseq = 0;
|
cseq = 0;
|
||||||
if (la < 2)
|
if (la < 2)
|
||||||
LOG_AND_RETURN(0,
|
LOG_AND_RETURN(0,
|
||||||
@@ -1311,7 +1311,7 @@ int read_http(sockets *s)
|
@@ -1311,7 +1314,7 @@ int read_http(sockets *s)
|
||||||
LOG("read HTTP from %d sid: %d: ", s->sock, s->sid);
|
LOG("read HTTP from %d sid: %d: ", s->sock, s->sid);
|
||||||
LOGM("%s", s->buf);
|
LOGM("%s", s->buf);
|
||||||
|
|
||||||
@ -576,7 +987,7 @@ index 0cd9b0b..a35ef19 100644
|
|||||||
if (strncmp(arg[0], "GET", 3) && strncmp(arg[0], "POST", 4) && !is_head)
|
if (strncmp(arg[0], "GET", 3) && strncmp(arg[0], "POST", 4) && !is_head)
|
||||||
REPLY_AND_RETURN(503);
|
REPLY_AND_RETURN(503);
|
||||||
diff --git a/src/minisatip.h b/src/minisatip.h
|
diff --git a/src/minisatip.h b/src/minisatip.h
|
||||||
index 6512250..1725565 100644
|
index 6512250..af22d77 100644
|
||||||
--- a/src/minisatip.h
|
--- a/src/minisatip.h
|
||||||
+++ b/src/minisatip.h
|
+++ b/src/minisatip.h
|
||||||
@@ -9,7 +9,7 @@
|
@@ -9,7 +9,7 @@
|
||||||
@ -584,12 +995,20 @@ index 6512250..1725565 100644
|
|||||||
#define VERSION_BUILD "16"
|
#define VERSION_BUILD "16"
|
||||||
#define CC(a, b, c) #a b #c
|
#define CC(a, b, c) #a b #c
|
||||||
-#define VERSION CC(0.7., VERSION_BUILD, )
|
-#define VERSION CC(0.7., VERSION_BUILD, )
|
||||||
+#define VERSION CC(0.7., VERSION_BUILD, -axe211)
|
+#define VERSION CC(0.7., VERSION_BUILD, -axe212)
|
||||||
|
|
||||||
void set_options(int argc, char *argv[]);
|
void set_options(int argc, char *argv[]);
|
||||||
|
|
||||||
|
@@ -94,6 +94,7 @@ struct struct_opts
|
||||||
|
char no_threads;
|
||||||
|
int th_priority;
|
||||||
|
int diseqc_fast;
|
||||||
|
+ int diseqc_addr;
|
||||||
|
int diseqc_committed_no;
|
||||||
|
int diseqc_uncommitted_no;
|
||||||
|
int diseqc_before_cmd;
|
||||||
diff --git a/src/satipc.c b/src/satipc.c
|
diff --git a/src/satipc.c b/src/satipc.c
|
||||||
index 24c82ff..38df122 100644
|
index 24c82ff..46ecb90 100644
|
||||||
--- a/src/satipc.c
|
--- a/src/satipc.c
|
||||||
+++ b/src/satipc.c
|
+++ b/src/satipc.c
|
||||||
@@ -176,7 +176,7 @@ int satipc_reply(sockets *s)
|
@@ -176,7 +176,7 @@ int satipc_reply(sockets *s)
|
||||||
@ -601,7 +1020,34 @@ index 24c82ff..38df122 100644
|
|||||||
rc = map_int(arg[1], NULL);
|
rc = map_int(arg[1], NULL);
|
||||||
|
|
||||||
if (sip->option_no_session && sip->last_cmd == RTSP_OPTIONS && !sess && sip->session[0])
|
if (sip->option_no_session && sip->last_cmd == RTSP_OPTIONS && !sess && sip->session[0])
|
||||||
@@ -1288,7 +1288,7 @@ void find_satip_adapter(adapter **a)
|
@@ -807,6 +807,8 @@ void get_s2_url(adapter *ad, char *url)
|
||||||
|
FILL("&fec=%s", tp->fec, FEC_AUTO, get_fec(tp->fec));
|
||||||
|
FILL("&ro=%s", ro, ROLLOFF_AUTO, get_rolloff(ro));
|
||||||
|
FILL("&plts=%s", plts, PILOT_AUTO, get_pilot(plts));
|
||||||
|
+ FILL("&isi=%d", tp->plp_isi, 0, tp->plp_isi);
|
||||||
|
+ FILL("&plsc=%d", tp->pls_code, -1, tp->pls_code);
|
||||||
|
url[len] = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
@@ -831,7 +833,7 @@ void get_c2_url(adapter *ad, char *url)
|
||||||
|
FILL("&specinv=%d", tp->inversion, INVERSION_AUTO, tp->inversion);
|
||||||
|
FILL("&t2id=%d", tp->t2id, 0, tp->t2id);
|
||||||
|
FILL("&sm=%d", tp->sm, 0, tp->sm);
|
||||||
|
- FILL("&plp=%d", tp->plp, 0, tp->plp);
|
||||||
|
+ FILL("&plp=%d", tp->plp_isi, 0, tp->plp_isi);
|
||||||
|
url[len] = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
@@ -855,7 +857,7 @@ void get_t2_url(adapter *ad, char *url)
|
||||||
|
FILL("&specinv=%d", tp->inversion, INVERSION_AUTO, tp->inversion);
|
||||||
|
FILL("&c2tft=%d", tp->c2tft, 0, tp->c2tft);
|
||||||
|
FILL("&ds=%d", tp->ds, 0, tp->ds);
|
||||||
|
- FILL("&plp=%d", tp->plp, 0, tp->plp);
|
||||||
|
+ FILL("&plp=%d", tp->plp_isi, 0, tp->plp_isi);
|
||||||
|
url[len] = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
@@ -1288,7 +1290,7 @@ void find_satip_adapter(adapter **a)
|
||||||
return;
|
return;
|
||||||
char satip_servers[strlen(opts.satip_servers) + 10];
|
char satip_servers[strlen(opts.satip_servers) + 10];
|
||||||
strcpy(satip_servers, opts.satip_servers);
|
strcpy(satip_servers, opts.satip_servers);
|
||||||
@ -610,7 +1056,7 @@ index 24c82ff..38df122 100644
|
|||||||
|
|
||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
@@ -1420,7 +1420,7 @@ void satip_getxml_data(char *data, int len, void *opaque, Shttp_client *h)
|
@@ -1420,7 +1422,7 @@ void satip_getxml_data(char *data, int len, void *opaque, Shttp_client *h)
|
||||||
eos = strchr(sep, '<');
|
eos = strchr(sep, '<');
|
||||||
if (eos)
|
if (eos)
|
||||||
*eos = 0;
|
*eos = 0;
|
||||||
@ -619,7 +1065,7 @@ index 24c82ff..38df122 100644
|
|||||||
for (i = 0; i < la; i++)
|
for (i = 0; i < la; i++)
|
||||||
{
|
{
|
||||||
int ds = map_intd(arg[i], satip_delsys, -1);
|
int ds = map_intd(arg[i], satip_delsys, -1);
|
||||||
@@ -1474,7 +1474,7 @@ int satip_getxml(void *x)
|
@@ -1474,7 +1476,7 @@ int satip_getxml(void *x)
|
||||||
memset(satip_xml, 0, sizeof(satip_xml));
|
memset(satip_xml, 0, sizeof(satip_xml));
|
||||||
memset(sxd, 0, sizeof(sxd));
|
memset(sxd, 0, sizeof(sxd));
|
||||||
strncpy(satip_xml, opts.satip_xml, sizeof(satip_xml) - 1);
|
strncpy(satip_xml, opts.satip_xml, sizeof(satip_xml) - 1);
|
||||||
|
Loading…
Reference in New Issue
Block a user