diff --git a/patches/minisatip7-axe.patch b/patches/minisatip7-axe.patch index a067dc20..d7482747 100644 --- a/patches/minisatip7-axe.patch +++ b/patches/minisatip7-axe.patch @@ -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) "%s" "%s" ""; @@ -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