]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
added rotor grace timer calculation code with checks for missing info.
authorGary The Brown <djfreakwenc@gmail.com>
Mon, 4 Aug 2014 15:56:59 +0000 (16:56 +0100)
committerJaroslav Kysela <perex@perex.cz>
Mon, 4 Aug 2014 17:00:37 +0000 (19:00 +0200)
src/input/mpegts/linuxdvb/linuxdvb_rotor.c

index 0b6a64101d165e2a610bca5e5a8768df50f2bb23..2c7884ec2f3391c0849a7eacc0fbedd663d05a81 100644 (file)
@@ -129,6 +129,27 @@ const idclass_t linuxdvb_rotor_usals_class =
  * Class methods
  * *************************************************************************/
 
+static int
+linuxdvb_rotor_grace
+  ( linuxdvb_diseqc_t *ld, dvb_mux_t *lm )
+{
+  if (ld->ld_satconf->lse_parent->ls_orbital_pos == 0)
+  {
+    if (lr->lr_rate != 0)
+      return (120 * 500 + 999)/1000;
+    else
+      return 120;
+  }
+  linuxdvb_rotor_t *lr = (linuxdvb_rotor_t*)ld;
+
+  int curpos = ld->ld_satconf->lse_parent->ls_orbital_pos;
+
+  if (ld->ld_satconf->lse_parent->ls_orbital_dir == 'W')
+    curpos = -(curpos);
+
+  return (lr->lr_rate*(abs(curpos - lr->lr_position))+999)/1000;
+}
+
 static int
 linuxdvb_rotor_check_orbital_pos
   ( dvb_mux_t *lm, linuxdvb_satconf_ele_t *ls )
@@ -170,7 +191,9 @@ linuxdvb_rotor_gotox_tune
   }
 
   tvhdebug("diseqc", "rotor GOTOX pos %d sent", lr->lr_position);
-  return 120; // TODO: calculate period (2 min hardcoded)
+
+  linuxdvb_diseqc_t *ld = (linuxdvb_diseqc_t*)lr;
+  return linuxdvb_rotor_grace(ld,lm);
 }
 
 /* USALS */
@@ -240,7 +263,8 @@ linuxdvb_rotor_usals_tune
     usleep(25000);
   }
 
-  return 120; // TODO: calculate period (2 min hardcoded)
+  linuxdvb_diseqc_t *ld = (linuxdvb_diseqc_t*)lr;
+  return linuxdvb_rotor_grace(ld,lm);
 
 #undef TO_RAD
 #undef TO_DEG
@@ -267,13 +291,6 @@ linuxdvb_rotor_tune
   return linuxdvb_rotor_usals_tune(lr, lm, ls, fd);
 }
 
-static int
-linuxdvb_rotor_grace
-  ( linuxdvb_diseqc_t *ld, dvb_mux_t *lm )
-{
-  return 120; // TODO: calculate approx period
-}
-
 /* **************************************************************************
  * Create / Config
  * *************************************************************************/