4 Commits

Author SHA1 Message Date
Jaroslav Kysela
18b4f42460 correct .md files for minisatip8 2018-09-24 17:13:01 +02:00
Jaroslav Kysela
d4130c5564 minisatip8 fixes (free input mode, argument parsing) 2018-09-24 16:56:39 +02:00
Jaroslav Kysela
c2b652cdff minisatip8: try to fix active_pids issue visible with VDR 2018-09-21 10:13:36 +02:00
Jaroslav Kysela
100ef6e46f ntpd: wait for /etc/resolv.conf 2018-09-21 09:53:27 +02:00
4 changed files with 631 additions and 22 deletions

28
dist/README vendored
View File

@@ -97,21 +97,21 @@ nfsd:
- to list connected clients 'showmount'
- to list exports 'exportfs'
Minisatip8 (0.7.15) config:
Minisatip8 (0.7.16) config:
---------------------------
- this is the preferred minisatip server now
- you may add extra parameters to MINISATIP8_OPTS= in /etc/sysconfig/config
- WARNING: use -D with unique numbers if you have _multiple_ SAT>IP servers on net
- SEE: minisatip.md file in this directory for more details
- example 1: only two tuners: MINISATIP_OPTS="-e 0-1"
- example 2: unicable: MINISATIP_OPTS="-u 0:1-1420,1:0-1210,2:2-1680,3:3-2040"
- example 1: only two tuners: MINISATIP8_OPTS="-e 0-1"
- example 2: unicable: MINISATIP8_OPTS="-u 0:1-1420,1:0-1210,2:2-1680,3:3-2040"
- AXE hardware specific options:
-7 link adapters (identical src,lo/hi,h/v), the format is M:S (master:slave)
-Q quattro LNB config (H/H,H/V,L/H,L/V)
-9 X AXE unicable/jess input (0-3)
- example 3: unicable coax in input 2: MINISATIP_OPTS="-9 1"
- example 4: quattro LNB: MINISATIP_OPTS="-Q"
- example 4: quattro LNB: MINISATIP8_OPTS="-Q"
- example 5: coax in inputs 1,2, tuner 3 slave to input 1, tuner 4 slave to input 2
MINISATIP_OPTS="-7 0:2,1:3"
@@ -121,14 +121,14 @@ Minisatip 0.7 config:
- you may add extra parameters to MINISATIP7_OPTS= in /etc/sysconfig/config
- WARNING: use -D with unique numbers if you have _multiple_ SAT>IP servers on net
- SEE: minisatip.md file in this directory for more details
- example 1: only two tuners: MINISATIP_OPTS="-e 0-1"
- example 2: unicable: MINISATIP_OPTS="-u 0:1-1420,1:0-1210,2:2-1680,3:3-2040"
- example 1: only two tuners: MINISATIP7_OPTS="-e 0-1"
- example 2: unicable: MINISATIP7_OPTS="-u 0:1-1420,1:0-1210,2:2-1680,3:3-2040"
- AXE hardware specific options:
-7 link adapters (identical src,lo/hi,h/v), the format is M:S (master:slave)
-Q quattro LNB config (H/H,H/V,L/H,L/V)
-9 X AXE unicable/jess input (0-3)
- example 3: unicable coax in input 2: MINISATIP_OPTS="-9 1"
- example 4: quattro LNB: MINISATIP_OPTS="-Q"
- example 4: quattro LNB: MINISATIP7_OPTS="-Q"
- example 5: coax in inputs 1,2, tuner 3 slave to input 1, tuner 4 slave to input 2
MINISATIP_OPTS="-7 0:2,1:3"
@@ -244,6 +244,20 @@ Bugs:
History:
--------
satip-axe-2018 - ??
- added minisatip8
- updated minisatip code (latest minisatip 0.7.16)
- note that some options were removed (-M) or added (-2)
- follow /etc/config.default and this file
- fixed reported VDR problem (issue #108)
- fixed the improper tuner release problem for complex diseqc settings
where one input is used by multiple tuners (minisatip7 and minisatip8)
- added SYSLOGD_OPTS to pass extra options to syslog
- modified net.ipv4.tcp_wmem (issue #102)
- increased net.core.wmem_max=12582912 , it might help to prevent
the UDP packet loss (issue #88)
- fixed time sync (ntpd) issue when DHCP is used (issue #109)
satip-axe-201705251044-14 - Wed Jun 7 2017
- kernel modules from idl4k-1.25.0.157 (frontend + demux)
- updated minisatip5 (0.5.54)

14
dist/minisatip.md vendored
View File

@@ -8,12 +8,12 @@ the physical F-type connector on the box have numering 1-4.
NOTE: Some options identifiers were changed between minisatip5 and minisatip7:
minisatip7 | minisatip5/minisatip | description
-----------|----------------------|-----------------------------------
-7 | -L | tuner linking
-9 | -X | unicable input (-S for minisatip8)
-W | -P | AXE power
-8 | -Z | quattro hiband mode
minisatip7,8 | minisatip5/minisatip | description
-------------|----------------------|-----------------------------------
-7 | -L | tuner linking
-9 | -X | unicable input (-S for minisatip8)
-W | -P | AXE power
-8 | -Z | quattro hiband mode
other AXE specific option | decription
--------------------------|----------------------------------------
@@ -156,8 +156,6 @@ control the standard LNBs/diseqc equipment.
### Multiple unicable groups
For minisatip8 use -S argument.
You may connect multiple unicable LNBs through multiple coaxial
wires to the box. In this case, it is necessary to tell which tuners
will use which physical input. In this case '-9 T1,T2,T3,T4 /

View File

@@ -4,5 +4,10 @@ while test ! -f /tmp/nontpd; do
NTPD_OPTS=""
test -r /etc/sysconfig/config && . /etc/sysconfig/config
test -z "$NTPD_OPTS" && NTPD_OPTS="-p 0.pool.ntp.org"
i=0
while test ! -f /etc/resolv.conf -a $i -le 100; do
sleep 0.2
i=$(expr $i + 1)
done
/usr/sbin/ntpd -n -I eth0 $NTPD_OPTS
done

View File

@@ -1,5 +1,239 @@
diff --git a/src/adapter.c b/src/adapter.c
index e034e3e..f7727b8 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -550,7 +550,7 @@ int getAdaptersCount()
memset(&fe_map, -1, sizeof(fe_map));
k = 0;
- for (i = 0; i < sizeof(order); i++)
+ for (i = 0; i < ARRAY_SIZE(order); i++)
{
int sys = order[i];
for (j = 0; j < ifes[sys]; j++)
@@ -676,7 +676,7 @@ int get_free_adapter(transponder *tp)
adapter *ad = a[0];
- if ((fe > 0) && (fe <= sizeof(fe_map)) && (fe_map[fe - 1] >= 0))
+ if ((fe > 0) && (fe <= ARRAY_SIZE(fe_map)) && (fe_map[fe - 1] >= 0))
{
fe = fe_map[fe - 1];
ad = a[fe];
@@ -878,7 +878,7 @@ int update_pids(int aid)
if (dp)
dump_pids(aid);
dp = 0;
- if (ad->pids[i].fd <= 0)
+ if (ad->pids[i].fd <= 0) {
if ((ad->pids[i].fd = ad->set_pid(ad, ad->pids[i].pid)) < 0)
{
@@ -888,6 +888,8 @@ int update_pids(int aid)
LOG0("Maximum pid filter reached, lowering the value to %d", opts.max_pids);
break;
}
+ ad->active_pids++;
+ }
ad->pids[i].flags = 1;
if (ad->pids[i].pid == 0)
ad->pat_processed = 0;
@@ -895,7 +897,6 @@ int update_pids(int aid)
ad->pids[i].cc = 255;
ad->pids[i].cc_err = 0;
ad->pids[i].dec_err = 0;
- ad->active_pids++;
}
if (ad->commit)
ad->commit(ad);
@@ -906,7 +907,9 @@ int update_pids(int aid)
void post_tune(adapter *ad)
{
+#if !defined(DISABLE_PMT) || !defined(DISABLE_T2MI)
int aid = ad->id;
+#endif
#ifndef DISABLE_PMT
SPid *p = find_pid(aid, 0);
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
pids ? pids : "NULL");
if (pids)
{
- la = split(arg, pids, MAX_PIDS, ',');
+ la = split(arg, pids, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
pid = map_int(arg[i], NULL);
@@ -1146,7 +1149,7 @@ int mark_pids_add(int sid, int aid, char *pids)
LOG("adding pids to adapter %d, sid %d, pids=%s", aid, sid,
pids ? pids : "NULL");
- la = split(arg, pids, MAX_PIDS, ',');
+ la = split(arg, pids, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
pid = map_intd(arg[i], NULL, -1);
@@ -1242,7 +1245,7 @@ int set_adapter_parameters(int aid, int sid, transponder *tp)
{
char *arg[64];
int i, la;
- la = split(arg, ad->tp.x_pmt, 64, ',');
+ la = split(arg, ad->tp.x_pmt, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
int pmt = map_int(arg[i], NULL);
@@ -1436,12 +1439,12 @@ void set_disable(int i, int v)
void enable_adapters(char *o)
{
int i, la, st, end, j;
- char buf[100], *arg[20], *sep;
+ char buf[1000], *arg[40], *sep;
for (i = 0; i < MAX_ADAPTERS; i++)
set_disable(i, 1);
SAFE_STRCPY(buf, o);
- la = split(arg, buf, sizeof(arg), ',');
+ la = split(arg, buf, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
sep = strchr(arg[i], '-');
@@ -1463,10 +1466,10 @@ void enable_adapters(char *o)
void set_unicable_adapters(char *o, int type)
{
int i, la, a_id, slot, freq, pin, o13v;
- char buf[100], *arg[20], *sep1, *sep2, *sep3;
+ char buf[1000], *arg[40], *sep1, *sep2, *sep3;
adapter *ad;
SAFE_STRCPY(buf, o);
- la = split(arg, buf, sizeof(arg), ',');
+ la = split(arg, buf, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
a_id = map_intd(arg[i], NULL, -1);
@@ -1504,10 +1507,10 @@ void set_unicable_adapters(char *o, int type)
void set_diseqc_adapters(char *o)
{
int i, la, a_id, fast, committed_no, uncommitted_no;
- char buf[100], *arg[20], *sep1, *sep2;
+ char buf[1000], *arg[40], *sep1, *sep2;
adapter *ad;
SAFE_STRCPY(buf, o);
- la = split(arg, buf, sizeof(arg), ',');
+ la = split(arg, buf, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
if (arg[i] && arg[i][0] == '*')
@@ -1567,10 +1570,10 @@ void set_diseqc_adapters(char *o)
void set_diseqc_multi(char *o)
{
int i, la, a_id, position;
- char buf[100], *arg[20], *sep1;
+ char buf[1000], *arg[40], *sep1;
adapter *ad;
SAFE_STRCPY(buf, o);
- la = split(arg, buf, sizeof(arg), ',');
+ la = split(arg, buf, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
if (arg[i] && arg[i][0] == '*')
@@ -1619,10 +1622,10 @@ void set_diseqc_multi(char *o)
void set_lnb_adapters(char *o)
{
int i, la, a_id, lnb_low, lnb_high, lnb_switch;
- char buf[100], *arg[20], *sep1, *sep2, *sep3;
+ char buf[1000], *arg[40], *sep1, *sep2, *sep3;
adapter *ad;
SAFE_STRCPY(buf, o);
- la = split(arg, buf, sizeof(arg), ',');
+ la = split(arg, buf, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
if (arg[i] && arg[i][0] == '*')
@@ -1692,11 +1695,11 @@ void set_diseqc_timing(char *o)
int i, la, a_id;
int before_cmd, after_cmd, after_repeated_cmd;
int after_switch, after_burst, after_tone;
- char buf[2000], *arg[20];
+ char buf[2000], *arg[40];
char *sep1, *sep2, *sep3, *sep4, *sep5, *sep6;
adapter *ad;
SAFE_STRCPY(buf, o);
- la = split(arg, buf, sizeof(arg), ',');
+ la = split(arg, buf, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
if (arg[i] && arg[i][0] == '*')
@@ -1773,10 +1776,10 @@ void set_diseqc_timing(char *o)
void set_slave_adapters(char *o)
{
int i, j, la, a_id, a_id2, master = 0;
- char buf[100], *arg[20], *sep, *sep2;
+ char buf[1000], *arg[40], *sep, *sep2;
adapter *ad;
SAFE_STRCPY(buf, o);
- la = split(arg, buf, sizeof(arg), ',');
+ la = split(arg, buf, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
a_id = map_intd(arg[i], NULL, -1);
@@ -1826,13 +1829,13 @@ void set_timeout_adapters(char *o)
{
int i, j, la, a_id, a_id2;
int timeout = opts.adapter_timeout / 1000;
- char buf[100], *arg[20], *sep;
+ char buf[1000], *arg[40], *sep;
adapter *ad;
SAFE_STRCPY(buf, o);
sep = strchr(buf, ':');
if (sep)
timeout = map_intd(sep + 1, NULL, timeout);
- la = split(arg, buf, sizeof(arg), ',');
+ la = split(arg, buf, ARRAY_SIZE(arg), ',');
if (arg[0] && (arg[0][0] == '*'))
{
opts.adapter_timeout = timeout * 1000;
@@ -1876,10 +1879,10 @@ extern char *fe_delsys[];
void set_adapters_delsys(char *o)
{
int i, la, a_id, ds;
- char buf[100], *arg[20], *sep;
+ char buf[1000], *arg[40], *sep;
adapter *ad;
SAFE_STRCPY(buf, o);
- la = split(arg, buf, sizeof(arg), ',');
+ la = split(arg, buf, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
a_id = map_intd(arg[i], NULL, -1);
@@ -1916,10 +1919,10 @@ void set_adapters_delsys(char *o)
void set_adapter_dmxsource(char *o)
{
int i, j, la, st, end, fd;
- char buf[100], *arg[20], *sep, *seps;
+ char buf[1000], *arg[40], *sep, *seps;
adapter *ad;
SAFE_STRCPY(buf, o);
- la = split(arg, buf, sizeof(arg), ',');
+ la = split(arg, buf, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
sep = strchr(arg[i], '-');
@@ -1956,10 +1959,10 @@ void set_signal_multiplier(char *o)
{
int i, la, a_id;
float strength_multiplier, snr_multiplier;
- char buf[100], *arg[20], *sep1, *sep2;
+ char buf[1000], *arg[40], *sep1, *sep2;
adapter *ad;
SAFE_STRCPY(buf, o);
- la = split(arg, buf, sizeof(arg), ',');
+ la = split(arg, buf, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
if (arg[i] && arg[i][0] == '*')
diff --git a/src/axe.c b/src/axe.c
index 52e8dad..1578a51 100644
index 52e8dad..cbe1855 100644
--- a/src/axe.c
+++ b/src/axe.c
@@ -48,7 +48,7 @@
@@ -11,7 +245,235 @@ index 52e8dad..1578a51 100644
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_diseqc(adapter *ad, int fd, int pos, int pos_change, int pol, int hiband, diseqc *d);
@@ -669,8 +669,8 @@ fe_delivery_system_t axe_delsys(int aid, int fd, fe_delivery_system_t *sys)
@@ -210,7 +210,7 @@ static inline int extra_quattro(int input, int diseqc, int *equattro)
return *equattro;
}
-adapter *use_adapter(int input)
+adapter *axe_use_adapter(int input)
{
int input2 = input < 4 ? input : -1;
adapter *ad = get_configured_adapter(input2);
@@ -229,11 +229,33 @@ adapter *use_adapter(int input)
return ad;
}
-int tune_check(adapter *ad, int pol, int hiband, int diseqc)
+int axe_get_hiband(transponder *tp, diseqc *diseqc_param)
{
+ if (tp->pol > 2 && diseqc_param->lnb_circular > 0)
+ return 0;
+ if (tp->freq < diseqc_param->lnb_switch)
+ return 0;
+ return 1;
+}
+
+int axe_get_freq(transponder *tp, diseqc *diseqc_param)
+{
+ int freq = tp->freq;
+
+ if (tp->pol > 2 && diseqc_param->lnb_circular > 0)
+ return (freq - diseqc_param->lnb_circular);
+ if (freq < diseqc_param->lnb_switch)
+ return (freq - diseqc_param->lnb_low);
+ return (freq - diseqc_param->lnb_high);
+}
+
+int axe_tune_check(adapter *ad, transponder *tp, diseqc *diseqc_param, int diseqc)
+{
+ int pol = tp->pol;
+ int hiband = axe_get_hiband(tp, diseqc_param);
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);
- if (ad->old_pol != pol)
+ if (ad->old_pol != tp->pol)
return 0;
if (ad->old_hiband != hiband)
return 0;
@@ -249,33 +271,25 @@ int axe_setup_switch(adapter *ad)
{
int frontend_fd = ad->fe;
transponder *tp = &ad->tp;
+ diseqc *diseqc_param = &tp->diseqc_param;
- int hiband = 0;
+ int hiband;
+ int freq;
int diseqc = (tp->diseqc > 0) ? tp->diseqc - 1 : 0;
- int freq = tp->freq;
int pol = (tp->pol - 1) & 1;
- if (tp->pol > 2 && tp->diseqc_param.lnb_circular > 0)
- {
- freq = (freq - tp->diseqc_param.lnb_circular);
- hiband = 0;
- }
- else if (freq < tp->diseqc_param.lnb_switch)
- {
- freq = (freq - tp->diseqc_param.lnb_low);
- hiband = 0;
- }
- else
- {
- freq = (freq - tp->diseqc_param.lnb_high);
- hiband = 1;
- }
-
adapter *ad2, *adm;
int input = 0, aid, pos = 0, equattro = 0, master = -1;
- if (tp->diseqc_param.switch_type != SWITCH_UNICABLE &&
- tp->diseqc_param.switch_type != SWITCH_JESS)
+ /* this is a new tune, so clear all adapter<->input mappings */
+ for (aid = 0; aid < 4; aid++)
+ {
+ ad2 = a[aid];
+ ad2->axe_used &= ~(1 << ad->id);
+ }
+
+ if (diseqc_param->switch_type != SWITCH_UNICABLE &&
+ diseqc_param->switch_type != SWITCH_JESS)
{
input = ad->id;
if (!opts.quattro || extra_quattro(input, diseqc, &equattro))
@@ -298,7 +312,7 @@ int axe_setup_switch(adapter *ad)
continue;
if ((ad2->axe_used & ~(1 << ad->id)) == 0)
continue;
- if (!tune_check(ad2, pol, hiband, pos))
+ if (!axe_tune_check(ad2, tp, &ad2->diseqc_param, pos))
continue;
break;
}
@@ -327,7 +341,7 @@ int axe_setup_switch(adapter *ad)
}
diseqc = pos;
master = aid;
- adm = use_adapter(master);
+ adm = axe_use_adapter(master);
if (adm == NULL)
{
LOG("axe_fe: unknown master adapter for input %d", input);
@@ -337,7 +351,7 @@ int axe_setup_switch(adapter *ad)
else
{
master = (ad->master_source >= 0) ? ad->master_source : ad->pa;
- adm = use_adapter(master);
+ adm = axe_use_adapter(master);
if (adm == NULL)
{
LOG("axe_fe: unknown master adapter for input %d", input);
@@ -357,7 +371,7 @@ int axe_setup_switch(adapter *ad)
if (ad2->sid_cnt > 0)
break;
}
- if (adm != ad && aid < 4 && !tune_check(adm, pol, hiband, diseqc))
+ if (adm != ad && aid < 4 && !axe_tune_check(adm, tp, &adm->diseqc_param, diseqc))
{
LOG("unable to use slave adapter %d (master %d)", input, adm->pa);
return 0;
@@ -368,10 +382,13 @@ int axe_setup_switch(adapter *ad)
if (master >= 0)
{
input = master;
- if (!tune_check(adm, pol, hiband, diseqc))
+ diseqc_param = &adm->diseqc_param;
+ hiband = axe_get_hiband(tp, diseqc_param);
+ freq = axe_get_freq(tp, diseqc_param);
+ if (!axe_tune_check(adm, tp, diseqc_param, diseqc))
{
send_diseqc(adm, adm->fe2, diseqc, adm->old_diseqc != diseqc,
- pol, hiband, &tp->diseqc_param);
+ pol, hiband, diseqc_param);
adm->old_pol = pol;
adm->old_hiband = hiband;
adm->old_diseqc = diseqc;
@@ -381,6 +398,7 @@ int axe_setup_switch(adapter *ad)
}
else if (opts.quattro)
{
+ hiband = axe_get_hiband(tp, diseqc_param);
if (opts.quattro_hiband == 1 && hiband)
{
LOG("axe_fe: hiband is not allowed for quattro config (adapter %d)", input);
@@ -392,17 +410,19 @@ int axe_setup_switch(adapter *ad)
return 0;
}
input = ((hiband ^ 1) << 1) | (pol ^ 1);
- adm = use_adapter(input);
+ adm = axe_use_adapter(input);
if (adm == NULL)
{
LOG("axe_fe: unknown master adapter %d", input);
return 0;
}
adm->old_diseqc = diseqc = 0;
- if (!tune_check(adm, pol, hiband, 0))
+ diseqc_param = &adm->diseqc_param;
+ hiband = axe_get_hiband(tp, diseqc_param);
+ freq = axe_get_freq(tp, diseqc_param);
+ if (!axe_tune_check(adm, tp, diseqc_param, 0))
{
- send_diseqc(adm, adm->fe2, 0, 0, pol, hiband,
- &tp->diseqc_param);
+ send_diseqc(adm, adm->fe2, 0, 0, pol, hiband, diseqc_param);
adm->old_pol = pol;
adm->old_hiband = hiband;
adm->old_diseqc = 0;
@@ -414,9 +434,15 @@ int axe_setup_switch(adapter *ad)
else
{
aid = ad->id & 3;
- input = ad->master_source < 0 ? 0 : ad->master_source; //opts.axe_unicinp[aid];
+ if (diseqc_param->switch_type == SWITCH_UNICABLE ||
+ diseqc_param->switch_type == SWITCH_JESS)
+ {
+ input = ad->dmx_source < 0 ? 0 : ad->dmx_source;
+ } else {
+ input = ad->master_source < 0 ? 0 : ad->master_source;
+ }
frontend_fd = ad->fe;
- ad = use_adapter(input);
+ ad = axe_use_adapter(input);
if (ad == NULL)
{
LOGM("axe setup: unable to find adapter %d", input);
@@ -429,17 +455,20 @@ int axe_setup_switch(adapter *ad)
ad->id, input, ad->fe, ad->fe2);
}
- if (tp->diseqc_param.switch_type == SWITCH_UNICABLE)
+ hiband = axe_get_hiband(tp, diseqc_param);
+ freq = axe_get_freq(tp, diseqc_param);
+
+ if (diseqc_param->switch_type == SWITCH_UNICABLE)
{
freq = send_unicable(ad, ad->fe2, freq / 1000, diseqc,
- pol, hiband, &tp->diseqc_param);
+ pol, hiband, diseqc_param);
}
- else if (tp->diseqc_param.switch_type == SWITCH_JESS)
+ else if (diseqc_param->switch_type == SWITCH_JESS)
{
freq = send_jess(ad, ad->fe2, freq / 1000, diseqc,
- pol, hiband, &tp->diseqc_param);
+ pol, hiband, diseqc_param);
}
- else if (tp->diseqc_param.switch_type == SWITCH_SLAVE)
+ else if (diseqc_param->switch_type == SWITCH_SLAVE)
{
LOG("FD %d (%d) is a slave adapter", frontend_fd);
}
@@ -447,7 +476,7 @@ int axe_setup_switch(adapter *ad)
{
if (ad->old_pol != pol || ad->old_hiband != hiband || ad->old_diseqc != diseqc)
send_diseqc(ad, frontend_fd, diseqc, ad->old_diseqc != diseqc, pol,
- hiband, &tp->diseqc_param);
+ hiband, diseqc_param);
else
LOGM("Skip sending diseqc commands since "
"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)
void axe_get_signal(adapter *ad)
{
@@ -22,7 +484,7 @@ index 52e8dad..1578a51 100644
get_signal(ad, &status, &ber, &strength, &snr);
strength = strength * 240 / 24000;
@@ -819,9 +819,11 @@ void free_axe_input(adapter *ad)
@@ -819,9 +848,11 @@ void free_axe_input(adapter *ad)
for (aid = 0; aid < 4; aid++)
{
@@ -36,8 +498,49 @@ index 52e8dad..1578a51 100644
}
}
@@ -829,11 +860,11 @@ void free_axe_input(adapter *ad)
void set_link_adapters(char *o)
{
int i, la, a_id, b_id;
- char buf[100], *arg[20], *sep1;
+ char buf[1000], *arg[40], *sep1;
strncpy(buf, o, sizeof(buf) - 1);
buf[sizeof(buf) - 1] = '\0';
- la = split(arg, buf, sizeof(arg), ',');
+ la = split(arg, buf, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
a_id = map_intd(arg[i], NULL, -1);
@@ -857,11 +888,11 @@ void set_link_adapters(char *o)
void set_absolute_src(char *o)
{
int i, la, src, inp, pos;
- char buf[100], *arg[20], *inps, *poss;
+ char buf[1000], *arg[40], *inps, *poss;
strncpy(buf, o, sizeof(buf) - 1);
buf[sizeof(buf) - 1] = '\0';
- la = split(arg, buf, sizeof(arg), ',');
+ la = split(arg, buf, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
inps = strchr(arg[i], ':');
diff --git a/src/dvb.c b/src/dvb.c
index 5184c4d..f3b6ac3 100644
--- a/src/dvb.c
+++ b/src/dvb.c
@@ -192,7 +192,7 @@ int detect_dvb_parameters(char *s, transponder *tp)
init_dvb_parameters(tp);
LOG("detect_dvb_parameters (S)-> %s", s);
- la = split(arg, s, 20, '&');
+ la = split(arg, s, ARRAY_SIZE(arg), '&');
for (i = 0; i < la; i++)
{
diff --git a/src/minisatip.c b/src/minisatip.c
index 0cd9b0b..c9be9c4 100644
index 0cd9b0b..a35ef19 100644
--- a/src/minisatip.c
+++ b/src/minisatip.c
@@ -552,7 +552,7 @@ void set_options(int argc, char *argv[])
@@ -49,8 +552,35 @@ index 0cd9b0b..c9be9c4 100644
#define AXE_OPTS "7:QW:8:A:"
#else
#define AXE_OPTS ""
@@ -614,7 +614,7 @@ void set_options(int argc, char *argv[])
int i;
memset(buf, 0, sizeof(buf));
strncpy(buf, optarg, sizeof(buf) - 1);
- int la = split(arg, buf, 50, ',');
+ int la = split(arg, buf, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
int level = map_intd(arg[i], loglevels, -1);
@@ -1046,7 +1046,7 @@ int read_rtsp(sockets *s)
return 0;
}
- la = split(arg, (char *)s->buf, 50, ' ');
+ la = split(arg, (char *)s->buf, ARRAY_SIZE(arg), ' ');
cseq = 0;
if (la < 2)
LOG_AND_RETURN(0,
@@ -1311,7 +1311,7 @@ int read_http(sockets *s)
LOG("read HTTP from %d sid: %d: ", s->sock, s->sid);
LOGM("%s", s->buf);
- split(arg, (char *)s->buf, 50, ' ');
+ split(arg, (char *)s->buf, ARRAY_SIZE(arg), ' ');
// LOG("args: %s -> %s -> %s",arg[0],arg[1],arg[2]);
if (strncmp(arg[0], "GET", 3) && strncmp(arg[0], "POST", 4) && !is_head)
REPLY_AND_RETURN(503);
diff --git a/src/minisatip.h b/src/minisatip.h
index 6512250..7d41be7 100644
index 6512250..59067f0 100644
--- a/src/minisatip.h
+++ b/src/minisatip.h
@@ -9,7 +9,7 @@
@@ -58,14 +588,63 @@ index 6512250..7d41be7 100644
#define VERSION_BUILD "16"
#define CC(a, b, c) #a b #c
-#define VERSION CC(0.7., VERSION_BUILD, )
+#define VERSION CC(0.7., VERSION_BUILD, -axe208)
+#define VERSION CC(0.7., VERSION_BUILD, -axe210)
void set_options(int argc, char *argv[]);
diff --git a/src/satipc.c b/src/satipc.c
index 24c82ff..38df122 100644
--- a/src/satipc.c
+++ b/src/satipc.c
@@ -176,7 +176,7 @@ int satipc_reply(sockets *s)
sip->option_no_option = 1;
}
- la = split(arg, (char *)s->buf, 100, ' ');
+ la = split(arg, (char *)s->buf, ARRAY_SIZE(arg), ' ');
rc = map_int(arg[1], NULL);
if (sip->option_no_session && sip->last_cmd == RTSP_OPTIONS && !sess && sip->session[0])
@@ -1288,7 +1288,7 @@ void find_satip_adapter(adapter **a)
return;
char satip_servers[strlen(opts.satip_servers) + 10];
strcpy(satip_servers, opts.satip_servers);
- la = split(arg, satip_servers, 50, ',');
+ la = split(arg, satip_servers, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
@@ -1420,7 +1420,7 @@ void satip_getxml_data(char *data, int len, void *opaque, Shttp_client *h)
eos = strchr(sep, '<');
if (eos)
*eos = 0;
- la = split(arg, sep, MAX_DVBAPI_SYSTEMS, ',');
+ la = split(arg, sep, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
int ds = map_intd(arg[i], satip_delsys, -1);
@@ -1474,7 +1474,7 @@ int satip_getxml(void *x)
memset(satip_xml, 0, sizeof(satip_xml));
memset(sxd, 0, sizeof(sxd));
strncpy(satip_xml, opts.satip_xml, sizeof(satip_xml) - 1);
- la = split(arg, satip_xml, MAX_SATIP_XML, ',');
+ la = split(arg, satip_xml, ARRAY_SIZE(arg), ',');
for (i = 0; i < la; i++)
{
SAFE_STRCPY(sxd[i].url, arg[i]);
diff --git a/src/stream.c b/src/stream.c
index bde2992..8443a4f 100644
index bde2992..f587e93 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -422,7 +422,7 @@ int decode_transport(sockets *s, char *arg, char *default_rtp, int start_rtp)
return 0;
}
- l = split(arg2, arg, 10, ';');
+ l = split(arg2, arg, ARRAY_SIZE(arg2), ';');
}
// LOG("arg2 %s %s %s",arg2[0],arg2[1],arg2[2]);
memset(&p, 0, sizeof(p));
@@ -987,7 +987,7 @@ int process_dmx(sockets *s)
#endif
@@ -75,3 +654,16 @@ index bde2992..8443a4f 100644
if (ad->sid_cnt == 1 && ad->master_sid >= 0 && !packet_no_sid) // we have just 1 stream, do not check the pids, send everything to the destination
{
diff --git a/src/utils.h b/src/utils.h
index 1c9aa0d..c184668 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -263,6 +263,8 @@ static inline int get_index_hash(void *p, int max, int struct_size, uint32_t key
typedef ssize_t (*mywritev)(int fd, const struct iovec *io, int len);
+#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
+
#ifdef TESTING
#define writev(a, b, c) _writev(a, b, c)