Browse Source

uhf appears to work better for ads-b

Signed-off-by: Steve Markgraf <steve@steve-m.de>
Hoernchen 13 years ago
parent
commit
b6652f33df
1 changed files with 22 additions and 13 deletions
  1. 22 13
      src/tuner_e4k.c

+ 22 - 13
src/tuner_e4k.c

@@ -167,20 +167,29 @@ static int closest_arr_idx(const uint32_t *arr, unsigned int arr_size, uint32_t
 }
 
 /* return 4-bit index as to which RF filter to select */
-static int choose_rf_filter(uint32_t freq)
+static int choose_rf_filter(enum e4k_band band, uint32_t freq)
 {
 	int rc;
 
-	if (freq < MHZ(350))
-		rc = 0;
-	else if (freq < MHZ(1000))
-		rc = closest_arr_idx(rf_filt_center_uhf,
-				     ARRAY_SIZE(rf_filt_center_uhf),
-				     freq);
-	else
-		rc = closest_arr_idx(rf_filt_center_l,
-				     ARRAY_SIZE(rf_filt_center_l),
-				     freq);
+	switch (band) {
+		case E4K_BAND_VHF2:
+		case E4K_BAND_VHF3:
+			rc = 0;
+			break;
+		case E4K_BAND_UHF:
+			rc = closest_arr_idx(rf_filt_center_uhf,
+						 ARRAY_SIZE(rf_filt_center_uhf),
+						 freq);
+			break;
+		case E4K_BAND_L:
+			rc = closest_arr_idx(rf_filt_center_l,
+						 ARRAY_SIZE(rf_filt_center_l),
+						 freq);
+			break;
+		default:
+			rc -EINVAL;
+			break;
+	}
 
 	return rc;
 }
@@ -190,7 +199,7 @@ int e4k_rf_filter_set(struct e4k_state *e4k)
 {
 	int rc;
 
-	rc = choose_rf_filter(e4k->vco.flo);
+	rc = choose_rf_filter(e4k->band, e4k->vco.flo);
 	if (rc < 0)
 		return rc;
 
@@ -525,7 +534,7 @@ int e4k_tune_params(struct e4k_state *e4k, struct e4k_pll_params *p)
 		e4k_band_set(e4k, E4K_BAND_VHF2);
 	else if (e4k->vco.flo < MHZ(350))
 		e4k_band_set(e4k, E4K_BAND_VHF3);
-	else if (e4k->vco.flo < MHZ(1000))
+	else if (e4k->vco.flo < MHZ(1135))
 		e4k_band_set(e4k, E4K_BAND_UHF);
 	else
 		e4k_band_set(e4k, E4K_BAND_L);