summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/debug_menu.c34
-rw-r--r--apps/keymaps/keymap-e200.c15
-rw-r--r--apps/recorder/radio.c34
3 files changed, 77 insertions, 6 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index 2279a27c13..32ab46cbda 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -1990,16 +1990,48 @@ static bool dbg_fm_radio(void)
1990 1990
1991 lcd_setmargins(0, 0); 1991 lcd_setmargins(0, 0);
1992 1992
1993 fm_detected = radio_hardware_present();
1994
1993 while(1) 1995 while(1)
1994 { 1996 {
1995 int row = 0; 1997 int row = 0;
1996 1998
1997 lcd_clear_display(); 1999 lcd_clear_display();
1998 fm_detected = radio_hardware_present();
1999 2000
2000 snprintf(buf, sizeof buf, "HW detected: %s", fm_detected?"yes":"no"); 2001 snprintf(buf, sizeof buf, "HW detected: %s", fm_detected?"yes":"no");
2001 lcd_puts(0, row++, buf); 2002 lcd_puts(0, row++, buf);
2003#if (CONFIG_TUNER & LV24020LP)
2004 if (fm_detected)
2005 {
2006 snprintf(buf, sizeof buf, "CTRL_STAT: %02X",
2007 sanyo_get(RADIO_ALL) );
2008 lcd_puts(0, row++, buf);
2009
2010 snprintf(buf, sizeof buf, "RADIO_STAT: %02X",
2011 sanyo_get(RADIO_REG_STAT));
2012 lcd_puts(0, row++, buf);
2013
2014 snprintf(buf, sizeof buf, "MSS_FM: %d kHz",
2015 (sanyo_get(RADIO_MSS_FM) ) );
2016 lcd_puts(0, row++, buf);
2017
2018 snprintf(buf, sizeof buf, "MSS_IF: %d Hz",
2019 (sanyo_get(RADIO_MSS_IF) ) );
2020 lcd_puts(0, row++, buf);
2021
2022 snprintf(buf, sizeof buf, "MSS_SD: %d Hz",
2023 (sanyo_get(RADIO_MSS_SD) ) );
2024 lcd_puts(0, row++, buf);
2025
2026 snprintf(buf, sizeof buf, "if_set: %d Hz",
2027 (sanyo_get(RADIO_IF_SET) ) );
2028 lcd_puts(0, row++, buf);
2002 2029
2030 snprintf(buf, sizeof buf, "sd_set: %d Hz",
2031 (sanyo_get(RADIO_SD_SET) ) );
2032 lcd_puts(0, row++, buf);
2033 }
2034#endif
2003#if (CONFIG_TUNER & S1A0903X01) 2035#if (CONFIG_TUNER & S1A0903X01)
2004 snprintf(buf, sizeof buf, "Samsung regs: %08X", 2036 snprintf(buf, sizeof buf, "Samsung regs: %08X",
2005 samsung_get(RADIO_ALL)); 2037 samsung_get(RADIO_ALL));
diff --git a/apps/keymaps/keymap-e200.c b/apps/keymaps/keymap-e200.c
index 55e30ca258..318f495abe 100644
--- a/apps/keymaps/keymap-e200.c
+++ b/apps/keymaps/keymap-e200.c
@@ -219,6 +219,17 @@ static const struct button_mapping button_context_recscreen[] = {
219 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 219 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
220}; /* button_context_recscreen */ 220}; /* button_context_recscreen */
221 221
222/** FM Radio Screen **/
223static const struct button_mapping button_context_radio[] = {
224 { ACTION_FM_MENU, BUTTON_DOWN, BUTTON_NONE },
225 { ACTION_FM_PRESET, BUTTON_SELECT, BUTTON_NONE },
226 { ACTION_FM_STOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
227 { ACTION_FM_MODE, BUTTON_REC, BUTTON_NONE },
228 { ACTION_FM_EXIT, BUTTON_POWER, BUTTON_NONE },
229 { ACTION_FM_PLAY, BUTTON_UP|BUTTON_REL, BUTTON_UP },
230 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
231}; /* button_context_radio */
232
222static const struct button_mapping button_context_keyboard[] = { 233static const struct button_mapping button_context_keyboard[] = {
223 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE }, 234 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
224 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 235 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
@@ -283,7 +294,9 @@ const struct button_mapping* get_context_mapping(int context)
283 return button_context_settings_time; 294 return button_context_settings_time;
284 295
285 case CONTEXT_YESNOSCREEN: 296 case CONTEXT_YESNOSCREEN:
286 return button_context_yesno; 297 return button_context_yesno;
298 case CONTEXT_FM:
299 return button_context_radio;
287 case CONTEXT_BOOKMARKSCREEN: 300 case CONTEXT_BOOKMARKSCREEN:
288 return button_context_bmark; 301 return button_context_bmark;
289 case CONTEXT_QUICKSCREEN: 302 case CONTEXT_QUICKSCREEN:
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c
index a0e6c81e3a..9f3228be1f 100644
--- a/apps/recorder/radio.c
+++ b/apps/recorder/radio.c
@@ -90,6 +90,13 @@
90#elif CONFIG_KEYPAD == ONDIO_PAD 90#elif CONFIG_KEYPAD == ONDIO_PAD
91#define FM_RECORD_DBLPRE 91#define FM_RECORD_DBLPRE
92#define FM_RECORD 92#define FM_RECORD
93#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
94#define FM_MENU
95#define FM_PRESET
96#define FM_STOP
97#define FM_MODE
98#define FM_EXIT
99#define FM_PLAY
93#endif 100#endif
94 101
95#define RADIO_SCAN_MODE 0 102#define RADIO_SCAN_MODE 0
@@ -97,10 +104,14 @@
97 104
98static const struct fm_region_setting fm_region[] = { 105static const struct fm_region_setting fm_region[] = {
99 /* Note: Desriptive strings are just for display atm and are not compiled. */ 106 /* Note: Desriptive strings are just for display atm and are not compiled. */
100 FM_REGION_ENTRY("Europe", 87500000, 108000000, 50000, 0, 0), 107 [REGION_EUROPE] =
101 FM_REGION_ENTRY("US/Canada", 87900000, 107900000, 200000, 1, 0), 108 FM_REGION_ENTRY("Europe", 87500000, 108000000, 50000, 0, 0),
102 FM_REGION_ENTRY("Japan", 76000000, 90000000, 100000, 0, 1), 109 [REGION_US_CANADA] =
103 FM_REGION_ENTRY("Korea", 87500000, 108000000, 100000, 0, 0), 110 FM_REGION_ENTRY("US/Canada", 87900000, 107900000, 200000, 1, 0),
111 [REGION_JAPAN] =
112 FM_REGION_ENTRY("Japan", 76000000, 90000000, 100000, 0, 1),
113 [REGION_KOREA] =
114 FM_REGION_ENTRY("Korea", 87500000, 108000000, 100000, 0, 0),
104 }; 115 };
105 116
106static int curr_preset = -1; 117static int curr_preset = -1;
@@ -158,13 +169,18 @@ bool in_radio_screen(void)
158 return in_screen; 169 return in_screen;
159} 170}
160 171
172/* TODO: Move some more of the control functionality to an HAL and clean up the
173 mess */
174
161/* secret flag for starting paused - prevents unmute */ 175/* secret flag for starting paused - prevents unmute */
162#define FMRADIO_START_PAUSED 0x8000 176#define FMRADIO_START_PAUSED 0x8000
163void radio_start(void) 177void radio_start(void)
164{ 178{
165 const struct fm_region_setting *fmr; 179 const struct fm_region_setting *fmr;
166 bool start_paused; 180 bool start_paused;
181#if CONFIG_TUNER != LV24020LP
167 int mute_timeout; 182 int mute_timeout;
183#endif
168 184
169 if(radio_status == FMRADIO_PLAYING) 185 if(radio_status == FMRADIO_PLAYING)
170 return; 186 return;
@@ -182,8 +198,14 @@ void radio_start(void)
182 * fmr->freq_step + fmr->freq_min; 198 * fmr->freq_step + fmr->freq_min;
183 199
184 radio_set(RADIO_SLEEP, 0); /* wake up the tuner */ 200 radio_set(RADIO_SLEEP, 0); /* wake up the tuner */
201#if (CONFIG_TUNER & LV24020LP)
202 radio_set(RADIO_REGION, global_settings.fm_region);
203 radio_set(RADIO_FORCE_MONO, global_settings.fm_force_mono);
204#endif
185 radio_set(RADIO_FREQUENCY, curr_freq); 205 radio_set(RADIO_FREQUENCY, curr_freq);
186 206
207#if CONFIG_TUNER != LV24020LP
208
187 if(radio_status == FMRADIO_OFF) 209 if(radio_status == FMRADIO_OFF)
188 { 210 {
189#if (CONFIG_TUNER & S1A0903X01) 211#if (CONFIG_TUNER & S1A0903X01)
@@ -209,6 +231,7 @@ void radio_start(void)
209 break; 231 break;
210 yield(); 232 yield();
211 } 233 }
234#endif /* CONFIG_TUNER != LV24020LP */
212 235
213 /* keep radio from sounding initially */ 236 /* keep radio from sounding initially */
214 if(!start_paused) 237 if(!start_paused)
@@ -1311,6 +1334,9 @@ void toggle_mono_mode(bool mono)
1311 1334
1312void set_radio_region(int region) 1335void set_radio_region(int region)
1313{ 1336{
1337#if (CONFIG_TUNER & LV24020LP)
1338 radio_set(RADIO_REGION, global_settings.fm_region);
1339#endif
1314#if (CONFIG_TUNER & TEA5767) 1340#if (CONFIG_TUNER & TEA5767)
1315 radio_set(RADIO_SET_DEEMPHASIS, 1341 radio_set(RADIO_SET_DEEMPHASIS,
1316 fm_region[region].deemphasis); 1342 fm_region[region].deemphasis);