minisatip7 -0 change

This commit is contained in:
Jaroslav Kysela 2017-05-12 09:56:52 +02:00
parent d50f0f44b1
commit 84a531f3fc

View File

@ -59,10 +59,35 @@ index ed8b1e5..f41b772 100644
+-include $(DEPS)
+endif
diff --git a/adapter.c b/adapter.c
index 26bd3b6..c88ddef 100644
index 26bd3b6..3c4c0b3 100644
--- a/adapter.c
+++ b/adapter.c
@@ -119,8 +119,7 @@ void find_adapters()
@@ -65,6 +65,7 @@ adapter *adapter_alloc()
{
adapter *ad = malloc1(sizeof(adapter));
memset(ad, 0, sizeof(adapter));
+
/* diseqc setup */
ad->diseqc_param.fast = opts.diseqc_fast;
ad->diseqc_param.committed_no = opts.diseqc_committed_no;
@@ -84,14 +85,14 @@ adapter *adapter_alloc()
ad->old_pol = -1;
ad->dmx_source = -1;
ad->slow_dev = opts.nopm;
- /* LOF setup */
+ ad->diseqc_multi = opts.diseqc_multi;
+ /* LOF setup */
ad->diseqc_param.lnb_low = opts.lnb_low;
ad->diseqc_param.lnb_high = opts.lnb_high;
ad->diseqc_param.lnb_circular = opts.lnb_circular;
ad->diseqc_param.lnb_switch = opts.lnb_switch;
-
return ad;
}
@@ -119,8 +120,7 @@ void find_adapters()
// avoid adapter close unless all the adapters can be closed
int adapter_timeout(sockets *s)
{
@ -72,7 +97,7 @@ index 26bd3b6..c88ddef 100644
adapter *ad = get_adapter(s->sid);
if (!ad)
return 1;
@@ -187,7 +186,6 @@ int num_adapters = 0;
@@ -187,7 +187,6 @@ int num_adapters = 0;
int init_hw(int i)
{
@ -80,7 +105,7 @@ index 26bd3b6..c88ddef 100644
int64_t st, et;
adapter *ad;
if (i < 0 || i >= MAX_ADAPTERS)
@@ -291,7 +289,6 @@ int init_hw(int i)
@@ -291,7 +290,6 @@ int init_hw(int i)
get_delsys(ad->sys[0]), get_delsys(ad->sys[1]),
get_delsys(ad->sys[2]), get_delsys(ad->sys[3]));
@ -88,7 +113,7 @@ index 26bd3b6..c88ddef 100644
mutex_unlock(&ad->mutex);
return 0;
@@ -303,7 +300,6 @@ NOK:
@@ -303,7 +301,6 @@ NOK:
int init_all_hw()
{
int i, rv;
@ -96,7 +121,7 @@ index 26bd3b6..c88ddef 100644
LOG("starting init_all_hw %d", init_complete);
if (init_complete)
@@ -385,11 +381,10 @@ int close_adapter(int na)
@@ -385,11 +382,10 @@ int close_adapter(int na)
int getAdaptersCount()
{
@ -111,7 +136,7 @@ index 26bd3b6..c88ddef 100644
char order[] =
{ SYS_DVBS2, SYS_DVBT, SYS_DVBC_ANNEX_A, SYS_DVBT2, SYS_DVBC2 };
@@ -701,7 +696,6 @@ int tune(int aid, int sid)
@@ -701,7 +697,6 @@ int tune(int aid, int sid)
{
adapter *ad = get_adapter(aid);
int rv = 0, flush_data = 0;
@ -119,7 +144,7 @@ index 26bd3b6..c88ddef 100644
if (!ad)
return -400;
@@ -936,7 +930,6 @@ int mark_pids_add(int sid, int aid, char *pids)
@@ -936,7 +931,6 @@ int mark_pids_add(int sid, int aid, char *pids)
int compare_tunning_parameters(int aid, transponder * tp)
{
@ -127,7 +152,7 @@ index 26bd3b6..c88ddef 100644
adapter *ad = get_adapter(aid);
if (!ad)
return -1;
@@ -1072,7 +1065,7 @@ char* get_stream_pids(int s_id, char *dest, int max_size);
@@ -1072,7 +1066,7 @@ char* get_stream_pids(int s_id, char *dest, int max_size);
char *
describe_adapter(int sid, int aid, char *dad, int ld)
{
@ -136,7 +161,7 @@ index 26bd3b6..c88ddef 100644
transponder *t;
adapter *ad;
streams *ss;
@@ -1092,7 +1085,7 @@ describe_adapter(int sid, int aid, char *dad, int ld)
@@ -1092,7 +1086,7 @@ describe_adapter(int sid, int aid, char *dad, int ld)
}
else
t = &ad->tp;
@ -145,7 +170,59 @@ index 26bd3b6..c88ddef 100644
if (use_ad)
{
@@ -1404,7 +1397,7 @@ void set_diseqc_timing(char *o)
@@ -1333,6 +1327,51 @@ void set_diseqc_adapters(char *o)
}
}
+void set_diseqc_multi(char *o)
+{
+ int i, la, a_id, position;
+ char buf[100], *arg[20], *sep1;
+ adapter *ad;
+ strncpy(buf, o, sizeof(buf));
+ la = split(arg, buf, sizeof(arg), ',');
+ for (i = 0; i < la; i++)
+ {
+ if (arg[i] && arg[i][0] == '*')
+ {
+ ad = NULL;
+ a_id = -1;
+ }
+ else
+ {
+ a_id = map_intd(arg[i], NULL, -1);
+ if (a_id < 0 || a_id >= MAX_ADAPTERS)
+ continue;
+
+ if (!a[a_id])
+ a[a_id] = adapter_alloc();
+ ad = a[a_id];
+ }
+
+ sep1 = strchr(arg[i], ':');
+
+ if (!sep1)
+ continue;
+ position = map_intd(sep1 + 1, NULL, -1);
+ if (position < 0)
+ continue;
+ if (ad)
+ {
+ ad->diseqc_multi = position;
+ }
+ else
+ {
+ opts.diseqc_multi = position;
+ }
+ LOGL(0,
+ "Setting diseqc multi adapter %d position %d",
+ a_id, position);
+ }
+}
void set_lnb_adapters(char *o)
{
@@ -1404,7 +1443,7 @@ void set_diseqc_timing(char *o)
int before_cmd, after_cmd, after_repeated_cmd;
int after_switch, after_burst, after_tone;
char buf[2000], *arg[20];
@ -154,7 +231,7 @@ index 26bd3b6..c88ddef 100644
adapter *ad;
strncpy(buf, o, sizeof(buf));
la = split(arg, buf, sizeof(arg), ',');
@@ -1550,7 +1543,7 @@ void set_nopm_adapters(char *o)
@@ -1550,7 +1589,7 @@ void set_nopm_adapters(char *o)
extern char *fe_delsys[];
void set_adapters_delsys(char *o)
{
@ -163,7 +240,7 @@ index 26bd3b6..c88ddef 100644
char buf[100], *arg[20], *sep;
adapter *ad;
strncpy(buf, o, sizeof(buf));
@@ -1652,7 +1645,6 @@ int signal_thread(sockets *s)
@@ -1652,7 +1691,6 @@ int signal_thread(sockets *s)
int i;
int64_t ts, ctime;
adapter *ad;
@ -171,7 +248,7 @@ index 26bd3b6..c88ddef 100644
for (i = 0; i < MAX_ADAPTERS; i++)
if ((ad = get_adapter_nw(i)) && ad->get_signal && ad->tp.freq
&& (ad->status_cnt++ > 2) // make sure the kernel has updated the status
@@ -1873,9 +1865,9 @@ _symbols adapters_sym[] =
@@ -1873,9 +1911,9 @@ _symbols adapters_sym[] =
{ "ad_sys", VAR_AARRAY_INT, a, 1, MAX_ADAPTERS, offsetof(
adapter, tp.sys) },
{ "ad_allsys", VAR_FUNCTION_STRING, (void *) &get_all_delsys, 0,
@ -184,7 +261,7 @@ index 26bd3b6..c88ddef 100644
{ "tuner_t2", VAR_INT, &tuner_t2, 1, 0, 0 },
{ "tuner_c2", VAR_INT, &tuner_c2, 1, 0, 0 },
diff --git a/adapter.h b/adapter.h
index db7c270..06055b3 100755
index db7c270..2d379cc 100755
--- a/adapter.h
+++ b/adapter.h
@@ -53,6 +53,7 @@ typedef int (*Del_filters)(int fd, int pid);
@ -195,7 +272,15 @@ index db7c270..06055b3 100755
typedef int (*Tune)(int aid, transponder * tp);
typedef fe_delivery_system_t (*Dvb_delsys)(int aid, int fd,
fe_delivery_system_t *sys);
@@ -115,6 +116,7 @@ typedef struct struct_adapter
@@ -99,6 +100,7 @@ typedef struct struct_adapter
uint16_t strength, snr, max_strength, max_snr;
uint32_t pid_err, dec_err; // detect pids received but not part of any stream, decrypt errors
diseqc diseqc_param;
+ int diseqc_multi;
int old_diseqc;
int old_hiband;
int old_pol;
@@ -115,6 +117,7 @@ typedef struct struct_adapter
Tune tune;
Dvb_delsys delsys;
Device_signal get_signal;
@ -203,8 +288,16 @@ index db7c270..06055b3 100755
Adapter_commit post_init, close;
} adapter;
@@ -147,6 +150,7 @@ void enable_adapters(char *o);
void set_unicable_adapters(char *o, int type);
void set_diseqc_adapters(char *o);
void set_diseqc_timing(char *o);
+void set_diseqc_multi(char *o);
void set_slave_adapters(char *o);
void set_nopm_adapters(char *o);
void set_adapter_dmxsource(char *o);
diff --git a/axe.c b/axe.c
index 486b2f8..9f136ab 100755
index 486b2f8..1373ba7 100755
--- a/axe.c
+++ b/axe.c
@@ -47,10 +47,7 @@
@ -246,6 +339,15 @@ index 486b2f8..9f136ab 100755
if (tp->diseqc_param.switch_type != SWITCH_UNICABLE &&
tp->diseqc_param.switch_type != SWITCH_JESS) {
@@ -341,7 +340,7 @@ int axe_setup_switch(adapter *ad)
input = master;
if (!tune_check(adm, pol, hiband, diseqc)) {
send_diseqc(adm, adm->fe2, diseqc, adm->old_diseqc != diseqc,
- pol, hiband, &tp->diseqc_param);
+ pol, hiband, &tp->diseqc_param);
adm->old_pol = pol;
adm->old_hiband = hiband;
adm->old_diseqc = diseqc;
@@ -385,18 +384,35 @@ int axe_setup_switch(adapter *ad)
}else
ad->axe_used |= (1 << aid);
@ -488,7 +590,7 @@ index af35a61..46ce50c 100644
int axe_setup_switch(adapter *ad);
void free_axe_input(adapter *ad);
diff --git a/dvb.c b/dvb.c
index 15f59c8..a5d20fb 100644
index 15f59c8..a38e5ef 100644
--- a/dvb.c
+++ b/dvb.c
@@ -42,10 +42,6 @@
@ -502,7 +604,19 @@ index 15f59c8..a5d20fb 100644
char *fe_pilot[] =
{ "on", "off", " ", //auto
NULL };
@@ -436,9 +432,8 @@ int send_diseqc(adapter *ad, int fd, int pos, int pos_change, int pol, int hiban
@@ -417,6 +413,11 @@ int send_diseqc(adapter *ad, int fd, int pos, int pos_change, int pol, int hiban
{ 0xe0, 0x10, 0x39, 0xf0, 0x00, 0x00 }, 4
};
+ if (pos_change && ad->diseqc_multi >= 0 && pos != ad->diseqc_multi) {
+ send_diseqc(ad, fd, ad->diseqc_multi, 1, pol, hiband, d);
+ pos_change = 1;
+ }
+
if (uncommitted_no > committed_no)
uncommitted_first = 1;
@@ -436,9 +437,8 @@ int send_diseqc(adapter *ad, int fd, int pos, int pos_change, int pol, int hiban
LOGL(3, "send_diseqc fd %d, pos = %d (c %d u %d), pol = %d, hiband = %d",
fd, pos, posc, posu, pol, hiband);
@ -514,7 +628,7 @@ index 15f59c8..a5d20fb 100644
if (ioctl(fd, FE_SET_TONE, SEC_TONE_OFF) == -1)
LOG("send_diseqc: FE_SET_TONE failed for fd %d: %s", fd,
@@ -504,9 +499,8 @@ int send_unicable(adapter *ad, int fd, int freq, int pos, int pol, int hiband, d
@@ -504,9 +504,8 @@ int send_unicable(adapter *ad, int fd, int freq, int pos, int pol, int hiband, d
"send_unicable fd %d, freq %d, ufreq %d, pos = %d, pol = %d, hiband = %d, slot %d, diseqc => %02x %02x %02x %02x %02x",
fd, freq, d->ufreq, pos, pol, hiband, d->uslot, cmd.msg[0],
cmd.msg[1], cmd.msg[2], cmd.msg[3], cmd.msg[4]);
@ -526,7 +640,7 @@ index 15f59c8..a5d20fb 100644
if(!ad->tune_time)
{
if (ioctl(fd, FE_SET_VOLTAGE, SEC_VOLTAGE_13) == -1)
@@ -551,14 +545,12 @@ int send_jess(adapter *ad, int fd, int freq, int pos, int pol, int hiband, diseq
@@ -551,14 +550,12 @@ int send_jess(adapter *ad, int fd, int freq, int pos, int pol, int hiband, diseq
cmd.msg[4] = d->pin;
}
@ -546,7 +660,7 @@ index 15f59c8..a5d20fb 100644
if(!ad->tune_time)
{
@@ -609,23 +601,13 @@ int setup_switch(adapter *ad)
@@ -609,23 +606,13 @@ int setup_switch(adapter *ad)
if (tp->diseqc_param.switch_type == SWITCH_UNICABLE)
{
@ -574,7 +688,7 @@ index 15f59c8..a5d20fb 100644
}
else if (tp->diseqc_param.switch_type == SWITCH_SLAVE)
{
@@ -639,9 +621,9 @@ int setup_switch(adapter *ad)
@@ -639,9 +626,9 @@ int setup_switch(adapter *ad)
hiband, &tp->diseqc_param);
else
LOGL(3, "Skip sending diseqc commands since "
@ -587,7 +701,7 @@ index 15f59c8..a5d20fb 100644
}
ad->old_pol = pol;
@@ -694,35 +676,24 @@ int dvb_tune(int aid, transponder * tp)
@@ -694,35 +681,24 @@ int dvb_tune(int aid, transponder * tp)
case SYS_DVBS2:
bpol = getTick();
@ -633,7 +747,7 @@ index 15f59c8..a5d20fb 100644
case SYS_DVBT:
case SYS_DVBT2:
@@ -799,7 +770,7 @@ int dvb_tune(int aid, transponder * tp)
@@ -799,7 +775,7 @@ int dvb_tune(int aid, transponder * tp)
break;
default:
@ -642,7 +756,7 @@ index 15f59c8..a5d20fb 100644
fe_delsys[tp->sys], bclear)
break;
}
@@ -822,14 +793,8 @@ int dvb_tune(int aid, transponder * tp)
@@ -822,14 +798,8 @@ int dvb_tune(int aid, transponder * tp)
if (ioctl(fd_frontend, FE_SET_PROPERTY, &p) == -1)
{
LOG("dvb_tune: set property failed %d %s", errno, strerror(errno));
@ -657,7 +771,7 @@ index 15f59c8..a5d20fb 100644
return 0;
}
@@ -984,7 +949,7 @@ fe_delivery_system_t dvb_delsys(int aid, int fd, fe_delivery_system_t *sys)
@@ -984,7 +954,7 @@ fe_delivery_system_t dvb_delsys(int aid, int fd, fe_delivery_system_t *sys)
}
@ -666,7 +780,7 @@ index 15f59c8..a5d20fb 100644
uint16_t * snr)
{
*status = *ber = *snr = *strength = 0;
@@ -1009,7 +974,7 @@ void get_signal(int fd, int * status, uint32_t * ber, uint16_t * strength,
@@ -1009,7 +979,7 @@ void get_signal(int fd, int * status, uint32_t * ber, uint16_t * strength,
}
}
@ -1210,10 +1324,54 @@ index 8d2f6e5..812a13d 100755
});
diff --git a/minisatip.c b/minisatip.c
index e6e2254..bdb96d5 100755
index e6e2254..bafbf8b 100755
--- a/minisatip.c
+++ b/minisatip.c
@@ -482,7 +482,7 @@ void set_options(int argc, char *argv[])
@@ -73,6 +73,7 @@ static const struct option long_options[] =
{ "jess", required_argument, NULL, 'j' },
{ "diseqc", required_argument, NULL, 'd' },
{ "diseqc-timing", required_argument, NULL, 'q' },
+ { "diseqc-multi", required_argument, NULL, '0' },
{ "nopm", required_argument, NULL, 'Z' },
#ifndef DISABLE_DVBAPI
{ "dvbapi", required_argument, NULL, 'o' },
@@ -149,6 +150,7 @@ static const struct option long_options[] =
#define AXE_SKIP_PKT 'M'
#define AXE_POWER 'W'
#define ABSOLUTE_SRC 'A'
+#define DISEQC_MULTI '0'
char *built_info[] =
{
@@ -235,7 +237,7 @@ void usage()
#ifdef AXE
"[-7 M1:S1[,M2:S2]] [-M mpegts_packets] [-A SRC1:INP1:DISEQC1[,SRC2:INP2:DISEQC2]]\n\n"
#endif
- "\t[-x http_port] [-X xml_path] [-y rtsp_port] \n\n\
+ "\t[-x http_port] [-X xml_path] [-y rtsp_port]\n\n\
Help\n\
-------\n\
\n\
@@ -263,6 +265,10 @@ Help\n\
\t* All timing values are in ms, default adapter values are: 15-54-15-15-15-0\n\
- note: * as adapter means apply to all adapters\n\
\n\
+* -0 --diseqc-multi ADAPTER1:DISEQC_POSITION[,...]\n\
+\t* Send diseqc to selected position before other position is set.\n\
+ - note: * as adapter means apply to all adapters\n\
+\n\
* -D --device-id DVC_ID: specify the device id (in case there are multiple SAT>IP servers in the network)\n \
* eg: -D 4 \n\
\n\
@@ -464,6 +470,7 @@ void set_options(int argc, char *argv[])
opts.diseqc_after_burst = 15;
opts.diseqc_after_tone = 0;
opts.diseqc_committed_no = 1;
+ opts.diseqc_multi = -1;
opts.nopm = 0;
opts.lnb_low = (9750*1000UL);
opts.lnb_high = (10600*1000UL);
@@ -482,7 +489,7 @@ void set_options(int argc, char *argv[])
#ifdef AXE
opts.no_threads = 1;
opts.axe_skippkt = 35;
@ -1222,7 +1380,29 @@ index e6e2254..bdb96d5 100755
#define AXE_OPTS "7:QW:M:8:A:"
#else
#define AXE_OPTS ""
@@ -830,7 +830,6 @@ int read_rtsp(sockets * s)
@@ -491,7 +498,7 @@ void set_options(int argc, char *argv[])
memset(opts.playlist, 0, sizeof(opts.playlist));
while ((opt = getopt_long(argc, argv,
- "flr:a:td:w:p:s:n:hB:b:H:m:p:e:x:u:j:o:gy:i:q:D:VR:S:TX:Y:OL:EP:Z:"AXE_OPTS,
+ "flr:a:td:w:p:s:n:hB:b:H:m:p:e:x:u:j:o:gy:i:q:D:VR:S:TX:Y:OL:EP:Z:0:"AXE_OPTS,
long_options, NULL)) != -1)
{
// printf("options %d %c %s\n",opt,opt,optarg);
@@ -651,6 +658,12 @@ void set_options(int argc, char *argv[])
break;
}
+ case DISEQC_MULTI:
+ {
+ set_diseqc_multi(optarg);
+ break;
+ }
+
case LNB_OPT:
{
set_lnb_adapters(optarg);
@@ -830,7 +843,6 @@ int read_rtsp(sockets * s)
int sess_id = 0;
int end = s->type == TYPE_HTTP;
char buf[2000];
@ -1230,7 +1410,7 @@ index e6e2254..bdb96d5 100755
streams *sid = get_sid(s->sid);
if (s->buf[0] == 0x24 && s->buf[1] < 2)
@@ -850,7 +849,7 @@ int read_rtsp(sockets * s)
@@ -850,7 +862,7 @@ int read_rtsp(sockets * s)
}
}
@ -1239,7 +1419,7 @@ index e6e2254..bdb96d5 100755
{
if (s->rlen > RBUF - 10)
{
@@ -1024,7 +1023,7 @@ int read_rtsp(sockets * s)
@@ -1024,7 +1036,7 @@ int read_rtsp(sockets * s)
arg[1], getTick(), (getTickUs() / 1000000));
}
if (buf[0] == 0 && sid->type == STREAM_HTTP)
@ -1248,7 +1428,7 @@ index e6e2254..bdb96d5 100755
http_response(s, 200, buf, NULL, cseq, 0, end);
}
else if (strncmp(arg[0], "TEARDOWN", 8) == 0)
@@ -1066,6 +1065,8 @@ int read_rtsp(sockets * s)
@@ -1066,6 +1078,8 @@ int read_rtsp(sockets * s)
#define REPLY_AND_RETURN(c) {http_response (s, c, NULL, NULL, 0, 0, 1); return 0;}
@ -1257,7 +1437,7 @@ index e6e2254..bdb96d5 100755
char uuid[100];
int uuidi;
struct sockaddr_in ssdp_sa;
@@ -1096,7 +1097,7 @@ int read_http(sockets * s)
@@ -1096,7 +1110,7 @@ int read_http(sockets * s)
"<satip:X_SATIPCAP xmlns:satip=\"urn:ses-com:satip\">%s</satip:X_SATIPCAP>"
"%s"
"</device></root>";
@ -1266,7 +1446,7 @@ index e6e2254..bdb96d5 100755
{
if (s->rlen > RBUF - 10)
{
@@ -1114,7 +1115,7 @@ int read_http(sockets * s)
@@ -1114,7 +1128,7 @@ int read_http(sockets * s)
return 0;
}
url[0] = 0;
@ -1275,7 +1455,7 @@ index e6e2254..bdb96d5 100755
if(space)
{
int i = 0;
@@ -1134,6 +1135,8 @@ int read_http(sockets * s)
@@ -1134,6 +1148,8 @@ int read_http(sockets * s)
return 0;
}
@ -1284,7 +1464,7 @@ index e6e2254..bdb96d5 100755
if(!strncasecmp((const char*) s->buf, "HEAD ", 5))
is_head = 1;
@@ -1149,13 +1152,11 @@ int read_http(sockets * s)
@@ -1149,13 +1165,11 @@ int read_http(sockets * s)
split(arg, (char*) s->buf, 50, ' ');
// LOG("args: %s -> %s -> %s",arg[0],arg[1],arg[2]);
@ -1299,7 +1479,7 @@ index e6e2254..bdb96d5 100755
if (strcmp(arg[1], "/"DESC_XML) == 0)
{
extern int tuner_s2, tuner_t, tuner_c, tuner_t2, tuner_c2;
@@ -1179,11 +1180,29 @@ int read_http(sockets * s)
@@ -1179,11 +1193,29 @@ int read_http(sockets * s)
snprintf(buf, sizeof(buf), xml, app_name, app_name, app_name, uuid,
opts.http_host, adapters, opts.playlist);
sprintf(headers,
@ -1330,7 +1510,7 @@ index e6e2254..bdb96d5 100755
// process file from html directory, the images are just sent back
if (!strcmp(arg[1], "/"))
@@ -1206,8 +1225,7 @@ int read_http(sockets * s)
@@ -1206,8 +1238,7 @@ int read_http(sockets * s)
http_response(s, 200, ctype, NULL, 0, 0, 1);
return 0;
}
@ -1340,7 +1520,7 @@ index e6e2254..bdb96d5 100755
{
http_response(s, 200, ctype, f, 0, nl, 1);
closefile(f, nl);
@@ -1433,7 +1451,7 @@ pthread_t main_tid;
@@ -1433,7 +1464,7 @@ pthread_t main_tid;
extern int sock_signal;
int main(int argc, char *argv[])
{
@ -1350,18 +1530,29 @@ index e6e2254..bdb96d5 100755
thread_name = "main";
set_options(argc, argv);
diff --git a/minisatip.h b/minisatip.h
index a242532..5f67288 100644
index a242532..55cd5e5 100644
--- a/minisatip.h
+++ b/minisatip.h
@@ -10,7 +10,7 @@
@@ -8,9 +8,9 @@
#include "utils.h"
#define VERSION_BUILD "4"
-#define VERSION_BUILD "4"
+#define VERSION_BUILD "5"
#define CC(a,b,c) #a b #c
-#define VERSION CC(0.7.,VERSION_BUILD,)
+#define VERSION CC(0.7.,VERSION_BUILD,-axe204)
void set_options (int argc, char *argv[]);
@@ -77,6 +77,7 @@ struct struct_opts
int diseqc_after_switch;
int diseqc_after_burst;
int diseqc_after_tone;
+ int diseqc_multi;
int lnb_low, lnb_high, lnb_switch, lnb_circular;
int nopm;
int max_pids;
diff --git a/satipc.c b/satipc.c
index c16f5ef..e08d80f 100755
--- a/satipc.c