]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Add sat longitude and usals angle as parameters to the rotor external command
authorLuca Olivetti <luca@ventoso.org>
Sun, 3 Mar 2019 20:46:55 +0000 (21:46 +0100)
committerJaroslav Kysela <perex@perex.cz>
Wed, 13 Mar 2019 15:18:57 +0000 (16:18 +0100)
src/input/mpegts/linuxdvb/linuxdvb_rotor.c

index 89df93b4e84b2e3773a9544422f3717f36164bf5..9f58c18cae41d2a71168e4fb8a49ab95c148311e 100644 (file)
@@ -343,16 +343,22 @@ sat_angle( linuxdvb_rotor_t *lr, linuxdvb_satconf_ele_t *ls )
 
 static int
 linuxdvb_rotor_extcmd
-  (linuxdvb_rotor_t *lr, linuxdvb_satconf_t *ls)
+  (linuxdvb_rotor_t *lr, linuxdvb_satconf_ele_t *lse)
 {
   int outlen = -1, rd = -1;
   char outbuf[100];
-  char num[10];
-  char *argv[] = {NULL, num, NULL};
+  char satpos[10];
+  char satlon[10];
+  char satangle[10];
+
+  char *argv[] = {NULL, satpos, satlon, satangle, NULL};
   int ret = -1;
+  int angle=sat_angle(lr,lse);
 
-  snprintf(num, sizeof(num), "%u", lr->lr_position);
-  if (spawn_and_give_stdout(ls->ls_rotor_extcmd, argv, NULL, &rd, NULL, 1) >= 0) {
+  snprintf(satpos, sizeof(satpos), "%u", lr->lr_position);
+  snprintf(satlon, sizeof(satlon), "%.1f", lr->lr_sat_lon);
+  snprintf(satangle, sizeof(satangle), "%d", angle);
+  if (spawn_and_give_stdout(lse->lse_parent->ls_rotor_extcmd, argv, NULL, &rd, NULL, 1) >= 0) {
     outlen = read(rd, outbuf, 99);
     if (outlen>0) {
       outbuf[outlen]=0;
@@ -376,11 +382,11 @@ linuxdvb_rotor_extcmd
 
 static int
 linuxdvb_external_grace
-  ( linuxdvb_rotor_t *lr, linuxdvb_satconf_t *ls)
+  ( linuxdvb_rotor_t *lr, linuxdvb_satconf_ele_t *lse)
 {
-  int ret = linuxdvb_rotor_extcmd(lr, ls);
+  int ret = linuxdvb_rotor_extcmd(lr, lse);
   if (ret<0)
-    return ls->ls_max_rotor_move;
+    return lse->lse_parent->ls_max_rotor_move;
   return ret;
 }
 
@@ -393,7 +399,7 @@ linuxdvb_rotor_grace
   int newpos, delta, tunit, min, res;
 
   if (idnode_is_instance(&lr->ld_id, &linuxdvb_rotor_external_class))
-    return linuxdvb_external_grace(lr, ls);
+    return linuxdvb_external_grace(lr, ld->ld_satconf);
 
   if (!ls->ls_last_orbital_pos || ls->ls_motor_rate == 0)
     return ls->ls_max_rotor_move;
@@ -469,7 +475,7 @@ linuxdvb_rotor_external_tune
   ( linuxdvb_rotor_t *lr, dvb_mux_t *lm,
     linuxdvb_satconf_t *lsp, linuxdvb_satconf_ele_t *ls )
 {
-  return linuxdvb_rotor_extcmd(lr, lsp);
+  return linuxdvb_rotor_extcmd(lr, ls);
 }
 
 /* USALS */