diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/debug_menu.c | 34 | ||||
-rw-r--r-- | apps/keymaps/keymap-e200.c | 15 | ||||
-rw-r--r-- | apps/recorder/radio.c | 34 |
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 **/ | ||
223 | static 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 | |||
222 | static const struct button_mapping button_context_keyboard[] = { | 233 | static 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 | ||
98 | static const struct fm_region_setting fm_region[] = { | 105 | static 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 | ||
106 | static int curr_preset = -1; | 117 | static 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 |
163 | void radio_start(void) | 177 | void 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 | ||
1312 | void set_radio_region(int region) | 1335 | void 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); |