diff --git a/patches/minisatip5-axe.patch b/patches/minisatip5-axe.patch index e20048ad..f721ba7a 100644 --- a/patches/minisatip5-axe.patch +++ b/patches/minisatip5-axe.patch @@ -1,8 +1,8 @@ diff --git a/adapter.c b/adapter.c -index 033490a..fe59cb8 100644 +index 033490a..36b3dfd 100644 --- a/adapter.c +++ b/adapter.c -@@ -49,6 +49,27 @@ extern struct struct_opts opts; +@@ -49,6 +49,31 @@ extern struct struct_opts opts; int tuner_s2, tuner_t, tuner_c, tuner_t2, tuner_c2; void find_dvb_adapter(adapter **a); @@ -10,14 +10,18 @@ index 033490a..fe59cb8 100644 +{ + adapter *ad = malloc1(sizeof(adapter)); + ++ /* diseqc setup */ ++ ad->diseqc_param.fast = opts.diseqc_fast; ++ ad->diseqc_param.committed_no = opts.diseqc_committed_no; ++ ad->diseqc_param.uncommitted_no = opts.diseqc_uncommitted_no; + + /* diseqc default timing */ -+ ad->diseqc_param.before_cmd = 15; -+ ad->diseqc_param.after_cmd = 54; -+ ad->diseqc_param.after_repeated_cmd = 15; -+ ad->diseqc_param.after_switch = 15; -+ ad->diseqc_param.after_burst = 15; -+ ad->diseqc_param.after_tone = 0; ++ ad->diseqc_param.before_cmd = opts.diseqc_before_cmd; ++ ad->diseqc_param.after_cmd = opts.diseqc_after_cmd; ++ ad->diseqc_param.after_repeated_cmd = opts.diseqc_after_repeated_cmd; ++ ad->diseqc_param.after_switch = opts.diseqc_after_switch; ++ ad->diseqc_param.after_burst = opts.diseqc_after_burst; ++ ad->diseqc_param.after_tone = opts.diseqc_after_tone; + + /* diseqc state control */ + ad->old_diseqc = -1; @@ -30,7 +34,7 @@ index 033490a..fe59cb8 100644 void find_adapters() { static int init_find_adapter; -@@ -294,6 +315,9 @@ void close_adapter(int na) +@@ -294,6 +319,9 @@ void close_adapter(int na) ad->dvr = 0; ad->strength = 0; ad->snr = 0; @@ -40,7 +44,7 @@ index 033490a..fe59cb8 100644 mutex_unlock(&ad->mutex); mutex_destroy(&ad->mutex); // if(a[na]->buf)free1(a[na]->buf);a[na]->buf=NULL; -@@ -381,19 +405,39 @@ void dump_pids(int aid) +@@ -381,19 +409,39 @@ void dump_pids(int aid) } } @@ -86,7 +90,7 @@ index 033490a..fe59cb8 100644 if (ad) LOG("get free adapter %d - a[%d] => e:%d m:%d sid_cnt:%d f:%d pol=%d", src - 1, i, ad->enabled, ad->master_sid, ad->sid_cnt, -@@ -404,13 +448,14 @@ int get_free_adapter(int freq, int pol, int msys, int src) +@@ -404,13 +452,14 @@ int get_free_adapter(int freq, int pol, int msys, int src) if (src > 0) { @@ -104,7 +108,7 @@ index 033490a..fe59cb8 100644 } for (i = 0; i < MAX_ADAPTERS; i++) { -@@ -419,21 +464,17 @@ int get_free_adapter(int freq, int pol, int msys, int src) +@@ -419,21 +468,17 @@ int get_free_adapter(int freq, int pol, int msys, int src) && delsys_match(ad, msys)) return i; if (!ad && delsys_match(a[i], msys)) // device is not initialized @@ -133,7 +137,7 @@ index 033490a..fe59cb8 100644 LOG("no adapter found for f:%d pol:%d msys:%d", freq, pol, msys); dump_adapters(); return -1; -@@ -557,19 +598,13 @@ int tune(int aid, int sid) +@@ -557,19 +602,13 @@ int tune(int aid, int sid) ad->last_sort = getTick(); if (sid == ad->master_sid && ad->do_tune) { @@ -155,7 +159,7 @@ index 033490a..fe59cb8 100644 ad->rlen = 0; if (ad->sid_cnt > 1) // the master changed the frequency { -@@ -1067,7 +1102,7 @@ void set_unicable_adapters(char *o, int type) +@@ -1067,7 +1106,7 @@ void set_unicable_adapters(char *o, int type) continue; if (!a[a_id]) @@ -164,7 +168,7 @@ index 033490a..fe59cb8 100644 ad = a[a_id]; sep1 = strchr(arg[i], ':'); -@@ -1084,11 +1119,11 @@ void set_unicable_adapters(char *o, int type) +@@ -1084,11 +1123,11 @@ void set_unicable_adapters(char *o, int type) sep3 = strchr(sep2 + 1, '-'); pin = map_intd(sep3, NULL, 0); @@ -181,7 +185,7 @@ index 033490a..fe59cb8 100644 LOGL(0, "Setting %s adapter %d slot %d freq %d", type == SWITCH_UNICABLE ? "unicable" : "jess", a_id, slot, freq); } -@@ -1096,7 +1131,7 @@ void set_unicable_adapters(char *o, int type) +@@ -1096,35 +1135,115 @@ void set_unicable_adapters(char *o, int type) void set_diseqc_adapters(char *o) { @@ -190,20 +194,34 @@ index 033490a..fe59cb8 100644 char buf[100], *arg[20], *sep1, *sep2; adapter *ad; strncpy(buf, o, sizeof(buf)); -@@ -1108,7 +1143,7 @@ void set_diseqc_adapters(char *o) - continue; + la = split(arg, buf, sizeof(arg), ','); + for (i = 0; i < la; i++) + { +- a_id = map_intd(arg[i], NULL, -1); +- if (a_id < 0 || a_id >= MAX_ADAPTERS) +- continue; ++ 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]) +- if (!a[a_id]) - a[a_id] = malloc(sizeof(adapter)); -+ a[a_id] = adapter_alloc(); - ad = a[a_id]; +- ad = a[a_id]; ++ if (!a[a_id]) ++ a[a_id] = adapter_alloc(); ++ ad = a[a_id]; ++ } sep1 = strchr(arg[i], ':'); -@@ -1116,15 +1151,70 @@ void set_diseqc_adapters(char *o) + sep2 = strchr(arg[i], '-'); if (!sep1 || !sep2) continue; -+ if ((fast = (*sep1 == '*')) != 0) ++ if ((fast = (sep1[1] == '*')) != 0) + sep1++; committed_no = map_intd(sep1 + 1, NULL, -1); uncommitted_no = map_intd(sep2 + 1, NULL, -1); @@ -214,9 +232,15 @@ index 033490a..fe59cb8 100644 - ad->uncommitted_no = uncommitted_no; - LOGL(0, "Setting diseqc adapter %d committed_no %d uncommitted_no %d", - a_id, committed_no, uncommitted_no); -+ ad->diseqc_param.fast = fast; -+ ad->diseqc_param.committed_no = committed_no; -+ ad->diseqc_param.uncommitted_no = uncommitted_no; ++ if (ad) { ++ ad->diseqc_param.fast = fast; ++ ad->diseqc_param.committed_no = committed_no; ++ ad->diseqc_param.uncommitted_no = uncommitted_no; ++ } else { ++ opts.diseqc_fast = fast; ++ opts.diseqc_committed_no = committed_no; ++ opts.diseqc_uncommitted_no = uncommitted_no; ++ } + LOGL(0, "Setting diseqc adapter %d fast %d committed_no %d uncommitted_no %d", + a_id, fast, committed_no, uncommitted_no); + } @@ -234,13 +258,18 @@ index 033490a..fe59cb8 100644 + la = split(arg, buf, sizeof(arg), ','); + for (i = 0; i < la; i++) + { -+ a_id = map_intd(arg[i], NULL, -1); -+ if (a_id < 0 || a_id >= MAX_ADAPTERS) -+ continue; ++ 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]; ++ if (!a[a_id]) ++ a[a_id] = adapter_alloc(); ++ ad = a[a_id]; ++ } + + sep1 = strchr(arg[i], ':'); + sep2 = strchr(arg[i], '-'); @@ -261,12 +290,21 @@ index 033490a..fe59cb8 100644 + after_switch < 0 || after_burst < 0 || after_tone < 0) + continue; + -+ ad->diseqc_param.before_cmd = before_cmd; -+ ad->diseqc_param.after_cmd = after_cmd; -+ ad->diseqc_param.after_repeated_cmd = after_repeated_cmd; -+ ad->diseqc_param.after_switch = after_switch; -+ ad->diseqc_param.after_burst = after_burst; -+ ad->diseqc_param.after_tone = after_tone; ++ if (ad) { ++ ad->diseqc_param.before_cmd = before_cmd; ++ ad->diseqc_param.after_cmd = after_cmd; ++ ad->diseqc_param.after_repeated_cmd = after_repeated_cmd; ++ ad->diseqc_param.after_switch = after_switch; ++ ad->diseqc_param.after_burst = after_burst; ++ ad->diseqc_param.after_tone = after_tone; ++ } else { ++ opts.diseqc_before_cmd = before_cmd; ++ opts.diseqc_after_cmd = after_cmd; ++ opts.diseqc_after_repeated_cmd = after_repeated_cmd; ++ opts.diseqc_after_switch = after_switch; ++ opts.diseqc_after_burst = after_burst; ++ opts.diseqc_after_tone = after_tone; ++ } + LOGL(0, "Setting diseqc timing for adapter %d before cmd %d after cmd %d " + "after repeated cmd %d after switch %d after burst %d after tone %d", + a_id, before_cmd, after_cmd, after_repeated_cmd, @@ -274,7 +312,7 @@ index 033490a..fe59cb8 100644 } } -@@ -1152,16 +1242,43 @@ void set_slave_adapters(char *o) +@@ -1152,16 +1271,43 @@ void set_slave_adapters(char *o) for (j = a_id; j <= a_id2; j++) { if (!a[j]) @@ -320,7 +358,7 @@ index 033490a..fe59cb8 100644 extern char *fe_delsys[]; void set_adapters_delsys(char *o) { -@@ -1186,7 +1303,7 @@ void set_adapters_delsys(char *o) +@@ -1186,7 +1332,7 @@ void set_adapters_delsys(char *o) ds = map_intd(sep + 1, fe_delsys, 0); if (!a[a_id]) @@ -329,7 +367,7 @@ index 033490a..fe59cb8 100644 ad = a[a_id]; ad->sys[0] = ds; -@@ -1371,42 +1488,24 @@ char *get_all_delsys(int aid, char *dest, int max_size) +@@ -1371,42 +1517,24 @@ char *get_all_delsys(int aid, char *dest, int max_size) return dest; } @@ -389,7 +427,7 @@ index 033490a..fe59cb8 100644 { "ad_pids", VAR_FUNCTION_STRING, (void *) &get_adapter_pids, 0, 0, 0 }, { "tuner_s2", VAR_INT, &tuner_s2, 1, 0, 0 }, diff --git a/adapter.h b/adapter.h -index e693479..75f4de7 100644 +index e693479..b37c238 100644 --- a/adapter.h +++ b/adapter.h @@ -6,7 +6,11 @@ @@ -433,9 +471,11 @@ index e693479..75f4de7 100644 int set_adapter_for_stream(int i, int a); void close_adapter_for_stream(int sid, int aid); int set_adapter_parameters(int aid, int sid, transponder * tp); -@@ -129,6 +133,7 @@ void enable_adapters(char *o); +@@ -128,7 +132,9 @@ void sort_pids(int aid); + 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_slave_adapters(char *o); +void set_link_adapters(char *o); void reset_pids_type(int aid, int clear_pat); @@ -1480,7 +1520,7 @@ index c4c91c0..5ec0d29 100644 for(var j=0;jIP servers in the network)\n \ * eg: -D 4 \n\ -@@ -179,13 +208,23 @@ Help\n\ +@@ -179,13 +210,23 @@ Help\n\ * -m xx: simulate xx as local mac address, generates UUID based on mac\n\ * eg: -m 001122334455 \n\ \n\ @@ -1602,7 +1644,7 @@ index d6b26d3..9de7a61 100644 * -p url: specify playlist url using X_SATIPM3U header \n\ * eg: -p http://192.168.2.3:8080/playlist\n\ - this will add X_SATIPM3U tag into the satip description xml\n\ -@@ -195,6 +234,9 @@ Help\n\ +@@ -195,6 +236,9 @@ Help\n\ \n\ * -R --document-root directory: document root for the minisatip web page and images\n\ \n\ @@ -1612,7 +1654,7 @@ index d6b26d3..9de7a61 100644 * -s --satip-servers DELSYS:host:port - specify the remote satip host and port with delivery system DELSYS, it is possible to use multiple -s \n\ * DELSYS - can be one of: dvbs, dvbs2, dvbt, dvbt2, dvbc, dvbc2, isdbt, atsc, dvbcb ( - DVBC_ANNEX_B ) [default: dvbs2]\n\ host - the server of the satip server\n\ -@@ -204,6 +246,9 @@ Help\n\ +@@ -204,6 +248,9 @@ Help\n\ - specifies 1 dvbt satip server with address 192.168.1.3:554\n\ - specifies 1 dvbc satip server with address 192.168.1.4:554\n\ \n\ @@ -1622,7 +1664,7 @@ index d6b26d3..9de7a61 100644 * -S --slave ADAPTER1,ADAPTER2-ADAPTER4[,..] - specify slave adapters \n\ * Allows specifying bonded adapters (multiple adapters connected with a splitter to the same LNB)\n\ Only one adapter needs to be master all others needs to have this parameter specified\n\ -@@ -237,7 +282,26 @@ Help\n\ +@@ -237,7 +284,26 @@ Help\n\ * eg: -y 5544 \n\ - changing this to a port > 1024 removes the requirement for minisatip to run as root\n\ \n\ @@ -1650,7 +1692,7 @@ index d6b26d3..9de7a61 100644 app_name, ADAPTER_BUFFER, DVR_BUFFER, opts.no_threads ? "DISABLED" : "ENABLED"); -@@ -277,17 +341,19 @@ void set_options(int argc, char *argv[]) +@@ -277,17 +343,24 @@ void set_options(int argc, char *argv[]) opts.satip_setup_pids = 0; opts.output_buffer = 512 * 1024; opts.satip_servers[0] = 0; @@ -1659,7 +1701,12 @@ index d6b26d3..9de7a61 100644 opts.xml_path = DESC_XML; opts.no_threads = 0; opts.th_priority = -1; -+ ++ opts.diseqc_before_cmd = 15; ++ opts.diseqc_after_cmd = 54; ++ opts.diseqc_after_repeated_cmd = 15; ++ opts.diseqc_after_switch = 15; ++ opts.diseqc_after_burst = 15; ++ opts.diseqc_after_tone = 0; #ifdef __mips__ opts.no_threads = 1; #endif @@ -1672,7 +1719,7 @@ index d6b26d3..9de7a61 100644 long_options, NULL)) != -1) { // printf("options %d %c %s\n",opt,opt,optarg); -@@ -359,9 +425,12 @@ void set_options(int argc, char *argv[]) +@@ -359,9 +432,12 @@ void set_options(int argc, char *argv[]) opts.adapter_buffer = (opts.adapter_buffer / 188) * 188; if (opts.adapter_buffer < ADAPTER_BUFFER) opts.adapter_buffer = ADAPTER_BUFFER; @@ -1686,7 +1733,7 @@ index d6b26d3..9de7a61 100644 break; } -@@ -410,6 +479,12 @@ void set_options(int argc, char *argv[]) +@@ -410,6 +486,12 @@ void set_options(int argc, char *argv[]) break; } @@ -1699,7 +1746,7 @@ index d6b26d3..9de7a61 100644 case SLAVE_OPT: { set_slave_adapters(optarg); -@@ -508,6 +583,33 @@ void set_options(int argc, char *argv[]) +@@ -508,6 +590,33 @@ void set_options(int argc, char *argv[]) LOGL(0, "Not a valid path for the xml file") ; break; @@ -1733,7 +1780,15 @@ index d6b26d3..9de7a61 100644 } } -@@ -1003,6 +1105,9 @@ int ssdp_reply(sockets * s) +@@ -676,7 +785,6 @@ int read_rtsp(sockets * s) + if (transport) + { + int s_timeout; +- + if (sid->timeout == 1) + sid->timeout = opts.timeout_sec; + +@@ -1003,6 +1111,9 @@ int ssdp_reply(sockets * s) return 0; } @@ -1743,7 +1798,7 @@ index d6b26d3..9de7a61 100644 // not my uuid LOG("Received SSDP packet from %s:%d -> handle %d", get_socket_rhost(s->id, ra, sizeof(ra)), get_socket_rport(s->id), -@@ -1138,7 +1243,11 @@ int main(int argc, char *argv[]) +@@ -1138,7 +1249,11 @@ int main(int argc, char *argv[]) if (!opts.no_threads) set_socket_thread(sock_signal, start_new_thread("signal")); @@ -1758,7 +1813,7 @@ index d6b26d3..9de7a61 100644 diff --git a/minisatip.h b/minisatip.h old mode 100644 new mode 100755 -index 403af34..69c9268 +index 403af34..3cd6977 --- a/minisatip.h +++ b/minisatip.h @@ -10,13 +10,15 @@ @@ -1788,6 +1843,22 @@ index 403af34..69c9268 char *last_log; int dvbapi_port; char *dvbapi_host; +@@ -62,6 +67,15 @@ struct struct_opts + char *xml_path; + char no_threads; + int th_priority; ++ int diseqc_fast; ++ int diseqc_committed_no; ++ int diseqc_uncommitted_no; ++ int diseqc_before_cmd; ++ int diseqc_after_cmd; ++ int diseqc_after_repeated_cmd; ++ int diseqc_after_switch; ++ int diseqc_after_burst; ++ int diseqc_after_tone; + }; + + diff --git a/netceiver.c b/netceiver.c index e42023e..51ef642 100644 --- a/netceiver.c