]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
EN50494: replace hardcoded en50494 tune-freq with calculated one
authorInuSasha <inu@inusasha.de>
Sun, 5 Jan 2014 17:47:55 +0000 (18:47 +0100)
committerInuSasha <inu@inusasha.de>
Sun, 5 Jan 2014 17:47:55 +0000 (18:47 +0100)
src/input/mpegts/linuxdvb/linuxdvb_en50494.c
src/input/mpegts/linuxdvb/linuxdvb_private.h
src/input/mpegts/linuxdvb/linuxdvb_satconf.c

index fe07370778cee3affe17ba7b6e6821eb7a870a05..ae9f87472a40ae775430433d7adb066d072e45f9 100644 (file)
  * Class definition
  * *************************************************************************/
 
-typedef struct linuxdvb_en50494
-{
-  linuxdvb_diseqc_t;
-
-  /* en50494 configuration*/
-  uint8_t   le_position;  /* satelitte A(0) or B(1) */
-  uint16_t  le_frequency; /* user band frequency in MHz */
-  uint8_t   le_id;        /* user band id 0-7 */
-  uint16_t  le_pin;       /* 0-255 or LINUXDVB_EN50494_NOPIN */
-
-  /* runtime */
-  uint32_t  (*lnb_freq)(linuxdvb_lnb_t*, linuxdvb_mux_t*);
-
-} linuxdvb_en50494_t;
+//typedef struct linuxdvb_en50494
+//{
+//  linuxdvb_diseqc_t;
+//
+//  /* en50494 configuration*/
+//  uint8_t   le_position;  /* satelitte A(0) or B(1) */
+//  uint16_t  le_frequency; /* user band frequency in MHz */
+//  uint8_t   le_id;        /* user band id 0-7 */
+//  uint16_t  le_pin;       /* 0-255 or LINUXDVB_EN50494_NOPIN */
+//
+//  /* runtime */
+//  uint32_t  le_tune_freq; /* the real frequency to tune to */
+//} linuxdvb_en50494_t;
 
 static const char *
 linuxdvb_en50494_class_get_title ( idnode_t *o )
@@ -177,7 +176,7 @@ linuxdvb_en50494_tune
     tvhlog(LOG_ERR, LINUXDVB_EN50494_NAME, "transponder value bigger then 1024");
     return -1;
   }
-//  uint32_t tunefreq = (t + 350) * 4000 - freq; /* real used en50494 frequency */
+  le->le_tune_freq = (t + 350) * 4000 - freq; /* real used en50494 frequency */
 
   /* 2 data fields (16bit) */
   uint8_t data1, data2;
index 35683d78a7fb10a3a0970f03bddb0543b305b390..e4bfb2e9de7d31c594a5b15f9403f5a7f1f93a5e 100644 (file)
@@ -35,6 +35,7 @@ typedef struct linuxdvb_diseqc      linuxdvb_diseqc_t;
 typedef struct linuxdvb_lnb         linuxdvb_lnb_t;
 typedef struct linuxdvb_network     linuxdvb_network_t;
 typedef struct linuxdvb_mux         linuxdvb_mux_t;
+typedef struct linuxdvb_en50494     linuxdvb_en50494_t;
 
 typedef LIST_HEAD(,linuxdvb_hardware) linuxdvb_hardware_list_t;
 typedef TAILQ_HEAD(linuxdvb_satconf_ele_list,linuxdvb_satconf_ele) linuxdvb_satconf_ele_list_t;
@@ -220,6 +221,20 @@ struct linuxdvb_lnb
   int       (*lnb_pol) (linuxdvb_lnb_t*, linuxdvb_mux_t*);
 };
 
+struct linuxdvb_en50494
+{
+  linuxdvb_diseqc_t;
+
+  /* en50494 configuration*/
+  uint8_t   le_position;  /* satelitte A(0) or B(1) */
+  uint16_t  le_frequency; /* user band frequency in MHz */
+  uint8_t   le_id;        /* user band id 0-7 */
+  uint16_t  le_pin;       /* 0-255 or LINUXDVB_EN50494_NOPIN */
+
+  /* runtime */
+  uint32_t  le_tune_freq; /* the real frequency to tune to */
+};
+
 /*
  * Methods
  */
index de1b1bbd02f9c08759df5959bb2c8ac677bf18ef..973c33e5447d07eaca27901dd80298466de85ab1 100644 (file)
@@ -868,7 +868,11 @@ linuxdvb_satconf_ele_tune ( linuxdvb_satconf_ele_t *lse )
 
   /* Frontend */
   // TODO: get en50494 tuning frequency, not channel frequency
-  f = 2040500;// lse->ls_lnb->lnb_freq(lse->ls_lnb, lm);
+  if (lse->ls_en50494) {
+    f = ((linuxdvb_en50494_t*)lse->ls_en50494)->le_tune_freq;
+  } else {
+    f = lse->ls_lnb->lnb_freq(lse->ls_lnb, lm);
+  }
   return linuxdvb_frontend_tune1(lfe, mmi, f);
 }